diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index ad410e1..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
-Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "{}"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright {yyyy} {name of copyright owner}
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index d56e185..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,23 +0,0 @@
-// Grab the plugin from a Maven Repo automatically
-buildscript {
-    repositories {
-        jcenter()
-    }
-    dependencies {
-        classpath 'com.yahoo.platform.yui:yuicompressor:2.4.7'
-    }
-}
-
-plugins {
-    id 'com.gradle.build-scan' version '1.0'
-}
-
-buildScan {
-    licenseAgreementUrl = 'https://gradle.com/terms-of-service'
-    licenseAgree = 'yes'
-}
-
-allprojects {
-    apply plugin: 'idea'
-}
-
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
deleted file mode 100644
index ce168b0..0000000
--- a/buildSrc/build.gradle
+++ /dev/null
@@ -1,8 +0,0 @@
-repositories {
-    jcenter()
-}
-
-dependencies {
-    compile 'org.apache.httpcomponents:httpclient:4.5.1'
-    compile 'com.yahoo.platform.yui:yuicompressor:2.4.7'
-}
diff --git a/buildSrc/src/main/groovy/util/CheckLinks.groovy b/buildSrc/src/main/groovy/util/CheckLinks.groovy
deleted file mode 100644
index 3ac9eb2..0000000
--- a/buildSrc/src/main/groovy/util/CheckLinks.groovy
+++ /dev/null
@@ -1,95 +0,0 @@
-package util
-
-import org.apache.http.client.config.CookieSpecs
-import org.apache.http.client.config.RequestConfig
-import org.apache.http.client.methods.CloseableHttpResponse
-import org.apache.http.client.methods.HttpGet
-import org.apache.http.impl.client.CloseableHttpClient
-import org.apache.http.impl.client.HttpClients
-import org.gradle.api.logging.Logger
-import org.gradle.util.GFileUtils
-
-class CheckLinks {
-    Logger logger = null
-    List<String> excludeFromChecks = []
-    final Map<File, List> deadLinks = [:]
-    Map<Object, Object> isDead = [:]
-    def baseDir
-
-    boolean checkIsDead(link, currentPath) {
-        if (excludeFromChecks.any { link.startsWith(it) }) {
-            // skip checking those links because they dramatically increase build time
-            // while being most likely ok because generated through changelog parsing
-            return false
-        }
-
-        try {
-            URL url
-            boolean rejected = false
-            try {
-                url = URI.create(link).toURL()
-            } catch (e) {
-                if (e.message.contains('URI is not absolute')) {
-                    rejected = true
-                }
-            }
-            if (rejected || !url) {
-                def path = "file:///${new File("$baseDir/${currentPath ? currentPath + '/' : ''}$link").canonicalPath.replace('\\', '/')}"
-                url = URI.create(path).toURL()
-            }
-            logger?.debug("Checking URL: $url")
-            def cx = url.openConnection()
-            if (cx instanceof HttpURLConnection) {
-                CloseableHttpClient httpclient = HttpClients.createDefault()
-                RequestConfig requestConfig = RequestConfig.custom()
-                        .setSocketTimeout(5_000)
-                        .setConnectTimeout(5_000)
-                        .setConnectionRequestTimeout(5_000)
-                        .setCookieSpec(CookieSpecs.STANDARD)
-                        .build()
-                HttpGet httpget = new HttpGet(link)
-                httpget.config = requestConfig
-                CloseableHttpResponse response
-                try {
-                    response = httpclient.execute(httpget)
-                    if (response.statusLine.statusCode == 404) {
-                        return true
-                    }
-                } finally {
-                    response.close()
-                }
-            }
-        } catch (e) {
-            logger?.debug e.message
-            return true
-        }
-        return false
-    }
-
-    def checkLink(List dead, int line, String link, currentPath) {
-        if (!isDead.containsKey(link)) isDead[link] = checkIsDead(link, currentPath)
-        if (isDead[link]) {
-            dead << [line:line, link:link]
-        }
-    }
-
-    def checkPage(File f) {
-        def currentPath = GFileUtils.relativePath(baseDir, f.parentFile)
-        f.eachLine('utf-8') { String line, int nb ->
-            def dead = []
-            [/\shref=['"](.+?)['"]/, /src=['"](.+?)['"]/].each { regex ->
-                def matcher = line =~ regex
-                if (matcher) {
-                    matcher.each {
-                        def linkpath = it[1]
-                        checkLink(dead, nb, linkpath, currentPath)
-                    }
-                }
-            }
-            if (dead) {
-                deadLinks[f] = dead
-            }
-        }
-    }
-
-}
diff --git a/buildSrc/src/main/groovy/util/CssFilter.groovy b/buildSrc/src/main/groovy/util/CssFilter.groovy
deleted file mode 100644
index b83d5cc..0000000
--- a/buildSrc/src/main/groovy/util/CssFilter.groovy
+++ /dev/null
@@ -1,26 +0,0 @@
-package util
-
-import com.yahoo.platform.yui.compressor.CssCompressor
-import org.apache.tools.ant.filters.BaseFilterReader
-
-class CssFilter extends BaseFilterReader {
-    Writer writer
-    Thread worker
-
-    CssFilter(Reader reader) {
-        super(new PipedReader())
-        writer = new PipedWriter(this.@in)
-        def compressor = new CssCompressor(reader)
-        reader.close()
-        worker = Thread.start {
-            compressor.compress(writer, -1)
-            writer.close()
-        }
-    }
-
-    void close() {
-        worker.join()
-        super.close()
-    }
-
-}
diff --git a/buildSrc/src/main/groovy/util/JsFilter.groovy b/buildSrc/src/main/groovy/util/JsFilter.groovy
deleted file mode 100644
index ce19b2c..0000000
--- a/buildSrc/src/main/groovy/util/JsFilter.groovy
+++ /dev/null
@@ -1,26 +0,0 @@
-package util
-
-import com.yahoo.platform.yui.compressor.JavaScriptCompressor
-import org.apache.tools.ant.filters.BaseFilterReader
-
-class JsFilter extends BaseFilterReader {
-    Writer writer
-    Thread worker
-
-    JsFilter(Reader reader) {
-        super(new PipedReader())
-        writer = new PipedWriter(this.@in)
-        def compressor = new JavaScriptCompressor(reader, null)
-        reader.close()
-        worker = Thread.start {
-            compressor.compress(writer, -1, true, false, false, false)
-            writer.close()
-        }
-    }
-
-    void close() {
-        worker.join()
-        super.close()
-    }
-
-}
diff --git a/generator/build.gradle b/generator/build.gradle
deleted file mode 100644
index 5f9a5d6..0000000
--- a/generator/build.gradle
+++ /dev/null
@@ -1,23 +0,0 @@
-apply plugin: 'groovy'
-
-repositories {
-    jcenter()
-}
-
-dependencies {
-    ext.groovyVersion = '2.4.15'
-    ext.asciidocVersion = '1.5.8.1'
-    compile "org.codehaus.groovy:groovy:$groovyVersion"
-    compile "org.codehaus.groovy:groovy-json:$groovyVersion"
-    compile "org.codehaus.groovy:groovy-templates:$groovyVersion"
-    compile("org.asciidoctor:asciidoctorj:$asciidocVersion") {
-        // to fix intermittent errors, e.g. as described here:
-        // https://github.com/asciidoctor/asciidoctorj/issues/680
-        // you might need to use a custom jruby version
-        //exclude(group: 'org.jruby', module: 'jruby-complete')
-    }
-    //compile "org.jruby:jruby-complete:9.1.17.0"
-}
-
-compileGroovy.sourceCompatibility = '1.7'
-compileGroovy.targetCompatibility = '1.7'
diff --git a/generator/src/main/groovy/generator/AsciidoctorFactory.groovy b/generator/src/main/groovy/generator/AsciidoctorFactory.groovy
deleted file mode 100644
index 72d48dd..0000000
--- a/generator/src/main/groovy/generator/AsciidoctorFactory.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-package generator
-
-import groovy.transform.CompileStatic
-import org.asciidoctor.Asciidoctor
-
-@CompileStatic
-class AsciidoctorFactory {
-    @Lazy static Asciidoctor instance = Asciidoctor.Factory.create()
-}
diff --git a/generator/src/main/groovy/generator/ChangelogParser.groovy b/generator/src/main/groovy/generator/ChangelogParser.groovy
deleted file mode 100644
index ee84faa..0000000
--- a/generator/src/main/groovy/generator/ChangelogParser.groovy
+++ /dev/null
@@ -1,104 +0,0 @@
-package generator
-
-import groovy.json.JsonSlurper
-import model.Changelog
-import model.Issue
-
-import java.util.regex.Pattern
-
-class ChangelogParser {
-    private static final String JIRA_SERVER = 'https://issues.apache.org/jira'
-    private static final String PROJECT_NAME = 'GROOVY'
-    private static final String PROJECT_ID = '12318123'
-
-    private static final String LOGNOTES_INTRO = /Release Notes - Groovy/
-    private static final String LOGNOTES_END = /<\/textarea>/
-    private static final String BUGTYPE_MARK = '** '
-    private static final String ITEM_MARK = '    * '
-    private static final Pattern ITEM_PATTERN = ~/\[(GROOVY-[0-9]+)\] - (.+)/
-    private static final String VERSION_PATTERN = /^((1\.)|[23]\.)/
-
-    static List<Changelog> fetchReleaseNotes(File cacheDirectory) {
-        def slurper = new JsonSlurper()
-        def versions = slurper.parse("$JIRA_SERVER/rest/api/2/project/$PROJECT_NAME/versions".toURL())
-        def versionMap = versions.findAll {
-            it.name =~ VERSION_PATTERN &&
-                    it.released == true
-        }.collectEntries {
-            [fixName(it.name), it.id]
-        }
-
-        def raw = versionMap.collect { name, id ->
-            println "Fetching changelog for version $name"
-            new Changelog(groovyVersion: name, issues: changelogHTML(id, cacheDirectory))
-        }
-        createAggregates(raw, versionMap.keySet())
-    }
-
-    private static String fixName(String name) {
-        String id = name
-        String classifier = ''
-
-        int idx = name.indexOf('-')
-        if (idx>0) {
-            classifier = name.substring(idx)
-            id = name - classifier
-        }
-        if (id.count('.')<2) {
-            // groovy 2.0 instead of 2.0.0
-            id = "${id}.0"
-        }
-        "$id$classifier"
-    }
-
-    private static List<Changelog> createAggregates(final List<Changelog> changelogs, final Set<String> releasedVersions) {
-        def allMajor = changelogs.groupBy {
-            def v = it.groovyVersion
-            v.contains('-')?v-v.substring(v.indexOf('-')):v
-        }.findAll { ver, logs -> ver in releasedVersions }
-        allMajor.collect { k,v ->
-            def changelog = changelogs.find { it.groovyVersion == k }
-            if (!changelog) {
-                println "Not found: $k"
-                changelog = new Changelog(groovyVersion: k, issues:[])
-                changelogs << changelog
-            }
-            v.each {
-                changelog.issues = [*changelog.issues, *it.issues].unique().sort { it.id }
-            }
-        }
-        changelogs
-    }
-
-    private static List<Issue> changelogHTML(String id, File cacheDir) {
-        def cache = new File(cacheDir, "changelog-${id}.html")
-        def log
-        if (cache.exists()) {
-            log = cache.getText('UTF-8')
-        } else {
-            log = new URL("$JIRA_SERVER/secure/ReleaseNote.jspa?version=$id&styleName=Text&projectId=$PROJECT_ID").getText('UTF-8')
-            cache.write(log, 'UTF-8')
-        }
-        boolean inNotes = false
-        String type = null
-        List<Issue> issues = []
-
-        log.eachLine { line ->
-            if (line.startsWith(LOGNOTES_INTRO)) {
-                inNotes = true
-            } else if (line.startsWith(LOGNOTES_END)) {
-                inNotes = false
-            } else if (inNotes) {
-                if (line.startsWith(BUGTYPE_MARK)) {
-                    type = line - BUGTYPE_MARK
-                } else if (line.startsWith(ITEM_MARK)) {
-                    def m = ITEM_PATTERN.matcher(line)
-                    m.find()
-                    issues << new Issue(id: m.group(1), description: m.group(2), type: type)
-                }
-            }
-        }
-
-        issues
-    }
-}
diff --git a/generator/src/main/groovy/generator/DocUtils.groovy b/generator/src/main/groovy/generator/DocUtils.groovy
deleted file mode 100644
index 49d8609..0000000
--- a/generator/src/main/groovy/generator/DocUtils.groovy
+++ /dev/null
@@ -1,5 +0,0 @@
-package generator
-
-class DocUtils {
-    @Lazy public static final String DOCS_BASEURL = System.getProperty('docs_baseurl')
-}
diff --git a/generator/src/main/groovy/generator/DocumentationHTMLCleaner.groovy b/generator/src/main/groovy/generator/DocumentationHTMLCleaner.groovy
deleted file mode 100644
index fafa9db..0000000
--- a/generator/src/main/groovy/generator/DocumentationHTMLCleaner.groovy
+++ /dev/null
@@ -1,101 +0,0 @@
-package generator
-
-import groovy.transform.CompileStatic
-
-/**
- * This class is responsible for downloading a documentation page as generated through the Asciidoctor task
- * of the Groovy build, then filter its contents in order to return only the body of the documentation, as HTML.
- *
- * @author Cédric Champeau
- */
-@CompileStatic
-class DocumentationHTMLCleaner {
-    private final static String BODY_START = /<body/
-    private final static String BODY_END = /<\/body/
-    private final static String TOC_START = /<div id="toc"/
-    private final static String MAIN_START = /<div id="content"/
-    private final static String MAIN_END = /<div id="footer"/
-
-    /**
-     * A list of links which are badly generated, but we know how to fix them
-     */
-    private final static Map<String,String> KNOWN_REPLACEMENTS = [
-        /docs\.groovy-lang\.org\/(latest|next)\/html\/documentation\/gdk\.html/: 'groovy-lang.org/gdk.html',
-        /\/maven\/groovy-/: '/maven/apache-groovy-'
-    ]
-
-    private static String cleanupPage(String location) {
-        def url = location.toURL()
-        try {
-            def fullHTML = url.getText('utf-8')
-            return extractBetween(fullHTML, BODY_START, BODY_END)
-        } catch (FileNotFoundException e) {
-            // 404 not found
-        }
-
-        null
-    }
-
-    private static String extractBetween(String html, String startString, String endString) {
-        def start = html.indexOf(startString)
-        if (start > 0) {
-            start = html.indexOf('>', start) + 1
-        }
-        if (start > 1) {
-            def end = html.indexOf(endString, start)
-            if (end > start) {
-                return html.substring(start, end)
-            }
-        }
-        null
-    }
-
-    public static DocPage parsePage(String location) {
-        String contents = cleanupPage(location)
-        if (contents==null) {
-            return new DocPage(content: "Contents not found for <a href='$location'>$location</a>, most likely because this section has not yet been written.")
-        }
-        String toc = extractTOC(contents)?:''
-        String main = extractBetween(contents, MAIN_START, MAIN_END)?:"Main body not found for <a href='$location'>$location</a>"
-        main = replaceInternalLinks(main)
-        new DocPage(toc: toc, content: main)
-    }
-
-    private static String replaceInternalLinks(String html) {
-        def replacer = { List<String> it ->
-            def (String tag, String attr, String url) = [it[1], it[2], it[3]]
-            url = url.replaceAll(/x(.+)\.(?:pagespeed.+)/, '$1')
-            if (!url.startsWith('http') && !url.startsWith('#') && 'target.html'!=url) {
-                "$tag $attr'${DocUtils.DOCS_BASEURL}/html/documentation/$url'"
-            } else {
-                it[0]
-            }
-        }
-        html = html.replaceAll(/(a)\s+(href=)["'](.+?)["']/,replacer)
-        html = html.replaceAll(/(img)\s+(src=)["'](.+?)["']/,replacer)
-        KNOWN_REPLACEMENTS.each { link, repl ->
-            html = html.replaceAll(link, repl)
-        }
-        html
-    }
-
-    private static String extractTOC(final String html) {
-        int start = html.indexOf(TOC_START)
-        if (start > 0) {
-            int end = html.indexOf(MAIN_START)
-            if (end>0) {
-                def out = html.substring(start, end).replace("<div id=\"toctitle\">Table of Contents</div>", "")
-                end = out.size()-1
-                while (!out.substring(end, out.size()).startsWith('</div>')) end--
-                return out.substring(0, end)
-            }
-        }
-        null
-    }
-
-    static class DocPage {
-        String toc = ''
-        String content
-    }
-
-}
diff --git a/generator/src/main/groovy/generator/PageTemplate.groovy b/generator/src/main/groovy/generator/PageTemplate.groovy
deleted file mode 100644
index 8801d8d..0000000
--- a/generator/src/main/groovy/generator/PageTemplate.groovy
+++ /dev/null
@@ -1,59 +0,0 @@
-package generator
-
-import groovy.text.markup.BaseTemplate
-import groovy.text.markup.MarkupTemplateEngine
-import groovy.text.markup.TemplateConfiguration
-import groovy.transform.CompileStatic
-
-@CompileStatic
-abstract class PageTemplate extends BaseTemplate {
-    public static final String BASEDIR = "basePath"
-
-    private final Map model
-
-    PageTemplate(
-            final MarkupTemplateEngine templateEngine,
-            final Map model, final Map<String, String> modelTypes, final TemplateConfiguration configuration) {
-        super(templateEngine, model, modelTypes, configuration)
-        this.model = model
-    }
-
-    String relative(String path) {
-        String base = (String) model.get(BASEDIR)
-        if (base && !path.startsWith('http') && !path.startsWith(File.separator)) {
-            String up = "..${File.separator}"
-            "${up*(1+base.count(File.separator))}$path"
-        } else {
-            path
-        }
-    }
-
-    /**
-     * Converts and outputs asciidoctor markup into HTML
-     * @param body the asciidoctor markup
-     */
-    void asciidoc(String body, Map options=[:]) {
-        yieldUnescaped asciidocText(body, options)
-    }
-
-    /**
-     * Converts and returns asciidoctor markup into HTML. This method
-     * does *not* automatically render the result so it is possible
-     * to post-process the generated HTML.
-     * @param body the asciidoctor markup
-     */
-    String asciidocText(String body, Map options=[:]) {
-        def asciidoctor = AsciidoctorFactory.instance
-        def attributes = options.attributes
-        if (!attributes) {
-            attributes = [:]
-            options.put('attributes', attributes)
-        }
-        attributes['source-highlighter'] = 'prettify'
-        asciidoctor.convert(body,options)
-    }
-
-    String latestDocURL(String target) {
-        "${DocUtils.DOCS_BASEURL}/html/$target"
-    }
-}
diff --git a/generator/src/main/groovy/generator/SiteGenerator.groovy b/generator/src/main/groovy/generator/SiteGenerator.groovy
deleted file mode 100644
index 65a92c8..0000000
--- a/generator/src/main/groovy/generator/SiteGenerator.groovy
+++ /dev/null
@@ -1,277 +0,0 @@
-package generator
-
-import groovy.io.FileType
-import groovy.text.markup.MarkupTemplateEngine
-import groovy.text.markup.TemplateConfiguration
-import groovy.transform.CompileStatic
-import model.Changelog
-import model.Page
-import model.Section
-import model.SectionItem
-import model.SiteMap
-
-import java.nio.file.FileSystems
-import java.nio.file.Path
-import java.nio.file.WatchEvent
-
-import static generator.DocumentationHTMLCleaner.parsePage
-import static java.nio.file.StandardWatchEventKinds.*
-
-@CompileStatic
-class SiteGenerator {
-
-    private final static Closure SEMANTIC_SORT = { String v1, String v2 ->
-        List<String> items1 = decomposeVersion(v1)
-        List<String> items2 = decomposeVersion(v2)
-        for (int i=0; i<Math.max(items1.size(),items2.size());i++) {
-            if (i>=items2.size()) {
-                return 1
-            }
-            if (i>=items1.size()) {
-                return -1
-            }
-            def p1 = items1[i]
-            def p2 = items2[i]
-            if (p1.isNumber()) {
-                if (p2.isNumber()) {
-                    def pi1 = p1.toInteger()
-                    def pi2 = p2.toInteger()
-
-                    if (pi1 < pi2) {
-                        return 1
-                    } else if (pi1 > pi2) {
-                        return -1
-                    }
-                } else {
-                    return -1
-                }
-            } else if (p2.isNumber()) {
-                return 1
-            } else {
-                return p2 <=> p1
-            }
-        }
-        0
-    }
-
-    File sourcesDir
-    File outputDir
-    String sitemapFilename
-
-    private MarkupTemplateEngine tplEngine
-    private SiteMap siteMap
-
-    void setup() {
-
-        println "Generating website using Groovy ${GroovySystem.version}"
-
-        def tplConf = new TemplateConfiguration()
-        tplConf.autoIndent = true
-        tplConf.autoNewLine = true
-        tplConf.baseTemplateClass = PageTemplate
-
-        def classLoader = new URLClassLoader([sourcesDir.toURI().toURL()] as URL[], this.class.classLoader)
-        tplEngine = new MarkupTemplateEngine(classLoader, tplConf, new MarkupTemplateEngine.CachingTemplateResolver())
-
-        siteMap = SiteMap.from(new File(sourcesDir, sitemapFilename))
-
-    }
-
-    void render(String page, String target = null, Map model = [:], String baseDir=null) {
-        model.menu = siteMap.menu
-        model.currentPage = target
-        target = target ?: page
-        File root
-        if (baseDir) {
-            root = new File(outputDir, baseDir)
-            model[PageTemplate.BASEDIR] = baseDir
-            root.mkdirs()
-        } else {
-            root = outputDir
-        }
-
-        new File(root,"${target}.html").write(tplEngine.createTemplateByPath("pages/${page}.groovy").make(model).toString(), 'utf-8')
-    }
-
-    void generateSite() {
-        long sd = System.currentTimeMillis()
-        setup()
-
-        List<Changelog> changelogs = []
-        if (siteMap.changelogs) {
-            def cacheDir = new File(new File('build'), 'cache')
-            cacheDir.mkdirs()
-            println "Cache directory: $cacheDir"
-            changelogs = ChangelogParser.fetchReleaseNotes(cacheDir)
-        }
-
-        renderDocumentation()
-
-        renderPages(changelogs)
-
-        renderChangelogs(changelogs)
-
-        if (siteMap.releaseNotes) {
-            renderReleaseNotes()
-        }
-
-        if (siteMap.wiki) {
-            renderWiki()
-        }
-
-        long dur = System.currentTimeMillis() - sd
-        println "Generated site into $outputDir in ${dur}ms"
-    }
-
-    private List<Section> renderDocumentation() {
-        siteMap.documentationSections.each { Section section ->
-            section.items.each { SectionItem item ->
-                if (item.generate) {
-                    println "Generating documentation page [$item.name]"
-                    render 'docpage', item.targetFilename, [
-                            category: 'Learn',
-                            title   : item.name,
-                            page    : parsePage("${DocUtils.DOCS_BASEURL}/html/documentation/${item.sourceFilename}.html")]
-                }
-            }
-        }
-    }
-
-    private List<Page> renderPages(List<Changelog> changelogs) {
-        siteMap.pages.each { Page page ->
-            println "Rendering individual page [$page.source]"
-            if ('changelogs' == page.source) {
-                page.model.versions = changelogs.groovyVersion.sort(SEMANTIC_SORT)
-            }
-            render page.source, page.target, page.model
-        }
-    }
-
-    private List<Changelog> renderChangelogs(List<Changelog> changelogs) {
-        changelogs.each {
-            println "Rendering changelog for Groovy $it.groovyVersion"
-            render 'changelog', "changelog-$it.groovyVersion", [groovyVersion: it.groovyVersion, issues: it.issues], 'changelogs'
-        }
-    }
-
-    private void renderReleaseNotes() {
-        def releaseNotesVersions = new TreeSet<String>(new Comparator<String>() {
-            @Override
-            int compare(final String v1, final String v2) {
-                v2.toDouble() <=> v1.toDouble()
-            }
-        })
-        new File(sourcesDir, 'releasenotes').eachFile(FileType.FILES) { File file ->
-            def name = file.name.substring(0, file.name.lastIndexOf('.adoc'))
-            def version = name - 'groovy-'
-            releaseNotesVersions << version
-            println "Rendering release notes for Groovy $version"
-            render 'release-notes', name, [notes: file.getText('utf-8'), groovyVersion: version], 'releasenotes'
-        }
-        render 'releases', 'releases', [versions: releaseNotesVersions]
-    }
-
-    private void renderWiki() {
-        def asciidoctor = AsciidoctorFactory.instance
-        println "Rendering wiki"
-
-        def wikiDir = new File(sourcesDir, "wiki")
-        def gepList = [:]
-        wikiDir.eachFileRecurse { f->
-            if (f.name.endsWith('.adoc')) {
-                def header = asciidoctor.readDocumentHeader(f)
-                def bn = f.name.substring(0, f.name.lastIndexOf('.adoc'))
-                def author = header.author?.fullName
-                if (!author) {
-                    author = header.authors*.fullName.join(', ')
-                }
-                println "Rendering $header.documentTitle.combined${author ? ' by ' + author : ''}"
-                def relativePath = []
-                def p = f.parentFile
-                while (p != wikiDir) {
-                    relativePath << p.name
-                    p = p.parentFile
-                }
-                String baseDir = relativePath ? "wiki${File.separator}${relativePath.join(File.separator)}" : 'wiki'
-                render 'wiki', bn, [notes:f.getText('utf-8'), header: header], baseDir
-                if (f.name.startsWith('GEP-')) {
-                    gepList[bn] = header.documentTitle.subtitle
-                }
-            }
-        }
-        render 'geps', "geps", [list: gepList], 'wiki'
-    }
-
-    static void main(String... args) {
-        def sourcesDir = args[0] as File
-        def outputDir = args[1] as File
-        def sitemapFilename = args[2]
-        def generator = new SiteGenerator(sourcesDir: sourcesDir, outputDir: outputDir, sitemapFilename: sitemapFilename)
-        boolean watchMode = args.length > 3 ? Boolean.valueOf(args[3]) : false
-        generator.generateSite()
-
-        if (watchMode) {
-            println "Started watch mode"
-            def watcher = FileSystems.default.newWatchService()
-
-            sourcesDir.toPath().register(watcher,
-                    ENTRY_CREATE,
-                    ENTRY_DELETE,
-                    ENTRY_MODIFY)
-
-            sourcesDir.eachDirRecurse { File f ->
-                f.toPath().register(watcher,
-                        ENTRY_CREATE,
-                        ENTRY_DELETE,
-                        ENTRY_MODIFY)
-            }
-
-            def existingDirectories = ['pages', 'layouts', 'includes', 'html', 'assets', 'css', 'fonts', 'img', 'js', 'vendor']
-
-            while (true) {
-                def key = watcher.take()
-                def pollEvents = (List<WatchEvent<Path>>) key.pollEvents()
-
-                def changed = pollEvents.collect { "${it.context()}".toString() }.join(', ')
-
-                // only generate when the event refers to the actual file modified / created / added
-                // as otherwise the watcher service generates two events:
-                // 1) one for directory containing the modified file, and
-                // 2) one for the actual file being modified
-                // this checks avoid getting two events for one change
-                if (existingDirectories.every { !changed.contains(it) }) {
-                    try {
-                        println "Regenerating site due to changes in: ${changed}"
-                        // todo: selective regeneration
-                        generator.generateSite()
-                    } finally {
-                        key.reset()
-                    }
-                }
-            }
-        }
-    }
-
-    static List<String> decomposeVersion(String version) {
-        String qualifier = ''
-        if (version.indexOf('-')>0) {
-            qualifier = version.substring(version.indexOf('-'))
-            version = version - qualifier
-        }
-        List<String> parts = version.split(/\./).toList()
-        if (qualifier) {
-            parts << qualifier
-        }
-        parts
-    }
-
-    static boolean exists(String u) {
-        def url = new URL(u)
-        HttpURLConnection.setFollowRedirects(false)
-        HttpURLConnection connection = (HttpURLConnection) url.openConnection()
-        connection.setRequestMethod("HEAD")
-        // pretend to be a browser to keep fussy websites a little happier
-        connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)")
-        return connection.responseCode == HttpURLConnection.HTTP_OK
-    }
-}
diff --git a/generator/src/main/groovy/model/Book.groovy b/generator/src/main/groovy/model/Book.groovy
deleted file mode 100644
index 4537ace..0000000
--- a/generator/src/main/groovy/model/Book.groovy
+++ /dev/null
@@ -1,17 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Book {
-    String title
-    String authors
-    String cover
-    String url
-    String description
-
-    void authors    (String authors)     { this.authors     = authors }
-    void cover      (String cover)       { this.cover       = cover }
-    void url        (String url)         { this.url         = url }
-    void description(String description) { this.description = description }
-}
diff --git a/generator/src/main/groovy/model/Changelog.groovy b/generator/src/main/groovy/model/Changelog.groovy
deleted file mode 100644
index b7ba910..0000000
--- a/generator/src/main/groovy/model/Changelog.groovy
+++ /dev/null
@@ -1,11 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-import groovy.transform.ToString
-
-@CompileStatic
-@ToString
-class Changelog {
-    String groovyVersion
-    List<Issue> issues
-}
diff --git a/generator/src/main/groovy/model/Course.groovy b/generator/src/main/groovy/model/Course.groovy
deleted file mode 100644
index 68f8618..0000000
--- a/generator/src/main/groovy/model/Course.groovy
+++ /dev/null
@@ -1,34 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Course {
-
-    String title
-    String instructor
-    String url
-    String description
-    String cover
-
-    void title(String title) {
-        this.title = title
-    }
-
-    void instructor(String instructor) {
-        this.instructor = instructor
-    }
-
-    void url(String url){
-        this.url = url
-    }
-
-    void description(String description){
-        this.description = description
-    }
-
-    void cover(String cover){
-        this.cover = cover
-    }
-
-}
diff --git a/generator/src/main/groovy/model/Distribution.groovy b/generator/src/main/groovy/model/Distribution.groovy
deleted file mode 100644
index 55ef17c..0000000
--- a/generator/src/main/groovy/model/Distribution.groovy
+++ /dev/null
@@ -1,19 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Distribution {
-    String name
-    Closure description
-    List<DownloadPackage> packages = []
-
-    void description(Closure cl) { this.description = cl }
-
-    void version(String name, Closure versionSpec) {
-        DownloadPackage pkg = new DownloadPackage(version:name)
-        def clone = versionSpec.rehydrate(pkg,pkg,pkg)
-        clone()
-        packages.add(pkg)
-    }
-}
diff --git a/generator/src/main/groovy/model/DownloadPackage.groovy b/generator/src/main/groovy/model/DownloadPackage.groovy
deleted file mode 100644
index 074a38c..0000000
--- a/generator/src/main/groovy/model/DownloadPackage.groovy
+++ /dev/null
@@ -1,28 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class DownloadPackage {
-    String version
-    String releaseNotes
-    String windowsInstaller
-    boolean stable = false
-    boolean archive = false
-
-    void releaseNotes(String notes) {
-        releaseNotes = notes
-    }
-
-    void windowsInstaller(String installer) {
-        windowsInstaller = installer
-    }
-
-    void stable(boolean b) {
-        stable = b
-    }
-
-    void archive(boolean b) {
-        archive = b
-    }
-}
diff --git a/generator/src/main/groovy/model/Ecosystem.groovy b/generator/src/main/groovy/model/Ecosystem.groovy
deleted file mode 100644
index 17a102f..0000000
--- a/generator/src/main/groovy/model/Ecosystem.groovy
+++ /dev/null
@@ -1,13 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Ecosystem extends LinkedHashMap<String,EcosystemEntry> {
-    void project(String name, Closure entrySpec) {
-        def entry = new EcosystemEntry(name:name)
-        def clone = entrySpec.rehydrate(entry,entry,entry)
-        clone()
-        put(name, entry)
-    }
-}
diff --git a/generator/src/main/groovy/model/EcosystemEntry.groovy b/generator/src/main/groovy/model/EcosystemEntry.groovy
deleted file mode 100644
index 55dc9fd..0000000
--- a/generator/src/main/groovy/model/EcosystemEntry.groovy
+++ /dev/null
@@ -1,18 +0,0 @@
-package model
-
-import groovy.transform.ToString
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-@ToString(includeNames=true)
-class EcosystemEntry {
-    String name
-    String url
-    String description
-    String logo
-
-    void url(String url) { this.url = url }
-    void description(String description) { this.description = description }
-    void logo(String logo) { this.logo = logo }
-}
diff --git a/generator/src/main/groovy/model/Event.groovy b/generator/src/main/groovy/model/Event.groovy
deleted file mode 100644
index 6eaf7d7..0000000
--- a/generator/src/main/groovy/model/Event.groovy
+++ /dev/null
@@ -1,19 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Event {
-    String name
-    String location
-    String date
-    String description
-    String url
-    String logo
-
-    void location   (String location)    { this.location    = location }
-    void date       (String date)        { this.date        = date }
-    void description(String description) { this.description = description }
-    void url        (String url)         { this.url         = url }
-    void logo       (String logo)        { this.logo        = logo }
-}
diff --git a/generator/src/main/groovy/model/Events.groovy b/generator/src/main/groovy/model/Events.groovy
deleted file mode 100644
index 8767dec..0000000
--- a/generator/src/main/groovy/model/Events.groovy
+++ /dev/null
@@ -1,13 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Events extends LinkedHashMap<String, Event> {
-    void event(String name, Closure eventClosure) {
-        def entry = new Event(name: name)
-        def clone = eventClosure.rehydrate(entry, entry, entry)
-        clone()
-        put(name, entry)
-    }
-}
diff --git a/generator/src/main/groovy/model/Issue.groovy b/generator/src/main/groovy/model/Issue.groovy
deleted file mode 100644
index db4b1ee..0000000
--- a/generator/src/main/groovy/model/Issue.groovy
+++ /dev/null
@@ -1,14 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-import groovy.transform.EqualsAndHashCode
-import groovy.transform.ToString
-
-@CompileStatic
-@ToString
-@EqualsAndHashCode
-class Issue {
-    String id
-    String type
-    String description
-}
diff --git a/generator/src/main/groovy/model/Library.groovy b/generator/src/main/groovy/model/Library.groovy
deleted file mode 100644
index 879cd98..0000000
--- a/generator/src/main/groovy/model/Library.groovy
+++ /dev/null
@@ -1,13 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Library extends LinkedHashMap<String, Book> {
-    void book(String title, Closure bookClosure) {
-        def book = new Book(title: title)
-        def clone = bookClosure.rehydrate(book, book, book)
-        clone()
-        put(title, book)
-    }
-}
diff --git a/generator/src/main/groovy/model/Menu.groovy b/generator/src/main/groovy/model/Menu.groovy
deleted file mode 100644
index 9e495ed..0000000
--- a/generator/src/main/groovy/model/Menu.groovy
+++ /dev/null
@@ -1,21 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Menu extends LinkedHashMap<String, List<MenuItem>> {
-
-    void group(String name, Closure groupSpec) {
-        Group g = new Group()
-        def clone = groupSpec.rehydrate(g,g,g)
-        clone()
-        put(name, g.items)
-    }
-
-    private static class Group {
-        List<MenuItem> items = []
-        void item(String name, String link, String style=null) {
-            items << new MenuItem(name:name, link: link, style:style)
-        }
-    }
-}
diff --git a/generator/src/main/groovy/model/MenuItem.groovy b/generator/src/main/groovy/model/MenuItem.groovy
deleted file mode 100644
index 6e58074..0000000
--- a/generator/src/main/groovy/model/MenuItem.groovy
+++ /dev/null
@@ -1,13 +0,0 @@
-package model
-
-import groovy.transform.ToString
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-@ToString(includeNames=true)
-class MenuItem {
-    String name
-    String link
-    String style
-}
diff --git a/generator/src/main/groovy/model/Page.groovy b/generator/src/main/groovy/model/Page.groovy
deleted file mode 100644
index 5b29679..0000000
--- a/generator/src/main/groovy/model/Page.groovy
+++ /dev/null
@@ -1,10 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Page {
-    String source
-    String target
-    Map model = [:]
-}
diff --git a/generator/src/main/groovy/model/Section.groovy b/generator/src/main/groovy/model/Section.groovy
deleted file mode 100644
index b0b14fd..0000000
--- a/generator/src/main/groovy/model/Section.groovy
+++ /dev/null
@@ -1,21 +0,0 @@
-package model
-
-import groovy.transform.ToString
-
-@ToString(includeNames=true)
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Section {
-    String name
-    String icon
-    List<SectionItem> items = []
-
-    void item(String name, String targetFile, String sourceFile, boolean generate = true) {
-        items.add(new SectionItem(name: name, sourceFilename: sourceFile, targetFilename: targetFile, generate:generate))
-    }
-
-    String getAnchor() {
-        name.replaceAll('[^a-zA-Z0-9]','').toLowerCase()
-    }
-}
diff --git a/generator/src/main/groovy/model/SectionItem.groovy b/generator/src/main/groovy/model/SectionItem.groovy
deleted file mode 100644
index 7379b23..0000000
--- a/generator/src/main/groovy/model/SectionItem.groovy
+++ /dev/null
@@ -1,14 +0,0 @@
-package model
-
-import groovy.transform.ToString
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-@ToString(includeNames=true)
-class SectionItem {
-    String name
-    String targetFilename
-    String sourceFilename
-    boolean generate = true
-}
diff --git a/generator/src/main/groovy/model/SiteMap.groovy b/generator/src/main/groovy/model/SiteMap.groovy
deleted file mode 100644
index 89ad799..0000000
--- a/generator/src/main/groovy/model/SiteMap.groovy
+++ /dev/null
@@ -1,137 +0,0 @@
-package model
-
-import groovy.transform.ToString
-import org.codehaus.groovy.control.CompilerConfiguration
-
-import groovy.transform.CompileStatic
-import org.codehaus.groovy.control.customizers.ImportCustomizer
-
-@CompileStatic
-@ToString(includeNames=true)
-class SiteMap {
-    final List<Section> documentationSections = []
-    final List<Distribution> distributions = []
-    final Menu menu = new Menu()
-    final Ecosystem ecosystem = new Ecosystem()
-    final Events allEvents = new Events()
-    final Library library = new Library()
-    final List<String> allDocVersions = []
-    final List<Page> pages = []
-    final List<UserGroup> usergroups = []
-    final List<Video> videos = []
-    final List<Course> courses = []
-    boolean changelogs = true
-    boolean releaseNotes = true
-    boolean wiki = true
-
-    private SiteMap() {}
-
-    static SiteMap from(File source) {
-        CompilerConfiguration config = new CompilerConfiguration()
-        def customizer = new ImportCustomizer()
-        config.addCompilationCustomizers(customizer)
-        customizer.addStaticImport('generator.DocUtils','DOCS_BASEURL')
-        config.scriptBaseClass = 'groovy.util.DelegatingScript'
-        GroovyShell shell = new GroovyShell(config)
-        def script = shell.parse(source)
-
-        def result = new SiteMap()
-        ((DelegatingScript)script).setDelegate(result)
-        script.run()
-
-        result
-    }
-
-    private void documentation(Closure docSpec) {
-        def clone = docSpec.rehydrate(this, this, this)
-        clone()
-    }
-
-    private void section(String name, String icon, Closure sectionSpec) {
-        Section section = new Section(name:name, icon:icon)
-        def spec = sectionSpec.rehydrate(section,section,section)
-        spec()
-        documentationSections.add(section)
-    }
-
-    private void groovyDocumentationVersions(List<String> allDocVersions) {
-        this.allDocVersions.addAll(allDocVersions)
-    }
-
-    private void downloads(Closure dlSpec) {
-        def clone = dlSpec.rehydrate(this, this, this)
-        clone()
-    }
-
-    private void pages(Closure pagesSpec) {
-        def clone = pagesSpec.rehydrate(this, this, this)
-        clone()
-    }
-
-    private void usergroups(Closure groupsSpec) {
-        def clone = groupsSpec.rehydrate(this ,this ,this)
-        clone()
-    }
-
-    private void videos(Closure videosSpec) {
-        def clone = videosSpec.rehydrate(this, this, this)
-        clone()
-    }
-
-    private void courses(Closure coursesSpec) {
-        def clone = coursesSpec.rehydrate(this, this, this)
-        clone()
-    }
-
-    private void distribution(String name, Closure distSpec) {
-        Distribution dist = new Distribution(name: name)
-        def clone = distSpec.rehydrate(dist, dist, dist)
-        clone()
-        distributions.add(dist)
-    }
-
-    private void menu(Closure menuSpec) {
-        def clone = menuSpec.rehydrate(menu, menu, menu)
-        clone()
-    }
-
-    private void ecosystem(Closure ecoSpec) {
-        def clone = ecoSpec.rehydrate(ecosystem, ecosystem, ecosystem)
-        clone()
-    }
-
-    private void allEvents(Closure eventsSpec) {
-        def clone = eventsSpec.rehydrate(allEvents, allEvents, allEvents)
-        clone()
-    }
-
-    private void books(Closure booksSpec) {
-        def clone = booksSpec.rehydrate(library, library, library)
-        clone()
-    }
-
-    private void page(String source, String target, Map model = [:]) {
-        pages.add(new Page(source:source, target: target, model: model))
-    }
-
-    private void userGroup(String name, Closure groupSpec) {
-        def group = new UserGroup(name: name)
-        def clone = groupSpec.rehydrate(group,group,group)
-        clone()
-        usergroups.add(group)
-    }
-
-    private void video(String title, Closure videoSpec) {
-        def video = new Video(title: title)
-        def clone = videoSpec.rehydrate(video, video, video)
-        clone()
-        videos.add(video)
-    }
-
-    private void course(String title, Closure courseSpec) {
-        def course = new Course(title: title)
-        def clone = courseSpec.rehydrate(course,course,course)
-        clone()
-        courses.add(course)
-    }
-}
diff --git a/generator/src/main/groovy/model/UserGroup.groovy b/generator/src/main/groovy/model/UserGroup.groovy
deleted file mode 100644
index 84007e3..0000000
--- a/generator/src/main/groovy/model/UserGroup.groovy
+++ /dev/null
@@ -1,28 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-import groovy.transform.ToString
-
-@CompileStatic
-@ToString(includeNames=true)
-class UserGroup {
-    String location
-    String name
-    String url
-
-    void location(String location) {
-        this.location = location
-    }
-
-    void name(String name) {
-        this.name = name
-    }
-
-    void url(String url) {
-        this.url = url
-    }
-
-    String[] getLocationParts() {
-        location.split('/')
-    }
-}
diff --git a/generator/src/main/groovy/model/Video.groovy b/generator/src/main/groovy/model/Video.groovy
deleted file mode 100644
index a5a4667..0000000
--- a/generator/src/main/groovy/model/Video.groovy
+++ /dev/null
@@ -1,38 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Video {
-    String title
-    String speaker
-    String summary
-    String pictureUrl
-    String videoUrl = ""
-    String slidesUrl = ""
-    String codeUrl = ""
-
-    void speaker(String speaker) {
-        this.speaker = speaker
-    }
-
-    void summary(String summary) {
-        this.summary = summary
-    }
-
-    void pictureUrl(String pictureUrl) {
-        this.pictureUrl = pictureUrl
-    }
-
-    void videoUrl(String videoUrl) {
-        this.videoUrl = videoUrl
-    }
-
-    void slidesUrl(String slidesUrl) {
-        this.slidesUrl = slidesUrl
-    }
-
-    void codeUrl(String codeUrl) {
-        this.codeUrl = codeUrl
-    }
-}
diff --git a/gradle.properties b/gradle.properties
deleted file mode 100644
index c9d5166..0000000
--- a/gradle.properties
+++ /dev/null
@@ -1 +0,0 @@
-systemProp.docs_baseurl=http://docs.groovy-lang.org/latest
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index d69138c..0000000
--- a/gradle/wrapper/gradle-wrapper.jar
+++ /dev/null
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 8ab61f9..0000000
--- a/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Wed Mar 28 15:54:35 AEST 2018
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.5.1-bin.zip
diff --git a/gradlew b/gradlew
deleted file mode 100644
index 4453cce..0000000
--- a/gradlew
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env sh
-
-##############################################################################
-##
-##  Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
-    echo "$*"
-}
-
-die ( ) {
-    echo
-    echo "$*"
-    echo
-    exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
-  CYGWIN* )
-    cygwin=true
-    ;;
-  Darwin* )
-    darwin=true
-    ;;
-  MINGW* )
-    msys=true
-    ;;
-  NONSTOP* )
-    nonstop=true
-    ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-        # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-        JAVACMD="$JAVA_HOME/bin/java"
-    fi
-    if [ ! -x "$JAVACMD" ] ; then
-        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-    fi
-else
-    JAVACMD="java"
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
-    MAX_FD_LIMIT=`ulimit -H -n`
-    if [ $? -eq 0 ] ; then
-        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
-            MAX_FD="$MAX_FD_LIMIT"
-        fi
-        ulimit -n $MAX_FD
-        if [ $? -ne 0 ] ; then
-            warn "Could not set maximum file descriptor limit: $MAX_FD"
-        fi
-    else
-        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
-    fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
-    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
-    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
-    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-    JAVACMD=`cygpath --unix "$JAVACMD"`
-
-    # We build the pattern for arguments to be converted via cygpath
-    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
-    SEP=""
-    for dir in $ROOTDIRSRAW ; do
-        ROOTDIRS="$ROOTDIRS$SEP$dir"
-        SEP="|"
-    done
-    OURCYGPATTERN="(^($ROOTDIRS))"
-    # Add a user-defined pattern to the cygpath arguments
-    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
-        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
-    fi
-    # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    i=0
-    for arg in "$@" ; do
-        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
-        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
-
-        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
-            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
-        else
-            eval `echo args$i`="\"$arg\""
-        fi
-        i=$((i+1))
-    done
-    case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
-    esac
-fi
-
-# Escape application args
-save ( ) {
-    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
-    echo " "
-}
-APP_ARGS=$(save "$@")
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
-  cd "$(dirname "$0")"
-fi
-
-exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
deleted file mode 100644
index f955316..0000000
--- a/gradlew.bat
+++ /dev/null
@@ -1,84 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem  Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index d96a7d7..0000000
--- a/settings.gradle
+++ /dev/null
@@ -1,3 +0,0 @@
-rootProject.name = 'groovy-website'
-
-include 'generator','site-dev','site-user'
diff --git a/site-dev/build.gradle b/site-dev/build.gradle
deleted file mode 100644
index 4e102ce..0000000
--- a/site-dev/build.gradle
+++ /dev/null
@@ -1,107 +0,0 @@
-import groovy.text.markup.MarkupTemplateEngine
-import groovy.text.markup.TemplateConfiguration
-import org.gradle.internal.logging.ConsoleRenderer
-import util.CssFilter
-import util.JsFilter
-import util.CheckLinks
-
-ext.watchmode = project.hasProperty('watchmode')?project.getProperty('watchmode'):'false'
-// a collection of links which have either been validated or are dummy links
-ext.excludeFromChecks = [
-        'http://issues.apache.org/jira',
-        'https://issues.apache.org/jira',
-        'target.html',
-        'foo.html',
-        'http://www.acme.com/cars',
-        'http://localhost:8080/groovy/hello.groovy'
-]
-
-apply plugin: 'base'
-
-task copyAssets(type:Copy) {
-    from file('../site/src/site/assets')
-    into file("$buildDir/site")
-    filesMatching('**/*.css') { f->
-        if (!f.name.contains('.min.')) {
-            filter(CssFilter)
-        }
-    }
-    filesMatching('**/*.js') { f->
-        if (!f.name.contains('.min.')) {
-            filter(JsFilter)
-        }
-    }
-}
-
-task copyWikiAssets(type:Copy) {
-    from file('../site/src/site/wiki/img')
-    into file("$buildDir/site/wiki/img")
-}
-
-task generateSite(type:JavaExec) {
-
-    description = 'Generates the Groovy Dev Website'
-    dependsOn copyAssets
-    dependsOn copyWikiAssets
-    ext.sources = file('../site/src/site')
-    ext.outputDir = file("$buildDir/site")
-
-    inputs.files fileTree(sources)
-    outputs.files fileTree(outputDir)
-
-    classpath = project(':generator').sourceSets.main.runtimeClasspath
-    main = 'generator.SiteGenerator'
-    args = [sources, outputDir, 'sitemap-dev.groovy', project.watchmode]
-    systemProperties.docs_baseurl = System.getProperty('docs_baseurl')
-}
-
-task checkDeadLinks(dependsOn: generateSite) {
-    description = "Checks for dead links in the generated Groovy website"
-
-    ext.outputDir = file("$buildDir/reports")
-    ext.reportFile = file("$outputDir/deadlinks.html")
-
-    inputs.files fileTree(generateSite.outputDir)
-    outputs.file reportFile
-
-    doLast {
-        def baseDir = generateSite.outputDir
-        def checkLinks = new CheckLinks(baseDir: baseDir,
-                excludeFromChecks: excludeFromChecks,
-                logger: logger)
-
-        file(baseDir).eachFileRecurse {
-            if (it.name.endsWith('.html')) {
-                checkLinks.checkPage(it)
-            }
-        }
-
-        outputDir.mkdirs()
-        def tplConf = new TemplateConfiguration()
-        tplConf.with {
-            autoIndent = true
-            autoNewLine = true
-        }
-        def tplEngine = new MarkupTemplateEngine(this.class.classLoader, file('../site/gradle/templates'), tplConf)
-
-        def report = tplEngine.createTemplateByPath("deadlinks.groovy").make(deadLinks: checkLinks.deadLinks).toString()
-
-        reportFile.write(report, 'utf-8')
-        def reportURL = new ConsoleRenderer().asClickableFileUrl(reportFile)
-        logger.lifecycle "Dead links report written at $reportURL"
-    }
-}
-
-task webzip(type:Zip, dependsOn: checkDeadLinks) {
-    description = "Creates a zip with the generated website and the deadlink report"
-    destinationDir = file("$buildDir/distributions")
-
-    baseName = 'groovy'
-    appendix = 'website'
-    from(generateSite.outputDir) {
-        into 'site'
-    }
-    from (checkDeadLinks.outputDir) {
-        into 'reports'
-    }
-}
diff --git a/site-user/build.gradle b/site-user/build.gradle
deleted file mode 100644
index a139b0c..0000000
--- a/site-user/build.gradle
+++ /dev/null
@@ -1,107 +0,0 @@
-import groovy.text.markup.MarkupTemplateEngine
-import groovy.text.markup.TemplateConfiguration
-import org.gradle.internal.logging.ConsoleRenderer
-import util.CssFilter
-import util.JsFilter
-import util.CheckLinks
-
-ext.watchmode = project.hasProperty('watchmode')?project.getProperty('watchmode'):'false'
-// a collection of links which have either been validated or are dummy links
-ext.excludeFromChecks = [
-        'http://issues.apache.org/jira',
-        'https://issues.apache.org/jira',
-        'target.html',
-        'foo.html',
-        'http://www.acme.com/cars',
-        'http://localhost:8080/groovy/hello.groovy'
-]
-
-apply plugin: 'base'
-
-task copyAssets(type:Copy) {
-    from file('../site/src/site/assets')
-    into file("$buildDir/site")
-    filesMatching('**/*.css') { f->
-        if (!f.name.contains('.min.')) {
-            filter(CssFilter)
-        }
-    }
-    filesMatching('**/*.js') { f->
-        if (!f.name.contains('.min.')) {
-            filter(JsFilter)
-        }
-    }
-}
-
-task copyReleaseNotesAssets(type:Copy) {
-    from file('../site/src/site/releasenotes/img')
-    into file("$buildDir/site/releasenotes/img")
-}
-
-task generateSite(type:JavaExec) {
-
-    description = 'Generates the Groovy User Website'
-    dependsOn copyAssets
-    dependsOn copyReleaseNotesAssets
-    ext.sources = file('../site/src/site')
-    ext.outputDir = file("$buildDir/site")
-
-    inputs.files fileTree(sources)
-    outputs.files fileTree(outputDir)
-
-    classpath = project(':generator').sourceSets.main.runtimeClasspath
-    main = 'generator.SiteGenerator'
-    args = [sources, outputDir, 'sitemap-user.groovy', project.watchmode]
-    systemProperties.docs_baseurl = System.getProperty('docs_baseurl')
-}
-
-task checkDeadLinks(dependsOn: generateSite) {
-    description = "Checks for dead links in the generated Groovy website"
-
-    ext.outputDir = file("$buildDir/reports")
-    ext.reportFile = file("$outputDir/deadlinks.html")
-
-    inputs.files fileTree(generateSite.outputDir)
-    outputs.file reportFile
-
-    doLast {
-        def baseDir = generateSite.outputDir
-        def checkLinks = new CheckLinks(baseDir: baseDir,
-                excludeFromChecks: excludeFromChecks,
-                logger: logger)
-
-        file(baseDir).eachFileRecurse {
-            if (it.name.endsWith('.html')) {
-                checkLinks.checkPage(it)
-            }
-        }
-
-        outputDir.mkdirs()
-        def tplConf = new TemplateConfiguration()
-        tplConf.with {
-            autoIndent = true
-            autoNewLine = true
-        }
-        def tplEngine = new MarkupTemplateEngine(this.class.classLoader, file('../site/gradle/templates'), tplConf)
-
-        def report = tplEngine.createTemplateByPath("deadlinks.groovy").make(deadLinks: checkLinks.deadLinks).toString()
-
-        reportFile.write(report, 'utf-8')
-        def reportURL = new ConsoleRenderer().asClickableFileUrl(reportFile)
-        logger.lifecycle "Dead links report written at $reportURL"
-    }
-}
-
-task webzip(type:Zip, dependsOn: checkDeadLinks) {
-    description = "Creates a zip with the generated website and the deadlink report"
-    destinationDir = file("$buildDir/distributions")
-
-    baseName = 'groovy'
-    appendix = 'website'
-    from(generateSite.outputDir) {
-        into 'site'
-    }
-    from (checkDeadLinks.outputDir) {
-        into 'reports'
-    }
-}
diff --git a/site/gradle/templates/deadlinks.groovy b/site/gradle/templates/deadlinks.groovy
deleted file mode 100644
index f6db408..0000000
--- a/site/gradle/templates/deadlinks.groovy
+++ /dev/null
@@ -1,23 +0,0 @@
-html {
-    head {
-        title 'Dead links report'
-    }
-    body {
-        h1('Dead links report')
-        if (!deadLinks) {
-            p("No dead link found. All green!")
-        } else {
-            p "Found a total of ${deadLinks.values().sum{ it.size() }} dead links in the following files:"
-            deadLinks.each { entry ->
-                def (page, links) = [entry.key, entry.value]
-                h3 { a(href:page,page) }
-                ul {
-                    links.each { link ->
-                        li("At line ${link.line}, dead link to ${link.link}")
-                    }
-                }
-            }
-            p "Note: not all dead links can be fixed directly in the Groovy website project - some are generated from the Groovy documentation and must be fixed there."
-        }
-    }
-}
diff --git a/site/src/site/assets/css/book.css b/site/src/site/assets/css/book.css
deleted file mode 100644
index 517dd54..0000000
--- a/site/src/site/assets/css/book.css
+++ /dev/null
@@ -1,680 +0,0 @@
-.book-btn {
-    display: inline-block;
-    text-transform: uppercase;
-    text-decoration: none;
-    border: 2px solid black;
-    margin-top: 100px;
-    font-size: 0.7em;
-    font-weight: 700;
-    padding: 0.1em 0.4em;
-    margin-left: 40px;
-    text-align: center;
-    -webkit-transition: color 0.3s, border-color 0.3s;
-    -moz-transition: color 0.3s, border-color 0.3s;
-    transition: color 0.3s, border-color 0.3s;
-}
-
-.book-btn:hover {
-    border-color: #db4800;
-    color: #db4800;
-}
-
-/* ///////////////////////////////////////////////////
-
-HARDCOVER
-Table of Contents
-
-1. container
-2. background & color
-3. opening cover, back cover and pages
-4. position, transform y transition
-5. events
-6. Bonus
-    - Cover design
-    - Ribbon
-    - Figcaption
-7. mini-reset
-
-/////////////////////////////////////////////////////*/
-
-/*
-    1. container
-*/
-
-.book {
-    position: relative;
-    width: 160px;
-    height: 220px;
-    -webkit-perspective: 1000px;
-    -moz-perspective: 1000px;
-    perspective: 1000px;
-    -webkit-transform-style: preserve-3d;
-    -moz-transform-style: preserve-3d;
-    transform-style: preserve-3d;
-    margin: 20px;
-    margin-bottom: 40px;
-    margin-left: 60px;
-}
-
-.book ul {
-    list-style: none;
-}
-
-/*
-    2. background & color
-*/
-
-/* HARDCOVER FRONT */
-.hardcover_front li:first-child {
-    background-color: #eee;
-    -webkit-backface-visibility: hidden;
-    -moz-backface-visibility: hidden;
-    backface-visibility: hidden;
-}
-
-/* reverse */
-.hardcover_front li:last-child {
-    background: #fffbec;
-}
-
-/* HARDCOVER BACK */
-.hardcover_back li:first-child {
-    background: #fffbec;
-}
-
-/* reverse */
-.hardcover_back li:last-child {
-    background: #fffbec;
-}
-
-.book_spine li:first-child {
-    background: #eee;
-}
-
-.book_spine li:last-child {
-    background: #333;
-}
-
-/* thickness of cover */
-
-.hardcover_front li:first-child:after,
-.hardcover_front li:first-child:before,
-.hardcover_front li:last-child:after,
-.hardcover_front li:last-child:before,
-.hardcover_back li:first-child:after,
-.hardcover_back li:first-child:before,
-.hardcover_back li:last-child:after,
-.hardcover_back li:last-child:before,
-.book_spine li:first-child:after,
-.book_spine li:first-child:before,
-.book_spine li:last-child:after,
-.book_spine li:last-child:before {
-    background: #999;
-}
-
-/* page */
-
-.page > li {
-    background: -webkit-linear-gradient(left, #e1ddd8 0%, #fffbf6 100%);
-    background: -moz-linear-gradient(left, #e1ddd8 0%, #fffbf6 100%);
-    background: -ms-linear-gradient(left, #e1ddd8 0%, #fffbf6 100%);
-    background: linear-gradient(left, #e1ddd8 0%, #fffbf6 100%);
-    box-shadow: inset 0px -1px 2px rgba(50, 50, 50, 0.1), inset -1px 0px 1px rgba(150, 150, 150, 0.2);
-    border-radius: 0px 5px 5px 0px;
-}
-
-/*
-    3. opening cover, back cover and pages
-*/
-
-.hardcover_front {
-    -webkit-transform: rotateY(-34deg) translateZ(8px);
-    -moz-transform: rotateY(-34deg) translateZ(8px);
-    transform: rotateY(-34deg) translateZ(8px);
-    z-index: 100;
-}
-
-.hardcover_back {
-    -webkit-transform: rotateY(-15deg) translateZ(-8px);
-    -moz-transform: rotateY(-15deg) translateZ(-8px);
-    transform: rotateY(-15deg) translateZ(-8px);
-}
-
-.page li:nth-child(1) {
-    -webkit-transform: rotateY(-28deg);
-    -moz-transform: rotateY(-28deg);
-    transform: rotateY(-28deg);
-}
-
-.page li:nth-child(2) {
-    -webkit-transform: rotateY(-30deg);
-    -moz-transform: rotateY(-30deg);
-    transform: rotateY(-30deg);
-}
-
-.page li:nth-child(3) {
-    -webkit-transform: rotateY(-32deg);
-    -moz-transform: rotateY(-32deg);
-    transform: rotateY(-32deg);
-}
-
-.page li:nth-child(4) {
-    -webkit-transform: rotateY(-34deg);
-    -moz-transform: rotateY(-34deg);
-    transform: rotateY(-34deg);
-}
-
-.page li:nth-child(5) {
-    -webkit-transform: rotateY(-36deg);
-    -moz-transform: rotateY(-36deg);
-    transform: rotateY(-36deg);
-}
-
-/*
-    4. position, transform & transition
-*/
-
-.hardcover_front,
-.hardcover_back,
-.book_spine,
-.hardcover_front li,
-.hardcover_back li,
-.book_spine li {
-    position: absolute;
-    top: 0;
-    left: 0;
-    width: 100%;
-    height: 100%;
-    -webkit-transform-style: preserve-3d;
-    -moz-transform-style: preserve-3d;
-    transform-style: preserve-3d;
-}
-
-.hardcover_front,
-.hardcover_back {
-    -webkit-transform-origin: 0% 100%;
-    -moz-transform-origin: 0% 100%;
-    transform-origin: 0% 100%;
-}
-
-.hardcover_front {
-    -webkit-transition: all 0.8s ease, z-index 0.6s;
-    -moz-transition: all 0.8s ease, z-index 0.6s;
-    transition: all 0.8s ease, z-index 0.6s;
-}
-
-/* HARDCOVER front */
-.hardcover_front li:first-child {
-    cursor: default;
-    -webkit-user-select: none;
-    -moz-user-select: none;
-    user-select: none;
-    -webkit-transform: translateZ(2px);
-    -moz-transform: translateZ(2px);
-    transform: translateZ(2px);
-}
-
-.hardcover_front li:last-child {
-    -webkit-transform: rotateY(180deg) translateZ(2px);
-    -moz-transform: rotateY(180deg) translateZ(2px);
-    transform: rotateY(180deg) translateZ(2px);
-}
-
-/* HARDCOVER back */
-.hardcover_back li:first-child {
-    -webkit-transform: translateZ(2px);
-    -moz-transform: translateZ(2px);
-    transform: translateZ(2px);
-}
-
-.hardcover_back li:last-child {
-    -webkit-transform: translateZ(-2px);
-    -moz-transform: translateZ(-2px);
-    transform: translateZ(-2px);
-}
-
-/* thickness of cover */
-.hardcover_front li:first-child:after,
-.hardcover_front li:first-child:before,
-.hardcover_front li:last-child:after,
-.hardcover_front li:last-child:before,
-.hardcover_back li:first-child:after,
-.hardcover_back li:first-child:before,
-.hardcover_back li:last-child:after,
-.hardcover_back li:last-child:before,
-.book_spine li:first-child:after,
-.book_spine li:first-child:before,
-.book_spine li:last-child:after,
-.book_spine li:last-child:before {
-    position: absolute;
-    top: 0;
-    left: 0;
-}
-
-/* HARDCOVER front */
-.hardcover_front li:first-child:after,
-.hardcover_front li:first-child:before {
-    width: 4px;
-    height: 100%;
-}
-
-.hardcover_front li:first-child:after {
-    -webkit-transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-    -moz-transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-    transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-}
-
-.hardcover_front li:first-child:before {
-    -webkit-transform: rotateY(90deg) translateZ(158px) translateX(2px);
-    -moz-transform: rotateY(90deg) translateZ(158px) translateX(2px);
-    transform: rotateY(90deg) translateZ(158px) translateX(2px);
-}
-
-.hardcover_front li:last-child:after,
-.hardcover_front li:last-child:before {
-    width: 4px;
-    height: 160px;
-}
-
-.hardcover_front li:last-child:after {
-    -webkit-transform: rotateX(90deg) rotateZ(90deg) translateZ(80px) translateX(-2px) translateY(-78px);
-    -moz-transform: rotateX(90deg) rotateZ(90deg) translateZ(80px) translateX(-2px) translateY(-78px);
-    transform: rotateX(90deg) rotateZ(90deg) translateZ(80px) translateX(-2px) translateY(-78px);
-}
-
-.hardcover_front li:last-child:before {
-    box-shadow: 0px 0px 30px 5px #333;
-    -webkit-transform: rotateX(90deg) rotateZ(90deg) translateZ(-140px) translateX(-2px) translateY(-78px);
-    -moz-transform: rotateX(90deg) rotateZ(90deg) translateZ(-140px) translateX(-2px) translateY(-78px);
-    transform: rotateX(90deg) rotateZ(90deg) translateZ(-140px) translateX(-2px) translateY(-78px);
-}
-
-/* thickness of cover */
-
-.hardcover_back li:first-child:after,
-.hardcover_back li:first-child:before {
-    width: 4px;
-    height: 100%;
-}
-
-.hardcover_back li:first-child:after {
-    -webkit-transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-    -moz-transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-    transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-}
-
-.hardcover_back li:first-child:before {
-    -webkit-transform: rotateY(90deg) translateZ(158px) translateX(2px);
-    -moz-transform: rotateY(90deg) translateZ(158px) translateX(2px);
-    transform: rotateY(90deg) translateZ(158px) translateX(2px);
-}
-
-.hardcover_back li:last-child:after,
-.hardcover_back li:last-child:before {
-    width: 4px;
-    height: 160px;
-}
-
-.hardcover_back li:last-child:after {
-    -webkit-transform: rotateX(90deg) rotateZ(90deg) translateZ(80px) translateX(2px) translateY(-78px);
-    -moz-transform: rotateX(90deg) rotateZ(90deg) translateZ(80px) translateX(2px) translateY(-78px);
-    transform: rotateX(90deg) rotateZ(90deg) translateZ(80px) translateX(2px) translateY(-78px);
-}
-
-.hardcover_back li:last-child:before {
-    box-shadow: 10px -1px 80px 20px #666;
-    -webkit-transform: rotateX(90deg) rotateZ(90deg) translateZ(-140px) translateX(2px) translateY(-78px);
-    -moz-transform: rotateX(90deg) rotateZ(90deg) translateZ(-140px) translateX(2px) translateY(-78px);
-    transform: rotateX(90deg) rotateZ(90deg) translateZ(-140px) translateX(2px) translateY(-78px);
-}
-
-/* BOOK SPINE */
-.book_spine {
-    -webkit-transform: rotateY(60deg) translateX(-5px) translateZ(-12px);
-    -moz-transform: rotateY(60deg) translateX(-5px) translateZ(-12px);
-    transform: rotateY(60deg) translateX(-5px) translateZ(-12px);
-    width: 16px;
-    z-index: 0;
-}
-
-.book_spine li:first-child {
-    -webkit-transform: translateZ(2px);
-    -moz-transform: translateZ(2px);
-    transform: translateZ(2px);
-}
-
-.book_spine li:last-child {
-    -webkit-transform: translateZ(-2px);
-    -moz-transform: translateZ(-2px);
-    transform: translateZ(-2px);
-}
-
-/* thickness of book spine */
-.book_spine li:first-child:after,
-.book_spine li:first-child:before {
-    width: 4px;
-    height: 100%;
-}
-
-.book_spine li:first-child:after {
-    -webkit-transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-    -moz-transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-    transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-}
-
-.book_spine li:first-child:before {
-    -webkit-transform: rotateY(-90deg) translateZ(-12px);
-    -moz-transform: rotateY(-90deg) translateZ(-12px);
-    transform: rotateY(-90deg) translateZ(-12px);
-}
-
-.book_spine li:last-child:after,
-.book_spine li:last-child:before {
-    width: 4px;
-    height: 16px;
-}
-
-.book_spine li:last-child:after {
-    -webkit-transform: rotateX(90deg) rotateZ(90deg) translateZ(8px) translateX(2px) translateY(-6px);
-    -moz-transform: rotateX(90deg) rotateZ(90deg) translateZ(8px) translateX(2px) translateY(-6px);
-    transform: rotateX(90deg) rotateZ(90deg) translateZ(8px) translateX(2px) translateY(-6px);
-}
-
-.book_spine li:last-child:before {
-    box-shadow: 5px -1px 100px 40px rgba(0, 0, 0, 0.2);
-    -webkit-transform: rotateX(90deg) rotateZ(90deg) translateZ(-210px) translateX(2px) translateY(-6px);
-    -moz-transform: rotateX(90deg) rotateZ(90deg) translateZ(-210px) translateX(2px) translateY(-6px);
-    transform: rotateX(90deg) rotateZ(90deg) translateZ(-210px) translateX(2px) translateY(-6px);
-}
-
-.page,
-.page > li {
-    position: absolute;
-    top: 0;
-    left: 0;
-    -webkit-transform-style: preserve-3d;
-    -moz-transform-style: preserve-3d;
-    transform-style: preserve-3d;
-}
-
-.page {
-    width: 100%;
-    height: 98%;
-    top: 1%;
-    left: 3%;
-    z-index: 10;
-}
-
-.page > li {
-    width: 100%;
-    height: 100%;
-    -webkit-transform-origin: left center;
-    -moz-transform-origin: left center;
-    transform-origin: left center;
-    -webkit-transition-property: transform;
-    -moz-transition-property: transform;
-    transition-property: transform;
-    -webkit-transition-timing-function: ease;
-    -moz-transition-timing-function: ease;
-    transition-timing-function: ease;
-}
-
-.page > li:nth-child(1) {
-    -webkit-transition-duration: 0.6s;
-    -moz-transition-duration: 0.6s;
-    transition-duration: 0.6s;
-}
-
-.page > li:nth-child(2) {
-    -webkit-transition-duration: 0.6s;
-    -moz-transition-duration: 0.6s;
-    transition-duration: 0.6s;
-}
-
-.page > li:nth-child(3) {
-    -webkit-transition-duration: 0.4s;
-    -moz-transition-duration: 0.4s;
-    transition-duration: 0.4s;
-}
-
-.page > li:nth-child(4) {
-    -webkit-transition-duration: 0.5s;
-    -moz-transition-duration: 0.5s;
-    transition-duration: 0.5s;
-}
-
-.page > li:nth-child(5) {
-    -webkit-transition-duration: 0.6s;
-    -moz-transition-duration: 0.6s;
-    transition-duration: 0.6s;
-}
-
-/*
-    5. events
-*/
-
-@media screen and (min-width: 768px) {
-    .book:hover > .hardcover_front {
-        -webkit-transform: rotateY(-145deg) translateZ(0);
-        -moz-transform: rotateY(-145deg) translateZ(0);
-        transform: rotateY(-145deg) translateZ(0);
-        z-index: 0;
-    }
-
-    .book:hover > .page li:nth-child(1) {
-        -webkit-transform: rotateY(-30deg);
-        -moz-transform: rotateY(-30deg);
-        transform: rotateY(-30deg);
-        -webkit-transition-duration: 1.5s;
-        -moz-transition-duration: 1.5s;
-        transition-duration: 1.5s;
-    }
-
-    .book:hover > .page li:nth-child(2) {
-        -webkit-transform: rotateY(-35deg);
-        -moz-transform: rotateY(-35deg);
-        transform: rotateY(-35deg);
-        -webkit-transition-duration: 1.8s;
-        -moz-transition-duration: 1.8s;
-        transition-duration: 1.8s;
-    }
-
-    .book:hover > .page li:nth-child(3) {
-        -webkit-transform: rotateY(-118deg);
-        -moz-transform: rotateY(-118deg);
-        transform: rotateY(-118deg);
-        -webkit-transition-duration: 1.6s;
-        -moz-transition-duration: 1.6s;
-        transition-duration: 1.6s;
-    }
-
-    .book:hover > .page li:nth-child(4) {
-        -webkit-transform: rotateY(-130deg);
-        -moz-transform: rotateY(-130deg);
-        transform: rotateY(-130deg);
-        -webkit-transition-duration: 1.4s;
-        -moz-transition-duration: 1.4s;
-        transition-duration: 1.4s;
-    }
-
-    .book:hover > .page li:nth-child(5) {
-        -webkit-transform: rotateY(-140deg);
-        -moz-transform: rotateY(-140deg);
-        transform: rotateY(-140deg);
-        -webkit-transition-duration: 1.2s;
-        -moz-transition-duration: 1.2s;
-        transition-duration: 1.2s;
-    }
-}
-
-/*
-    6. Bonus
-*/
-
-/* cover CSS */
-
-.coverDesign {
-    position: absolute;
-    top: 0;
-    left: 0;
-    bottom: 0;
-    right: 0;
-    overflow: hidden;
-    -webkit-backface-visibility: hidden;
-    -moz-backface-visibility: hidden;
-    backface-visibility: hidden;
-}
-
-.coverDesign::after {
-    background-image: -webkit-linear-gradient(-135deg, rgba(255, 255, 255, 0.45) 0%, transparent 100%);
-    background-image: -moz-linear-gradient(-135deg, rgba(255, 255, 255, 0.45) 0%, transparent 100%);
-    background-image: linear-gradient(-135deg, rgba(255, 255, 255, 0.45) 0%, transparent 100%);
-    position: absolute;
-    top: 0;
-    left: 0;
-    bottom: 0;
-    right: 0;
-}
-
-.coverDesign h1 {
-    color: #fff;
-    font-size: 2.2em;
-    letter-spacing: 0.05em;
-    text-align: center;
-    margin: 54% 0 0 0;
-    text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.1);
-}
-
-.coverDesign p {
-    color: #f8f8f8;
-    font-size: 1em;
-    text-align: center;
-    text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.1);
-}
-
-.yellow {
-    background-color: #f1c40f;
-    background-image: -webkit-linear-gradient(top, #f1c40f 58%, #e7ba07 0%);
-    background-image: -moz-linear-gradient(top, #f1c40f 58%, #e7ba07 0%);
-    background-image: linear-gradient(top, #f1c40f 58%, #e7ba07 0%);
-}
-
-.blue {
-    background-color: #3498db;
-    background-image: -webkit-linear-gradient(top, #3498db 58%, #2a90d4 0%);
-    background-image: -moz-linear-gradient(top, #3498db 58%, #2a90d4 0%);
-    background-image: linear-gradient(top, #3498db 58%, #2a90d4 0%);
-}
-
-.grey {
-    background-color: #f8e9d1;
-    background-image: -webkit-linear-gradient(top, #f8e9d1 58%, #e7d5b7 0%);
-    background-image: -moz-linear-gradient(top, #f8e9d1 58%, #e7d5b7 0%);
-    background-image: linear-gradient(top, #f8e9d1 58%, #e7d5b7 0%);
-}
-
-/* Basic ribbon */
-
-.ribbon {
-    background: #c0392b;
-    color: #fff;
-    display: block;
-    font-size: 0.7em;
-    position: absolute;
-    top: 11px;
-    right: 1px;
-    width: 40px;
-    height: 20px;
-    line-height: 20px;
-    letter-spacing: 0.15em;
-    text-align: center;
-    -webkit-transform: rotateZ(45deg) translateZ(1px);
-    -moz-transform: rotateZ(45deg) translateZ(1px);
-    transform: rotateZ(45deg) translateZ(1px);
-    -webkit-backface-visibility: hidden;
-    -moz-backface-visibility: hidden;
-    backface-visibility: hidden;
-    z-index: 10;
-}
-
-.ribbon::before,
-.ribbon::after {
-    position: absolute;
-    top: -20px;
-    width: 0;
-    height: 0;
-    border-bottom: 20px solid #c0392b;
-    border-top: 20px solid transparent;
-}
-
-.ribbon::before {
-    left: -20px;
-    border-left: 20px solid transparent;
-}
-
-.ribbon::after {
-    right: -20px;
-    border-right: 20px solid transparent;
-}
-
-/* figcaption */
-
-.book figcaption {
-    padding-left: 40px;
-    padding-top: 40px;
-    text-align: left;
-    position: absolute;
-    top: 0%;
-    left: 160px;
-    width: 500px;
-}
-
-.book figcaption h1 {
-    margin: 0;
-}
-
-.book figcaption span {
-    color: #245f78;
-    padding: 0.6em 0 0.2em 0;
-    display: block;
-}
-
-.book figcaption p {
-    color: black;
-    line-height: 1.3;
-}
-
-/* Media Queries */
-@media screen and (max-width: 767px) {
-    .align > li {
-        width: 100%;
-        min-height: 440px;
-        height: auto;
-        padding: 0;
-        margin: 0 0 30px 0;
-    }
-
-    .book {
-        margin-left: 60px;
-        display: block;
-        margin-bottom: 280px;
-    }
-
-    .book figcaption {
-        min-width: 320px;
-        top: 250px;
-        padding-left: 0;
-        left: -60px;
-        display: block;
-    }
-}
-
-@media screen and (max-width: 550px) {
-    .book {
-        height: 250px;
-    }
-
-    .book figcaption {
-        width: 320px;
-    }
-}
diff --git a/site/src/site/assets/css/bootstrap.css b/site/src/site/assets/css/bootstrap.css
deleted file mode 100644
index 1a98538..0000000
--- a/site/src/site/assets/css/bootstrap.css
+++ /dev/null
@@ -1,6203 +0,0 @@
-/*!
- * Bootstrap v3.2.0 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
-html {
-  font-family: sans-serif;
-  -webkit-text-size-adjust: 100%;
-      -ms-text-size-adjust: 100%;
-}
-body {
-  margin: 0;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-nav,
-section,
-summary {
-  display: block;
-}
-audio,
-canvas,
-progress,
-video {
-  display: inline-block;
-  vertical-align: baseline;
-}
-audio:not([controls]) {
-  display: none;
-  height: 0;
-}
-[hidden],
-template {
-  display: none;
-}
-a {
-  background: transparent;
-}
-a:active,
-a:hover {
-  outline: 0;
-}
-abbr[title] {
-  border-bottom: 1px dotted;
-}
-b,
-strong {
-  font-weight: bold;
-}
-dfn {
-  font-style: italic;
-}
-h1 {
-  margin: .67em 0;
-  font-size: 2em;
-}
-mark {
-  color: #000;
-  background: #ff0;
-}
-small {
-  font-size: 80%;
-}
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -.5em;
-}
-sub {
-  bottom: -.25em;
-}
-img {
-  border: 0;
-}
-svg:not(:root) {
-  overflow: hidden;
-}
-figure {
-  margin: 1em 40px;
-}
-hr {
-  height: 0;
-  -webkit-box-sizing: content-box;
-     -moz-box-sizing: content-box;
-          box-sizing: content-box;
-}
-pre {
-  overflow: auto;
-}
-code,
-kbd,
-pre,
-samp {
-  font-family: monospace, monospace;
-  font-size: 1em;
-}
-button,
-input,
-optgroup,
-select,
-textarea {
-  margin: 0;
-  font: inherit;
-  color: inherit;
-}
-button {
-  overflow: visible;
-}
-button,
-select {
-  text-transform: none;
-}
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  -webkit-appearance: button;
-  cursor: pointer;
-}
-button[disabled],
-html input[disabled] {
-  cursor: default;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-input {
-  line-height: normal;
-}
-input[type="checkbox"],
-input[type="radio"] {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  padding: 0;
-}
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
-  height: auto;
-}
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-     -moz-box-sizing: content-box;
-          box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-  -webkit-appearance: none;
-}
-fieldset {
-  padding: .35em .625em .75em;
-  margin: 0 2px;
-  border: 1px solid #c0c0c0;
-}
-legend {
-  padding: 0;
-  border: 0;
-}
-textarea {
-  overflow: auto;
-}
-optgroup {
-  font-weight: bold;
-}
-table {
-  border-spacing: 0;
-  border-collapse: collapse;
-}
-td,
-th {
-  padding: 0;
-}
-@media print {
-  * {
-    color: #000 !important;
-    text-shadow: none !important;
-    background: transparent !important;
-    -webkit-box-shadow: none !important;
-            box-shadow: none !important;
-  }
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-  a[href^="javascript:"]:after,
-  a[href^="#"]:after {
-    content: "";
-  }
-  pre,
-  blockquote {
-    border: 1px solid #999;
-
-    page-break-inside: avoid;
-  }
-  thead {
-    display: table-header-group;
-  }
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-  img {
-    max-width: 100% !important;
-  }
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-  select {
-    background: #fff !important;
-  }
-  .navbar {
-    display: none;
-  }
-  .table td,
-  .table th {
-    background-color: #fff !important;
-  }
-  .btn > .caret,
-  .dropup > .btn > .caret {
-    border-top-color: #000 !important;
-  }
-  .label {
-    border: 1px solid #000;
-  }
-  .table {
-    border-collapse: collapse !important;
-  }
-  .table-bordered th,
-  .table-bordered td {
-    border: 1px solid #ddd !important;
-  }
-}
-@font-face {
-  font-family: 'Glyphicons Halflings';
-
-  src: url('../fonts/glyphicons-halflings-regular.eot');
-  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
-}
-.glyphicon {
-  position: relative;
-  top: 1px;
-  display: inline-block;
-  font-family: 'Glyphicons Halflings';
-  font-style: normal;
-  font-weight: normal;
-  line-height: 1;
-
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-.glyphicon-asterisk:before {
-  content: "\2a";
-}
-.glyphicon-plus:before {
-  content: "\2b";
-}
-.glyphicon-euro:before {
-  content: "\20ac";
-}
-.glyphicon-minus:before {
-  content: "\2212";
-}
-.glyphicon-cloud:before {
-  content: "\2601";
-}
-.glyphicon-envelope:before {
-  content: "\2709";
-}
-.glyphicon-pencil:before {
-  content: "\270f";
-}
-.glyphicon-glass:before {
-  content: "\e001";
-}
-.glyphicon-music:before {
-  content: "\e002";
-}
-.glyphicon-search:before {
-  content: "\e003";
-}
-.glyphicon-heart:before {
-  content: "\e005";
-}
-.glyphicon-star:before {
-  content: "\e006";
-}
-.glyphicon-star-empty:before {
-  content: "\e007";
-}
-.glyphicon-user:before {
-  content: "\e008";
-}
-.glyphicon-film:before {
-  content: "\e009";
-}
-.glyphicon-th-large:before {
-  content: "\e010";
-}
-.glyphicon-th:before {
-  content: "\e011";
-}
-.glyphicon-th-list:before {
-  content: "\e012";
-}
-.glyphicon-ok:before {
-  content: "\e013";
-}
-.glyphicon-remove:before {
-  content: "\e014";
-}
-.glyphicon-zoom-in:before {
-  content: "\e015";
-}
-.glyphicon-zoom-out:before {
-  content: "\e016";
-}
-.glyphicon-off:before {
-  content: "\e017";
-}
-.glyphicon-signal:before {
-  content: "\e018";
-}
-.glyphicon-cog:before {
-  content: "\e019";
-}
-.glyphicon-trash:before {
-  content: "\e020";
-}
-.glyphicon-home:before {
-  content: "\e021";
-}
-.glyphicon-file:before {
-  content: "\e022";
-}
-.glyphicon-time:before {
-  content: "\e023";
-}
-.glyphicon-road:before {
-  content: "\e024";
-}
-.glyphicon-download-alt:before {
-  content: "\e025";
-}
-.glyphicon-download:before {
-  content: "\e026";
-}
-.glyphicon-upload:before {
-  content: "\e027";
-}
-.glyphicon-inbox:before {
-  content: "\e028";
-}
-.glyphicon-play-circle:before {
-  content: "\e029";
-}
-.glyphicon-repeat:before {
-  content: "\e030";
-}
-.glyphicon-refresh:before {
-  content: "\e031";
-}
-.glyphicon-list-alt:before {
-  content: "\e032";
-}
-.glyphicon-lock:before {
-  content: "\e033";
-}
-.glyphicon-flag:before {
-  content: "\e034";
-}
-.glyphicon-headphones:before {
-  content: "\e035";
-}
-.glyphicon-volume-off:before {
-  content: "\e036";
-}
-.glyphicon-volume-down:before {
-  content: "\e037";
-}
-.glyphicon-volume-up:before {
-  content: "\e038";
-}
-.glyphicon-qrcode:before {
-  content: "\e039";
-}
-.glyphicon-barcode:before {
-  content: "\e040";
-}
-.glyphicon-tag:before {
-  content: "\e041";
-}
-.glyphicon-tags:before {
-  content: "\e042";
-}
-.glyphicon-book:before {
-  content: "\e043";
-}
-.glyphicon-bookmark:before {
-  content: "\e044";
-}
-.glyphicon-print:before {
-  content: "\e045";
-}
-.glyphicon-camera:before {
-  content: "\e046";
-}
-.glyphicon-font:before {
-  content: "\e047";
-}
-.glyphicon-bold:before {
-  content: "\e048";
-}
-.glyphicon-italic:before {
-  content: "\e049";
-}
-.glyphicon-text-height:before {
-  content: "\e050";
-}
-.glyphicon-text-width:before {
-  content: "\e051";
-}
-.glyphicon-align-left:before {
-  content: "\e052";
-}
-.glyphicon-align-center:before {
-  content: "\e053";
-}
-.glyphicon-align-right:before {
-  content: "\e054";
-}
-.glyphicon-align-justify:before {
-  content: "\e055";
-}
-.glyphicon-list:before {
-  content: "\e056";
-}
-.glyphicon-indent-left:before {
-  content: "\e057";
-}
-.glyphicon-indent-right:before {
-  content: "\e058";
-}
-.glyphicon-facetime-video:before {
-  content: "\e059";
-}
-.glyphicon-picture:before {
-  content: "\e060";
-}
-.glyphicon-map-marker:before {
-  content: "\e062";
-}
-.glyphicon-adjust:before {
-  content: "\e063";
-}
-.glyphicon-tint:before {
-  content: "\e064";
-}
-.glyphicon-edit:before {
-  content: "\e065";
-}
-.glyphicon-share:before {
-  content: "\e066";
-}
-.glyphicon-check:before {
-  content: "\e067";
-}
-.glyphicon-move:before {
-  content: "\e068";
-}
-.glyphicon-step-backward:before {
-  content: "\e069";
-}
-.glyphicon-fast-backward:before {
-  content: "\e070";
-}
-.glyphicon-backward:before {
-  content: "\e071";
-}
-.glyphicon-play:before {
-  content: "\e072";
-}
-.glyphicon-pause:before {
-  content: "\e073";
-}
-.glyphicon-stop:before {
-  content: "\e074";
-}
-.glyphicon-forward:before {
-  content: "\e075";
-}
-.glyphicon-fast-forward:before {
-  content: "\e076";
-}
-.glyphicon-step-forward:before {
-  content: "\e077";
-}
-.glyphicon-eject:before {
-  content: "\e078";
-}
-.glyphicon-chevron-left:before {
-  content: "\e079";
-}
-.glyphicon-chevron-right:before {
-  content: "\e080";
-}
-.glyphicon-plus-sign:before {
-  content: "\e081";
-}
-.glyphicon-minus-sign:before {
-  content: "\e082";
-}
-.glyphicon-remove-sign:before {
-  content: "\e083";
-}
-.glyphicon-ok-sign:before {
-  content: "\e084";
-}
-.glyphicon-question-sign:before {
-  content: "\e085";
-}
-.glyphicon-info-sign:before {
-  content: "\e086";
-}
-.glyphicon-screenshot:before {
-  content: "\e087";
-}
-.glyphicon-remove-circle:before {
-  content: "\e088";
-}
-.glyphicon-ok-circle:before {
-  content: "\e089";
-}
-.glyphicon-ban-circle:before {
-  content: "\e090";
-}
-.glyphicon-arrow-left:before {
-  content: "\e091";
-}
-.glyphicon-arrow-right:before {
-  content: "\e092";
-}
-.glyphicon-arrow-up:before {
-  content: "\e093";
-}
-.glyphicon-arrow-down:before {
-  content: "\e094";
-}
-.glyphicon-share-alt:before {
-  content: "\e095";
-}
-.glyphicon-resize-full:before {
-  content: "\e096";
-}
-.glyphicon-resize-small:before {
-  content: "\e097";
-}
-.glyphicon-exclamation-sign:before {
-  content: "\e101";
-}
-.glyphicon-gift:before {
-  content: "\e102";
-}
-.glyphicon-leaf:before {
-  content: "\e103";
-}
-.glyphicon-fire:before {
-  content: "\e104";
-}
-.glyphicon-eye-open:before {
-  content: "\e105";
-}
-.glyphicon-eye-close:before {
-  content: "\e106";
-}
-.glyphicon-warning-sign:before {
-  content: "\e107";
-}
-.glyphicon-plane:before {
-  content: "\e108";
-}
-.glyphicon-calendar:before {
-  content: "\e109";
-}
-.glyphicon-random:before {
-  content: "\e110";
-}
-.glyphicon-comment:before {
-  content: "\e111";
-}
-.glyphicon-magnet:before {
-  content: "\e112";
-}
-.glyphicon-chevron-up:before {
-  content: "\e113";
-}
-.glyphicon-chevron-down:before {
-  content: "\e114";
-}
-.glyphicon-retweet:before {
-  content: "\e115";
-}
-.glyphicon-shopping-cart:before {
-  content: "\e116";
-}
-.glyphicon-folder-close:before {
-  content: "\e117";
-}
-.glyphicon-folder-open:before {
-  content: "\e118";
-}
-.glyphicon-resize-vertical:before {
-  content: "\e119";
-}
-.glyphicon-resize-horizontal:before {
-  content: "\e120";
-}
-.glyphicon-hdd:before {
-  content: "\e121";
-}
-.glyphicon-bullhorn:before {
-  content: "\e122";
-}
-.glyphicon-bell:before {
-  content: "\e123";
-}
-.glyphicon-certificate:before {
-  content: "\e124";
-}
-.glyphicon-thumbs-up:before {
-  content: "\e125";
-}
-.glyphicon-thumbs-down:before {
-  content: "\e126";
-}
-.glyphicon-hand-right:before {
-  content: "\e127";
-}
-.glyphicon-hand-left:before {
-  content: "\e128";
-}
-.glyphicon-hand-up:before {
-  content: "\e129";
-}
-.glyphicon-hand-down:before {
-  content: "\e130";
-}
-.glyphicon-circle-arrow-right:before {
-  content: "\e131";
-}
-.glyphicon-circle-arrow-left:before {
-  content: "\e132";
-}
-.glyphicon-circle-arrow-up:before {
-  content: "\e133";
-}
-.glyphicon-circle-arrow-down:before {
-  content: "\e134";
-}
-.glyphicon-globe:before {
-  content: "\e135";
-}
-.glyphicon-wrench:before {
-  content: "\e136";
-}
-.glyphicon-tasks:before {
-  content: "\e137";
-}
-.glyphicon-filter:before {
-  content: "\e138";
-}
-.glyphicon-briefcase:before {
-  content: "\e139";
-}
-.glyphicon-fullscreen:before {
-  content: "\e140";
-}
-.glyphicon-dashboard:before {
-  content: "\e141";
-}
-.glyphicon-paperclip:before {
-  content: "\e142";
-}
-.glyphicon-heart-empty:before {
-  content: "\e143";
-}
-.glyphicon-link:before {
-  content: "\e144";
-}
-.glyphicon-phone:before {
-  content: "\e145";
-}
-.glyphicon-pushpin:before {
-  content: "\e146";
-}
-.glyphicon-usd:before {
-  content: "\e148";
-}
-.glyphicon-gbp:before {
-  content: "\e149";
-}
-.glyphicon-sort:before {
-  content: "\e150";
-}
-.glyphicon-sort-by-alphabet:before {
-  content: "\e151";
-}
-.glyphicon-sort-by-alphabet-alt:before {
-  content: "\e152";
-}
-.glyphicon-sort-by-order:before {
-  content: "\e153";
-}
-.glyphicon-sort-by-order-alt:before {
-  content: "\e154";
-}
-.glyphicon-sort-by-attributes:before {
-  content: "\e155";
-}
-.glyphicon-sort-by-attributes-alt:before {
-  content: "\e156";
-}
-.glyphicon-unchecked:before {
-  content: "\e157";
-}
-.glyphicon-expand:before {
-  content: "\e158";
-}
-.glyphicon-collapse-down:before {
-  content: "\e159";
-}
-.glyphicon-collapse-up:before {
-  content: "\e160";
-}
-.glyphicon-log-in:before {
-  content: "\e161";
-}
-.glyphicon-flash:before {
-  content: "\e162";
-}
-.glyphicon-log-out:before {
-  content: "\e163";
-}
-.glyphicon-new-window:before {
-  content: "\e164";
-}
-.glyphicon-record:before {
-  content: "\e165";
-}
-.glyphicon-save:before {
-  content: "\e166";
-}
-.glyphicon-open:before {
-  content: "\e167";
-}
-.glyphicon-saved:before {
-  content: "\e168";
-}
-.glyphicon-import:before {
-  content: "\e169";
-}
-.glyphicon-export:before {
-  content: "\e170";
-}
-.glyphicon-send:before {
-  content: "\e171";
-}
-.glyphicon-floppy-disk:before {
-  content: "\e172";
-}
-.glyphicon-floppy-saved:before {
-  content: "\e173";
-}
-.glyphicon-floppy-remove:before {
-  content: "\e174";
-}
-.glyphicon-floppy-save:before {
-  content: "\e175";
-}
-.glyphicon-floppy-open:before {
-  content: "\e176";
-}
-.glyphicon-credit-card:before {
-  content: "\e177";
-}
-.glyphicon-transfer:before {
-  content: "\e178";
-}
-.glyphicon-cutlery:before {
-  content: "\e179";
-}
-.glyphicon-header:before {
-  content: "\e180";
-}
-.glyphicon-compressed:before {
-  content: "\e181";
-}
-.glyphicon-earphone:before {
-  content: "\e182";
-}
-.glyphicon-phone-alt:before {
-  content: "\e183";
-}
-.glyphicon-tower:before {
-  content: "\e184";
-}
-.glyphicon-stats:before {
-  content: "\e185";
-}
-.glyphicon-sd-video:before {
-  content: "\e186";
-}
-.glyphicon-hd-video:before {
-  content: "\e187";
-}
-.glyphicon-subtitles:before {
-  content: "\e188";
-}
-.glyphicon-sound-stereo:before {
-  content: "\e189";
-}
-.glyphicon-sound-dolby:before {
-  content: "\e190";
-}
-.glyphicon-sound-5-1:before {
-  content: "\e191";
-}
-.glyphicon-sound-6-1:before {
-  content: "\e192";
-}
-.glyphicon-sound-7-1:before {
-  content: "\e193";
-}
-.glyphicon-copyright-mark:before {
-  content: "\e194";
-}
-.glyphicon-registration-mark:before {
-  content: "\e195";
-}
-.glyphicon-cloud-download:before {
-  content: "\e197";
-}
-.glyphicon-cloud-upload:before {
-  content: "\e198";
-}
-.glyphicon-tree-conifer:before {
-  content: "\e199";
-}
-.glyphicon-tree-deciduous:before {
-  content: "\e200";
-}
-* {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-*:before,
-*:after {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-html {
-  font-size: 10px;
-
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-body {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #333;
-  background-color: #fff;
-}
-input,
-button,
-select,
-textarea {
-  font-family: inherit;
-  font-size: inherit;
-  line-height: inherit;
-}
-a {
-  color: #428bca;
-  text-decoration: none;
-}
-a:hover,
-a:focus {
-  color: #2a6496;
-  text-decoration: underline;
-}
-a:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-figure {
-  margin: 0;
-}
-img {
-  vertical-align: middle;
-}
-.img-responsive,
-.thumbnail > img,
-.thumbnail a > img,
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
-  display: block;
-  width: 100% \9;
-  max-width: 100%;
-  height: auto;
-}
-.img-rounded {
-  border-radius: 6px;
-}
-.img-thumbnail {
-  display: inline-block;
-  width: 100% \9;
-  max-width: 100%;
-  height: auto;
-  padding: 4px;
-  line-height: 1.42857143;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-radius: 4px;
-  -webkit-transition: all .2s ease-in-out;
-       -o-transition: all .2s ease-in-out;
-          transition: all .2s ease-in-out;
-}
-.img-circle {
-  border-radius: 50%;
-}
-hr {
-  margin-top: 20px;
-  margin-bottom: 20px;
-  border: 0;
-  border-top: 1px solid #eee;
-}
-.sr-only {
-  position: absolute;
-  width: 1px;
-  height: 1px;
-  padding: 0;
-  margin: -1px;
-  overflow: hidden;
-  clip: rect(0, 0, 0, 0);
-  border: 0;
-}
-.sr-only-focusable:active,
-.sr-only-focusable:focus {
-  position: static;
-  width: auto;
-  height: auto;
-  margin: 0;
-  overflow: visible;
-  clip: auto;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-.h1,
-.h2,
-.h3,
-.h4,
-.h5,
-.h6 {
-  font-family: inherit;
-  font-weight: 500;
-  line-height: 1.1;
-  color: inherit;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small,
-.h1 small,
-.h2 small,
-.h3 small,
-.h4 small,
-.h5 small,
-.h6 small,
-h1 .small,
-h2 .small,
-h3 .small,
-h4 .small,
-h5 .small,
-h6 .small,
-.h1 .small,
-.h2 .small,
-.h3 .small,
-.h4 .small,
-.h5 .small,
-.h6 .small {
-  font-weight: normal;
-  line-height: 1;
-  color: #777;
-}
-h1,
-.h1,
-h2,
-.h2,
-h3,
-.h3 {
-  margin-top: 20px;
-  margin-bottom: 10px;
-}
-h1 small,
-.h1 small,
-h2 small,
-.h2 small,
-h3 small,
-.h3 small,
-h1 .small,
-.h1 .small,
-h2 .small,
-.h2 .small,
-h3 .small,
-.h3 .small {
-  font-size: 65%;
-}
-h4,
-.h4,
-h5,
-.h5,
-h6,
-.h6 {
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-h4 small,
-.h4 small,
-h5 small,
-.h5 small,
-h6 small,
-.h6 small,
-h4 .small,
-.h4 .small,
-h5 .small,
-.h5 .small,
-h6 .small,
-.h6 .small {
-  font-size: 75%;
-}
-h1,
-.h1 {
-  font-size: 36px;
-}
-h2,
-.h2 {
-  font-size: 30px;
-}
-h3,
-.h3 {
-  font-size: 24px;
-}
-h4,
-.h4 {
-  font-size: 18px;
-}
-h5,
-.h5 {
-  font-size: 14px;
-}
-h6,
-.h6 {
-  font-size: 12px;
-}
-p {
-  margin: 0 0 10px;
-}
-.lead {
-  margin-bottom: 20px;
-  font-size: 16px;
-  font-weight: 300;
-  line-height: 1.4;
-}
-@media (min-width: 768px) {
-  .lead {
-    font-size: 21px;
-  }
-}
-small,
-.small {
-  font-size: 85%;
-}
-cite {
-  font-style: normal;
-}
-mark,
-.mark {
-  padding: .2em;
-  background-color: #fcf8e3;
-}
-.text-left {
-  text-align: left;
-}
-.text-right {
-  text-align: right;
-}
-.text-center {
-  text-align: center;
-}
-.text-justify {
-  text-align: justify;
-}
-.text-nowrap {
-  white-space: nowrap;
-}
-.text-lowercase {
-  text-transform: lowercase;
-}
-.text-uppercase {
-  text-transform: uppercase;
-}
-.text-capitalize {
-  text-transform: capitalize;
-}
-.text-muted {
-  color: #777;
-}
-.text-primary {
-  color: #428bca;
-}
-a.text-primary:hover {
-  color: #3071a9;
-}
-.text-success {
-  color: #3c763d;
-}
-a.text-success:hover {
-  color: #2b542c;
-}
-.text-info {
-  color: #31708f;
-}
-a.text-info:hover {
-  color: #245269;
-}
-.text-warning {
-  color: #8a6d3b;
-}
-a.text-warning:hover {
-  color: #66512c;
-}
-.text-danger {
-  color: #a94442;
-}
-a.text-danger:hover {
-  color: #843534;
-}
-.bg-primary {
-  color: #fff;
-  background-color: #428bca;
-}
-a.bg-primary:hover {
-  background-color: #3071a9;
-}
-.bg-success {
-  background-color: #dff0d8;
-}
-a.bg-success:hover {
-  background-color: #c1e2b3;
-}
-.bg-info {
-  background-color: #d9edf7;
-}
-a.bg-info:hover {
-  background-color: #afd9ee;
-}
-.bg-warning {
-  background-color: #fcf8e3;
-}
-a.bg-warning:hover {
-  background-color: #f7ecb5;
-}
-.bg-danger {
-  background-color: #f2dede;
-}
-a.bg-danger:hover {
-  background-color: #e4b9b9;
-}
-.page-header {
-  padding-bottom: 9px;
-  margin: 40px 0 20px;
-  border-bottom: 1px solid #eee;
-}
-ul,
-ol {
-  margin-top: 0;
-  margin-bottom: 10px;
-}
-ul ul,
-ol ul,
-ul ol,
-ol ol {
-  margin-bottom: 0;
-}
-.list-unstyled {
-  padding-left: 0;
-  list-style: none;
-}
-.list-inline {
-  padding-left: 0;
-  margin-left: -5px;
-  list-style: none;
-}
-.list-inline > li {
-  display: inline-block;
-  padding-right: 5px;
-  padding-left: 5px;
-}
-dl {
-  margin-top: 0;
-  margin-bottom: 20px;
-}
-dt,
-dd {
-  line-height: 1.42857143;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: 0;
-}
-@media (min-width: 768px) {
-  .dl-horizontal dt {
-    float: left;
-    width: 160px;
-    overflow: hidden;
-    clear: left;
-    text-align: right;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-  }
-  .dl-horizontal dd {
-    margin-left: 180px;
-  }
-}
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #777;
-}
-.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-blockquote {
-  padding: 10px 20px;
-  margin: 0 0 20px;
-  font-size: 17.5px;
-  border-left: 5px solid #eee;
-}
-blockquote p:last-child,
-blockquote ul:last-child,
-blockquote ol:last-child {
-  margin-bottom: 0;
-}
-blockquote footer,
-blockquote small,
-blockquote .small {
-  display: block;
-  font-size: 80%;
-  line-height: 1.42857143;
-  color: #777;
-}
-blockquote footer:before,
-blockquote small:before,
-blockquote .small:before {
-  content: '\2014 \00A0';
-}
-.blockquote-reverse,
-blockquote.pull-right {
-  padding-right: 15px;
-  padding-left: 0;
-  text-align: right;
-  border-right: 5px solid #eee;
-  border-left: 0;
-}
-.blockquote-reverse footer:before,
-blockquote.pull-right footer:before,
-.blockquote-reverse small:before,
-blockquote.pull-right small:before,
-.blockquote-reverse .small:before,
-blockquote.pull-right .small:before {
-  content: '';
-}
-.blockquote-reverse footer:after,
-blockquote.pull-right footer:after,
-.blockquote-reverse small:after,
-blockquote.pull-right small:after,
-.blockquote-reverse .small:after,
-blockquote.pull-right .small:after {
-  content: '\00A0 \2014';
-}
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-address {
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 1.42857143;
-}
-code,
-kbd,
-pre,
-samp {
-  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
-}
-code {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #c7254e;
-  background-color: #f9f2f4;
-  border-radius: 4px;
-}
-kbd {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #fff;
-  background-color: #333;
-  border-radius: 3px;
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
-          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
-}
-kbd kbd {
-  padding: 0;
-  font-size: 100%;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 13px;
-  line-height: 1.42857143;
-  color: #333;
-  word-break: break-all;
-  word-wrap: break-word;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-}
-pre code {
-  padding: 0;
-  font-size: inherit;
-  color: inherit;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border-radius: 0;
-}
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-.container {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-right: auto;
-  margin-left: auto;
-}
-@media (min-width: 768px) {
-  .container {
-    width: 750px;
-  }
-}
-@media (min-width: 992px) {
-  .container {
-    width: 970px;
-  }
-}
-@media (min-width: 1200px) {
-  .container {
-    width: 1170px;
-  }
-}
-.container-fluid {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-right: auto;
-  margin-left: auto;
-}
-.row {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
-  position: relative;
-  min-height: 1px;
-  padding-right: 15px;
-  padding-left: 15px;
-}
-.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
-  float: left;
-}
-.col-xs-12 {
-  width: 100%;
-}
-.col-xs-11 {
-  width: 91.66666667%;
-}
-.col-xs-10 {
-  width: 83.33333333%;
-}
-.col-xs-9 {
-  width: 75%;
-}
-.col-xs-8 {
-  width: 66.66666667%;
-}
-.col-xs-7 {
-  width: 58.33333333%;
-}
-.col-xs-6 {
-  width: 50%;
-}
-.col-xs-5 {
-  width: 41.66666667%;
-}
-.col-xs-4 {
-  width: 33.33333333%;
-}
-.col-xs-3 {
-  width: 25%;
-}
-.col-xs-2 {
-  width: 16.66666667%;
-}
-.col-xs-1 {
-  width: 8.33333333%;
-}
-.col-xs-pull-12 {
-  right: 100%;
-}
-.col-xs-pull-11 {
-  right: 91.66666667%;
-}
-.col-xs-pull-10 {
-  right: 83.33333333%;
-}
-.col-xs-pull-9 {
-  right: 75%;
-}
-.col-xs-pull-8 {
-  right: 66.66666667%;
-}
-.col-xs-pull-7 {
-  right: 58.33333333%;
-}
-.col-xs-pull-6 {
-  right: 50%;
-}
-.col-xs-pull-5 {
-  right: 41.66666667%;
-}
-.col-xs-pull-4 {
-  right: 33.33333333%;
-}
-.col-xs-pull-3 {
-  right: 25%;
-}
-.col-xs-pull-2 {
-  right: 16.66666667%;
-}
-.col-xs-pull-1 {
-  right: 8.33333333%;
-}
-.col-xs-pull-0 {
-  right: auto;
-}
-.col-xs-push-12 {
-  left: 100%;
-}
-.col-xs-push-11 {
-  left: 91.66666667%;
-}
-.col-xs-push-10 {
-  left: 83.33333333%;
-}
-.col-xs-push-9 {
-  left: 75%;
-}
-.col-xs-push-8 {
-  left: 66.66666667%;
-}
-.col-xs-push-7 {
-  left: 58.33333333%;
-}
-.col-xs-push-6 {
-  left: 50%;
-}
-.col-xs-push-5 {
-  left: 41.66666667%;
-}
-.col-xs-push-4 {
-  left: 33.33333333%;
-}
-.col-xs-push-3 {
-  left: 25%;
-}
-.col-xs-push-2 {
-  left: 16.66666667%;
-}
-.col-xs-push-1 {
-  left: 8.33333333%;
-}
-.col-xs-push-0 {
-  left: auto;
-}
-.col-xs-offset-12 {
-  margin-left: 100%;
-}
-.col-xs-offset-11 {
-  margin-left: 91.66666667%;
-}
-.col-xs-offset-10 {
-  margin-left: 83.33333333%;
-}
-.col-xs-offset-9 {
-  margin-left: 75%;
-}
-.col-xs-offset-8 {
-  margin-left: 66.66666667%;
-}
-.col-xs-offset-7 {
-  margin-left: 58.33333333%;
-}
-.col-xs-offset-6 {
-  margin-left: 50%;
-}
-.col-xs-offset-5 {
-  margin-left: 41.66666667%;
-}
-.col-xs-offset-4 {
-  margin-left: 33.33333333%;
-}
-.col-xs-offset-3 {
-  margin-left: 25%;
-}
-.col-xs-offset-2 {
-  margin-left: 16.66666667%;
-}
-.col-xs-offset-1 {
-  margin-left: 8.33333333%;
-}
-.col-xs-offset-0 {
-  margin-left: 0;
-}
-@media (min-width: 768px) {
-  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
-    float: left;
-  }
-  .col-sm-12 {
-    width: 100%;
-  }
-  .col-sm-11 {
-    width: 91.66666667%;
-  }
-  .col-sm-10 {
-    width: 83.33333333%;
-  }
-  .col-sm-9 {
-    width: 75%;
-  }
-  .col-sm-8 {
-    width: 66.66666667%;
-  }
-  .col-sm-7 {
-    width: 58.33333333%;
-  }
-  .col-sm-6 {
-    width: 50%;
-  }
-  .col-sm-5 {
-    width: 41.66666667%;
-  }
-  .col-sm-4 {
-    width: 33.33333333%;
-  }
-  .col-sm-3 {
-    width: 25%;
-  }
-  .col-sm-2 {
-    width: 16.66666667%;
-  }
-  .col-sm-1 {
-    width: 8.33333333%;
-  }
-  .col-sm-pull-12 {
-    right: 100%;
-  }
-  .col-sm-pull-11 {
-    right: 91.66666667%;
-  }
-  .col-sm-pull-10 {
-    right: 83.33333333%;
-  }
-  .col-sm-pull-9 {
-    right: 75%;
-  }
-  .col-sm-pull-8 {
-    right: 66.66666667%;
-  }
-  .col-sm-pull-7 {
-    right: 58.33333333%;
-  }
-  .col-sm-pull-6 {
-    right: 50%;
-  }
-  .col-sm-pull-5 {
-    right: 41.66666667%;
-  }
-  .col-sm-pull-4 {
-    right: 33.33333333%;
-  }
-  .col-sm-pull-3 {
-    right: 25%;
-  }
-  .col-sm-pull-2 {
-    right: 16.66666667%;
-  }
-  .col-sm-pull-1 {
-    right: 8.33333333%;
-  }
-  .col-sm-pull-0 {
-    right: auto;
-  }
-  .col-sm-push-12 {
-    left: 100%;
-  }
-  .col-sm-push-11 {
-    left: 91.66666667%;
-  }
-  .col-sm-push-10 {
-    left: 83.33333333%;
-  }
-  .col-sm-push-9 {
-    left: 75%;
-  }
-  .col-sm-push-8 {
-    left: 66.66666667%;
-  }
-  .col-sm-push-7 {
-    left: 58.33333333%;
-  }
-  .col-sm-push-6 {
-    left: 50%;
-  }
-  .col-sm-push-5 {
-    left: 41.66666667%;
-  }
-  .col-sm-push-4 {
-    left: 33.33333333%;
-  }
-  .col-sm-push-3 {
-    left: 25%;
-  }
-  .col-sm-push-2 {
-    left: 16.66666667%;
-  }
-  .col-sm-push-1 {
-    left: 8.33333333%;
-  }
-  .col-sm-push-0 {
-    left: auto;
-  }
-  .col-sm-offset-12 {
-    margin-left: 100%;
-  }
-  .col-sm-offset-11 {
-    margin-left: 91.66666667%;
-  }
-  .col-sm-offset-10 {
-    margin-left: 83.33333333%;
-  }
-  .col-sm-offset-9 {
-    margin-left: 75%;
-  }
-  .col-sm-offset-8 {
-    margin-left: 66.66666667%;
-  }
-  .col-sm-offset-7 {
-    margin-left: 58.33333333%;
-  }
-  .col-sm-offset-6 {
-    margin-left: 50%;
-  }
-  .col-sm-offset-5 {
-    margin-left: 41.66666667%;
-  }
-  .col-sm-offset-4 {
-    margin-left: 33.33333333%;
-  }
-  .col-sm-offset-3 {
-    margin-left: 25%;
-  }
-  .col-sm-offset-2 {
-    margin-left: 16.66666667%;
-  }
-  .col-sm-offset-1 {
-    margin-left: 8.33333333%;
-  }
-  .col-sm-offset-0 {
-    margin-left: 0;
-  }
-}
-@media (min-width: 992px) {
-  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
-    float: left;
-  }
-  .col-md-12 {
-    width: 100%;
-  }
-  .col-md-11 {
-    width: 91.66666667%;
-  }
-  .col-md-10 {
-    width: 83.33333333%;
-  }
-  .col-md-9 {
-    width: 75%;
-  }
-  .col-md-8 {
-    width: 66.66666667%;
-  }
-  .col-md-7 {
-    width: 58.33333333%;
-  }
-  .col-md-6 {
-    width: 50%;
-  }
-  .col-md-5 {
-    width: 41.66666667%;
-  }
-  .col-md-4 {
-    width: 33.33333333%;
-  }
-  .col-md-3 {
-    width: 25%;
-  }
-  .col-md-2 {
-    width: 16.66666667%;
-  }
-  .col-md-1 {
-    width: 8.33333333%;
-  }
-  .col-md-pull-12 {
-    right: 100%;
-  }
-  .col-md-pull-11 {
-    right: 91.66666667%;
-  }
-  .col-md-pull-10 {
-    right: 83.33333333%;
-  }
-  .col-md-pull-9 {
-    right: 75%;
-  }
-  .col-md-pull-8 {
-    right: 66.66666667%;
-  }
-  .col-md-pull-7 {
-    right: 58.33333333%;
-  }
-  .col-md-pull-6 {
-    right: 50%;
-  }
-  .col-md-pull-5 {
-    right: 41.66666667%;
-  }
-  .col-md-pull-4 {
-    right: 33.33333333%;
-  }
-  .col-md-pull-3 {
-    right: 25%;
-  }
-  .col-md-pull-2 {
-    right: 16.66666667%;
-  }
-  .col-md-pull-1 {
-    right: 8.33333333%;
-  }
-  .col-md-pull-0 {
-    right: auto;
-  }
-  .col-md-push-12 {
-    left: 100%;
-  }
-  .col-md-push-11 {
-    left: 91.66666667%;
-  }
-  .col-md-push-10 {
-    left: 83.33333333%;
-  }
-  .col-md-push-9 {
-    left: 75%;
-  }
-  .col-md-push-8 {
-    left: 66.66666667%;
-  }
-  .col-md-push-7 {
-    left: 58.33333333%;
-  }
-  .col-md-push-6 {
-    left: 50%;
-  }
-  .col-md-push-5 {
-    left: 41.66666667%;
-  }
-  .col-md-push-4 {
-    left: 33.33333333%;
-  }
-  .col-md-push-3 {
-    left: 25%;
-  }
-  .col-md-push-2 {
-    left: 16.66666667%;
-  }
-  .col-md-push-1 {
-    left: 8.33333333%;
-  }
-  .col-md-push-0 {
-    left: auto;
-  }
-  .col-md-offset-12 {
-    margin-left: 100%;
-  }
-  .col-md-offset-11 {
-    margin-left: 91.66666667%;
-  }
-  .col-md-offset-10 {
-    margin-left: 83.33333333%;
-  }
-  .col-md-offset-9 {
-    margin-left: 75%;
-  }
-  .col-md-offset-8 {
-    margin-left: 66.66666667%;
-  }
-  .col-md-offset-7 {
-    margin-left: 58.33333333%;
-  }
-  .col-md-offset-6 {
-    margin-left: 50%;
-  }
-  .col-md-offset-5 {
-    margin-left: 41.66666667%;
-  }
-  .col-md-offset-4 {
-    margin-left: 33.33333333%;
-  }
-  .col-md-offset-3 {
-    margin-left: 25%;
-  }
-  .col-md-offset-2 {
-    margin-left: 16.66666667%;
-  }
-  .col-md-offset-1 {
-    margin-left: 8.33333333%;
-  }
-  .col-md-offset-0 {
-    margin-left: 0;
-  }
-}
-@media (min-width: 1200px) {
-  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
-    float: left;
-  }
-  .col-lg-12 {
-    width: 100%;
-  }
-  .col-lg-11 {
-    width: 91.66666667%;
-  }
-  .col-lg-10 {
-    width: 83.33333333%;
-  }
-  .col-lg-9 {
-    width: 75%;
-  }
-  .col-lg-8 {
-    width: 66.66666667%;
-  }
-  .col-lg-7 {
-    width: 58.33333333%;
-  }
-  .col-lg-6 {
-    width: 50%;
-  }
-  .col-lg-5 {
-    width: 41.66666667%;
-  }
-  .col-lg-4 {
-    width: 33.33333333%;
-  }
-  .col-lg-3 {
-    width: 25%;
-  }
-  .col-lg-2 {
-    width: 16.66666667%;
-  }
-  .col-lg-1 {
-    width: 8.33333333%;
-  }
-  .col-lg-pull-12 {
-    right: 100%;
-  }
-  .col-lg-pull-11 {
-    right: 91.66666667%;
-  }
-  .col-lg-pull-10 {
-    right: 83.33333333%;
-  }
-  .col-lg-pull-9 {
-    right: 75%;
-  }
-  .col-lg-pull-8 {
-    right: 66.66666667%;
-  }
-  .col-lg-pull-7 {
-    right: 58.33333333%;
-  }
-  .col-lg-pull-6 {
-    right: 50%;
-  }
-  .col-lg-pull-5 {
-    right: 41.66666667%;
-  }
-  .col-lg-pull-4 {
-    right: 33.33333333%;
-  }
-  .col-lg-pull-3 {
-    right: 25%;
-  }
-  .col-lg-pull-2 {
-    right: 16.66666667%;
-  }
-  .col-lg-pull-1 {
-    right: 8.33333333%;
-  }
-  .col-lg-pull-0 {
-    right: auto;
-  }
-  .col-lg-push-12 {
-    left: 100%;
-  }
-  .col-lg-push-11 {
-    left: 91.66666667%;
-  }
-  .col-lg-push-10 {
-    left: 83.33333333%;
-  }
-  .col-lg-push-9 {
-    left: 75%;
-  }
-  .col-lg-push-8 {
-    left: 66.66666667%;
-  }
-  .col-lg-push-7 {
-    left: 58.33333333%;
-  }
-  .col-lg-push-6 {
-    left: 50%;
-  }
-  .col-lg-push-5 {
-    left: 41.66666667%;
-  }
-  .col-lg-push-4 {
-    left: 33.33333333%;
-  }
-  .col-lg-push-3 {
-    left: 25%;
-  }
-  .col-lg-push-2 {
-    left: 16.66666667%;
-  }
-  .col-lg-push-1 {
-    left: 8.33333333%;
-  }
-  .col-lg-push-0 {
-    left: auto;
-  }
-  .col-lg-offset-12 {
-    margin-left: 100%;
-  }
-  .col-lg-offset-11 {
-    margin-left: 91.66666667%;
-  }
-  .col-lg-offset-10 {
-    margin-left: 83.33333333%;
-  }
-  .col-lg-offset-9 {
-    margin-left: 75%;
-  }
-  .col-lg-offset-8 {
-    margin-left: 66.66666667%;
-  }
-  .col-lg-offset-7 {
-    margin-left: 58.33333333%;
-  }
-  .col-lg-offset-6 {
-    margin-left: 50%;
-  }
-  .col-lg-offset-5 {
-    margin-left: 41.66666667%;
-  }
-  .col-lg-offset-4 {
-    margin-left: 33.33333333%;
-  }
-  .col-lg-offset-3 {
-    margin-left: 25%;
-  }
-  .col-lg-offset-2 {
-    margin-left: 16.66666667%;
-  }
-  .col-lg-offset-1 {
-    margin-left: 8.33333333%;
-  }
-  .col-lg-offset-0 {
-    margin-left: 0;
-  }
-}
-table {
-  background-color: transparent;
-}
-th {
-  text-align: left;
-}
-.table {
-  width: 100%;
-  max-width: 100%;
-  margin-bottom: 20px;
-}
-.table > thead > tr > th,
-.table > tbody > tr > th,
-.table > tfoot > tr > th,
-.table > thead > tr > td,
-.table > tbody > tr > td,
-.table > tfoot > tr > td {
-  padding: 8px;
-  line-height: 1.42857143;
-  vertical-align: top;
-  border-top: 1px solid #ddd;
-}
-.table > thead > tr > th {
-  vertical-align: bottom;
-  border-bottom: 2px solid #ddd;
-}
-.table > caption + thead > tr:first-child > th,
-.table > colgroup + thead > tr:first-child > th,
-.table > thead:first-child > tr:first-child > th,
-.table > caption + thead > tr:first-child > td,
-.table > colgroup + thead > tr:first-child > td,
-.table > thead:first-child > tr:first-child > td {
-  border-top: 0;
-}
-.table > tbody + tbody {
-  border-top: 2px solid #ddd;
-}
-.table .table {
-  background-color: #fff;
-}
-.table-condensed > thead > tr > th,
-.table-condensed > tbody > tr > th,
-.table-condensed > tfoot > tr > th,
-.table-condensed > thead > tr > td,
-.table-condensed > tbody > tr > td,
-.table-condensed > tfoot > tr > td {
-  padding: 5px;
-}
-.table-bordered {
-  border: 1px solid #ddd;
-}
-.table-bordered > thead > tr > th,
-.table-bordered > tbody > tr > th,
-.table-bordered > tfoot > tr > th,
-.table-bordered > thead > tr > td,
-.table-bordered > tbody > tr > td,
-.table-bordered > tfoot > tr > td {
-  border: 1px solid #ddd;
-}
-.table-bordered > thead > tr > th,
-.table-bordered > thead > tr > td {
-  border-bottom-width: 2px;
-}
-.table-striped > tbody > tr:nth-child(odd) > td,
-.table-striped > tbody > tr:nth-child(odd) > th {
-  background-color: #f9f9f9;
-}
-.table-hover > tbody > tr:hover > td,
-.table-hover > tbody > tr:hover > th {
-  background-color: #f5f5f5;
-}
-table col[class*="col-"] {
-  position: static;
-  display: table-column;
-  float: none;
-}
-table td[class*="col-"],
-table th[class*="col-"] {
-  position: static;
-  display: table-cell;
-  float: none;
-}
-.table > thead > tr > td.active,
-.table > tbody > tr > td.active,
-.table > tfoot > tr > td.active,
-.table > thead > tr > th.active,
-.table > tbody > tr > th.active,
-.table > tfoot > tr > th.active,
-.table > thead > tr.active > td,
-.table > tbody > tr.active > td,
-.table > tfoot > tr.active > td,
-.table > thead > tr.active > th,
-.table > tbody > tr.active > th,
-.table > tfoot > tr.active > th {
-  background-color: #f5f5f5;
-}
-.table-hover > tbody > tr > td.active:hover,
-.table-hover > tbody > tr > th.active:hover,
-.table-hover > tbody > tr.active:hover > td,
-.table-hover > tbody > tr:hover > .active,
-.table-hover > tbody > tr.active:hover > th {
-  background-color: #e8e8e8;
-}
-.table > thead > tr > td.success,
-.table > tbody > tr > td.success,
-.table > tfoot > tr > td.success,
-.table > thead > tr > th.success,
-.table > tbody > tr > th.success,
-.table > tfoot > tr > th.success,
-.table > thead > tr.success > td,
-.table > tbody > tr.success > td,
-.table > tfoot > tr.success > td,
-.table > thead > tr.success > th,
-.table > tbody > tr.success > th,
-.table > tfoot > tr.success > th {
-  background-color: #dff0d8;
-}
-.table-hover > tbody > tr > td.success:hover,
-.table-hover > tbody > tr > th.success:hover,
-.table-hover > tbody > tr.success:hover > td,
-.table-hover > tbody > tr:hover > .success,
-.table-hover > tbody > tr.success:hover > th {
-  background-color: #d0e9c6;
-}
-.table > thead > tr > td.info,
-.table > tbody > tr > td.info,
-.table > tfoot > tr > td.info,
-.table > thead > tr > th.info,
-.table > tbody > tr > th.info,
-.table > tfoot > tr > th.info,
-.table > thead > tr.info > td,
-.table > tbody > tr.info > td,
-.table > tfoot > tr.info > td,
-.table > thead > tr.info > th,
-.table > tbody > tr.info > th,
-.table > tfoot > tr.info > th {
-  background-color: #d9edf7;
-}
-.table-hover > tbody > tr > td.info:hover,
-.table-hover > tbody > tr > th.info:hover,
-.table-hover > tbody > tr.info:hover > td,
-.table-hover > tbody > tr:hover > .info,
-.table-hover > tbody > tr.info:hover > th {
-  background-color: #c4e3f3;
-}
-.table > thead > tr > td.warning,
-.table > tbody > tr > td.warning,
-.table > tfoot > tr > td.warning,
-.table > thead > tr > th.warning,
-.table > tbody > tr > th.warning,
-.table > tfoot > tr > th.warning,
-.table > thead > tr.warning > td,
-.table > tbody > tr.warning > td,
-.table > tfoot > tr.warning > td,
-.table > thead > tr.warning > th,
-.table > tbody > tr.warning > th,
-.table > tfoot > tr.warning > th {
-  background-color: #fcf8e3;
-}
-.table-hover > tbody > tr > td.warning:hover,
-.table-hover > tbody > tr > th.warning:hover,
-.table-hover > tbody > tr.warning:hover > td,
-.table-hover > tbody > tr:hover > .warning,
-.table-hover > tbody > tr.warning:hover > th {
-  background-color: #faf2cc;
-}
-.table > thead > tr > td.danger,
-.table > tbody > tr > td.danger,
-.table > tfoot > tr > td.danger,
-.table > thead > tr > th.danger,
-.table > tbody > tr > th.danger,
-.table > tfoot > tr > th.danger,
-.table > thead > tr.danger > td,
-.table > tbody > tr.danger > td,
-.table > tfoot > tr.danger > td,
-.table > thead > tr.danger > th,
-.table > tbody > tr.danger > th,
-.table > tfoot > tr.danger > th {
-  background-color: #f2dede;
-}
-.table-hover > tbody > tr > td.danger:hover,
-.table-hover > tbody > tr > th.danger:hover,
-.table-hover > tbody > tr.danger:hover > td,
-.table-hover > tbody > tr:hover > .danger,
-.table-hover > tbody > tr.danger:hover > th {
-  background-color: #ebcccc;
-}
-@media screen and (max-width: 767px) {
-  .table-responsive {
-    width: 100%;
-    margin-bottom: 15px;
-    overflow-x: auto;
-    overflow-y: hidden;
-    -webkit-overflow-scrolling: touch;
-    -ms-overflow-style: -ms-autohiding-scrollbar;
-    border: 1px solid #ddd;
-  }
-  .table-responsive > .table {
-    margin-bottom: 0;
-  }
-  .table-responsive > .table > thead > tr > th,
-  .table-responsive > .table > tbody > tr > th,
-  .table-responsive > .table > tfoot > tr > th,
-  .table-responsive > .table > thead > tr > td,
-  .table-responsive > .table > tbody > tr > td,
-  .table-responsive > .table > tfoot > tr > td {
-    white-space: nowrap;
-  }
-  .table-responsive > .table-bordered {
-    border: 0;
-  }
-  .table-responsive > .table-bordered > thead > tr > th:first-child,
-  .table-responsive > .table-bordered > tbody > tr > th:first-child,
-  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
-  .table-responsive > .table-bordered > thead > tr > td:first-child,
-  .table-responsive > .table-bordered > tbody > tr > td:first-child,
-  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
-    border-left: 0;
-  }
-  .table-responsive > .table-bordered > thead > tr > th:last-child,
-  .table-responsive > .table-bordered > tbody > tr > th:last-child,
-  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
-  .table-responsive > .table-bordered > thead > tr > td:last-child,
-  .table-responsive > .table-bordered > tbody > tr > td:last-child,
-  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
-    border-right: 0;
-  }
-  .table-responsive > .table-bordered > tbody > tr:last-child > th,
-  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
-  .table-responsive > .table-bordered > tbody > tr:last-child > td,
-  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
-    border-bottom: 0;
-  }
-}
-fieldset {
-  min-width: 0;
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 21px;
-  line-height: inherit;
-  color: #333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-label {
-  display: inline-block;
-  max-width: 100%;
-  margin-bottom: 5px;
-  font-weight: bold;
-}
-input[type="search"] {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  margin-top: 1px \9;
-  line-height: normal;
-}
-input[type="file"] {
-  display: block;
-}
-input[type="range"] {
-  display: block;
-  width: 100%;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-output {
-  display: block;
-  padding-top: 7px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #555;
-}
-.form-control {
-  display: block;
-  width: 100%;
-  height: 34px;
-  padding: 6px 12px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #555;
-  background-color: #fff;
-  background-image: none;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-}
-.form-control:focus {
-  border-color: #66afe9;
-  outline: 0;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
-          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
-}
-.form-control::-moz-placeholder {
-  color: #777;
-  opacity: 1;
-}
-.form-control:-ms-input-placeholder {
-  color: #777;
-}
-.form-control::-webkit-input-placeholder {
-  color: #777;
-}
-.form-control[disabled],
-.form-control[readonly],
-fieldset[disabled] .form-control {
-  cursor: not-allowed;
-  background-color: #eee;
-  opacity: 1;
-}
-textarea.form-control {
-  height: auto;
-}
-input[type="search"] {
-  -webkit-appearance: none;
-}
-input[type="date"],
-input[type="time"],
-input[type="datetime-local"],
-input[type="month"] {
-  line-height: 34px;
-  line-height: 1.42857143 \0;
-}
-input[type="date"].input-sm,
-input[type="time"].input-sm,
-input[type="datetime-local"].input-sm,
-input[type="month"].input-sm {
-  line-height: 30px;
-}
-input[type="date"].input-lg,
-input[type="time"].input-lg,
-input[type="datetime-local"].input-lg,
-input[type="month"].input-lg {
-  line-height: 46px;
-}
-.form-group {
-  margin-bottom: 15px;
-}
-.radio,
-.checkbox {
-  position: relative;
-  display: block;
-  min-height: 20px;
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.radio label,
-.checkbox label {
-  padding-left: 20px;
-  margin-bottom: 0;
-  font-weight: normal;
-  cursor: pointer;
-}
-.radio input[type="radio"],
-.radio-inline input[type="radio"],
-.checkbox input[type="checkbox"],
-.checkbox-inline input[type="checkbox"] {
-  position: absolute;
-  margin-top: 4px \9;
-  margin-left: -20px;
-}
-.radio + .radio,
-.checkbox + .checkbox {
-  margin-top: -5px;
-}
-.radio-inline,
-.checkbox-inline {
-  display: inline-block;
-  padding-left: 20px;
-  margin-bottom: 0;
-  font-weight: normal;
-  vertical-align: middle;
-  cursor: pointer;
-}
-.radio-inline + .radio-inline,
-.checkbox-inline + .checkbox-inline {
-  margin-top: 0;
-  margin-left: 10px;
-}
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"].disabled,
-input[type="checkbox"].disabled,
-fieldset[disabled] input[type="radio"],
-fieldset[disabled] input[type="checkbox"] {
-  cursor: not-allowed;
-}
-.radio-inline.disabled,
-.checkbox-inline.disabled,
-fieldset[disabled] .radio-inline,
-fieldset[disabled] .checkbox-inline {
-  cursor: not-allowed;
-}
-.radio.disabled label,
-.checkbox.disabled label,
-fieldset[disabled] .radio label,
-fieldset[disabled] .checkbox label {
-  cursor: not-allowed;
-}
-.form-control-static {
-  padding-top: 7px;
-  padding-bottom: 7px;
-  margin-bottom: 0;
-}
-.form-control-static.input-lg,
-.form-control-static.input-sm {
-  padding-right: 0;
-  padding-left: 0;
-}
-.input-sm,
-.form-horizontal .form-group-sm .form-control {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-select.input-sm {
-  height: 30px;
-  line-height: 30px;
-}
-textarea.input-sm,
-select[multiple].input-sm {
-  height: auto;
-}
-.input-lg,
-.form-horizontal .form-group-lg .form-control {
-  height: 46px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-select.input-lg {
-  height: 46px;
-  line-height: 46px;
-}
-textarea.input-lg,
-select[multiple].input-lg {
-  height: auto;
-}
-.has-feedback {
-  position: relative;
-}
-.has-feedback .form-control {
-  padding-right: 42.5px;
-}
-.form-control-feedback {
-  position: absolute;
-  top: 25px;
-  right: 0;
-  z-index: 2;
-  display: block;
-  width: 34px;
-  height: 34px;
-  line-height: 34px;
-  text-align: center;
-}
-.input-lg + .form-control-feedback {
-  width: 46px;
-  height: 46px;
-  line-height: 46px;
-}
-.input-sm + .form-control-feedback {
-  width: 30px;
-  height: 30px;
-  line-height: 30px;
-}
-.has-success .help-block,
-.has-success .control-label,
-.has-success .radio,
-.has-success .checkbox,
-.has-success .radio-inline,
-.has-success .checkbox-inline {
-  color: #3c763d;
-}
-.has-success .form-control {
-  border-color: #3c763d;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-}
-.has-success .form-control:focus {
-  border-color: #2b542c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
-}
-.has-success .input-group-addon {
-  color: #3c763d;
-  background-color: #dff0d8;
-  border-color: #3c763d;
-}
-.has-success .form-control-feedback {
-  color: #3c763d;
-}
-.has-warning .help-block,
-.has-warning .control-label,
-.has-warning .radio,
-.has-warning .checkbox,
-.has-warning .radio-inline,
-.has-warning .checkbox-inline {
-  color: #8a6d3b;
-}
-.has-warning .form-control {
-  border-color: #8a6d3b;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-}
-.has-warning .form-control:focus {
-  border-color: #66512c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
-}
-.has-warning .input-group-addon {
-  color: #8a6d3b;
-  background-color: #fcf8e3;
-  border-color: #8a6d3b;
-}
-.has-warning .form-control-feedback {
-  color: #8a6d3b;
-}
-.has-error .help-block,
-.has-error .control-label,
-.has-error .radio,
-.has-error .checkbox,
-.has-error .radio-inline,
-.has-error .checkbox-inline {
-  color: #a94442;
-}
-.has-error .form-control {
-  border-color: #a94442;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-}
-.has-error .form-control:focus {
-  border-color: #843534;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
-}
-.has-error .input-group-addon {
-  color: #a94442;
-  background-color: #f2dede;
-  border-color: #a94442;
-}
-.has-error .form-control-feedback {
-  color: #a94442;
-}
-.has-feedback label.sr-only ~ .form-control-feedback {
-  top: 0;
-}
-.help-block {
-  display: block;
-  margin-top: 5px;
-  margin-bottom: 10px;
-  color: #737373;
-}
-@media (min-width: 768px) {
-  .form-inline .form-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .form-control {
-    display: inline-block;
-    width: auto;
-    vertical-align: middle;
-  }
-  .form-inline .input-group {
-    display: inline-table;
-    vertical-align: middle;
-  }
-  .form-inline .input-group .input-group-addon,
-  .form-inline .input-group .input-group-btn,
-  .form-inline .input-group .form-control {
-    width: auto;
-  }
-  .form-inline .input-group > .form-control {
-    width: 100%;
-  }
-  .form-inline .control-label {
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .radio,
-  .form-inline .checkbox {
-    display: inline-block;
-    margin-top: 0;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .radio label,
-  .form-inline .checkbox label {
-    padding-left: 0;
-  }
-  .form-inline .radio input[type="radio"],
-  .form-inline .checkbox input[type="checkbox"] {
-    position: relative;
-    margin-left: 0;
-  }
-  .form-inline .has-feedback .form-control-feedback {
-    top: 0;
-  }
-}
-.form-horizontal .radio,
-.form-horizontal .checkbox,
-.form-horizontal .radio-inline,
-.form-horizontal .checkbox-inline {
-  padding-top: 7px;
-  margin-top: 0;
-  margin-bottom: 0;
-}
-.form-horizontal .radio,
-.form-horizontal .checkbox {
-  min-height: 27px;
-}
-.form-horizontal .form-group {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-@media (min-width: 768px) {
-  .form-horizontal .control-label {
-    padding-top: 7px;
-    margin-bottom: 0;
-    text-align: right;
-  }
-}
-.form-horizontal .has-feedback .form-control-feedback {
-  top: 0;
-  right: 15px;
-}
-@media (min-width: 768px) {
-  .form-horizontal .form-group-lg .control-label {
-    padding-top: 14.3px;
-  }
-}
-@media (min-width: 768px) {
-  .form-horizontal .form-group-sm .control-label {
-    padding-top: 6px;
-  }
-}
-.btn {
-  display: inline-block;
-  padding: 6px 12px;
-  margin-bottom: 0;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 1.42857143;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: middle;
-  cursor: pointer;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  background-image: none;
-  border: 1px solid transparent;
-  border-radius: 4px;
-}
-.btn:focus,
-.btn:active:focus,
-.btn.active:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn:hover,
-.btn:focus {
-  color: #333;
-  text-decoration: none;
-}
-.btn:active,
-.btn.active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-}
-.btn.disabled,
-.btn[disabled],
-fieldset[disabled] .btn {
-  pointer-events: none;
-  cursor: not-allowed;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  opacity: .65;
-}
-.btn-default {
-  color: #333;
-  background-color: #fff;
-  border-color: #ccc;
-}
-.btn-default:hover,
-.btn-default:focus,
-.btn-default:active,
-.btn-default.active,
-.open > .dropdown-toggle.btn-default {
-  color: #333;
-  background-color: #e6e6e6;
-  border-color: #adadad;
-}
-.btn-default:active,
-.btn-default.active,
-.open > .dropdown-toggle.btn-default {
-  background-image: none;
-}
-.btn-default.disabled,
-.btn-default[disabled],
-fieldset[disabled] .btn-default,
-.btn-default.disabled:hover,
-.btn-default[disabled]:hover,
-fieldset[disabled] .btn-default:hover,
-.btn-default.disabled:focus,
-.btn-default[disabled]:focus,
-fieldset[disabled] .btn-default:focus,
-.btn-default.disabled:active,
-.btn-default[disabled]:active,
-fieldset[disabled] .btn-default:active,
-.btn-default.disabled.active,
-.btn-default[disabled].active,
-fieldset[disabled] .btn-default.active {
-  background-color: #fff;
-  border-color: #ccc;
-}
-.btn-default .badge {
-  color: #fff;
-  background-color: #333;
-}
-.btn-primary {
-  color: #fff;
-  background-color: #428bca;
-  border-color: #357ebd;
-}
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.open > .dropdown-toggle.btn-primary {
-  color: #fff;
-  background-color: #3071a9;
-  border-color: #285e8e;
-}
-.btn-primary:active,
-.btn-primary.active,
-.open > .dropdown-toggle.btn-primary {
-  background-image: none;
-}
-.btn-primary.disabled,
-.btn-primary[disabled],
-fieldset[disabled] .btn-primary,
-.btn-primary.disabled:hover,
-.btn-primary[disabled]:hover,
-fieldset[disabled] .btn-primary:hover,
-.btn-primary.disabled:focus,
-.btn-primary[disabled]:focus,
-fieldset[disabled] .btn-primary:focus,
-.btn-primary.disabled:active,
-.btn-primary[disabled]:active,
-fieldset[disabled] .btn-primary:active,
-.btn-primary.disabled.active,
-.btn-primary[disabled].active,
-fieldset[disabled] .btn-primary.active {
-  background-color: #428bca;
-  border-color: #357ebd;
-}
-.btn-primary .badge {
-  color: #428bca;
-  background-color: #fff;
-}
-.btn-success {
-  color: #fff;
-  background-color: #5cb85c;
-  border-color: #4cae4c;
-}
-.btn-success:hover,
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.open > .dropdown-toggle.btn-success {
-  color: #fff;
-  background-color: #449d44;
-  border-color: #398439;
-}
-.btn-success:active,
-.btn-success.active,
-.open > .dropdown-toggle.btn-success {
-  background-image: none;
-}
-.btn-success.disabled,
-.btn-success[disabled],
-fieldset[disabled] .btn-success,
-.btn-success.disabled:hover,
-.btn-success[disabled]:hover,
-fieldset[disabled] .btn-success:hover,
-.btn-success.disabled:focus,
-.btn-success[disabled]:focus,
-fieldset[disabled] .btn-success:focus,
-.btn-success.disabled:active,
-.btn-success[disabled]:active,
-fieldset[disabled] .btn-success:active,
-.btn-success.disabled.active,
-.btn-success[disabled].active,
-fieldset[disabled] .btn-success.active {
-  background-color: #5cb85c;
-  border-color: #4cae4c;
-}
-.btn-success .badge {
-  color: #5cb85c;
-  background-color: #fff;
-}
-.btn-info {
-  color: #fff;
-  background-color: #5bc0de;
-  border-color: #46b8da;
-}
-.btn-info:hover,
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.open > .dropdown-toggle.btn-info {
-  color: #fff;
-  background-color: #31b0d5;
-  border-color: #269abc;
-}
-.btn-info:active,
-.btn-info.active,
-.open > .dropdown-toggle.btn-info {
-  background-image: none;
-}
-.btn-info.disabled,
-.btn-info[disabled],
-fieldset[disabled] .btn-info,
-.btn-info.disabled:hover,
-.btn-info[disabled]:hover,
-fieldset[disabled] .btn-info:hover,
-.btn-info.disabled:focus,
-.btn-info[disabled]:focus,
-fieldset[disabled] .btn-info:focus,
-.btn-info.disabled:active,
-.btn-info[disabled]:active,
-fieldset[disabled] .btn-info:active,
-.btn-info.disabled.active,
-.btn-info[disabled].active,
-fieldset[disabled] .btn-info.active {
-  background-color: #5bc0de;
-  border-color: #46b8da;
-}
-.btn-info .badge {
-  color: #5bc0de;
-  background-color: #fff;
-}
-.btn-warning {
-  color: #fff;
-  background-color: #f0ad4e;
-  border-color: #eea236;
-}
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.open > .dropdown-toggle.btn-warning {
-  color: #fff;
-  background-color: #ec971f;
-  border-color: #d58512;
-}
-.btn-warning:active,
-.btn-warning.active,
-.open > .dropdown-toggle.btn-warning {
-  background-image: none;
-}
-.btn-warning.disabled,
-.btn-warning[disabled],
-fieldset[disabled] .btn-warning,
-.btn-warning.disabled:hover,
-.btn-warning[disabled]:hover,
-fieldset[disabled] .btn-warning:hover,
-.btn-warning.disabled:focus,
-.btn-warning[disabled]:focus,
-fieldset[disabled] .btn-warning:focus,
-.btn-warning.disabled:active,
-.btn-warning[disabled]:active,
-fieldset[disabled] .btn-warning:active,
-.btn-warning.disabled.active,
-.btn-warning[disabled].active,
-fieldset[disabled] .btn-warning.active {
-  background-color: #f0ad4e;
-  border-color: #eea236;
-}
-.btn-warning .badge {
-  color: #f0ad4e;
-  background-color: #fff;
-}
-.btn-danger {
-  color: #fff;
-  background-color: #d9534f;
-  border-color: #d43f3a;
-}
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.open > .dropdown-toggle.btn-danger {
-  color: #fff;
-  background-color: #c9302c;
-  border-color: #ac2925;
-}
-.btn-danger:active,
-.btn-danger.active,
-.open > .dropdown-toggle.btn-danger {
-  background-image: none;
-}
-.btn-danger.disabled,
-.btn-danger[disabled],
-fieldset[disabled] .btn-danger,
-.btn-danger.disabled:hover,
-.btn-danger[disabled]:hover,
-fieldset[disabled] .btn-danger:hover,
-.btn-danger.disabled:focus,
-.btn-danger[disabled]:focus,
-fieldset[disabled] .btn-danger:focus,
-.btn-danger.disabled:active,
-.btn-danger[disabled]:active,
-fieldset[disabled] .btn-danger:active,
-.btn-danger.disabled.active,
-.btn-danger[disabled].active,
-fieldset[disabled] .btn-danger.active {
-  background-color: #d9534f;
-  border-color: #d43f3a;
-}
-.btn-danger .badge {
-  color: #d9534f;
-  background-color: #fff;
-}
-.btn-link {
-  font-weight: normal;
-  color: #428bca;
-  cursor: pointer;
-  border-radius: 0;
-}
-.btn-link,
-.btn-link:active,
-.btn-link[disabled],
-fieldset[disabled] .btn-link {
-  background-color: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-.btn-link,
-.btn-link:hover,
-.btn-link:focus,
-.btn-link:active {
-  border-color: transparent;
-}
-.btn-link:hover,
-.btn-link:focus {
-  color: #2a6496;
-  text-decoration: underline;
-  background-color: transparent;
-}
-.btn-link[disabled]:hover,
-fieldset[disabled] .btn-link:hover,
-.btn-link[disabled]:focus,
-fieldset[disabled] .btn-link:focus {
-  color: #777;
-  text-decoration: none;
-}
-.btn-lg,
-.btn-group-lg > .btn {
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-.btn-sm,
-.btn-group-sm > .btn {
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-.btn-xs,
-.btn-group-xs > .btn {
-  padding: 1px 5px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-.btn-block {
-  display: block;
-  width: 100%;
-}
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-.fade {
-  opacity: 0;
-  -webkit-transition: opacity .15s linear;
-       -o-transition: opacity .15s linear;
-          transition: opacity .15s linear;
-}
-.fade.in {
-  opacity: 1;
-}
-.collapse {
-  display: none;
-}
-.collapse.in {
-  display: block;
-}
-tr.collapse.in {
-  display: table-row;
-}
-tbody.collapse.in {
-  display: table-row-group;
-}
-.collapsing {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  -webkit-transition: height .35s ease;
-       -o-transition: height .35s ease;
-          transition: height .35s ease;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-left: 2px;
-  vertical-align: middle;
-  border-top: 4px solid;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-}
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle:focus {
-  outline: 0;
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  font-size: 14px;
-  text-align: left;
-  list-style: none;
-  background-color: #fff;
-  -webkit-background-clip: padding-box;
-          background-clip: padding-box;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, .15);
-  border-radius: 4px;
-  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-}
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-}
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 1.42857143;
-  color: #333;
-  white-space: nowrap;
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
-  color: #262626;
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #fff;
-  text-decoration: none;
-  background-color: #428bca;
-  outline: 0;
-}
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #777;
-}
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  cursor: not-allowed;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.open > .dropdown-menu {
-  display: block;
-}
-.open > a {
-  outline: 0;
-}
-.dropdown-menu-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu-left {
-  right: auto;
-  left: 0;
-}
-.dropdown-header {
-  display: block;
-  padding: 3px 20px;
-  font-size: 12px;
-  line-height: 1.42857143;
-  color: #777;
-  white-space: nowrap;
-}
-.dropdown-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 990;
-}
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  content: "";
-  border-top: 0;
-  border-bottom: 4px solid;
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-@media (min-width: 1000px) {
-  .navbar-right .dropdown-menu {
-    right: 0;
-    left: auto;
-  }
-  .navbar-right .dropdown-menu-left {
-    right: auto;
-    left: 0;
-  }
-}
-.btn-group,
-.btn-group-vertical {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle;
-}
-.btn-group > .btn,
-.btn-group-vertical > .btn {
-  position: relative;
-  float: left;
-}
-.btn-group > .btn:hover,
-.btn-group-vertical > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus,
-.btn-group > .btn:active,
-.btn-group-vertical > .btn:active,
-.btn-group > .btn.active,
-.btn-group-vertical > .btn.active {
-  z-index: 2;
-}
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus {
-  outline: 0;
-}
-.btn-group .btn + .btn,
-.btn-group .btn + .btn-group,
-.btn-group .btn-group + .btn,
-.btn-group .btn-group + .btn-group {
-  margin-left: -1px;
-}
-.btn-toolbar {
-  margin-left: -5px;
-}
-.btn-toolbar .btn-group,
-.btn-toolbar .input-group {
-  float: left;
-}
-.btn-toolbar > .btn,
-.btn-toolbar > .btn-group,
-.btn-toolbar > .input-group {
-  margin-left: 5px;
-}
-.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
-  border-radius: 0;
-}
-.btn-group > .btn:first-child {
-  margin-left: 0;
-}
-.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-.btn-group > .btn:last-child:not(:first-child),
-.btn-group > .dropdown-toggle:not(:first-child) {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group > .btn-group {
-  float: left;
-}
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-}
-.btn-group > .btn-group:first-child > .btn:last-child,
-.btn-group > .btn-group:first-child > .dropdown-toggle {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-.btn-group > .btn-group:last-child > .btn:first-child {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group > .btn + .dropdown-toggle {
-  padding-right: 8px;
-  padding-left: 8px;
-}
-.btn-group > .btn-lg + .dropdown-toggle {
-  padding-right: 12px;
-  padding-left: 12px;
-}
-.btn-group.open .dropdown-toggle {
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-}
-.btn-group.open .dropdown-toggle.btn-link {
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-.btn .caret {
-  margin-left: 0;
-}
-.btn-lg .caret {
-  border-width: 5px 5px 0;
-  border-bottom-width: 0;
-}
-.dropup .btn-lg .caret {
-  border-width: 0 5px 5px;
-}
-.btn-group-vertical > .btn,
-.btn-group-vertical > .btn-group,
-.btn-group-vertical > .btn-group > .btn {
-  display: block;
-  float: none;
-  width: 100%;
-  max-width: 100%;
-}
-.btn-group-vertical > .btn-group > .btn {
-  float: none;
-}
-.btn-group-vertical > .btn + .btn,
-.btn-group-vertical > .btn + .btn-group,
-.btn-group-vertical > .btn-group + .btn,
-.btn-group-vertical > .btn-group + .btn-group {
-  margin-top: -1px;
-  margin-left: 0;
-}
-.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
-  border-radius: 0;
-}
-.btn-group-vertical > .btn:first-child:not(:last-child) {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group-vertical > .btn:last-child:not(:first-child) {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  border-bottom-left-radius: 4px;
-}
-.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-}
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-}
-.btn-group-justified {
-  display: table;
-  width: 100%;
-  table-layout: fixed;
-  border-collapse: separate;
-}
-.btn-group-justified > .btn,
-.btn-group-justified > .btn-group {
-  display: table-cell;
-  float: none;
-  width: 1%;
-}
-.btn-group-justified > .btn-group .btn {
-  width: 100%;
-}
-.btn-group-justified > .btn-group .dropdown-menu {
-  left: auto;
-}
-[data-toggle="buttons"] > .btn > input[type="radio"],
-[data-toggle="buttons"] > .btn > input[type="checkbox"] {
-  position: absolute;
-  z-index: -1;
-  filter: alpha(opacity=0);
-  opacity: 0;
-}
-.input-group {
-  position: relative;
-  display: table;
-  border-collapse: separate;
-}
-.input-group[class*="col-"] {
-  float: none;
-  padding-right: 0;
-  padding-left: 0;
-}
-.input-group .form-control {
-  position: relative;
-  z-index: 2;
-  float: left;
-  width: 100%;
-  margin-bottom: 0;
-}
-.input-group-lg > .form-control,
-.input-group-lg > .input-group-addon,
-.input-group-lg > .input-group-btn > .btn {
-  height: 46px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-select.input-group-lg > .form-control,
-select.input-group-lg > .input-group-addon,
-select.input-group-lg > .input-group-btn > .btn {
-  height: 46px;
-  line-height: 46px;
-}
-textarea.input-group-lg > .form-control,
-textarea.input-group-lg > .input-group-addon,
-textarea.input-group-lg > .input-group-btn > .btn,
-select[multiple].input-group-lg > .form-control,
-select[multiple].input-group-lg > .input-group-addon,
-select[multiple].input-group-lg > .input-group-btn > .btn {
-  height: auto;
-}
-.input-group-sm > .form-control,
-.input-group-sm > .input-group-addon,
-.input-group-sm > .input-group-btn > .btn {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-select.input-group-sm > .form-control,
-select.input-group-sm > .input-group-addon,
-select.input-group-sm > .input-group-btn > .btn {
-  height: 30px;
-  line-height: 30px;
-}
-textarea.input-group-sm > .form-control,
-textarea.input-group-sm > .input-group-addon,
-textarea.input-group-sm > .input-group-btn > .btn,
-select[multiple].input-group-sm > .form-control,
-select[multiple].input-group-sm > .input-group-addon,
-select[multiple].input-group-sm > .input-group-btn > .btn {
-  height: auto;
-}
-.input-group-addon,
-.input-group-btn,
-.input-group .form-control {
-  display: table-cell;
-}
-.input-group-addon:not(:first-child):not(:last-child),
-.input-group-btn:not(:first-child):not(:last-child),
-.input-group .form-control:not(:first-child):not(:last-child) {
-  border-radius: 0;
-}
-.input-group-addon,
-.input-group-btn {
-  width: 1%;
-  white-space: nowrap;
-  vertical-align: middle;
-}
-.input-group-addon {
-  padding: 6px 12px;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 1;
-  color: #555;
-  text-align: center;
-  background-color: #eee;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-}
-.input-group-addon.input-sm {
-  padding: 5px 10px;
-  font-size: 12px;
-  border-radius: 3px;
-}
-.input-group-addon.input-lg {
-  padding: 10px 16px;
-  font-size: 18px;
-  border-radius: 6px;
-}
-.input-group-addon input[type="radio"],
-.input-group-addon input[type="checkbox"] {
-  margin-top: 0;
-}
-.input-group .form-control:first-child,
-.input-group-addon:first-child,
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group > .btn,
-.input-group-btn:first-child > .dropdown-toggle,
-.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
-.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-.input-group-addon:first-child {
-  border-right: 0;
-}
-.input-group .form-control:last-child,
-.input-group-addon:last-child,
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group > .btn,
-.input-group-btn:last-child > .dropdown-toggle,
-.input-group-btn:first-child > .btn:not(:first-child),
-.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.input-group-addon:last-child {
-  border-left: 0;
-}
-.input-group-btn {
-  position: relative;
-  font-size: 0;
-  white-space: nowrap;
-}
-.input-group-btn > .btn {
-  position: relative;
-}
-.input-group-btn > .btn + .btn {
-  margin-left: -1px;
-}
-.input-group-btn > .btn:hover,
-.input-group-btn > .btn:focus,
-.input-group-btn > .btn:active {
-  z-index: 2;
-}
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group {
-  margin-right: -1px;
-}
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group {
-  margin-left: -1px;
-}
-.nav {
-  padding-left: 0;
-  margin-bottom: 0;
-  list-style: none;
-}
-.nav > li {
-  position: relative;
-  display: block;
-}
-.nav > li > a {
-  position: relative;
-  display: block;
-  padding: 10px 15px;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eee;
-}
-.nav > li.disabled > a {
-  color: #777;
-}
-.nav > li.disabled > a:hover,
-.nav > li.disabled > a:focus {
-  color: #777;
-  text-decoration: none;
-  cursor: not-allowed;
-  background-color: transparent;
-}
-.nav .open > a,
-.nav .open > a:hover,
-.nav .open > a:focus {
-  background-color: #eee;
-  border-color: #428bca;
-}
-.nav .nav-divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-}
-.nav > li > a > img {
-  max-width: none;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  float: left;
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  margin-right: 2px;
-  line-height: 1.42857143;
-  border: 1px solid transparent;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover {
-  border-color: #eee #eee #ddd;
-}
-.nav-tabs > li.active > a,
-.nav-tabs > li.active > a:hover,
-.nav-tabs > li.active > a:focus {
-  color: #555;
-  cursor: default;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-}
-.nav-tabs.nav-justified {
-  width: 100%;
-  border-bottom: 0;
-}
-.nav-tabs.nav-justified > li {
-  float: none;
-}
-.nav-tabs.nav-justified > li > a {
-  margin-bottom: 5px;
-  text-align: center;
-}
-.nav-tabs.nav-justified > .dropdown .dropdown-menu {
-  top: auto;
-  left: auto;
-}
-@media (min-width: 768px) {
-  .nav-tabs.nav-justified > li {
-    display: table-cell;
-    width: 1%;
-  }
-  .nav-tabs.nav-justified > li > a {
-    margin-bottom: 0;
-  }
-}
-.nav-tabs.nav-justified > li > a {
-  margin-right: 0;
-  border-radius: 4px;
-}
-.nav-tabs.nav-justified > .active > a,
-.nav-tabs.nav-justified > .active > a:hover,
-.nav-tabs.nav-justified > .active > a:focus {
-  border: 1px solid #ddd;
-}
-@media (min-width: 768px) {
-  .nav-tabs.nav-justified > li > a {
-    border-bottom: 1px solid #ddd;
-    border-radius: 4px 4px 0 0;
-  }
-  .nav-tabs.nav-justified > .active > a,
-  .nav-tabs.nav-justified > .active > a:hover,
-  .nav-tabs.nav-justified > .active > a:focus {
-    border-bottom-color: #fff;
-  }
-}
-.nav-pills > li {
-  float: left;
-}
-.nav-pills > li > a {
-  border-radius: 4px;
-}
-.nav-pills > li + li {
-  margin-left: 2px;
-}
-.nav-pills > li.active > a,
-.nav-pills > li.active > a:hover,
-.nav-pills > li.active > a:focus {
-  color: #fff;
-  background-color: #428bca;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li + li {
-  margin-top: 2px;
-  margin-left: 0;
-}
-.nav-justified {
-  width: 100%;
-}
-.nav-justified > li {
-  float: none;
-}
-.nav-justified > li > a {
-  margin-bottom: 5px;
-  text-align: center;
-}
-.nav-justified > .dropdown .dropdown-menu {
-  top: auto;
-  left: auto;
-}
-@media (min-width: 768px) {
-  .nav-justified > li {
-    display: table-cell;
-    width: 1%;
-  }
-  .nav-justified > li > a {
-    margin-bottom: 0;
-  }
-}
-.nav-tabs-justified {
-  border-bottom: 0;
-}
-.nav-tabs-justified > li > a {
-  margin-right: 0;
-  border-radius: 4px;
-}
-.nav-tabs-justified > .active > a,
-.nav-tabs-justified > .active > a:hover,
-.nav-tabs-justified > .active > a:focus {
-  border: 1px solid #ddd;
-}
-@media (min-width: 768px) {
-  .nav-tabs-justified > li > a {
-    border-bottom: 1px solid #ddd;
-    border-radius: 4px 4px 0 0;
-  }
-  .nav-tabs-justified > .active > a,
-  .nav-tabs-justified > .active > a:hover,
-  .nav-tabs-justified > .active > a:focus {
-    border-bottom-color: #fff;
-  }
-}
-.tab-content > .tab-pane {
-  display: none;
-}
-.tab-content > .active {
-  display: block;
-}
-.nav-tabs .dropdown-menu {
-  margin-top: -1px;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-}
-.navbar {
-  position: relative;
-  min-height: 50px;
-  margin-bottom: 20px;
-  border: 1px solid transparent;
-}
-@media (min-width: 1000px) {
-  .navbar {
-    border-radius: 4px;
-  }
-}
-@media (min-width: 1000px) {
-  .navbar-header {
-    float: left;
-  }
-}
-.navbar-collapse {
-  padding-right: 15px;
-  padding-left: 15px;
-  overflow-x: visible;
-  -webkit-overflow-scrolling: touch;
-  border-top: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
-}
-.navbar-collapse.in {
-  overflow-y: auto;
-}
-@media (min-width: 1000px) {
-  .navbar-collapse {
-    width: auto;
-    border-top: 0;
-    -webkit-box-shadow: none;
-            box-shadow: none;
-  }
-  .navbar-collapse.collapse {
-    display: block !important;
-    height: auto !important;
-    padding-bottom: 0;
-    overflow: visible !important;
-  }
-  .navbar-collapse.in {
-    overflow-y: visible;
-  }
-  .navbar-fixed-top .navbar-collapse,
-  .navbar-static-top .navbar-collapse,
-  .navbar-fixed-bottom .navbar-collapse {
-    padding-right: 0;
-    padding-left: 0;
-  }
-}
-.navbar-fixed-top .navbar-collapse,
-.navbar-fixed-bottom .navbar-collapse {
-  max-height: 340px;
-}
-@media (max-width: 480px) and (orientation: landscape) {
-  .navbar-fixed-top .navbar-collapse,
-  .navbar-fixed-bottom .navbar-collapse {
-    max-height: 200px;
-  }
-}
-.container > .navbar-header,
-.container-fluid > .navbar-header,
-.container > .navbar-collapse,
-.container-fluid > .navbar-collapse {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-@media (min-width: 1000px) {
-  .container > .navbar-header,
-  .container-fluid > .navbar-header,
-  .container > .navbar-collapse,
-  .container-fluid > .navbar-collapse {
-    margin-right: 0;
-    margin-left: 0;
-  }
-}
-.navbar-static-top {
-  z-index: 1000;
-  border-width: 0 0 1px;
-}
-@media (min-width: 1000px) {
-  .navbar-static-top {
-    border-radius: 0;
-  }
-}
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-  -webkit-transform: translate3d(0, 0, 0);
-       -o-transform: translate3d(0, 0, 0);
-          transform: translate3d(0, 0, 0);
-}
-@media (min-width: 1000px) {
-  .navbar-fixed-top,
-  .navbar-fixed-bottom {
-    border-radius: 0;
-  }
-}
-.navbar-fixed-top {
-  top: 0;
-  border-width: 0 0 1px;
-}
-.navbar-fixed-bottom {
-  bottom: 0;
-  margin-bottom: 0;
-  border-width: 1px 0 0;
-}
-.navbar-brand {
-  float: left;
-  height: 50px;
-  padding: 15px 15px;
-  font-size: 18px;
-  line-height: 20px;
-}
-.navbar-brand:hover,
-.navbar-brand:focus {
-  text-decoration: none;
-}
-@media (min-width: 1000px) {
-  .navbar > .container .navbar-brand,
-  .navbar > .container-fluid .navbar-brand {
-    margin-left: -15px;
-  }
-}
-.navbar-toggle {
-  position: relative;
-  float: right;
-  padding: 9px 10px;
-  margin-top: 8px;
-  margin-right: 15px;
-  margin-bottom: 8px;
-  background-color: transparent;
-  background-image: none;
-  border: 1px solid transparent;
-  border-radius: 4px;
-}
-.navbar-toggle:focus {
-  outline: 0;
-}
-.navbar-toggle .icon-bar {
-  display: block;
-  width: 22px;
-  height: 2px;
-  border-radius: 1px;
-}
-.navbar-toggle .icon-bar + .icon-bar {
-  margin-top: 4px;
-}
-@media (min-width: 1000px) {
-  .navbar-toggle {
-    display: none;
-  }
-}
-.navbar-nav {
-  margin: 7.5px -15px;
-}
-.navbar-nav > li > a {
-  padding-top: 10px;
-  padding-bottom: 10px;
-  line-height: 20px;
-}
-@media (max-width: 999px) {
-  .navbar-nav .open .dropdown-menu {
-    position: static;
-    float: none;
-    width: auto;
-    margin-top: 0;
-    background-color: transparent;
-    border: 0;
-    -webkit-box-shadow: none;
-            box-shadow: none;
-  }
-  .navbar-nav .open .dropdown-menu > li > a,
-  .navbar-nav .open .dropdown-menu .dropdown-header {
-    padding: 5px 15px 5px 25px;
-  }
-  .navbar-nav .open .dropdown-menu > li > a {
-    line-height: 20px;
-  }
-  .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-nav .open .dropdown-menu > li > a:focus {
-    background-image: none;
-  }
-}
-@media (min-width: 1000px) {
-  .navbar-nav {
-    float: left;
-    margin: 0;
-  }
-  .navbar-nav > li {
-    float: left;
-  }
-  .navbar-nav > li > a {
-    padding-top: 15px;
-    padding-bottom: 15px;
-  }
-  .navbar-nav.navbar-right:last-child {
-    margin-right: -15px;
-  }
-}
-@media (min-width: 1000px) {
-  .navbar-left {
-    float: left !important;
-  }
-  .navbar-right {
-    float: right !important;
-  }
-}
-.navbar-form {
-  padding: 10px 15px;
-  margin-top: 8px;
-  margin-right: -15px;
-  margin-bottom: 8px;
-  margin-left: -15px;
-  border-top: 1px solid transparent;
-  border-bottom: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
-}
-@media (min-width: 1000px) {
-  .navbar-form .form-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .form-control {
-    display: inline-block;
-    width: auto;
-    vertical-align: middle;
-  }
-  .navbar-form .input-group {
-    display: inline-table;
-    vertical-align: middle;
-  }
-  .navbar-form .input-group .input-group-addon,
-  .navbar-form .input-group .input-group-btn,
-  .navbar-form .input-group .form-control {
-    width: auto;
-  }
-  .navbar-form .input-group > .form-control {
-    width: 100%;
-  }
-  .navbar-form .control-label {
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .radio,
-  .navbar-form .checkbox {
-    display: inline-block;
-    margin-top: 0;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .radio label,
-  .navbar-form .checkbox label {
-    padding-left: 0;
-  }
-  .navbar-form .radio input[type="radio"],
-  .navbar-form .checkbox input[type="checkbox"] {
-    position: relative;
-    margin-left: 0;
-  }
-  .navbar-form .has-feedback .form-control-feedback {
-    top: 0;
-  }
-}
-@media (max-width: 999px) {
-  .navbar-form .form-group {
-    margin-bottom: 5px;
-  }
-}
-@media (min-width: 1000px) {
-  .navbar-form {
-    width: auto;
-    padding-top: 0;
-    padding-bottom: 0;
-    margin-right: 0;
-    margin-left: 0;
-    border: 0;
-    -webkit-box-shadow: none;
-            box-shadow: none;
-  }
-  .navbar-form.navbar-right:last-child {
-    margin-right: -15px;
-  }
-}
-.navbar-nav > li > .dropdown-menu {
-  margin-top: 0;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-}
-.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.navbar-btn {
-  margin-top: 8px;
-  margin-bottom: 8px;
-}
-.navbar-btn.btn-sm {
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.navbar-btn.btn-xs {
-  margin-top: 14px;
-  margin-bottom: 14px;
-}
-.navbar-text {
-  margin-top: 15px;
-  margin-bottom: 15px;
-}
-@media (min-width: 1000px) {
-  .navbar-text {
-    float: left;
-    margin-right: 15px;
-    margin-left: 15px;
-  }
-  .navbar-text.navbar-right:last-child {
-    margin-right: 0;
-  }
-}
-.navbar-default {
-  background-color: #f8f8f8;
-  border-color: #e7e7e7;
-}
-.navbar-default .navbar-brand {
-  color: #777;
-}
-.navbar-default .navbar-brand:hover,
-.navbar-default .navbar-brand:focus {
-  color: #5e5e5e;
-  background-color: transparent;
-}
-.navbar-default .navbar-text {
-  color: #777;
-}
-.navbar-default .navbar-nav > li > a {
-  color: #777;
-}
-.navbar-default .navbar-nav > li > a:hover,
-.navbar-default .navbar-nav > li > a:focus {
-  color: #333;
-  background-color: transparent;
-}
-.navbar-default .navbar-nav > .active > a,
-.navbar-default .navbar-nav > .active > a:hover,
-.navbar-default .navbar-nav > .active > a:focus {
-  color: #555;
-  background-color: #e7e7e7;
-}
-.navbar-default .navbar-nav > .disabled > a,
-.navbar-default .navbar-nav > .disabled > a:hover,
-.navbar-default .navbar-nav > .disabled > a:focus {
-  color: #ccc;
-  background-color: transparent;
-}
-.navbar-default .navbar-toggle {
-  border-color: #ddd;
-}
-.navbar-default .navbar-toggle:hover,
-.navbar-default .navbar-toggle:focus {
-  background-color: #ddd;
-}
-.navbar-default .navbar-toggle .icon-bar {
-  background-color: #888;
-}
-.navbar-default .navbar-collapse,
-.navbar-default .navbar-form {
-  border-color: #e7e7e7;
-}
-.navbar-default .navbar-nav > .open > a,
-.navbar-default .navbar-nav > .open > a:hover,
-.navbar-default .navbar-nav > .open > a:focus {
-  color: #555;
-  background-color: #e7e7e7;
-}
-@media (max-width: 999px) {
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
-    color: #777;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
-    color: #333;
-    background-color: transparent;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #555;
-    background-color: #e7e7e7;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-    color: #ccc;
-    background-color: transparent;
-  }
-}
-.navbar-default .navbar-link {
-  color: #777;
-}
-.navbar-default .navbar-link:hover {
-  color: #333;
-}
-.navbar-default .btn-link {
-  color: #777;
-}
-.navbar-default .btn-link:hover,
-.navbar-default .btn-link:focus {
-  color: #333;
-}
-.navbar-default .btn-link[disabled]:hover,
-fieldset[disabled] .navbar-default .btn-link:hover,
-.navbar-default .btn-link[disabled]:focus,
-fieldset[disabled] .navbar-default .btn-link:focus {
-  color: #ccc;
-}
-.navbar-inverse {
-  background-color: #222;
-  border-color: #080808;
-}
-.navbar-inverse .navbar-brand {
-  color: #777;
-}
-.navbar-inverse .navbar-brand:hover,
-.navbar-inverse .navbar-brand:focus {
-  color: #fff;
-  background-color: transparent;
-}
-.navbar-inverse .navbar-text {
-  color: #777;
-}
-.navbar-inverse .navbar-nav > li > a {
-  color: #777;
-}
-.navbar-inverse .navbar-nav > li > a:hover,
-.navbar-inverse .navbar-nav > li > a:focus {
-  color: #fff;
-  background-color: transparent;
-}
-.navbar-inverse .navbar-nav > .active > a,
-.navbar-inverse .navbar-nav > .active > a:hover,
-.navbar-inverse .navbar-nav > .active > a:focus {
-  color: #fff;
-  background-color: #080808;
-}
-.navbar-inverse .navbar-nav > .disabled > a,
-.navbar-inverse .navbar-nav > .disabled > a:hover,
-.navbar-inverse .navbar-nav > .disabled > a:focus {
-  color: #444;
-  background-color: transparent;
-}
-.navbar-inverse .navbar-toggle {
-  border-color: #333;
-}
-.navbar-inverse .navbar-toggle:hover,
-.navbar-inverse .navbar-toggle:focus {
-  background-color: #333;
-}
-.navbar-inverse .navbar-toggle .icon-bar {
-  background-color: #fff;
-}
-.navbar-inverse .navbar-collapse,
-.navbar-inverse .navbar-form {
-  border-color: #101010;
-}
-.navbar-inverse .navbar-nav > .open > a,
-.navbar-inverse .navbar-nav > .open > a:hover,
-.navbar-inverse .navbar-nav > .open > a:focus {
-  color: #fff;
-  background-color: #080808;
-}
-@media (max-width: 999px) {
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
-    border-color: #080808;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
-    background-color: #080808;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
-    color: #777;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
-    color: #fff;
-    background-color: transparent;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #fff;
-    background-color: #080808;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-    color: #444;
-    background-color: transparent;
-  }
-}
-.navbar-inverse .navbar-link {
-  color: #777;
-}
-.navbar-inverse .navbar-link:hover {
-  color: #fff;
-}
-.navbar-inverse .btn-link {
-  color: #777;
-}
-.navbar-inverse .btn-link:hover,
-.navbar-inverse .btn-link:focus {
-  color: #fff;
-}
-.navbar-inverse .btn-link[disabled]:hover,
-fieldset[disabled] .navbar-inverse .btn-link:hover,
-.navbar-inverse .btn-link[disabled]:focus,
-fieldset[disabled] .navbar-inverse .btn-link:focus {
-  color: #444;
-}
-.breadcrumb {
-  padding: 8px 15px;
-  margin-bottom: 20px;
-  list-style: none;
-  background-color: #f5f5f5;
-  border-radius: 4px;
-}
-.breadcrumb > li {
-  display: inline-block;
-}
-.breadcrumb > li + li:before {
-  padding: 0 5px;
-  color: #ccc;
-  content: "/\00a0";
-}
-.breadcrumb > .active {
-  color: #777;
-}
-.pagination {
-  display: inline-block;
-  padding-left: 0;
-  margin: 20px 0;
-  border-radius: 4px;
-}
-.pagination > li {
-  display: inline;
-}
-.pagination > li > a,
-.pagination > li > span {
-  position: relative;
-  float: left;
-  padding: 6px 12px;
-  margin-left: -1px;
-  line-height: 1.42857143;
-  color: #428bca;
-  text-decoration: none;
-  background-color: #fff;
-  border: 1px solid #ddd;
-}
-.pagination > li:first-child > a,
-.pagination > li:first-child > span {
-  margin-left: 0;
-  border-top-left-radius: 4px;
-  border-bottom-left-radius: 4px;
-}
-.pagination > li:last-child > a,
-.pagination > li:last-child > span {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 4px;
-}
-.pagination > li > a:hover,
-.pagination > li > span:hover,
-.pagination > li > a:focus,
-.pagination > li > span:focus {
-  color: #2a6496;
-  background-color: #eee;
-  border-color: #ddd;
-}
-.pagination > .active > a,
-.pagination > .active > span,
-.pagination > .active > a:hover,
-.pagination > .active > span:hover,
-.pagination > .active > a:focus,
-.pagination > .active > span:focus {
-  z-index: 2;
-  color: #fff;
-  cursor: default;
-  background-color: #428bca;
-  border-color: #428bca;
-}
-.pagination > .disabled > span,
-.pagination > .disabled > span:hover,
-.pagination > .disabled > span:focus,
-.pagination > .disabled > a,
-.pagination > .disabled > a:hover,
-.pagination > .disabled > a:focus {
-  color: #777;
-  cursor: not-allowed;
-  background-color: #fff;
-  border-color: #ddd;
-}
-.pagination-lg > li > a,
-.pagination-lg > li > span {
-  padding: 10px 16px;
-  font-size: 18px;
-}
-.pagination-lg > li:first-child > a,
-.pagination-lg > li:first-child > span {
-  border-top-left-radius: 6px;
-  border-bottom-left-radius: 6px;
-}
-.pagination-lg > li:last-child > a,
-.pagination-lg > li:last-child > span {
-  border-top-right-radius: 6px;
-  border-bottom-right-radius: 6px;
-}
-.pagination-sm > li > a,
-.pagination-sm > li > span {
-  padding: 5px 10px;
-  font-size: 12px;
-}
-.pagination-sm > li:first-child > a,
-.pagination-sm > li:first-child > span {
-  border-top-left-radius: 3px;
-  border-bottom-left-radius: 3px;
-}
-.pagination-sm > li:last-child > a,
-.pagination-sm > li:last-child > span {
-  border-top-right-radius: 3px;
-  border-bottom-right-radius: 3px;
-}
-.pager {
-  padding-left: 0;
-  margin: 20px 0;
-  text-align: center;
-  list-style: none;
-}
-.pager li {
-  display: inline;
-}
-.pager li > a,
-.pager li > span {
-  display: inline-block;
-  padding: 5px 14px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-radius: 15px;
-}
-.pager li > a:hover,
-.pager li > a:focus {
-  text-decoration: none;
-  background-color: #eee;
-}
-.pager .next > a,
-.pager .next > span {
-  float: right;
-}
-.pager .previous > a,
-.pager .previous > span {
-  float: left;
-}
-.pager .disabled > a,
-.pager .disabled > a:hover,
-.pager .disabled > a:focus,
-.pager .disabled > span {
-  color: #777;
-  cursor: not-allowed;
-  background-color: #fff;
-}
-.label {
-  display: inline;
-  padding: .2em .6em .3em;
-  font-size: 75%;
-  font-weight: bold;
-  line-height: 1;
-  color: #fff;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: baseline;
-  border-radius: .25em;
-}
-a.label:hover,
-a.label:focus {
-  color: #fff;
-  text-decoration: none;
-  cursor: pointer;
-}
-.label:empty {
-  display: none;
-}
-.btn .label {
-  position: relative;
-  top: -1px;
-}
-.label-default {
-  background-color: #777;
-}
-.label-default[href]:hover,
-.label-default[href]:focus {
-  background-color: #5e5e5e;
-}
-.label-primary {
-  background-color: #428bca;
-}
-.label-primary[href]:hover,
-.label-primary[href]:focus {
-  background-color: #3071a9;
-}
-.label-success {
-  background-color: #5cb85c;
-}
-.label-success[href]:hover,
-.label-success[href]:focus {
-  background-color: #449d44;
-}
-.label-info {
-  background-color: #5bc0de;
-}
-.label-info[href]:hover,
-.label-info[href]:focus {
-  background-color: #31b0d5;
-}
-.label-warning {
-  background-color: #f0ad4e;
-}
-.label-warning[href]:hover,
-.label-warning[href]:focus {
-  background-color: #ec971f;
-}
-.label-danger {
-  background-color: #d9534f;
-}
-.label-danger[href]:hover,
-.label-danger[href]:focus {
-  background-color: #c9302c;
-}
-.badge {
-  display: inline-block;
-  min-width: 10px;
-  padding: 3px 7px;
-  font-size: 12px;
-  font-weight: bold;
-  line-height: 1;
-  color: #fff;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: baseline;
-  background-color: #777;
-  border-radius: 10px;
-}
-.badge:empty {
-  display: none;
-}
-.btn .badge {
-  position: relative;
-  top: -1px;
-}
-.btn-xs .badge {
-  top: 0;
-  padding: 1px 5px;
-}
-a.badge:hover,
-a.badge:focus {
-  color: #fff;
-  text-decoration: none;
-  cursor: pointer;
-}
-a.list-group-item.active > .badge,
-.nav-pills > .active > a > .badge {
-  color: #428bca;
-  background-color: #fff;
-}
-.nav-pills > li > a > .badge {
-  margin-left: 3px;
-}
-.jumbotron {
-  padding: 30px;
-  margin-bottom: 30px;
-  color: inherit;
-  background-color: #eee;
-}
-.jumbotron h1,
-.jumbotron .h1 {
-  color: inherit;
-}
-.jumbotron p {
-  margin-bottom: 15px;
-  font-size: 21px;
-  font-weight: 200;
-}
-.jumbotron > hr {
-  border-top-color: #d5d5d5;
-}
-.container .jumbotron {
-  border-radius: 6px;
-}
-.jumbotron .container {
-  max-width: 100%;
-}
-@media screen and (min-width: 768px) {
-  .jumbotron {
-    padding-top: 48px;
-    padding-bottom: 48px;
-  }
-  .container .jumbotron {
-    padding-right: 60px;
-    padding-left: 60px;
-  }
-  .jumbotron h1,
-  .jumbotron .h1 {
-    font-size: 63px;
-  }
-}
-.thumbnail {
-  display: block;
-  padding: 4px;
-  margin-bottom: 20px;
-  line-height: 1.42857143;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-radius: 4px;
-  -webkit-transition: all .2s ease-in-out;
-       -o-transition: all .2s ease-in-out;
-          transition: all .2s ease-in-out;
-}
-.thumbnail > img,
-.thumbnail a > img {
-  margin-right: auto;
-  margin-left: auto;
-}
-a.thumbnail:hover,
-a.thumbnail:focus,
-a.thumbnail.active {
-  border-color: #428bca;
-}
-.thumbnail .caption {
-  padding: 9px;
-  color: #333;
-}
-.alert {
-  padding: 15px;
-  margin-bottom: 20px;
-  border: 1px solid transparent;
-  border-radius: 4px;
-}
-.alert h4 {
-  margin-top: 0;
-  color: inherit;
-}
-.alert .alert-link {
-  font-weight: bold;
-}
-.alert > p,
-.alert > ul {
-  margin-bottom: 0;
-}
-.alert > p + p {
-  margin-top: 5px;
-}
-.alert-dismissable,
-.alert-dismissible {
-  padding-right: 35px;
-}
-.alert-dismissable .close,
-.alert-dismissible .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  color: inherit;
-}
-.alert-success {
-  color: #3c763d;
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-}
-.alert-success hr {
-  border-top-color: #c9e2b3;
-}
-.alert-success .alert-link {
-  color: #2b542c;
-}
-.alert-info {
-  color: #31708f;
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-}
-.alert-info hr {
-  border-top-color: #a6e1ec;
-}
-.alert-info .alert-link {
-  color: #245269;
-}
-.alert-warning {
-  color: #8a6d3b;
-  background-color: #fcf8e3;
-  border-color: #faebcc;
-}
-.alert-warning hr {
-  border-top-color: #f7e1b5;
-}
-.alert-warning .alert-link {
-  color: #66512c;
-}
-.alert-danger {
-  color: #a94442;
-  background-color: #f2dede;
-  border-color: #ebccd1;
-}
-.alert-danger hr {
-  border-top-color: #e4b9c0;
-}
-.alert-danger .alert-link {
-  color: #843534;
-}
-@-webkit-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-@-o-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-@keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-.progress {
-  height: 20px;
-  margin-bottom: 20px;
-  overflow: hidden;
-  background-color: #f5f5f5;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
-          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
-}
-.progress-bar {
-  float: left;
-  width: 0;
-  height: 100%;
-  font-size: 12px;
-  line-height: 20px;
-  color: #fff;
-  text-align: center;
-  background-color: #428bca;
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
-          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
-  -webkit-transition: width .6s ease;
-       -o-transition: width .6s ease;
-          transition: width .6s ease;
-}
-.progress-striped .progress-bar,
-.progress-bar-striped {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  -webkit-background-size: 40px 40px;
-          background-size: 40px 40px;
-}
-.progress.active .progress-bar,
-.progress-bar.active {
-  -webkit-animation: progress-bar-stripes 2s linear infinite;
-       -o-animation: progress-bar-stripes 2s linear infinite;
-          animation: progress-bar-stripes 2s linear infinite;
-}
-.progress-bar[aria-valuenow="1"],
-.progress-bar[aria-valuenow="2"] {
-  min-width: 30px;
-}
-.progress-bar[aria-valuenow="0"] {
-  min-width: 30px;
-  color: #777;
-  background-color: transparent;
-  background-image: none;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-.progress-bar-success {
-  background-color: #5cb85c;
-}
-.progress-striped .progress-bar-success {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-}
-.progress-bar-info {
-  background-color: #5bc0de;
-}
-.progress-striped .progress-bar-info {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-}
-.progress-bar-warning {
-  background-color: #f0ad4e;
-}
-.progress-striped .progress-bar-warning {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-}
-.progress-bar-danger {
-  background-color: #d9534f;
-}
-.progress-striped .progress-bar-danger {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-}
-.media,
-.media-body {
-  overflow: hidden;
-  zoom: 1;
-}
-.media,
-.media .media {
-  margin-top: 15px;
-}
-.media:first-child {
-  margin-top: 0;
-}
-.media-object {
-  display: block;
-}
-.media-heading {
-  margin: 0 0 5px;
-}
-.media > .pull-left {
-  margin-right: 10px;
-}
-.media > .pull-right {
-  margin-left: 10px;
-}
-.media-list {
-  padding-left: 0;
-  list-style: none;
-}
-.list-group {
-  padding-left: 0;
-  margin-bottom: 20px;
-}
-.list-group-item {
-  position: relative;
-  display: block;
-  padding: 10px 15px;
-  margin-bottom: -1px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-}
-.list-group-item:first-child {
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-}
-.list-group-item:last-child {
-  margin-bottom: 0;
-  border-bottom-right-radius: 4px;
-  border-bottom-left-radius: 4px;
-}
-.list-group-item > .badge {
-  float: right;
-}
-.list-group-item > .badge + .badge {
-  margin-right: 5px;
-}
-a.list-group-item {
-  color: #555;
-}
-a.list-group-item .list-group-item-heading {
-  color: #333;
-}
-a.list-group-item:hover,
-a.list-group-item:focus {
-  color: #555;
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-.list-group-item.disabled,
-.list-group-item.disabled:hover,
-.list-group-item.disabled:focus {
-  color: #777;
-  background-color: #eee;
-}
-.list-group-item.disabled .list-group-item-heading,
-.list-group-item.disabled:hover .list-group-item-heading,
-.list-group-item.disabled:focus .list-group-item-heading {
-  color: inherit;
-}
-.list-group-item.disabled .list-group-item-text,
-.list-group-item.disabled:hover .list-group-item-text,
-.list-group-item.disabled:focus .list-group-item-text {
-  color: #777;
-}
-.list-group-item.active,
-.list-group-item.active:hover,
-.list-group-item.active:focus {
-  z-index: 2;
-  color: #fff;
-  background-color: #428bca;
-  border-color: #428bca;
-}
-.list-group-item.active .list-group-item-heading,
-.list-group-item.active:hover .list-group-item-heading,
-.list-group-item.active:focus .list-group-item-heading,
-.list-group-item.active .list-group-item-heading > small,
-.list-group-item.active:hover .list-group-item-heading > small,
-.list-group-item.active:focus .list-group-item-heading > small,
-.list-group-item.active .list-group-item-heading > .small,
-.list-group-item.active:hover .list-group-item-heading > .small,
-.list-group-item.active:focus .list-group-item-heading > .small {
-  color: inherit;
-}
-.list-group-item.active .list-group-item-text,
-.list-group-item.active:hover .list-group-item-text,
-.list-group-item.active:focus .list-group-item-text {
-  color: #e1edf7;
-}
-.list-group-item-success {
-  color: #3c763d;
-  background-color: #dff0d8;
-}
-a.list-group-item-success {
-  color: #3c763d;
-}
-a.list-group-item-success .list-group-item-heading {
-  color: inherit;
-}
-a.list-group-item-success:hover,
-a.list-group-item-success:focus {
-  color: #3c763d;
-  background-color: #d0e9c6;
-}
-a.list-group-item-success.active,
-a.list-group-item-success.active:hover,
-a.list-group-item-success.active:focus {
-  color: #fff;
-  background-color: #3c763d;
-  border-color: #3c763d;
-}
-.list-group-item-info {
-  color: #31708f;
-  background-color: #d9edf7;
-}
-a.list-group-item-info {
-  color: #31708f;
-}
-a.list-group-item-info .list-group-item-heading {
-  color: inherit;
-}
-a.list-group-item-info:hover,
-a.list-group-item-info:focus {
-  color: #31708f;
-  background-color: #c4e3f3;
-}
-a.list-group-item-info.active,
-a.list-group-item-info.active:hover,
-a.list-group-item-info.active:focus {
-  color: #fff;
-  background-color: #31708f;
-  border-color: #31708f;
-}
-.list-group-item-warning {
-  color: #8a6d3b;
-  background-color: #fcf8e3;
-}
-a.list-group-item-warning {
-  color: #8a6d3b;
-}
-a.list-group-item-warning .list-group-item-heading {
-  color: inherit;
-}
-a.list-group-item-warning:hover,
-a.list-group-item-warning:focus {
-  color: #8a6d3b;
-  background-color: #faf2cc;
-}
-a.list-group-item-warning.active,
-a.list-group-item-warning.active:hover,
-a.list-group-item-warning.active:focus {
-  color: #fff;
-  background-color: #8a6d3b;
-  border-color: #8a6d3b;
-}
-.list-group-item-danger {
-  color: #a94442;
-  background-color: #f2dede;
-}
-a.list-group-item-danger {
-  color: #a94442;
-}
-a.list-group-item-danger .list-group-item-heading {
-  color: inherit;
-}
-a.list-group-item-danger:hover,
-a.list-group-item-danger:focus {
-  color: #a94442;
-  background-color: #ebcccc;
-}
-a.list-group-item-danger.active,
-a.list-group-item-danger.active:hover,
-a.list-group-item-danger.active:focus {
-  color: #fff;
-  background-color: #a94442;
-  border-color: #a94442;
-}
-.list-group-item-heading {
-  margin-top: 0;
-  margin-bottom: 5px;
-}
-.list-group-item-text {
-  margin-bottom: 0;
-  line-height: 1.3;
-}
-.panel {
-  margin-bottom: 20px;
-  background-color: #fff;
-  border: 1px solid transparent;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
-          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
-}
-.panel-body {
-  padding: 15px;
-}
-.panel-heading {
-  padding: 10px 15px;
-  border-bottom: 1px solid transparent;
-  border-top-left-radius: 3px;
-  border-top-right-radius: 3px;
-}
-.panel-heading > .dropdown .dropdown-toggle {
-  color: inherit;
-}
-.panel-title {
-  margin-top: 0;
-  margin-bottom: 0;
-  font-size: 16px;
-  color: inherit;
-}
-.panel-title > a {
-  color: inherit;
-}
-.panel-footer {
-  padding: 10px 15px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  border-bottom-right-radius: 3px;
-  border-bottom-left-radius: 3px;
-}
-.panel > .list-group {
-  margin-bottom: 0;
-}
-.panel > .list-group .list-group-item {
-  border-width: 1px 0;
-  border-radius: 0;
-}
-.panel > .list-group:first-child .list-group-item:first-child {
-  border-top: 0;
-  border-top-left-radius: 3px;
-  border-top-right-radius: 3px;
-}
-.panel > .list-group:last-child .list-group-item:last-child {
-  border-bottom: 0;
-  border-bottom-right-radius: 3px;
-  border-bottom-left-radius: 3px;
-}
-.panel-heading + .list-group .list-group-item:first-child {
-  border-top-width: 0;
-}
-.list-group + .panel-footer {
-  border-top-width: 0;
-}
-.panel > .table,
-.panel > .table-responsive > .table,
-.panel > .panel-collapse > .table {
-  margin-bottom: 0;
-}
-.panel > .table:first-child,
-.panel > .table-responsive:first-child > .table:first-child {
-  border-top-left-radius: 3px;
-  border-top-right-radius: 3px;
-}
-.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
-.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
-  border-top-left-radius: 3px;
-}
-.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
-.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
-  border-top-right-radius: 3px;
-}
-.panel > .table:last-child,
-.panel > .table-responsive:last-child > .table:last-child {
-  border-bottom-right-radius: 3px;
-  border-bottom-left-radius: 3px;
-}
-.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
-.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
-  border-bottom-left-radius: 3px;
-}
-.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
-.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
-  border-bottom-right-radius: 3px;
-}
-.panel > .panel-body + .table,
-.panel > .panel-body + .table-responsive {
-  border-top: 1px solid #ddd;
-}
-.panel > .table > tbody:first-child > tr:first-child th,
-.panel > .table > tbody:first-child > tr:first-child td {
-  border-top: 0;
-}
-.panel > .table-bordered,
-.panel > .table-responsive > .table-bordered {
-  border: 0;
-}
-.panel > .table-bordered > thead > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
-.panel > .table-bordered > tbody > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
-.panel > .table-bordered > tfoot > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
-.panel > .table-bordered > thead > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
-.panel > .table-bordered > tbody > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
-.panel > .table-bordered > tfoot > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
-  border-left: 0;
-}
-.panel > .table-bordered > thead > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
-.panel > .table-bordered > tbody > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
-.panel > .table-bordered > tfoot > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
-.panel > .table-bordered > thead > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
-.panel > .table-bordered > tbody > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
-.panel > .table-bordered > tfoot > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
-  border-right: 0;
-}
-.panel > .table-bordered > thead > tr:first-child > td,
-.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
-.panel > .table-bordered > tbody > tr:first-child > td,
-.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
-.panel > .table-bordered > thead > tr:first-child > th,
-.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
-.panel > .table-bordered > tbody > tr:first-child > th,
-.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
-  border-bottom: 0;
-}
-.panel > .table-bordered > tbody > tr:last-child > td,
-.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
-.panel > .table-bordered > tfoot > tr:last-child > td,
-.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
-.panel > .table-bordered > tbody > tr:last-child > th,
-.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
-.panel > .table-bordered > tfoot > tr:last-child > th,
-.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
-  border-bottom: 0;
-}
-.panel > .table-responsive {
-  margin-bottom: 0;
-  border: 0;
-}
-.panel-group {
-  margin-bottom: 20px;
-}
-.panel-group .panel {
-  margin-bottom: 0;
-  border-radius: 4px;
-}
-.panel-group .panel + .panel {
-  margin-top: 5px;
-}
-.panel-group .panel-heading {
-  border-bottom: 0;
-}
-.panel-group .panel-heading + .panel-collapse > .panel-body {
-  border-top: 1px solid #ddd;
-}
-.panel-group .panel-footer {
-  border-top: 0;
-}
-.panel-group .panel-footer + .panel-collapse .panel-body {
-  border-bottom: 1px solid #ddd;
-}
-.panel-default {
-  border-color: #ddd;
-}
-.panel-default > .panel-heading {
-  color: #333;
-  background-color: #f5f5f5;
-  border-color: #ddd;
-}
-.panel-default > .panel-heading + .panel-collapse > .panel-body {
-  border-top-color: #ddd;
-}
-.panel-default > .panel-heading .badge {
-  color: #f5f5f5;
-  background-color: #333;
-}
-.panel-default > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #ddd;
-}
-.panel-primary {
-  border-color: #428bca;
-}
-.panel-primary > .panel-heading {
-  color: #fff;
-  background-color: #428bca;
-  border-color: #428bca;
-}
-.panel-primary > .panel-heading + .panel-collapse > .panel-body {
-  border-top-color: #428bca;
-}
-.panel-primary > .panel-heading .badge {
-  color: #428bca;
-  background-color: #fff;
-}
-.panel-primary > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #428bca;
-}
-.panel-success {
-  border-color: #d6e9c6;
-}
-.panel-success > .panel-heading {
-  color: #3c763d;
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-}
-.panel-success > .panel-heading + .panel-collapse > .panel-body {
-  border-top-color: #d6e9c6;
-}
-.panel-success > .panel-heading .badge {
-  color: #dff0d8;
-  background-color: #3c763d;
-}
-.panel-success > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #d6e9c6;
-}
-.panel-info {
-  border-color: #bce8f1;
-}
-.panel-info > .panel-heading {
-  color: #31708f;
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-}
-.panel-info > .panel-heading + .panel-collapse > .panel-body {
-  border-top-color: #bce8f1;
-}
-.panel-info > .panel-heading .badge {
-  color: #d9edf7;
-  background-color: #31708f;
-}
-.panel-info > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #bce8f1;
-}
-.panel-warning {
-  border-color: #faebcc;
-}
-.panel-warning > .panel-heading {
-  color: #8a6d3b;
-  background-color: #fcf8e3;
-  border-color: #faebcc;
-}
-.panel-warning > .panel-heading + .panel-collapse > .panel-body {
-  border-top-color: #faebcc;
-}
-.panel-warning > .panel-heading .badge {
-  color: #fcf8e3;
-  background-color: #8a6d3b;
-}
-.panel-warning > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #faebcc;
-}
-.panel-danger {
-  border-color: #ebccd1;
-}
-.panel-danger > .panel-heading {
-  color: #a94442;
-  background-color: #f2dede;
-  border-color: #ebccd1;
-}
-.panel-danger > .panel-heading + .panel-collapse > .panel-body {
-  border-top-color: #ebccd1;
-}
-.panel-danger > .panel-heading .badge {
-  color: #f2dede;
-  background-color: #a94442;
-}
-.panel-danger > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #ebccd1;
-}
-.embed-responsive {
-  position: relative;
-  display: block;
-  height: 0;
-  padding: 0;
-  overflow: hidden;
-}
-.embed-responsive .embed-responsive-item,
-.embed-responsive iframe,
-.embed-responsive embed,
-.embed-responsive object {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  border: 0;
-}
-.embed-responsive.embed-responsive-16by9 {
-  padding-bottom: 56.25%;
-}
-.embed-responsive.embed-responsive-4by3 {
-  padding-bottom: 75%;
-}
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #e3e3e3;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, .15);
-}
-.well-lg {
-  padding: 24px;
-  border-radius: 6px;
-}
-.well-sm {
-  padding: 9px;
-  border-radius: 3px;
-}
-.close {
-  float: right;
-  font-size: 21px;
-  font-weight: bold;
-  line-height: 1;
-  color: #000;
-  text-shadow: 0 1px 0 #fff;
-  filter: alpha(opacity=20);
-  opacity: .2;
-}
-.close:hover,
-.close:focus {
-  color: #000;
-  text-decoration: none;
-  cursor: pointer;
-  filter: alpha(opacity=50);
-  opacity: .5;
-}
-button.close {
-  -webkit-appearance: none;
-  padding: 0;
-  cursor: pointer;
-  background: transparent;
-  border: 0;
-}
-.modal-open {
-  overflow: hidden;
-}
-.modal {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1050;
-  display: none;
-  overflow: hidden;
-  -webkit-overflow-scrolling: touch;
-  outline: 0;
-}
-.modal.fade .modal-dialog {
-  -webkit-transition: -webkit-transform .3s ease-out;
-       -o-transition:      -o-transform .3s ease-out;
-          transition:         transform .3s ease-out;
-  -webkit-transform: translate3d(0, -25%, 0);
-       -o-transform: translate3d(0, -25%, 0);
-          transform: translate3d(0, -25%, 0);
-}
-.modal.in .modal-dialog {
-  -webkit-transform: translate3d(0, 0, 0);
-       -o-transform: translate3d(0, 0, 0);
-          transform: translate3d(0, 0, 0);
-}
-.modal-open .modal {
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.modal-dialog {
-  position: relative;
-  width: auto;
-  margin: 10px;
-}
-.modal-content {
-  position: relative;
-  background-color: #fff;
-  -webkit-background-clip: padding-box;
-          background-clip: padding-box;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, .2);
-  border-radius: 6px;
-  outline: 0;
-  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
-          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
-}
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000;
-}
-.modal-backdrop.fade {
-  filter: alpha(opacity=0);
-  opacity: 0;
-}
-.modal-backdrop.in {
-  filter: alpha(opacity=50);
-  opacity: .5;
-}
-.modal-header {
-  min-height: 16.42857143px;
-  padding: 15px;
-  border-bottom: 1px solid #e5e5e5;
-}
-.modal-header .close {
-  margin-top: -2px;
-}
-.modal-title {
-  margin: 0;
-  line-height: 1.42857143;
-}
-.modal-body {
-  position: relative;
-  padding: 15px;
-}
-.modal-footer {
-  padding: 15px;
-  text-align: right;
-  border-top: 1px solid #e5e5e5;
-}
-.modal-footer .btn + .btn {
-  margin-bottom: 0;
-  margin-left: 5px;
-}
-.modal-footer .btn-group .btn + .btn {
-  margin-left: -1px;
-}
-.modal-footer .btn-block + .btn-block {
-  margin-left: 0;
-}
-.modal-scrollbar-measure {
-  position: absolute;
-  top: -9999px;
-  width: 50px;
-  height: 50px;
-  overflow: scroll;
-}
-@media (min-width: 768px) {
-  .modal-dialog {
-    width: 600px;
-    margin: 30px auto;
-  }
-  .modal-content {
-    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
-            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
-  }
-  .modal-sm {
-    width: 300px;
-  }
-}
-@media (min-width: 992px) {
-  .modal-lg {
-    width: 900px;
-  }
-}
-.tooltip {
-  position: absolute;
-  z-index: 1070;
-  display: block;
-  font-size: 12px;
-  line-height: 1.4;
-  visibility: visible;
-  filter: alpha(opacity=0);
-  opacity: 0;
-}
-.tooltip.in {
-  filter: alpha(opacity=90);
-  opacity: .9;
-}
-.tooltip.top {
-  padding: 5px 0;
-  margin-top: -3px;
-}
-.tooltip.right {
-  padding: 0 5px;
-  margin-left: 3px;
-}
-.tooltip.bottom {
-  padding: 5px 0;
-  margin-top: 3px;
-}
-.tooltip.left {
-  padding: 0 5px;
-  margin-left: -3px;
-}
-.tooltip-inner {
-  max-width: 200px;
-  padding: 3px 8px;
-  color: #fff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #000;
-  border-radius: 4px;
-}
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-.tooltip.top .tooltip-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-width: 5px 5px 0;
-  border-top-color: #000;
-}
-.tooltip.top-left .tooltip-arrow {
-  bottom: 0;
-  left: 5px;
-  border-width: 5px 5px 0;
-  border-top-color: #000;
-}
-.tooltip.top-right .tooltip-arrow {
-  right: 5px;
-  bottom: 0;
-  border-width: 5px 5px 0;
-  border-top-color: #000;
-}
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-width: 5px 5px 5px 0;
-  border-right-color: #000;
-}
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-width: 5px 0 5px 5px;
-  border-left-color: #000;
-}
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-width: 0 5px 5px;
-  border-bottom-color: #000;
-}
-.tooltip.bottom-left .tooltip-arrow {
-  top: 0;
-  left: 5px;
-  border-width: 0 5px 5px;
-  border-bottom-color: #000;
-}
-.tooltip.bottom-right .tooltip-arrow {
-  top: 0;
-  right: 5px;
-  border-width: 0 5px 5px;
-  border-bottom-color: #000;
-}
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1060;
-  display: none;
-  max-width: 276px;
-  padding: 1px;
-  text-align: left;
-  white-space: normal;
-  background-color: #fff;
-  -webkit-background-clip: padding-box;
-          background-clip: padding-box;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, .2);
-  border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
-          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
-}
-.popover.top {
-  margin-top: -10px;
-}
-.popover.right {
-  margin-left: 10px;
-}
-.popover.bottom {
-  margin-top: 10px;
-}
-.popover.left {
-  margin-left: -10px;
-}
-.popover-title {
-  padding: 8px 14px;
-  margin: 0;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 18px;
-  background-color: #f7f7f7;
-  border-bottom: 1px solid #ebebeb;
-  border-radius: 5px 5px 0 0;
-}
-.popover-content {
-  padding: 9px 14px;
-}
-.popover > .arrow,
-.popover > .arrow:after {
-  position: absolute;
-  display: block;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-.popover > .arrow {
-  border-width: 11px;
-}
-.popover > .arrow:after {
-  content: "";
-  border-width: 10px;
-}
-.popover.top > .arrow {
-  bottom: -11px;
-  left: 50%;
-  margin-left: -11px;
-  border-top-color: #999;
-  border-top-color: rgba(0, 0, 0, .25);
-  border-bottom-width: 0;
-}
-.popover.top > .arrow:after {
-  bottom: 1px;
-  margin-left: -10px;
-  content: " ";
-  border-top-color: #fff;
-  border-bottom-width: 0;
-}
-.popover.right > .arrow {
-  top: 50%;
-  left: -11px;
-  margin-top: -11px;
-  border-right-color: #999;
-  border-right-color: rgba(0, 0, 0, .25);
-  border-left-width: 0;
-}
-.popover.right > .arrow:after {
-  bottom: -10px;
-  left: 1px;
-  content: " ";
-  border-right-color: #fff;
-  border-left-width: 0;
-}
-.popover.bottom > .arrow {
-  top: -11px;
-  left: 50%;
-  margin-left: -11px;
-  border-top-width: 0;
-  border-bottom-color: #999;
-  border-bottom-color: rgba(0, 0, 0, .25);
-}
-.popover.bottom > .arrow:after {
-  top: 1px;
-  margin-left: -10px;
-  content: " ";
-  border-top-width: 0;
-  border-bottom-color: #fff;
-}
-.popover.left > .arrow {
-  top: 50%;
-  right: -11px;
-  margin-top: -11px;
-  border-right-width: 0;
-  border-left-color: #999;
-  border-left-color: rgba(0, 0, 0, .25);
-}
-.popover.left > .arrow:after {
-  right: 1px;
-  bottom: -10px;
-  content: " ";
-  border-right-width: 0;
-  border-left-color: #fff;
-}
-.carousel {
-  position: relative;
-}
-.carousel-inner {
-  position: relative;
-  width: 100%;
-  overflow: hidden;
-}
-.carousel-inner > .item {
-  position: relative;
-  display: none;
-  -webkit-transition: .6s ease-in-out left;
-       -o-transition: .6s ease-in-out left;
-          transition: .6s ease-in-out left;
-}
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
-  line-height: 1;
-}
-.carousel-inner > .active,
-.carousel-inner > .next,
-.carousel-inner > .prev {
-  display: block;
-}
-.carousel-inner > .active {
-  left: 0;
-}
-.carousel-inner > .next,
-.carousel-inner > .prev {
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.carousel-inner > .next {
-  left: 100%;
-}
-.carousel-inner > .prev {
-  left: -100%;
-}
-.carousel-inner > .next.left,
-.carousel-inner > .prev.right {
-  left: 0;
-}
-.carousel-inner > .active.left {
-  left: -100%;
-}
-.carousel-inner > .active.right {
-  left: 100%;
-}
-.carousel-control {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  width: 15%;
-  font-size: 20px;
-  color: #fff;
-  text-align: center;
-  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
-  filter: alpha(opacity=50);
-  opacity: .5;
-}
-.carousel-control.left {
-  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
-  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
-  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
-  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
-  background-repeat: repeat-x;
-}
-.carousel-control.right {
-  right: 0;
-  left: auto;
-  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
-  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
-  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
-  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
-  background-repeat: repeat-x;
-}
-.carousel-control:hover,
-.carousel-control:focus {
-  color: #fff;
-  text-decoration: none;
-  filter: alpha(opacity=90);
-  outline: 0;
-  opacity: .9;
-}
-.carousel-control .icon-prev,
-.carousel-control .icon-next,
-.carousel-control .glyphicon-chevron-left,
-.carousel-control .glyphicon-chevron-right {
-  position: absolute;
-  top: 50%;
-  z-index: 5;
-  display: inline-block;
-}
-.carousel-control .icon-prev,
-.carousel-control .glyphicon-chevron-left {
-  left: 50%;
-  margin-left: -10px;
-}
-.carousel-control .icon-next,
-.carousel-control .glyphicon-chevron-right {
-  right: 50%;
-  margin-right: -10px;
-}
-.carousel-control .icon-prev,
-.carousel-control .icon-next {
-  width: 20px;
-  height: 20px;
-  margin-top: -10px;
-  font-family: serif;
-}
-.carousel-control .icon-prev:before {
-  content: '\2039';
-}
-.carousel-control .icon-next:before {
-  content: '\203a';
-}
-.carousel-indicators {
-  position: absolute;
-  bottom: 10px;
-  left: 50%;
-  z-index: 15;
-  width: 60%;
-  padding-left: 0;
-  margin-left: -30%;
-  text-align: center;
-  list-style: none;
-}
-.carousel-indicators li {
-  display: inline-block;
-  width: 10px;
-  height: 10px;
-  margin: 1px;
-  text-indent: -999px;
-  cursor: pointer;
-  background-color: #000 \9;
-  background-color: rgba(0, 0, 0, 0);
-  border: 1px solid #fff;
-  border-radius: 10px;
-}
-.carousel-indicators .active {
-  width: 12px;
-  height: 12px;
-  margin: 0;
-  background-color: #fff;
-}
-.carousel-caption {
-  position: absolute;
-  right: 15%;
-  bottom: 20px;
-  left: 15%;
-  z-index: 10;
-  padding-top: 20px;
-  padding-bottom: 20px;
-  color: #fff;
-  text-align: center;
-  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
-}
-.carousel-caption .btn {
-  text-shadow: none;
-}
-@media screen and (min-width: 768px) {
-  .carousel-control .glyphicon-chevron-left,
-  .carousel-control .glyphicon-chevron-right,
-  .carousel-control .icon-prev,
-  .carousel-control .icon-next {
-    width: 30px;
-    height: 30px;
-    margin-top: -15px;
-    font-size: 30px;
-  }
-  .carousel-control .glyphicon-chevron-left,
-  .carousel-control .icon-prev {
-    margin-left: -15px;
-  }
-  .carousel-control .glyphicon-chevron-right,
-  .carousel-control .icon-next {
-    margin-right: -15px;
-  }
-  .carousel-caption {
-    right: 20%;
-    left: 20%;
-    padding-bottom: 30px;
-  }
-  .carousel-indicators {
-    bottom: 20px;
-  }
-}
-.clearfix:before,
-.clearfix:after,
-.dl-horizontal dd:before,
-.dl-horizontal dd:after,
-.container:before,
-.container:after,
-.container-fluid:before,
-.container-fluid:after,
-.row:before,
-.row:after,
-.form-horizontal .form-group:before,
-.form-horizontal .form-group:after,
-.btn-toolbar:before,
-.btn-toolbar:after,
-.btn-group-vertical > .btn-group:before,
-.btn-group-vertical > .btn-group:after,
-.nav:before,
-.nav:after,
-.navbar:before,
-.navbar:after,
-.navbar-header:before,
-.navbar-header:after,
-.navbar-collapse:before,
-.navbar-collapse:after,
-.pager:before,
-.pager:after,
-.panel-body:before,
-.panel-body:after,
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  content: " ";
-}
-.clearfix:after,
-.dl-horizontal dd:after,
-.container:after,
-.container-fluid:after,
-.row:after,
-.form-horizontal .form-group:after,
-.btn-toolbar:after,
-.btn-group-vertical > .btn-group:after,
-.nav:after,
-.navbar:after,
-.navbar-header:after,
-.navbar-collapse:after,
-.pager:after,
-.panel-body:after,
-.modal-footer:after {
-  clear: both;
-}
-.center-block {
-  display: block;
-  margin-right: auto;
-  margin-left: auto;
-}
-.pull-right {
-  float: right !important;
-}
-.pull-left {
-  float: left !important;
-}
-.hide {
-  display: none !important;
-}
-.show {
-  display: block !important;
-}
-.invisible {
-  visibility: hidden;
-}
-.text-hide {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-.hidden {
-  display: none !important;
-  visibility: hidden !important;
-}
-.affix {
-  position: fixed;
-  -webkit-transform: translate3d(0, 0, 0);
-       -o-transform: translate3d(0, 0, 0);
-          transform: translate3d(0, 0, 0);
-}
-@-ms-viewport {
-  width: device-width;
-}
-.visible-xs,
-.visible-sm,
-.visible-md,
-.visible-lg {
-  display: none !important;
-}
-.visible-xs-block,
-.visible-xs-inline,
-.visible-xs-inline-block,
-.visible-sm-block,
-.visible-sm-inline,
-.visible-sm-inline-block,
-.visible-md-block,
-.visible-md-inline,
-.visible-md-inline-block,
-.visible-lg-block,
-.visible-lg-inline,
-.visible-lg-inline-block {
-  display: none !important;
-}
-@media (max-width: 767px) {
-  .visible-xs {
-    display: block !important;
-  }
-  table.visible-xs {
-    display: table;
-  }
-  tr.visible-xs {
-    display: table-row !important;
-  }
-  th.visible-xs,
-  td.visible-xs {
-    display: table-cell !important;
-  }
-}
-@media (max-width: 767px) {
-  .visible-xs-block {
-    display: block !important;
-  }
-}
-@media (max-width: 767px) {
-  .visible-xs-inline {
-    display: inline !important;
-  }
-}
-@media (max-width: 767px) {
-  .visible-xs-inline-block {
-    display: inline-block !important;
-  }
-}
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm {
-    display: block !important;
-  }
-  table.visible-sm {
-    display: table;
-  }
-  tr.visible-sm {
-    display: table-row !important;
-  }
-  th.visible-sm,
-  td.visible-sm {
-    display: table-cell !important;
-  }
-}
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm-block {
-    display: block !important;
-  }
-}
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm-inline {
-    display: inline !important;
-  }
-}
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm-inline-block {
-    display: inline-block !important;
-  }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md {
-    display: block !important;
-  }
-  table.visible-md {
-    display: table;
-  }
-  tr.visible-md {
-    display: table-row !important;
-  }
-  th.visible-md,
-  td.visible-md {
-    display: table-cell !important;
-  }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md-block {
-    display: block !important;
-  }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md-inline {
-    display: inline !important;
-  }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md-inline-block {
-    display: inline-block !important;
-  }
-}
-@media (min-width: 1200px) {
-  .visible-lg {
-    display: block !important;
-  }
-  table.visible-lg {
-    display: table;
-  }
-  tr.visible-lg {
-    display: table-row !important;
-  }
-  th.visible-lg,
-  td.visible-lg {
-    display: table-cell !important;
-  }
-}
-@media (min-width: 1200px) {
-  .visible-lg-block {
-    display: block !important;
-  }
-}
-@media (min-width: 1200px) {
-  .visible-lg-inline {
-    display: inline !important;
-  }
-}
-@media (min-width: 1200px) {
-  .visible-lg-inline-block {
-    display: inline-block !important;
-  }
-}
-@media (max-width: 767px) {
-  .hidden-xs {
-    display: none !important;
-  }
-}
-@media (min-width: 768px) and (max-width: 991px) {
-  .hidden-sm {
-    display: none !important;
-  }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
-  .hidden-md {
-    display: none !important;
-  }
-}
-@media (min-width: 1200px) {
-  .hidden-lg {
-    display: none !important;
-  }
-}
-.visible-print {
-  display: none !important;
-}
-@media print {
-  .visible-print {
-    display: block !important;
-  }
-  table.visible-print {
-    display: table;
-  }
-  tr.visible-print {
-    display: table-row !important;
-  }
-  th.visible-print,
-  td.visible-print {
-    display: table-cell !important;
-  }
-}
-.visible-print-block {
-  display: none !important;
-}
-@media print {
-  .visible-print-block {
-    display: block !important;
-  }
-}
-.visible-print-inline {
-  display: none !important;
-}
-@media print {
-  .visible-print-inline {
-    display: inline !important;
-  }
-}
-.visible-print-inline-block {
-  display: none !important;
-}
-@media print {
-  .visible-print-inline-block {
-    display: inline-block !important;
-  }
-}
-@media print {
-  .hidden-print {
-    display: none !important;
-  }
-}
-/*# sourceMappingURL=bootstrap.css.map */
diff --git a/site/src/site/assets/css/docstyle.css b/site/src/site/assets/css/docstyle.css
deleted file mode 100644
index b21b97f..0000000
--- a/site/src/site/assets/css/docstyle.css
+++ /dev/null
@@ -1,65 +0,0 @@
-.hdlist>table,.colist>table{
-    border:0;
-    background:none
-}
-
-.hdlist>table>tbody>tr,.colist>table>tbody>tr{
-    background:none
-}
-
-td.hdlist1{
-    padding-right:.8em;
-    font-weight:bold
-}
-
-td.hdlist1,td.hdlist2{
-    vertical-align:top
-}
-
-.literalblock+.colist,.listingblock+.colist{
-    margin-top:-.5em
-}
-
-.colist>table tr>td:first-of-type{
-    padding:0 .8em;
-    line-height:1
-}
-
-.colist>table tr>td:last-of-type{
-    padding:.25em 0
-}
-
-.conum{
-    display:inline-block;
-    color:#fff!important;
-    background-color:#222;
-    -webkit-border-radius:100px;
-    border-radius:100px;
-    text-align:center;
-    width:20px;
-    height:20px;
-    font-size:12px;
-    font-weight:bold;
-    line-height:20px;
-    font-family:Arial,sans-serif;
-    font-style:normal;
-    position:relative;
-    top:-2px;
-    letter-spacing:-1px
-}
-
-.conum *{
-    color:#fff!important
-}
-
-.conum+b{
-    display:none
-}
-
-.conum:after{
-    content:attr(data-value)
-}
-
-.conum:not([data-value]):empty {
-    display:none
-}
diff --git a/site/src/site/assets/css/documentation.css b/site/src/site/assets/css/documentation.css
deleted file mode 100644
index c42f982..0000000
--- a/site/src/site/assets/css/documentation.css
+++ /dev/null
@@ -1 +0,0 @@
-/*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@-ms-viewport{width:device-width}@media screen and (max-width:400px){@-ms-viewport{width:320px}}.hidden{display:none!important;visibility:hidden!important}.visible-xs{display:none!important}tr.visible-xs{display:none!important}th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm{display:none!important}tr.visible-sm{display:none!important}th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md{display:none!important}tr.visible-md{display:none!important}th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg{display:none!important}tr.visible-lg{display:none!important}th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs{display:none!important}tr.hidden-xs{display:none!important}th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm{display:none!important}tr.hidden-xs.hidden-sm{display:none!important}th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md{display:none!important}tr.hidden-xs.hidden-md{display:none!important}th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg{display:none!important}tr.hidden-xs.hidden-lg{display:none!important}th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs{display:none!important}tr.hidden-sm.hidden-xs{display:none!important}th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}tr.hidden-sm{display:none!important}th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md{display:none!important}tr.hidden-sm.hidden-md{display:none!important}th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg{display:none!important}tr.hidden-sm.hidden-lg{display:none!important}th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs{display:none!important}tr.hidden-md.hidden-xs{display:none!important}th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm{display:none!important}tr.hidden-md.hidden-sm{display:none!important}th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}tr.hidden-md{display:none!important}th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg{display:none!important}tr.hidden-md.hidden-lg{display:none!important}th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs{display:none!important}tr.hidden-lg.hidden-xs{display:none!important}th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm{display:none!important}tr.hidden-lg.hidden-sm{display:none!important}th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md{display:none!important}tr.hidden-lg.hidden-md{display:none!important}th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}tr.hidden-lg{display:none!important}th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print{display:none!important}tr.visible-print{display:none!important}th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print{display:none!important}tr.hidden-print{display:none!important}th.hidden-print,td.hidden-print{display:none!important}}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}.row-fluid{margin-left:-15px;margin-right:-15px}.row-fluid:before,.row-fluid:after{content:" ";display:table}.row-fluid:after{clear:both}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11{float:left}.col-xs-1{width:8.333333333333332%}.col-xs-2{width:16.666666666666664%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333333333%}.col-xs-5{width:41.66666666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333333333336%}.col-xs-8{width:66.66666666666666%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333333334%}.col-xs-11{width:91.66666666666666%}.col-xs-12{width:100%}@media(min-width:768px){.container{max-width:750px}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11{float:left}.col-sm-1{width:8.333333333333332%}.col-sm-2{width:16.666666666666664%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333333333%}.col-sm-5{width:41.66666666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333333333336%}.col-sm-8{width:66.66666666666666%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333333334%}.col-sm-11{width:91.66666666666666%}.col-sm-12{width:100%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-11{left:91.66666666666666%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-11{margin-left:91.66666666666666%}}@media(min-width:992px){.container{max-width:970px}.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11{float:left}.col-md-1{width:8.333333333333332%}.col-md-2{width:16.666666666666664%}.col-md-3{width:25%}.col-md-4{width:33.33333333333333%}.col-md-5{width:41.66666666666667%}.col-md-6{width:50%}.col-md-7{width:58.333333333333336%}.col-md-8{width:66.66666666666666%}.col-md-9{width:75%}.col-md-10{width:83.33333333333334%}.col-md-11{width:91.66666666666666%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333333333332%}.col-md-push-2{left:16.666666666666664%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333333333%}.col-md-push-5{left:41.66666666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333333333336%}.col-md-push-8{left:66.66666666666666%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333333334%}.col-md-push-11{left:91.66666666666666%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-11{right:91.66666666666666%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-11{margin-left:91.66666666666666%}}@media(min-width:1200px){.container{max-width:1170px}.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11{float:left}.col-lg-1{width:8.333333333333332%}.col-lg-2{width:16.666666666666664%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333333333%}.col-lg-5{width:41.66666666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333333333336%}.col-lg-8{width:66.66666666666666%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333333334%}.col-lg-11{width:91.66666666666666%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-11{left:91.66666666666666%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-11{margin-left:91.66666666666666%}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:0;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-default .caret{border-top-color:#333}.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px;padding:1px 5px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{background:#f2f2f2}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified .btn{float:none;display:table-cell;width:1%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;border-bottom:0 dotted;content:""}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:0;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{font-size:14px;text-decoration:none;display:block;padding:5px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#fff;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}body,html{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;margin:0;background:#ededed;color:#343437;line-height:2em;font-weight:100;font-size:.95em}h1{font-size:2.5em;margin:.8em 0}body.center{padding:0 30px;background:#FFF;font-size:1em}ul li{list-style-type:disc}a{color:#4290ad;text-decoration:none;font-weight:normal}a:hover{text-decoration:underline}h1,h2,h3{font-weight:300;line-height:1.2em}.topNav,.bottomNav{background:#f2f2f2;margin:0 -30px;margin-bottom:20px}.topNav:before,.bottomNav:before,.topNav:after,.bottomNav:after{content:" ";display:table}.topNav:after,.bottomNav:after{clear:both}.topNav ul.navList,.bottomNav ul.navList{padding:10px 20px;margin:0;list-style-type:none}.topNav ul.navList li,.bottomNav ul.navList li{display:inline;padding:0 10px}.topNav ul.navList li.navBarCell1Rev,.bottomNav ul.navList li.navBarCell1Rev{font-weight:bold}.bottomNav{margin-top:30px;margin-bottom:0}.aboutLanguage{color:#BBB;background:white;text-align:center;padding:20px 0}.subNav{padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid #EEE}.subNav:before,.subNav:after{content:" ";display:table}.subNav:after{clear:both}.subNav div:before,.subNav div:after{content:" ";display:table}.subNav div:after{clear:both}.subNav ul.navList,.subNav ul{font-size:.9em;margin:0;padding:00;float:left;list-style-type:none}.subNav ul.navList li,.subNav ul li{padding:0 5px;display:inline}table.overviewSummary,.contentContainer ul li table{width:100%;margin:20px 0}table.overviewSummary caption,.contentContainer ul li table caption{text-align:left;font-weight:100;font-size:1em;float:left;padding:0 10px;margin-top:10px;background:#db4800;color:white}table.overviewSummary tr th,.contentContainer ul li table tr th{padding:10px;font-weight:bold;font-size:1em;text-align:left}table.overviewSummary tr td,.contentContainer ul li table tr td{vertical-align:top;font-size:.9em;padding:5px 10px;border-top:1px solid #EEE}table.overviewSummary tbody>tr:nth-child(odd)>td,.contentContainer ul li table tbody>tr:nth-child(odd)>td{background-color:#f9f9f9}body.left{padding-top:10px}body.left h1,body.left h2{display:inline;text-align:left;font-weight:100;font-size:1em;margin:0 10px;padding:3px 10px;margin-top:10px;background:#db4800;color:white;line-height:40px}body.left .indexHeader{margin:0;padding:0 15px;font-size:.9em}body.left ul{list-style-type:none;margin:0;padding:0}body.left ul li{margin:0;padding:0}body.left ul li a{display:block;padding:0 15px;text-decoration:none}body.left ul li a:hover{text-decoration:underline}.contentContainer .header ul,.contentContainer ul.blockList{padding:0}.contentContainer .header ul>li,.contentContainer ul.blockList>li{list-style-type:none}.contentContainer ul.inheritance{margin-left:0;padding-left:0}.contentContainer ul.inheritance li{list-style-type:none}.contentContainer ul.inheritance ul.inheritance{padding-left:20px}.contentContainer hr{border:0 none;border-top:1px solid #EEE;margin-top:30px;margin-botom:0}ul.blockList ul.blockList,ul.blockList ul.blockListLast{border:1px solid #EEE;margin:20px 0;padding:0 20px}ul.blockList ul.blockList h4,ul.blockList ul.blockListLast h4,ul.blockList ul.blockList h3,ul.blockList ul.blockListLast h3{font-size:1em;font-weight:bold;line-height:2em;text-indent:10px;border-bottom:1px solid #EEE;margin:0 -20px;padding:5px 0;background:#f2f2f2}ul.blockList ul.blockList li,ul.blockList ul.blockListLast li{list-style-type:none}ul.horizontal{list-style-type:none;padding:0;margin:0;font-size:.9em}ul.horizontal li{display:inline}span.strong{font-weight:bold}a span.strong{font-weight:normal}
\ No newline at end of file
diff --git a/site/src/site/assets/css/font-awesome.min.css b/site/src/site/assets/css/font-awesome.min.css
deleted file mode 100644
index 2ed777e..0000000
--- a/site/src/site/assets/css/font-awesome.min.css
+++ /dev/null
@@ -1,4 +0,0 @@
-/*!
- *  Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome
- *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.1.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff') format('woff'),url('../fonts/fontawesome-webfont.ttf') format('truetype'),url('../fonts/fontawesome-webfont.svg#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-square:before,.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}
\ No newline at end of file
diff --git a/site/src/site/assets/css/main.css b/site/src/site/assets/css/main.css
deleted file mode 100644
index 294e019..0000000
--- a/site/src/site/assets/css/main.css
+++ /dev/null
@@ -1,304 +0,0 @@
-/*! HTML5 Boilerplate v4.3.0 | MIT License | http://h5bp.com/ */
-
-/*
- * What follows is the result of much research on cross-browser styling.
- * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
- * Kroc Camen, and the H5BP dev community and team.
- */
-
-/* ==========================================================================
-   Base styles: opinionated defaults
-   ========================================================================== */
-
-html,
-button,
-input,
-select,
-textarea {
-    color: #222;
-}
-
-html {
-    font-size: 1em;
-    line-height: 1.4;
-}
-
-/*
- * Remove text-shadow in selection highlight: h5bp.com/i
- * These selection rule sets have to be separate.
- * Customize the background color to match your design.
- */
-
-::-moz-selection {
-    background: #b3d4fc;
-    text-shadow: none;
-}
-
-::selection {
-    background: #b3d4fc;
-    text-shadow: none;
-}
-
-/*
- * A better looking default horizontal rule
- */
-
-hr {
-    display: block;
-    height: 1px;
-    border: 0;
-    border-top: 1px solid #ccc;
-    margin: 1em 0;
-    padding: 0;
-}
-
-/*
- * Remove the gap between images, videos, audio and canvas and the bottom of
- * their containers: h5bp.com/i/440
- */
-
-audio,
-canvas,
-img,
-video {
-    vertical-align: middle;
-}
-
-/*
- * Remove default fieldset styles.
- */
-
-fieldset {
-    border: 0;
-    margin: 0;
-    padding: 0;
-}
-
-/*
- * Allow only vertical resizing of textareas.
- */
-
-textarea {
-    resize: vertical;
-}
-
-/* ==========================================================================
-   Browse Happy prompt
-   ========================================================================== */
-
-.browsehappy {
-    margin: 0.2em 0;
-    background: #ccc;
-    color: #000;
-    padding: 0.2em 0;
-}
-
-/* ==========================================================================
-   Author's custom styles
-   ========================================================================== */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* ==========================================================================
-   Helper classes
-   ========================================================================== */
-
-/*
- * Image replacement
- */
-
-.ir {
-    background-color: transparent;
-    border: 0;
-    overflow: hidden;
-    /* IE 6/7 fallback */
-    *text-indent: -9999px;
-}
-
-.ir:before {
-    content: "";
-    display: block;
-    width: 0;
-    height: 150%;
-}
-
-/*
- * Hide from both screenreaders and browsers: h5bp.com/u
- */
-
-.hidden {
-    display: none !important;
-    visibility: hidden;
-}
-
-/*
- * Hide only visually, but have it available for screenreaders: h5bp.com/v
- */
-
-.visuallyhidden {
-    border: 0;
-    clip: rect(0 0 0 0);
-    height: 1px;
-    margin: -1px;
-    overflow: hidden;
-    padding: 0;
-    position: absolute;
-    width: 1px;
-}
-
-/*
- * Extends the .visuallyhidden class to allow the element to be focusable
- * when navigated to via the keyboard: h5bp.com/p
- */
-
-.visuallyhidden.focusable:active,
-.visuallyhidden.focusable:focus {
-    clip: auto;
-    height: auto;
-    margin: 0;
-    overflow: visible;
-    position: static;
-    width: auto;
-}
-
-/*
- * Hide visually and from screenreaders, but maintain layout
- */
-
-.invisible {
-    visibility: hidden;
-}
-
-/*
- * Clearfix: contain floats
- *
- * For modern browsers
- * 1. The space content is one way to avoid an Opera bug when the
- *    `contenteditable` attribute is included anywhere else in the document.
- *    Otherwise it causes space to appear at the top and bottom of elements
- *    that receive the `clearfix` class.
- * 2. The use of `table` rather than `block` is only necessary if using
- *    `:before` to contain the top-margins of child elements.
- */
-
-.clearfix:before,
-.clearfix:after {
-    content: " "; /* 1 */
-    display: table; /* 2 */
-}
-
-.clearfix:after {
-    clear: both;
-}
-
-/*
- * For IE 6/7 only
- * Include this rule to trigger hasLayout and contain floats.
- */
-
-.clearfix {
-    *zoom: 1;
-}
-
-/* ==========================================================================
-   EXAMPLE Media Queries for Responsive Design.
-   These examples override the primary ('mobile first') styles.
-   Modify as content requires.
-   ========================================================================== */
-
-@media only screen and (min-width: 35em) {
-    /* Style adjustments for viewports that meet the condition */
-}
-
-@media print,
-       (-o-min-device-pixel-ratio: 5/4),
-       (-webkit-min-device-pixel-ratio: 1.25),
-       (min-resolution: 120dpi) {
-    /* Style adjustments for high resolution devices */
-}
-
-/* ==========================================================================
-   Print styles.
-   Inlined to avoid required HTTP connection: h5bp.com/r
-   ========================================================================== */
-
-@media print {
-    * {
-        background: transparent !important;
-        color: #000 !important; /* Black prints faster: h5bp.com/s */
-        box-shadow: none !important;
-        text-shadow: none !important;
-    }
-
-    a,
-    a:visited {
-        text-decoration: underline;
-    }
-
-    a[href]:after {
-        content: " (" attr(href) ")";
-    }
-
-    abbr[title]:after {
-        content: " (" attr(title) ")";
-    }
-
-    /*
-     * Don't show links for images, or javascript/internal links
-     */
-
-    .ir a:after,
-    a[href^="javascript:"]:after,
-    a[href^="#"]:after {
-        content: "";
-    }
-
-    pre,
-    blockquote {
-        border: 1px solid #999;
-        page-break-inside: avoid;
-    }
-
-    thead {
-        display: table-header-group; /* h5bp.com/t */
-    }
-
-    tr,
-    img {
-        page-break-inside: avoid;
-    }
-
-    img {
-        max-width: 100% !important;
-    }
-
-    @page {
-        margin: 0.5cm;
-    }
-
-    p,
-    h2,
-    h3 {
-        orphans: 3;
-        widows: 3;
-    }
-
-    h2,
-    h3 {
-        page-break-after: avoid;
-    }
-}
diff --git a/site/src/site/assets/css/normalize.css b/site/src/site/assets/css/normalize.css
deleted file mode 100644
index 42e24d6..0000000
--- a/site/src/site/assets/css/normalize.css
+++ /dev/null
@@ -1,527 +0,0 @@
-/*! normalize.css v1.1.3 | MIT License | git.io/normalize */
-
-/* ==========================================================================
-   HTML5 display definitions
-   ========================================================================== */
-
-/**
- * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-nav,
-section,
-summary {
-    display: block;
-}
-
-/**
- * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
- */
-
-audio,
-canvas,
-video {
-    display: inline-block;
-    *display: inline;
-    *zoom: 1;
-}
-
-/**
- * Prevent modern browsers from displaying `audio` without controls.
- * Remove excess height in iOS 5 devices.
- */
-
-audio:not([controls]) {
-    display: none;
-    height: 0;
-}
-
-/**
- * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
- * Known issue: no IE 6 support.
- */
-
-[hidden] {
-    display: none;
-}
-
-/* ==========================================================================
-   Base
-   ========================================================================== */
-
-/**
- * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
- *    `em` units.
- * 2. Prevent iOS text size adjust after orientation change, without disabling
- *    user zoom.
- */
-
-html {
-    font-size: 100%; /* 1 */
-    -ms-text-size-adjust: 100%; /* 2 */
-    -webkit-text-size-adjust: 100%; /* 2 */
-}
-
-/**
- * Address `font-family` inconsistency between `textarea` and other form
- * elements.
- */
-
-html,
-button,
-input,
-select,
-textarea {
-    font-family: sans-serif;
-}
-
-/**
- * Address margins handled incorrectly in IE 6/7.
- */
-
-body {
-    margin: 0;
-}
-
-/* ==========================================================================
-   Links
-   ========================================================================== */
-
-/**
- * Address `outline` inconsistency between Chrome and other browsers.
- */
-
-a:focus {
-    outline: thin dotted;
-}
-
-/**
- * Improve readability when focused and also mouse hovered in all browsers.
- */
-
-a:active,
-a:hover {
-    outline: 0;
-}
-
-/* ==========================================================================
-   Typography
-   ========================================================================== */
-
-/**
- * Address font sizes and margins set differently in IE 6/7.
- * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
- * and Chrome.
- */
-
-h1 {
-    font-size: 2em;
-    margin: 0.67em 0;
-}
-
-h2 {
-    font-size: 1.5em;
-    margin: 0.83em 0;
-}
-
-h3 {
-    font-size: 1.17em;
-    margin: 1em 0;
-}
-
-h4 {
-    font-size: 1em;
-    margin: 1.33em 0;
-}
-
-h5 {
-    font-size: 0.83em;
-    margin: 1.67em 0;
-}
-
-h6 {
-    font-size: 0.67em;
-    margin: 2.33em 0;
-}
-
-/**
- * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
- */
-
-abbr[title] {
-    border-bottom: 1px dotted;
-}
-
-/**
- * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
- */
-
-b,
-strong {
-    font-weight: bold;
-}
-
-blockquote {
-    margin: 1em 40px;
-}
-
-/**
- * Address styling not present in Safari 5 and Chrome.
- */
-
-dfn {
-    font-style: italic;
-}
-
-/**
- * Address differences between Firefox and other browsers.
- * Known issue: no IE 6/7 normalization.
- */
-
-hr {
-    -moz-box-sizing: content-box;
-    box-sizing: content-box;
-    height: 0;
-}
-
-/**
- * Address styling not present in IE 6/7/8/9.
- */
-
-mark {
-    background: #ff0;
-    color: #000;
-}
-
-/**
- * Address margins set differently in IE 6/7.
- */
-
-p,
-pre {
-    margin: 1em 0;
-}
-
-/**
- * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
- */
-
-code,
-kbd,
-pre,
-samp {
-    font-family: monospace, serif;
-    _font-family: 'courier new', monospace;
-    font-size: 1em;
-}
-
-/**
- * Improve readability of pre-formatted text in all browsers.
- */
-
-pre {
-    white-space: pre;
-    white-space: pre-wrap;
-    word-wrap: break-word;
-}
-
-/**
- * Address CSS quotes not supported in IE 6/7.
- */
-
-q {
-    quotes: none;
-}
-
-/**
- * Address `quotes` property not supported in Safari 4.
- */
-
-q:before,
-q:after {
-    content: '';
-    content: none;
-}
-
-/**
- * Address inconsistent and variable font size in all browsers.
- */
-
-small {
-    font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` affecting `line-height` in all browsers.
- */
-
-sub,
-sup {
-    font-size: 75%;
-    line-height: 0;
-    position: relative;
-    vertical-align: baseline;
-}
-
-sup {
-    top: -0.5em;
-}
-
-sub {
-    bottom: -0.25em;
-}
-
-/* ==========================================================================
-   Lists
-   ========================================================================== */
-
-/**
- * Address margins set differently in IE 6/7.
- */
-
-dl,
-menu,
-ol,
-ul {
-    margin: 1em 0;
-}
-
-dd {
-    margin: 0 0 0 40px;
-}
-
-/**
- * Address paddings set differently in IE 6/7.
- */
-
-menu,
-ol,
-ul {
-    padding: 0 0 0 40px;
-}
-
-/**
- * Correct list images handled incorrectly in IE 7.
- */
-
-nav ul,
-nav ol {
-    list-style: none;
-    list-style-image: none;
-}
-
-/* ==========================================================================
-   Embedded content
-   ========================================================================== */
-
-/**
- * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
- * 2. Improve image quality when scaled in IE 7.
- */
-
-img {
-    border: 0; /* 1 */
-    -ms-interpolation-mode: bicubic; /* 2 */
-}
-
-/**
- * Correct overflow displayed oddly in IE 9.
- */
-
-svg:not(:root) {
-    overflow: hidden;
-}
-
-/* ==========================================================================
-   Figures
-   ========================================================================== */
-
-/**
- * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
- */
-
-figure {
-    margin: 0;
-}
-
-/* ==========================================================================
-   Forms
-   ========================================================================== */
-
-/**
- * Correct margin displayed oddly in IE 6/7.
- */
-
-form {
-    margin: 0;
-}
-
-/**
- * Define consistent border, margin, and padding.
- */
-
-fieldset {
-    border: 1px solid #c0c0c0;
-    margin: 0 2px;
-    padding: 0.35em 0.625em 0.75em;
-}
-
-/**
- * 1. Correct color not being inherited in IE 6/7/8/9.
- * 2. Correct text not wrapping in Firefox 3.
- * 3. Correct alignment displayed oddly in IE 6/7.
- */
-
-legend {
-    border: 0; /* 1 */
-    padding: 0;
-    white-space: normal; /* 2 */
-    *margin-left: -7px; /* 3 */
-}
-
-/**
- * 1. Correct font size not being inherited in all browsers.
- * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
- *    and Chrome.
- * 3. Improve appearance and consistency in all browsers.
- */
-
-button,
-input,
-select,
-textarea {
-    font-size: 100%; /* 1 */
-    margin: 0; /* 2 */
-    vertical-align: baseline; /* 3 */
-    *vertical-align: middle; /* 3 */
-}
-
-/**
- * Address Firefox 3+ setting `line-height` on `input` using `!important` in
- * the UA stylesheet.
- */
-
-button,
-input {
-    line-height: normal;
-}
-
-/**
- * Address inconsistent `text-transform` inheritance for `button` and `select`.
- * All other form control elements do not inherit `text-transform` values.
- * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
- * Correct `select` style inheritance in Firefox 4+ and Opera.
- */
-
-button,
-select {
-    text-transform: none;
-}
-
-/**
- * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
- *    and `video` controls.
- * 2. Correct inability to style clickable `input` types in iOS.
- * 3. Improve usability and consistency of cursor style between image-type
- *    `input` and others.
- * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
- *    Known issue: inner spacing remains in IE 6.
- */
-
-button,
-html input[type="button"], /* 1 */
-input[type="reset"],
-input[type="submit"] {
-    -webkit-appearance: button; /* 2 */
-    cursor: pointer; /* 3 */
-    *overflow: visible;  /* 4 */
-}
-
-/**
- * Re-set default cursor for disabled elements.
- */
-
-button[disabled],
-html input[disabled] {
-    cursor: default;
-}
-
-/**
- * 1. Address box sizing set to content-box in IE 8/9.
- * 2. Remove excess padding in IE 8/9.
- * 3. Remove excess padding in IE 7.
- *    Known issue: excess padding remains in IE 6.
- */
-
-input[type="checkbox"],
-input[type="radio"] {
-    box-sizing: border-box; /* 1 */
-    padding: 0; /* 2 */
-    *height: 13px; /* 3 */
-    *width: 13px; /* 3 */
-}
-
-/**
- * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
- * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
- *    (include `-moz` to future-proof).
- */
-
-input[type="search"] {
-    -webkit-appearance: textfield; /* 1 */
-    -moz-box-sizing: content-box;
-    -webkit-box-sizing: content-box; /* 2 */
-    box-sizing: content-box;
-}
-
-/**
- * Remove inner padding and search cancel button in Safari 5 and Chrome
- * on OS X.
- */
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-    -webkit-appearance: none;
-}
-
-/**
- * Remove inner padding and border in Firefox 3+.
- */
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-    border: 0;
-    padding: 0;
-}
-
-/**
- * 1. Remove default vertical scrollbar in IE 6/7/8/9.
- * 2. Improve readability and alignment in all browsers.
- */
-
-textarea {
-    overflow: auto; /* 1 */
-    vertical-align: top; /* 2 */
-}
-
-/* ==========================================================================
-   Tables
-   ========================================================================== */
-
-/**
- * Remove most spacing between table cells.
- */
-
-table {
-    border-collapse: collapse;
-    border-spacing: 0;
-}
diff --git a/site/src/site/assets/css/style.css b/site/src/site/assets/css/style.css
deleted file mode 100644
index dd3f93e..0000000
--- a/site/src/site/assets/css/style.css
+++ /dev/null
@@ -1,1081 +0,0 @@
-@import url(http://fonts.googleapis.com/css?family=Source+Code+Pro:500,700|Open+Sans:400,600);
-
-html, code, kbd, pre, samp {
-    -ms-text-size-adjust: 100%;
-    -webkit-text-size-adjust: 100%;
-}
-
-html, body {
-    height: 100%;
-    -webkit-overflow-scrolling: touch;
-}
-
-p, ul, pre, h1, h2, h3, h4, h5, h6, h7, h8 {
-    margin: 1em 0;
-}
-
-p {
-    display: block;
-}
-
-h1, h2, h3, h4, h5, h6, h7, h8 {
-    font-weight: bold;
-}
-
-pre {
-    border-radius: 0;
-    border: 0 !important;;
-    font-size: 14px;
-}
-
-/* customizing bootstrap nav bar */
-.navbar {
-    margin-bottom: 0px;
-    padding-right: 110px;
-}
-.navbar .container {
-    margin: 10px;
-}
-.navbar-default a {
-    color: #c0d3db !important;
-    font-size: 18px !important;
-    text-decoration: none;
-}
-.navbar-default, .navbar-static-top {
-    background-color: #286b86;
-    border: 0px;
-}
-a.navbar-brand {
-    color: white !important;
-    font-size: 19px !important;
-}
-.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:hover, .navbar-default .navbar-nav>.active>a:focus {
-    background-color: transparent;
-    color: white;
-}
-.navbar-nav>li.active>a {
-    color: white !important;
-}
-.navbar-nav>li>a:hover {
-    background-color: #db4800 !important;
-    color: white !important;
-}
-.navbar-nav>li>a {
-    color: #c0d3db;
-}
-.navbar-default .navbar-toggle .icon-bar {
-    background-color: white;
-}
-.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
-    background-color: #db4800;
-}
-
-@media (min-width: 768px) {
-    .container {
-        width: auto;
-    }
-}
-
-/* specific to index.html */
-
-@media (max-width: 999px) {
-    #fork-me {
-        display: none;
-    }
-
-    .navbar {
-        padding-right: 0px;
-    }
-}
-
-#band {
-    background: #4298b8 no-repeat 50% 30%;
-    height: 400px;
-}
-
-.svg #band {
-    background-image: url(../img/groovy-logo-white.svg);
-}
-
-.no-svg #band {
-    background-image: url(../img/groovy-logo-white.png);
-}
-
-@media (max-width: 1010px) {
-    #band {
-        background-size: 90%;
-        height: 300px;
-    }
-}
-
-@media (max-width: 690px) {
-    #band {
-        background-size: 80%;
-        height: 200px;
-    }
-}
-
-@media (max-width: 475px) {
-    #band {
-        background-size: 70%;
-        height: 100px;
-    }
-}
-
-#they-use-groovy {
-    width: 100%;
-    background-color: #db4800;
-    margin-bottom: 20px;
-    text-align: center;
-}
-
-#they-use-groovy .item {
-    text-align: center;
-    color: white;
-}
-
-#logos-holder {
-    display: inline-block;
-    padding: 0px;
-    margin: 0px;
-    text-align: center;
-}
-
-#logos-holder .logo {
-    padding: 0px;
-    margin: 0px;
-    display: inline-block;
-    width: 105px;
-    height: 87px;
-    background-size: 95%;
-    background-repeat: no-repeat;
-    background-position: 50% 50%;
-}
-
-@media (min-width: 330px) {
-    #logos-holder {
-        width: 320px;
-    }
-}
-
-@media (min-width: 475px) {
-    #logos-holder {
-        width: 420px;
-    }
-}
-
-@media (min-width: 690px) {
-    #logos-holder {
-        width: 630px;
-    }
-}
-
-@media (min-width: 1010px) {
-    #logos-holder {
-        width: 940px;
-    }
-}
-
-.centered {
-    text-align: center;
-}
-
-.event-img {
-    margin: -20px -20px 20px -20px;
-    background-repeat: no-repeat;
-    background-position: 50% top;
-    height: 180px;
-}
-
-.event-logo {
-    height: 180px;
-    float: right;
-}
-
-@media (max-width: 1010px) {
-    .event-logo {
-        height: ;
-    }
-
-}
-
-@media (max-width: 690px) {
-    .event-logo {
-        height: 60px;
-    }}
-
-@media (max-width: 475px) {
-    .event-logo {
-        display: none;
-    }
-}
-
-article .content time {
-    font-weight: bold;
-}
-
-.doc-embed {
-    border: 0;
-    width: 100%;
-    min-height: 100%;
-}
-
-.download-table {
-    width: 100%;
-    text-align: center;
-}
-
-.download-table td {
-    width: 20%;
-}
-
-#mc-embedded-subscribe {
-    width: 200px;
-    font-weight: bold;
-}
-
-#mc-embedded-subscribe:hover {
-    background-color: #F2F2F2;
-    font-weight: bold;
-}
-
-#footer .colset-3-footer .col-1 h1, #footer .colset-3-footer .col-2 h1, #footer .colset-3-footer .col-3 h1 {
-    font-size: 15px !important;
-}
-
-.anchor-link:before {
-    content: ' # ';
-    color: lightgray;
-}
-
-.anchor-link:hover:before {
-    color: orange;
-}
-
-code, kbd, pre, samp {
-    font-family: "Source Code Pro", "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace;
-}
-
-#contribute-btn {
-    position: absolute;
-    right: 15px;
-}
-
-@media (max-width: 767px) {
-    #contribute-btn {
-        width: 100%;
-        position: relative;
-        margin-top: 30px;
-        right: 0px;
-    }
-
-    #contribute-btn button {
-        width: 100%;
-        right: 15px;
-    }
-}
-
-@media (min-width: 1200px) {
-    #contribute-btn {
-        top: 25px;
-        right: 15px;
-    }
-}
-
-#big-download-button {
-    float: right;
-    font-size: 20px;
-    padding: 10px;
-    margin: 6px 0px 6px 12px;
-    border: 2px solid #db4800;
-    border-radius: 6px;
-    background-color: #db4800;
-    color: white;
-}
-
-#big-download-button:hover {
-    background-color: #e6e6e6;
-    color: #db4800;
-}
-
-.colset-3-footer .col-1, .colset-3-footer .col-2, .colset-3-footer .col-3 {
-    min-width: 180px;
-    float: left;
-}
-
-.colset-3-footer .col-3 {
-    min-width: 220px;
-}
-
-.colset-3-article article {
-    float: left;
-}
-
-.col1, .col2 {
-    min-width: 300px;
-    float: left;
-}
-
-@media (max-width: 988px) {
-    .col1, .col2 {
-        width: 98% !important;
-        max-width: 98%;
-    }
-
-    .colset-3-article article {
-        width: 98% !important;
-        max-width: 98%;
-    }
-}
-
-body, html {
-    font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
-    padding: 0;
-    margin: 0;
-    background: #FFF;
-    color: #343437;
-    line-height: 25px;
-    font-weight: normal;
-    font-size: 14px;
-}
-
-a {
-    color: #db4800;
-    text-decoration: underline;
-}
-
-a:hover {
-    color: #db4800;
-    text-decoration: none
-}
-
-h1 {
-    font-size: 2.125em;
-    margin: .67em 0
-}
-
-h2 {
-    font-size: 1.6875em;
-    font-weight: bold;
-}
-
-h3, #toctitle, .sidebarblock > .content > .title {
-    font-size: 1.375em;
-    font-weight: bold;
-}
-
-h4 {
-    font-size: 1.125em;
-    font-weight: bold;
-}
-
-h5 {
-    font-size: 1.125em;
-    font-weight: bold;
-    color: #db4800;
-}
-
-h6 {
-    font-size: 1.08em;
-    font-weight: normal;
-    color: #db4800;
-}
-
-h7 {
-    font-weight: bold;
-    color: #245f78;
-}
-
-h8 {
-    color: #245f78;
-}
-
-#footer {
-    background: #f2f2f2;
-    text-align: center;
-    font-size: 14px;
-    padding: 20px 0 30px;
-    margin-top: 30px;
-    color: #AAA
-}
-
-#footer .col-right {
-    float: right;
-    width: 300px;
-    text-align: right;
-    padding-top: 10px
-}
-
-#footer .colset-3-footer {
-    color: #222;
-    font-size: 14px
-}
-
-#footer .colset-3-footer:before, #footer .colset-3-footer:after {
-    content: " ";
-    display: table
-}
-
-#footer .colset-3-footer:after {
-    clear: both
-}
-
-#footer .colset-3-footer .col-1, #footer .colset-3-footer .col-2, #footer .colset-3-footer .col-3 {
-    width: 18%;
-    padding: 20px 0 30px;
-    padding-right: 3%;
-    float: left;
-    text-align: left
-}
-
-#footer .colset-3-footer .col-3 {
-    width: 24%;
-}
-
-#footer .colset-3-footer .col-1 h1, #footer .colset-3-footer .col-2 h1, #footer .colset-3-footer .col-3 h1 {
-    font-weight: 600;
-    font-size: 15px;
-    line-height: 30px;
-    margin: 0
-}
-
-#footer .colset-3-footer .col-1 ul, #footer .colset-3-footer .col-2 ul, #footer .colset-3-footer .col-3 ul {
-    list-style-type: none;
-    margin: 0;
-    padding: 0
-}
-
-#footer .colset-3-footer .col-1 ul li, #footer .colset-3-footer .col-2 ul li, #footer .colset-3-footer .col-3 ul li {
-    margin: 0;
-    padding: 0
-}
-
-#footer .colset-3-footer .col-1 ul li a, #footer .colset-3-footer .col-2 ul li a, #footer .colset-3-footer .col-3 ul li a {
-    color: #343437;
-    text-decoration: none
-}
-
-#footer .colset-3-footer .col-1 ul li a:hover, #footer .colset-3-footer .col-2 ul li a:hover, #footer .colset-3-footer .col-3 ul li a:hover {
-    text-decoration: underline
-}
-
-#footer .second a {
-    color: #db4800
-}
-
-.row {
-    position: relative;
-    max-width: 1400px;
-    margin: 0 auto;
-    padding: 0 5%
-}
-
-.row:before, .row:after {
-    content: " ";
-    display: table
-}
-
-.row:after {
-    clear: both
-}
-
-.band {
-    background: #4298b8;
-    height: 400px;
-    margin-bottom: 20px;
-    color: white
-}
-
-.band .item {
-    text-align: center
-}
-
-.band .item:before, .band .item:after {
-    content: " ";
-    display: table
-}
-
-.band .item:after {
-    clear: both
-}
-
-#content {
-    background: white
-}
-
-#content .row:before, #content .row:after {
-    content: " ";
-    display: table
-}
-
-#content .row:after {
-    clear: both
-}
-
-#content .row > h1 {
-    font-size: 34px;
-    line-height: 40px;
-    font-weight: 200;
-    text-align: center;
-    margin: 0;
-    padding: 20px 0
-}
-
-#content hr.row, #content hr.divider {
-    border: 0 none;
-    border-top: 1px solid #EEE;
-    margin: 0 5%;
-    margin-top: 40px
-}
-
-#content hr.divider {
-    margin: 0;
-    margin-top: 40px;
-    margin-bottom: 30px
-}
-
-#content .colset-2-its:before, #content .colset-2-its:after {
-    content: " ";
-    display: table
-}
-
-#content .colset-2-its:after {
-    clear: both
-}
-
-#content .colset-2-its > h1 {
-    padding-bottom: 15px;
-    margin-top: 15px;
-    margin-bottom: 0
-}
-
-#content .colset-2-its > p {
-    margin-top: 0;
-    padding-bottom: 5px;
-    text-align: center;
-    color: #222;
-    font-size: 15px
-}
-
-#content .colset-2-its .col1, #content .colset-2-its .col2 {
-    float: left;
-    width: 48%;
-    padding-right: 1%;
-    padding-left: 1%;
-}
-
-#content .colset-2-its .col2 {
-    padding-left: 1%;
-    padding-right: 1%;
-}
-
-#content .colset-2-its article {
-    padding: 10px 0
-}
-
-#content .colset-2-its article:before, #content .colset-2-its article:after {
-    content: " ";
-    display: table
-}
-
-#content .colset-2-its article:after {
-    clear: both
-}
-
-#content .colset-2-its article .icon {
-    display: block;
-    width: 80px;
-    height: 80px;
-    background-image: url(/img/icons-colset-2-its.png);
-    float: left;
-    margin-top: 12px;
-    margin-right: 15px
-}
-
-#content .colset-2-its article .icon.icon-1 {
-    background-position: 0 0
-}
-
-#content .colset-2-its article .icon.icon-2 {
-    background-position: 0 -80px
-}
-
-#content .colset-2-its article .icon.icon-3 {
-    background-position: 0 -160px
-}
-
-#content .colset-2-its article .icon.icon-4 {
-    background-position: 0 -240px
-}
-
-#content .colset-2-its article .icon.icon-5 {
-    background-position: 0 -320px
-}
-
-#content .colset-2-its article .icon.icon-6 {
-    background-position: 0 -400px
-}
-
-#content .colset-2-its article > h1 {
-    font-size: 19px;
-    font-weight: 600;
-    margin-bottom: 0;
-    line-height: 30px
-}
-
-#content .colset-2-its article p {
-    margin: 0;
-    line-height: 24px;
-    font-size: 14px
-}
-
-#content .colset-3-article {
-    padding-top: 30px;
-    padding-bottom: 30px
-}
-
-#content .colset-3-article > h1 {
-    font-size: 24px
-}
-
-#content .colset-3-article div.content {
-    padding: 20px;
-    padding-bottom: 5px
-}
-
-#content .colset-3-article article {
-    float: left;
-    width: 29%;
-    margin: 10px 2%;
-    -webkit-box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1);
-    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1)
-}
-
-#content .colset-3-article article .img {
-    margin: -20px -20px 20px -20px;
-    background-position: center top;
-    height: 180px
-}
-
-#content .colset-3-article article h1 {
-    margin: 0;
-    font-size: 18px;
-    font-weight: normal;
-    line-height: 25px
-}
-
-#content .colset-3-article article h1 a {
-    color: #343437;
-    cursor: pointer
-}
-
-#content .colset-3-article article h1 a:hover {
-    color: #46a5c8
-}
-
-#content .colset-3-article article p, #content .colset-3-article article time {
-    font-size: 13px
-}
-
-#content .colset-3-article article .author a {
-    color: #db4800
-}
-
-#content .colset-3-article article:first-child {
-    padding-left: 0
-}
-
-#content .colset-3-article article:last-child {
-    padding-right: 0
-}
-
-#content.page-1 .row {
-    padding-top: 10px;
-    padding-bottom: 10px
-}
-
-#content.page-1 .row h1 {
-    text-align: left;
-    font-size: 36px
-}
-
-#content.page-1 .row article {
-    font-size: 14px
-}
-
-#content.page-1 .row article .desc {
-    font-size: 16px
-}
-
-#content.page-1 .row article h1 {
-    margin: 0;
-    paddnig: 0;
-    text-align: left;
-    font-size: 26px
-}
-
-#content.page-1 .row article h2 {
-    margin: 0;
-    paddnig: 0
-}
-
-#content.page-1 .row article h3 {
-    font-weight: bold
-}
-
-#content.page-1 .row article pre {
-    display: block;
-    background: #f2f2f2;
-    padding: 12px 20px
-}
-
-ul.nav-sidebar {
-    margin: 0;
-    margin-top: 20px;
-    padding: 5px 0;
-    border: 1px solid #EEE;
-    list-style-type: none
-}
-
-ul.nav-sidebar li a {
-    display: block;
-    cursor: pointer;
-    padding: 5px 10px;
-    font-weight: 400;
-    text-decoration: none;
-    color: #343437
-}
-
-ul.nav-sidebar li.active a:hover, ul.nav-sidebar li a:hover {
-    color: white;
-    background-color: #db4800;
-}
-
-ul.nav-sidebar li.active a {
-    background-color: #f2f2f2
-}
-
-.table {
-    margin: 20px 0
-}
-
-.table thead tr th {
-    padding: 10px;
-    font-weight: normal;
-    font-size: 18px
-}
-
-.table tbody tr td {
-    vertical-align: top;
-    font-size: 12px;
-    padding: 10px;
-    border-top: 1px solid #EEE
-}
-
-*, *:after, *::before {
-    -moz-box-sizing: border-box;
-    box-sizing: border-box
-}
-
-body {
-    background: #444
-}
-
-html.noScroll {
-    overflow: hidden
-}
-
-html.noScroll body, html.noScroll .st-container, html.noScroll .st-pusher, html.noScroll .st-content {
-    overflow: hidden
-}
-
-html, body, .st-container, .st-pusher, .st-content {
-    overflow: auto
-}
-
-.sign-in-fa-icon:before {
-    font-family: FontAwesome;
-    content: '\f090';
-    padding-right: 10px;
-}
-
-#st-container {
-    height: 100%;
-}
-
-.st-content {
-    background: white
-}
-
-.st-content, .st-content-inner {
-    position: relative;
-    height: 100%;
-}
-
-.st-container {
-    position: relative;
-    overflow: hidden
-}
-
-.st-pusher {
-    position: relative;
-    left: 0;
-    z-index: 99;
-    height: 100%;
-    -webkit-transition: -webkit-transform .5s;
-    transition: transform .5s
-}
-
-.st-pusher::after {
-    position: absolute;
-    top: 0;
-    right: 0;
-    width: 0;
-    height: 0;
-    background: rgba(0, 0, 0, 0.3);
-    content: '';
-    opacity: 0;
-    -webkit-transition: opacity .5s, width .1s .5s, height .1s .5s;
-    transition: opacity .5s, width .1s .5s, height .1s .5s
-}
-
-.st-menu-open .st-pusher::after {
-    width: 100%;
-    height: 100%;
-    opacity: 1;
-    -webkit-transition: opacity .5s;
-    transition: opacity .5s
-}
-
-.st-menu {
-    position: fixed;
-    top: 0;
-    left: auto;
-    z-index: 100;
-    visibility: hidden;
-    width: 300px;
-    height: 100%;
-    background: #4298b8;
-    -webkit-transition: all .5s;
-    transition: all .5s;
-    right: -600px
-}
-
-.st-menu::after {
-    position: absolute;
-    top: 0;
-    right: 0;
-    width: 100%;
-    height: 100%;
-    background: rgba(0, 0, 0, 0.2);
-    content: '';
-    opacity: 1;
-    -webkit-transition: opacity .5s;
-    transition: opacity .5s
-}
-
-.st-menu-open .st-menu::after {
-    width: 0;
-    height: 0;
-    opacity: 0;
-    -webkit-transition: opacity .5s, width .1s .5s, height .1s .5s;
-    transition: opacity .5s, width .1s .5s, height .1s .5s
-}
-
-.st-menu ul {
-    margin: 0;
-    padding: 0;
-    list-style: none
-}
-
-.st-menu h2 {
-    margin: 0;
-    padding: 1em;
-    color: white;
-    text-shadow: 0 0 1px rgba(0, 0, 0, 0.1);
-    font-weight: 300;
-    font-size: 2em
-}
-
-.st-menu ul li {
-    display: block
-}
-
-.st-menu ul li a {
-    display: block;
-    position: relative;
-    padding: 1em 1em 1em 45px;
-    outline: 0;
-    box-shadow: inset 0 -1px rgba(0, 0, 0, 0.2);
-    color: #f3efe0;
-    text-shadow: 0 0 1px rgba(255, 255, 255, 0.1);
-    letter-spacing: 1px;
-    font-weight: 400;
-    text-decoration: none
-}
-
-.st-menu ul li a span.fa {
-    display: block;
-    position: absolute;
-    left: 12px;
-    top: 17px;
-    font-size: 20px;
-    width: 30px;
-    text-align: center
-}
-
-.st-menu ul li a span.fa.fa-tasks, .st-menu ul li a span.fa.fa-envelope {
-    top: 18px;
-    font-size: 18px
-}
-
-.st-menu ul li:first-child a {
-    box-shadow: inset 0 -1px rgba(0, 0, 0, 0.2), inset 0 1px rgba(0, 0, 0, 0.2)
-}
-
-.st-menu ul li a:hover {
-    background: rgba(0, 0, 0, 0.2);
-    box-shadow: inset 0 -1px rgba(0, 0, 0, 0);
-    color: #fff
-}
-
-.st-effect-9.st-container {
-    -webkit-perspective: 10000px;
-    perspective: 10000px
-}
-
-.st-effect-9 .st-pusher {
-    -webkit-transform-style: preserve-3d;
-    transform-style: preserve-3d
-}
-
-.st-effect-9.st-menu-open .st-pusher {
-    -webkit-transform: translate3d(0, 0, -300px);
-    transform: translate3d(0, 0, -300px)
-}
-
-.st-effect-9.st-menu {
-    right: -600px;
-    opacity: 1;
-    -webkit-transform: translate3d(-100%, 0, 0);
-    transform: translate3d(-100%, 0, 0)
-}
-
-.st-effect-9.st-menu-open .st-effect-9.st-menu {
-    visibility: visible;
-    right: -300px
-}
-
-.st-effect-9.st-menu::after {
-    display: none
-}
-
-/* Video from the learn page */
-.presentations {
-    margin-top: 30px;
-    margin-bottom: 30px;
-}
-
-.presentations img.screenshot {
-    float: left;
-    margin-right: 40px;
-    margin-top: 1em;
-    margin-bottom: 0px;
-    width: 300px;
-    height: auto;
-}
-
-.presentations .metadata {
-    display: table-cell;
-    min-width: 328px;
-}
-
-.presentations .title {
-    margin-top: 1em !important;
-    margin-bottom: 0.5em !important;
-}
-
-
-.presentations .speaker {
-    color: #245f78;
-    margin-bottom: 0.5em;
-}
-
-.presentations .summary {
-    line-height: 1.3;
-}
-
-.presentations .urls {
-}
-
-/* Courses from the Learn Page */
-.courses {
-    margin-top: 30px;
-    margin-bottom: 30px;
-}
-
-.courses img.screenshot {
-    float: left;
-    margin-right: 40px;
-    margin-top: 1em;
-    margin-bottom: 0px;
-    width: 300px;
-    height: auto;
-}
-
-.courses .metadata {
-    display: table-cell;
-    min-width: 328px;
-}
-
-.courses .title {
-    margin-top: 1em !important;
-    margin-bottom: 0.5em !important;
-}
-
-.courses .instructor {
-    color: #245f78;
-    margin-bottom: 0.5em;
-}
-
-.courses .description {
-    line-height: 1.3;
-}
-
-@media screen and (max-width: 767px) {
-    .presentations .img.screenshot, .video .metadata {
-        float: none;
-    }
-}
-
-#content #toc {
-    margin-bottom: 1.25em;
-    padding: 1.25em;
-    border-width: 0;
-    -webkit-border-radius: 4px;
-    border-radius: 4px;
-}
-
-#content #toc > :first-child {
-    margin-top: 0;
-}
-
-#content #toc > :last-child {
-    margin-bottom: 0;
-}
-
-#content #toc a {
-    text-decoration: none;
-}
-
-#content #toctitle {
-    font-weight: bold;
-    font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;
-    font-size: 1em;
-    padding-left: 0.125em;
-}
-
-#content #toc ul {
-    list-style-type: none;
-    padding-left: 0.2em;
-}
diff --git a/site/src/site/assets/fonts/FontAwesome.otf b/site/src/site/assets/fonts/FontAwesome.otf
deleted file mode 100644
index 3461e3f..0000000
--- a/site/src/site/assets/fonts/FontAwesome.otf
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/fonts/fontawesome-webfont.eot b/site/src/site/assets/fonts/fontawesome-webfont.eot
deleted file mode 100644
index 6cfd566..0000000
--- a/site/src/site/assets/fonts/fontawesome-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/fonts/fontawesome-webfont.svg b/site/src/site/assets/fonts/fontawesome-webfont.svg
deleted file mode 100644
index a9f8469..0000000
--- a/site/src/site/assets/fonts/fontawesome-webfont.svg
+++ /dev/null
@@ -1,504 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata></metadata>
-<defs>
-<font id="fontawesomeregular" horiz-adv-x="1536" >
-<font-face units-per-em="1792" ascent="1536" descent="-256" />
-<missing-glyph horiz-adv-x="448" />
-<glyph unicode=" "  horiz-adv-x="448" />
-<glyph unicode="&#x09;" horiz-adv-x="448" />
-<glyph unicode="&#xa0;" horiz-adv-x="448" />
-<glyph unicode="&#xa8;" horiz-adv-x="1792" />
-<glyph unicode="&#xa9;" horiz-adv-x="1792" />
-<glyph unicode="&#xae;" horiz-adv-x="1792" />
-<glyph unicode="&#xb4;" horiz-adv-x="1792" />
-<glyph unicode="&#xc6;" horiz-adv-x="1792" />
-<glyph unicode="&#xd8;" horiz-adv-x="1792" />
-<glyph unicode="&#x2000;" horiz-adv-x="768" />
-<glyph unicode="&#x2001;" horiz-adv-x="1537" />
-<glyph unicode="&#x2002;" horiz-adv-x="768" />
-<glyph unicode="&#x2003;" horiz-adv-x="1537" />
-<glyph unicode="&#x2004;" horiz-adv-x="512" />
-<glyph unicode="&#x2005;" horiz-adv-x="384" />
-<glyph unicode="&#x2006;" horiz-adv-x="256" />
-<glyph unicode="&#x2007;" horiz-adv-x="256" />
-<glyph unicode="&#x2008;" horiz-adv-x="192" />
-<glyph unicode="&#x2009;" horiz-adv-x="307" />
-<glyph unicode="&#x200a;" horiz-adv-x="85" />
-<glyph unicode="&#x202f;" horiz-adv-x="307" />
-<glyph unicode="&#x205f;" horiz-adv-x="384" />
-<glyph unicode="&#x2122;" horiz-adv-x="1792" />
-<glyph unicode="&#x221e;" horiz-adv-x="1792" />
-<glyph unicode="&#x2260;" horiz-adv-x="1792" />
-<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
-<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M93 1350q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78z" />
-<glyph unicode="&#xf001;" d="M0 -64q0 50 34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5 q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89z" />
-<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M0 704q0 143 55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5z M256 704q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
-<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M0 32v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5 t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768zM128 1120q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317 q54 43 100.5 115.5t46.5 131.5v11v13.5t-0.5 13t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5z" />
-<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M0 940q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138z " />
-<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M0 889q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48z" />
-<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M0 889q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354 q-25 27 -25 48zM221 829l306 -297l-73 -421l378 199l377 -199l-72 421l306 297l-422 62l-189 382l-189 -382z" />
-<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M0 131q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5q0 -120 -73 -189.5t-194 -69.5 h-874q-121 0 -194 69.5t-73 189.5zM320 1024q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5z" />
-<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M0 -96v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 64v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45zM128 320q0 -26 19 -45t45 -19h128 q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128zM128 704q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128zM128 1088q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19 h-128q-26 0 -45 -19t-19 -45v-128zM512 -64q0 -26 19 -45t45 -19h768q26 0 45 19t19 45v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512zM512 704q0 -26 19 -45t45 -19h768q26 0 45 19t19 45v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512zM1536 64 v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45zM1536 320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128zM1536 704q0 -26 19 -45t45 -19h128q26 0 45 19t19 45 v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128zM1536 1088q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128z" />
-<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M0 128v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90zM0 896v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90zM896 128v384q0 52 38 90t90 38h512q52 0 90 -38 t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90zM896 896v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90z" />
-<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M0 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 608v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 1120v192q0 40 28 68t68 28h320q40 0 68 -28 t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM640 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM640 608v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68zM640 1120v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM1280 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM1280 608v192 q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM1280 1120v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M0 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 608v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 1120v192q0 40 28 68t68 28h320q40 0 68 -28 t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM640 96v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68zM640 608v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68zM640 1120v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M121 608q0 40 28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68t-28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68z" />
-<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M110 214q0 40 28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68t-28 -68l-294 -294l294 -294q28 -28 28 -68t-28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294 q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68z" />
-<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M0 704q0 143 55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90t-37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5z M256 704q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5zM384 672v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224q13 0 22.5 -9.5t9.5 -22.5v-64 q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M0 704q0 143 55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90t-37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5z M256 704q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5zM384 672v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf011;" d="M0 640q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181 q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298zM640 768v640q0 52 38 90t90 38t90 -38t38 -90v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90z" />
-<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M0 -96v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM384 -96v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM768 -96v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576 q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM1152 -96v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM1536 -96v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf013;" d="M0 531v222q0 12 8 23t19 13l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10 q129 -119 165 -170q7 -8 7 -22q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108 q-44 -23 -91 -38q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5z M512 640q0 -106 75 -181t181 -75t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181z" />
-<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M0 1056v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23zM256 76q0 -22 7 -40.5 t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5v948h-896v-948zM384 224v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM640 224v576q0 14 9 23t23 9h64 q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23zM896 224v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M26 636.5q1 13.5 11 21.5l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5zM256 64 v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf016;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22 v-376z" />
-<glyph unicode="&#xf017;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM512 544v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M50 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256 q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73zM809 540q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4z" />
-<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M0 96v320q0 40 28 68t68 28h465l135 -136q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68zM325 985q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39q17 -41 -14 -70 l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70zM1152 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM1408 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf01a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM418 620q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35z" />
-<glyph unicode="&#xf01b;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM416 672q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf01c;" d="M0 64v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552q25 -61 25 -123v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM197 576h316l95 -192h320l95 192h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8 t-2.5 -8z" />
-<glyph unicode="&#xf01d;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM512 320v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55t-32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56z" />
-<glyph unicode="&#xf01e;" d="M0 640q0 156 61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5 t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298z" />
-<glyph unicode="&#xf021;" d="M0 0v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129 q-19 -19 -45 -19t-45 19t-19 45zM18 800v7q65 268 270 434.5t480 166.5q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179 q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M0 160v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113zM128 160q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832z M256 288v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 544v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5z M256 800v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 288v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5z M512 544v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5zM512 800v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5z " />
-<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M0 96v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68zM320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192z" />
-<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M64 1280q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110zM320 320v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19 q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M0 650q0 151 67 291t179 242.5t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32 q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32 q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314z" />
-<glyph unicode="&#xf026;" horiz-adv-x="768" d="M0 448v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M0 448v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45zM908 464q0 21 12 35.5t29 25t34 23t29 35.5t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5 q15 0 25 -5q70 -27 112.5 -93t42.5 -142t-42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5z" />
-<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M0 448v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45zM908 464q0 21 12 35.5t29 25t34 23t29 35.5t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5 q15 0 25 -5q70 -27 112.5 -93t42.5 -142t-42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5zM1008 228q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5 q140 -59 225 -188.5t85 -282.5t-85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45zM1109 -7q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19 q13 0 26 -5q211 -91 338 -283.5t127 -422.5t-127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M0 0v640h640v-640h-640zM0 768v640h640v-640h-640zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM256 256v128h128v-128h-128zM256 1024v128h128v-128h-128zM768 0v640h384v-128h128v128h128v-384h-384v128h-128v-384h-128zM768 768v640h640v-640h-640z M896 896h384v384h-384v-384zM1024 0v128h128v-128h-128zM1024 1024v128h128v-128h-128zM1280 0v128h128v-128h-128z" />
-<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M0 0v1408h63v-1408h-63zM94 1v1407h32v-1407h-32zM189 1v1407h31v-1407h-31zM346 1v1407h31v-1407h-31zM472 1v1407h62v-1407h-62zM629 1v1407h31v-1407h-31zM692 1v1407h31v-1407h-31zM755 1v1407h31v-1407h-31zM880 1v1407h63v-1407h-63zM1037 1v1407h63v-1407h-63z M1163 1v1407h63v-1407h-63zM1289 1v1407h63v-1407h-63zM1383 1v1407h63v-1407h-63zM1541 1v1407h94v-1407h-94zM1666 1v1407h32v-1407h-32zM1729 0v1408h63v-1408h-63z" />
-<glyph unicode="&#xf02b;" d="M0 864v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117zM192 1088q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M0 864v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117zM192 1088q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5zM704 1408h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5z" />
-<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M10 184q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23 t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57 q38 -15 59 -43q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5zM575 1056 q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
-<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M0 7v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62z" />
-<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M0 160v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v160h-224 q-13 0 -22.5 9.5t-9.5 22.5zM384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1408 576q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M0 128v896q0 106 75 181t181 75h224l51 136q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181zM512 576q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5zM672 576q0 119 84.5 203.5t203.5 84.5t203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5z" />
-<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8 t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27 q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14zM555 527q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452z" />
-<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5 t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12zM533 1292q0 -50 4 -151t4 -152q0 -27 -0.5 -80 t-0.5 -79q0 -46 1 -69q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13zM538.5 165q0.5 -37 4.5 -83.5t12 -66.5q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25 t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5z" />
-<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
-<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M0 1023v383l81 1l54 -27q12 -5 211 -5q44 0 132 2t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5 q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9 t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44zM1414 109.5q9 18.5 42 18.5h80v1024 h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5z" />
-<glyph unicode="&#xf035;" d="M0 1023v383l81 1l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1 t-103 1t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29 t78 27q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44zM5 -64q0 28 26 49q4 3 36 30t59.5 49 t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5q12 0 42 -19.5t57.5 -41.5t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5 t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49z" />
-<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 448v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45zM0 832v128q0 26 19 45t45 19h1536 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1536q-26 0 -45 19t-19 45zM0 1216v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM128 832v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM384 448v128q0 26 19 45t45 19h896 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45zM512 1216v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM128 832v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1536q-26 0 -45 19t-19 45zM384 448v128q0 26 19 45t45 19h1280 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45zM512 1216v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 448v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 832v128q0 26 19 45t45 19h1664 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 1216v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M0 32v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5zM0 416v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5zM0 800v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5zM0 1184v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192 q-13 0 -22.5 9.5t-9.5 22.5zM384 32v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5zM384 416v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5zM384 800v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5zM384 1184v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-192 q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M0 32v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5zM0 1184v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5 t-9.5 22.5zM32 704q0 14 9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23zM640 416v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088 q-13 0 -22.5 9.5t-9.5 22.5zM640 800v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M0 32v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5zM0 416v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23t-9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5z M0 1184v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5zM640 416v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5 t-9.5 22.5zM640 800v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M0 288v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5q39 -17 39 -59v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5 t-84.5 203.5z" />
-<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M0 32v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216z M256 128v192l320 320l160 -160l512 512l416 -416v-448h-1408zM256 960q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136z" />
-<glyph unicode="&#xf040;" d="M0 -128v416l832 832l416 -416l-832 -832h-416zM128 128h128v-128h107l91 91l-235 235l-91 -91v-107zM298 384q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17zM896 1184l166 165q36 38 90 38q53 0 91 -38l235 -234 q37 -39 37 -91q0 -53 -37 -90l-166 -166z" />
-<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M0 896q0 212 150 362t362 150t362 -150t150 -362q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179zM256 896q0 -106 75 -181t181 -75t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181z" />
-<glyph unicode="&#xf042;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73v1088q-148 0 -273 -73t-198 -198t-73 -273z" />
-<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M0 512q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275q0 -212 -150 -362t-362 -150t-362 150t-150 362zM256 384q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69z" />
-<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29v-190 q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM640 256v288l672 672l288 -288l-672 -672h-288zM736 448h96v-96h56l116 116l-152 152l-116 -116v-56zM944 688q16 -16 33 1l350 350q17 17 1 33t-33 -1l-350 -350q-17 -17 -1 -33zM1376 1280l92 92 q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68l-92 -92z" />
-<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h255q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29v-259 q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM256 704q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45l-384 -384 q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5t-38.5 114t-17.5 122z" />
-<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3 q20 -8 20 -29v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM257 768q0 33 24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110q24 -24 24 -57t-24 -57l-814 -814q-24 -24 -57 -24t-57 24l-430 430 q-24 24 -24 57z" />
-<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M0 640q0 26 19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45t-19 -45l-256 -256 q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45z" />
-<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M0 -64v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M0 -64v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710q19 19 32 13t13 -32v-710q4 11 13 19l710 710q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45 t-45 -19h-128q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M122 640q0 26 19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19l710 710q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45z" />
-<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M0 -96v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31l-1328 -738q-23 -13 -39.5 -3t-16.5 36z" />
-<glyph unicode="&#xf04c;" d="M0 -64v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45zM896 -64v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf04d;" d="M0 -64v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M0 -96v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32z" />
-<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M0 -96v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32v710 q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32z" />
-<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M0 -96v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32z" />
-<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M1 64v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM1 525q-6 13 13 32l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13z" />
-<glyph unicode="&#xf053;" horiz-adv-x="1280" d="M154 704q0 26 19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45z" />
-<glyph unicode="&#xf054;" horiz-adv-x="1280" d="M90 128q0 26 19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45z" />
-<glyph unicode="&#xf055;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM320 576q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19 t19 45v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128z" />
-<glyph unicode="&#xf056;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM320 576q0 -26 19 -45t45 -19h768q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19 t-19 -45v-128z" />
-<glyph unicode="&#xf057;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM387 414q0 -27 19 -46l90 -90q19 -19 46 -19q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19 l90 90q19 19 19 46q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45z" />
-<glyph unicode="&#xf058;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM252 621q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45q0 28 -18 46l-91 90 q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46z" />
-<glyph unicode="&#xf059;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM417 939q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26 t37.5 -59q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213zM640 160q0 -14 9 -23t23 -9 h192q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192z" />
-<glyph unicode="&#xf05a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM512 160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320 q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160zM640 1056q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160z" />
-<glyph unicode="&#xf05b;" d="M0 576v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143 q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45zM339 512q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5h-109q-26 0 -45 19 t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109z" />
-<glyph unicode="&#xf05c;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM429 480q0 13 10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23l-137 -137l137 -137q10 -10 10 -23t-10 -23l-146 -146q-10 -10 -23 -10t-23 10l-137 137 l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23z" />
-<glyph unicode="&#xf05d;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM346 640q0 26 19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45z" />
-<glyph unicode="&#xf05e;" d="M0 643q0 157 61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5t-61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61t-245 164t-163.5 246t-61 300zM224 643q0 -162 89 -299l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199 t-73 -274zM471 185q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5q0 161 -87 295z" />
-<glyph unicode="&#xf060;" d="M64 576q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5t32.5 -90.5v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90 z" />
-<glyph unicode="&#xf061;" d="M0 512v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5z" />
-<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M53 565q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651q37 -39 37 -91q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75 q-38 38 -38 90z" />
-<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M53 704q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90z" />
-<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M0 416q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45t-19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123 q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22t-13.5 30t-10.5 24q-127 285 -127 451z" />
-<glyph unicode="&#xf065;" d="M0 -64v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23t-10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45zM781 800q0 13 10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448 q26 0 45 -19t19 -45v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23z" />
-<glyph unicode="&#xf066;" d="M13 32q0 13 10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23zM768 704v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10 t23 -10l114 -114q10 -10 10 -23t-10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M0 608v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M0 608v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M122.5 408.5q13.5 51.5 59.5 77.5l266 154l-266 154q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5 l-266 -154l266 -154q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5z" />
-<glyph unicode="&#xf06a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM624 1126l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5l18 621q0 12 -10 18 q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18zM640 161q0 -13 10 -23t23 -10h192q13 0 22 9.5t9 23.5v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190z" />
-<glyph unicode="&#xf06b;" d="M0 544v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68 t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23zM376 1120q0 -40 28 -68t68 -28h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68zM608 180q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5v56v468v192h-320v-192v-468v-56zM870 1024h194q40 0 68 28 t28 68t-28 68t-68 28q-43 0 -69 -31z" />
-<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M0 121q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96 q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5zM384 448q0 -26 19 -45t45 -19q24 0 45 19 q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45t-19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45z" />
-<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M0 -160q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64zM256 640q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100 t113.5 -122.5t72.5 -150.5t27.5 -184q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184z" />
-<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M0 576q0 34 20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69t-20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69zM128 576q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5q-152 236 -381 353 q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353zM592 704q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34t-14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5z" />
-<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M0 576q0 38 20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5q16 -10 16 -27q0 -7 -1 -9q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87 q-143 65 -263.5 173t-208.5 245q-20 31 -20 69zM128 576q167 -258 427 -375l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353zM592 704q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34t-14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5zM896 0l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69t-20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95zM1056 286l280 502q8 -45 8 -84q0 -139 -79 -253.5t-209 -164.5z" />
-<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M16 61l768 1408q17 31 47 49t65 18t65 -18t47 -49l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126zM752 992l17 -457q0 -10 10 -16.5t24 -6.5h185q14 0 23.5 6.5t10.5 16.5l18 459q0 12 -10 19q-13 11 -24 11h-220 q-11 0 -24 -11q-10 -7 -10 -21zM768 161q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190z" />
-<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M0 477q-1 13 9 25l96 97q9 9 23 9q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16 l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23z" />
-<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M0 -128v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90zM128 -128h288v288h-288v-288zM128 224 h288v320h-288v-320zM128 608h288v288h-288v-288zM384 1088q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288zM480 -128h320v288h-320v-288zM480 224h320v320h-320v-320zM480 608h320v288h-320 v-288zM864 -128h320v288h-320v-288zM864 224h320v320h-320v-320zM864 608h320v288h-320v-288zM1152 1088q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288zM1248 -128h288v288h-288v-288z M1248 224h288v320h-288v-320zM1248 608h288v288h-288v-288z" />
-<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M0 160v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23t-9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192 h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23zM0 1056v192q0 14 9 23t23 9h224q250 0 410 -225q-60 -92 -137 -273q-22 45 -37 72.5 t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23zM743 353q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23t-9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192 q-32 0 -85 -0.5t-81 -1t-73 1t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5z" />
-<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M0 640q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5t-120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5 t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281z" />
-<glyph unicode="&#xf076;" d="M0 576v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5 t-98.5 362zM0 960v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45zM1024 960v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf077;" horiz-adv-x="1792" d="M90 250.5q0 26.5 19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5z" />
-<glyph unicode="&#xf078;" horiz-adv-x="1792" d="M90 773.5q0 26.5 19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5z" />
-<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M0 704q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45z M640 1120q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20z " />
-<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M0 1216q0 26 19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024 q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45zM384 0q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5zM1280 0q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5 t-90.5 -37.5t-90.5 37.5t-37.5 90.5z" />
-<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M0 224v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158z" />
-<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M0 224v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5t-0.5 12.5zM73 56q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43 q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43z" />
-<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M64 64q0 26 19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45z" />
-<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M0 640q0 26 19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45z" />
-<glyph unicode="&#xf080;" horiz-adv-x="1920" d="M0 32v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216z M256 128v384h256v-384h-256zM640 128v896h256v-896h-256zM1024 128v640h256v-640h-256zM1408 128v1024h256v-1024h-256z" />
-<glyph unicode="&#xf081;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 286q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109 q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4q21 -63 74.5 -104 t121.5 -42q-116 -90 -261 -90q-26 0 -50 3z" />
-<glyph unicode="&#xf082;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-192v608h203l30 224h-233v143q0 54 28 83t96 29l132 1v207q-96 9 -180 9q-136 0 -218 -80.5t-82 -225.5v-166h-224v-224h224v-608h-544 q-119 0 -203.5 84.5t-84.5 203.5z" />
-<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M0 0v1280q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5zM128 0h1536v128h-1536v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM256 1216h384v128h-384v-128zM512 574 q0 -159 112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5zM640 574q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181zM736 576q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9 t9 23t-9 23t-23 9q-66 0 -113 -47t-47 -113z" />
-<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M0 752q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41q0 -17 -49 -66t-66 -49 q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5zM192 768q0 -80 56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56 t56 136t-56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136z" />
-<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M0 549v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8 q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90 q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5zM384 640q0 -106 75 -181t181 -75 t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181zM1152 58v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31 v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31zM1152 1082v140q0 16 149 31q13 29 30 52 q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71 q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31zM1408 128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5q0 52 -38 90t-90 38t-90 -38t-38 -90zM1408 1152q0 -53 37.5 -90.5 t90.5 -37.5t90.5 37.5t37.5 90.5q0 52 -38 90t-90 38t-90 -38t-38 -90z" />
-<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M0 768q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257t-94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25 t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224zM616 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5 t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132z" />
-<glyph unicode="&#xf087;" d="M0 128v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5zM128 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM384 128h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5 t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85 t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640z" />
-<glyph unicode="&#xf088;" d="M0 512v640q0 53 37.5 90.5t90.5 37.5h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186 q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5zM128 1088q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM384 512h32q16 0 35.5 -9 t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5 t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640z" />
-<glyph unicode="&#xf089;" horiz-adv-x="896" d="M0 889q0 37 56 46l502 73l225 455q19 41 49 41v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48z" />
-<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M0 940q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138z M128 940q0 -168 187 -355l581 -560l580 559q188 188 188 356q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5 t-21.5 -143z" />
-<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M0 288v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5q0 -4 1 -20t0.5 -26.5t-3 -23.5 t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5zM384 448v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45t-19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf08c;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM223 1030q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86z M237 122h231v694h-231v-694zM595 122h231v388q0 38 7 56q15 35 45 59.5t74 24.5q116 0 116 -157v-371h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694z" />
-<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M0 320q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19 t-19 45zM416 672q0 -14 9 -23t23 -9t23 9t9 23v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448z" />
-<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832 q-119 0 -203.5 84.5t-84.5 203.5zM685 576q0 13 10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23z" />
-<glyph unicode="&#xf090;" d="M0 448v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45t-19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45zM894.5 78.5q0.5 10.5 3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113 t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5q0 4 -1 20t-0.5 26.5z" />
-<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M0 928v128q0 40 28 68t68 28h288v96q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91t97.5 -37q75 0 133.5 -45.5 t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143zM128 928q0 -78 94.5 -162t235.5 -113q-74 162 -74 371 h-256v-96zM1206 653q141 29 235.5 113t94.5 162v96h-256q0 -209 -74 -371z" />
-<glyph unicode="&#xf092;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204 q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52 t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5h-224q-119 0 -203.5 84.5t-84.5 203.5zM271 315q3 5 13 2 q10 -5 7 -12q-5 -7 -13 -2q-10 5 -7 12zM304 290q6 6 16 -3q9 -11 2 -16q-6 -7 -16 3q-9 11 -2 16zM335 233q-9 13 0 18q9 7 17 -6q9 -12 0 -19q-8 -6 -17 7zM370 206q8 9 20 -3q12 -11 4 -19q-8 -9 -20 3q-13 11 -4 19zM419 168q4 11 19 7q16 -5 13 -16q-4 -12 -19 -6 q-17 4 -13 15zM481 154q0 11 16 11q17 2 17 -11q0 -11 -16 -11q-17 -2 -17 11zM540 158q-2 12 14 15q16 2 18 -9q2 -10 -14 -14t-18 8z" />
-<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M0 -32v320q0 40 28 68t68 28h427q21 -56 70.5 -92t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68zM325 936q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69q-17 -40 -59 -40 h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40zM1152 64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM1408 64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf094;" d="M0 433q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5q0 -165 -70 -327.5 t-196 -288t-281 -180.5q-124 -44 -326 -44q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5zM128 434q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5 q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24 q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5z" />
-<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M0 1069q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235 t235 -174q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5 t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5z" />
-<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM128 288q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47 t-47 -113v-832z" />
-<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M0 7v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62zM128 38l423 406l89 85l89 -85l423 -406 v1242h-1024v-1242z" />
-<glyph unicode="&#xf098;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 905q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5 q6 -2 30 -11t33 -12.5t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5 t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5z" />
-<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M44 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5 q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145z" />
-<glyph unicode="&#xf09a;" horiz-adv-x="1024" d="M95 631v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255z" />
-<glyph unicode="&#xf09b;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44 l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3 q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5z" />
-<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M0 96v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M0 32v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v608h-1664v-608zM128 1024h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600 q-13 0 -22.5 -9.5t-9.5 -22.5v-224zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
-<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M0 192q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136zM0 697v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5t259 -181.5q114 -113 181.5 -259t80.5 -306q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5 t-391.5 184.5q-25 2 -41.5 20t-16.5 43zM0 1201v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294q187 -186 294 -425.5t120 -501.5q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102 q-25 1 -42.5 19.5t-17.5 43.5z" />
-<glyph unicode="&#xf0a0;" d="M0 160v320q0 25 16 75l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113zM128 160q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5v320q0 13 -9.5 22.5t-22.5 9.5h-1216 q-13 0 -22.5 -9.5t-9.5 -22.5v-320zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM880 320q0 33 23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5t-23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5zM1136 320q0 33 23.5 56.5t56.5 23.5 t56.5 -23.5t23.5 -56.5t-23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5z" />
-<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M0 672v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50 t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113zM768 633q377 -42 768 -341v954q-394 -302 -768 -343v-270z" />
-<glyph unicode="&#xf0a2;" horiz-adv-x="1664" d="M0 128q190 161 287 397.5t97 498.5q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38 t-38 90zM183 128h1298q-164 181 -246.5 411.5t-82.5 484.5q0 256 -320 256t-320 -256q0 -254 -82.5 -484.5t-246.5 -411.5zM656 0q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16z" />
-<glyph unicode="&#xf0a3;" d="M2 435q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70l-53 -186l188 -48 q40 -10 52 -51q10 -42 -20 -70l-138 -135l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53 q-41 -12 -70 19q-31 29 -19 70l53 186l-188 48q-40 10 -52 51z" />
-<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M0 128v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179q0 -105 -75.5 -181 t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5zM128 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM384 128h32q72 0 167 -32 t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139 q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106q-69 -57 -140 -57h-32v-640z" />
-<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M0 769q0 103 76 179t180 76h374q-22 60 -22 128q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5v-640 q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181zM128 768q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119 q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5 t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576q-50 0 -89 -38.5t-39 -89.5zM1536 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf0a6;" d="M0 640q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5t-90.5 -37.5h-640 q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5zM128 640q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140 v-32h640v32q0 72 32 167t64 193.5t32 179.5q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576q-20 0 -48.5 15t-55 33t-68 33t-84.5 15 q-67 0 -97.5 -44.5t-30.5 -115.5zM1152 -64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf0a7;" d="M0 640q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317q0 -142 -77.5 -230t-217.5 -87 l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5zM128 640q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33t55 33t48.5 15v-576q0 -50 38.5 -89 t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112 q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5zM1152 1344q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf0a8;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM251 640q0 -27 18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502 q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45z" />
-<glyph unicode="&#xf0a9;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM256 576q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18 l362 362l91 91q18 18 18 45t-18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128z" />
-<glyph unicode="&#xf0aa;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM252 641q0 -27 18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19 t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45t-18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45z" />
-<glyph unicode="&#xf0ab;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM252 639q0 -27 18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45t-18 45l-91 91 q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45z" />
-<glyph unicode="&#xf0ac;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM226 979q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18 q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13 q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5 t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13 q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25 t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5 t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4 q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5q15 10 -7 16q-17 5 -43 -12q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8 q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5 q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26 q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5 q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14 q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5 q-16 0 -22 -1q-146 -80 -235 -222zM877 26q0 -6 2 -16q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7 t-10 1.5t-11.5 -7q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5z" />
-<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M21 0q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90zM256 64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM768 960q0 185 131.5 316.5t316.5 131.5q58 0 121.5 -16.5 t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25q0 -39 -23 -106q-47 -134 -164.5 -217.5t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5z" />
-<glyph unicode="&#xf0ae;" horiz-adv-x="1792" d="M0 64v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 576v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 1088v256q0 26 19 45t45 19h1664 q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM640 640h1024v128h-1024v-128zM1024 128h640v128h-640v-128zM1280 1152h384v128h-384v-128z" />
-<glyph unicode="&#xf0b0;" horiz-adv-x="1408" d="M5 1241q17 39 59 39h1280q42 0 59 -39q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70z" />
-<glyph unicode="&#xf0b1;" horiz-adv-x="1792" d="M0 160v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113zM0 736v384q0 66 47 113t113 47h352v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113v-384h-1792z M640 1280h512v128h-512v-128zM768 512v128h256v-128h-256z" />
-<glyph unicode="&#xf0b2;" d="M0 -64v448q0 42 40 59q39 17 69 -14l144 -144l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45 v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19l-144 144l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19 t-19 45z" />
-<glyph unicode="&#xf0c0;" horiz-adv-x="1920" d="M0 671q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5zM128 1280q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181zM256 3q0 53 3.5 103.5 t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5 zM576 896q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5zM1280 1280q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181zM1327 640q81 117 81 256q0 29 -5 66q66 -23 133 -23 q59 0 119 21.5t97.5 42.5t43.5 21q124 0 124 -353q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128z" />
-<glyph unicode="&#xf0c1;" horiz-adv-x="1664" d="M16 1088q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l206 -207q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204t-85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88 q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204zM208 1088q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15t21.5 -21.5t18.5 -19q33 31 33 73 q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67zM911 383q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26l147 146q28 28 28 67q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5 q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73z" />
-<glyph unicode="&#xf0c2;" horiz-adv-x="1920" d="M0 448q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5z" />
-<glyph unicode="&#xf0c3;" horiz-adv-x="1664" d="M115.5 -64.5q-34.5 63.5 21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399l503 -793q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5zM476 384h712l-272 429l-20 31v37v399h-128v-399v-37 l-20 -31z" />
-<glyph unicode="&#xf0c4;" horiz-adv-x="1792" d="M1 157q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148q4 -48 -10 -97q4 -1 12 -5 l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56l-507 -398l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207zM168 176q-25 -66 21 -108q39 -36 113 -36q100 0 192 59q81 51 106 117t-21 108q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117zM168 976q25 -66 106 -117q92 -59 192 -59q74 0 113 36q46 42 21 108t-106 117q-92 59 -192 59 q-74 0 -113 -36q-46 -42 -21 -108zM672 448l9 -8q2 -2 7 -6q4 -4 11 -12t11 -12l26 -26l160 96l96 -32l736 576l-128 64l-768 -431v-113zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 576q0 26 19 45t45 19t45 -19 t19 -45t-19 -45t-45 -19t-45 19t-19 45zM1018 391l582 -327l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
-<glyph unicode="&#xf0c5;" horiz-adv-x="1792" d="M0 224v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68zM128 256h512v256q0 40 20 88t48 76l316 316v416h-384 v-416q0 -40 -28 -68t-68 -28h-416v-640zM213 1024h299v299zM768 -128h896v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640zM853 640h299v299z" />
-<glyph unicode="&#xf0c6;" horiz-adv-x="1408" d="M4 1023q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581 q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776 q-113 115 -113 271z" />
-<glyph unicode="&#xf0c7;" d="M0 -32v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 0h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20 t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280zM384 0h768v384h-768v-384zM640 928q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v320q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320z" />
-<glyph unicode="&#xf0c8;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5z" />
-<glyph unicode="&#xf0c9;" d="M0 64v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM0 576v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM0 1088v128q0 26 19 45t45 19h1408 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf0ca;" horiz-adv-x="1792" d="M0 128q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136zM0 640q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136zM0 1152q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136zM512 32v192 q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5zM512 544v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5z M512 1056v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf0cb;" horiz-adv-x="1792" d="M15 438q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105v-159h-362q-6 36 -6 54zM19 -190 l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66zM34 1400l136 127h106v-404h108v-99 h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54zM512 32v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5zM512 544v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5v-192 q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5zM512 1056v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf0cc;" horiz-adv-x="1792" d="M0 544v64q0 14 9 23t23 9h1728q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23zM384 972q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6l-14 2q-50 149 -103 205 q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743q-28 35 -51 80q-48 97 -48 188zM414 154q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22 q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156z" />
-<glyph unicode="&#xf0cd;" d="M0 -32v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-1472q-14 0 -23 -9t-9 -23zM0 1405q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5 t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2 q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195 q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39q-37 2 -45 4z" />
-<glyph unicode="&#xf0ce;" horiz-adv-x="1664" d="M0 160v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113zM128 160q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192zM128 544q0 -14 9 -23t23 -9h320 q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192zM128 928q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192zM640 160q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192zM640 544q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192zM640 928q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192zM1152 160q0 -14 9 -23t23 -9h320q14 0 23 9t9 23 v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192zM1152 544q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192zM1152 928q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192z" />
-<glyph unicode="&#xf0d0;" horiz-adv-x="1664" d="M27 160q0 27 18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45t-18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45zM128 1408l98 30l30 98l30 -98l98 -30l-98 -30l-30 -98l-30 98zM320 1216l196 60l60 196l60 -196l196 -60l-196 -60 l-60 -196l-60 196zM768 1408l98 30l30 98l30 -98l98 -30l-98 -30l-30 -98l-30 98zM1083 1062l107 -107l293 293l-107 107zM1408 768l98 30l30 98l30 -98l98 -30l-98 -30l-30 -98l-30 98z" />
-<glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M64 192q0 26 19 45t45 19v320q0 8 -0.5 35t0 38t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45v-1024q0 -15 -4 -26.5t-13.5 -18.5t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5 q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM384 128q0 -52 38 -90t90 -38 t90 38t38 90t-38 90t-90 38t-90 -38t-38 -90zM1280 128q0 -52 38 -90t90 -38t90 38t38 90t-38 90t-90 38t-90 -38t-38 -90z" />
-<glyph unicode="&#xf0d2;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63 q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5 q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423z" />
-<glyph unicode="&#xf0d3;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5 q-104 0 -194.5 -28.5t-153 -76.5t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118 q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5z" />
-<glyph unicode="&#xf0d4;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM276 309q0 -43 18.5 -77.5t48.5 -56.5t69 -37t77.5 -21t76.5 -6q60 0 120.5 15.5t113.5 46t86 82.5t33 117 q0 49 -20 89.5t-49 66.5t-58 47.5t-49 44t-20 44.5t15.5 42.5t37.5 39.5t44 42t37.5 59.5t15.5 82.5q0 60 -22.5 99.5t-72.5 90.5h83l88 64h-265q-85 0 -161 -32t-127.5 -98t-51.5 -153q0 -93 64.5 -154.5t158.5 -61.5q22 0 43 3q-13 -29 -13 -54q0 -44 40 -94 q-175 -12 -257 -63q-47 -29 -75.5 -73t-28.5 -95zM395 338q0 46 25 80t65.5 51.5t82 25t84.5 7.5q20 0 31 -2q2 -1 23 -16.5t26 -19t23 -18t24.5 -22t19 -22.5t17 -26t9 -26.5t4.5 -31.5q0 -76 -58.5 -112.5t-139.5 -36.5q-41 0 -80.5 9.5t-75.5 28.5t-58 53t-22 78z M462 969q0 61 32 104t92 43q53 0 93.5 -45t58 -101t17.5 -107q0 -60 -33 -99.5t-92 -39.5q-53 0 -93 42.5t-57.5 96.5t-17.5 106zM960 672h128v-160h64v160h128v64h-128v128h-64v-128h-128v-64z" />
-<glyph unicode="&#xf0d5;" horiz-adv-x="1664" d="M32 182q0 81 44.5 150t118.5 115q131 82 404 100q-32 42 -47.5 74t-15.5 73q0 36 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q77 66 182.5 98t217.5 32h418l-138 -88h-131q74 -63 112 -133t38 -160q0 -72 -24.5 -129.5t-59 -93t-69.5 -65 t-59.5 -61.5t-24.5 -66q0 -36 32 -70.5t77.5 -68t90.5 -73.5t77 -104t32 -142q0 -90 -48 -173q-72 -122 -211 -179.5t-298 -57.5q-132 0 -246.5 41.5t-171.5 137.5q-37 60 -37 131zM218 228q0 -70 35 -123.5t91.5 -83t119 -44t127.5 -14.5q58 0 111.5 13t99 39t73 73 t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -48 2q-53 0 -105 -7t-107.5 -25t-97 -46t-68.5 -74.5t-27 -105.5zM324 1222q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q38 0 78 16.5t66 43.5q53 57 53 159 q0 58 -17 125t-48.5 129.5t-84.5 103.5t-117 41q-42 0 -82.5 -19.5t-65.5 -52.5q-47 -59 -47 -160zM1084 731v108h212v217h105v-217h213v-108h-213v-219h-105v219h-212z" />
-<glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M0 64v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45zM128 384q106 0 181 -75t75 -181h1152q0 106 75 181t181 75v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512zM640 640q0 70 21 142 t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142t-21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142zM762 791l77 -80q42 37 55 57h2v-288h-128v-96h384v96h-128v448h-114z" />
-<glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M0 832q0 26 19 45t45 19h896q26 0 45 -19t19 -45t-19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45z" />
-<glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M0 320q0 26 19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf0d9;" horiz-adv-x="640" d="M64 640q0 26 19 45l448 448q19 19 45 19t45 -19t19 -45v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45z" />
-<glyph unicode="&#xf0da;" horiz-adv-x="640" d="M0 192v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45t-19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45z" />
-<glyph unicode="&#xf0db;" horiz-adv-x="1664" d="M0 32v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h608v1152h-640v-1120zM896 0h608q13 0 22.5 9.5t9.5 22.5v1120h-640v-1152z" />
-<glyph unicode="&#xf0dc;" horiz-adv-x="1024" d="M0 448q0 26 19 45t45 19h896q26 0 45 -19t19 -45t-19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45zM0 832q0 26 19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf0dd;" horiz-adv-x="1024" d="M0 448q0 26 19 45t45 19h896q26 0 45 -19t19 -45t-19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45z" />
-<glyph unicode="&#xf0de;" horiz-adv-x="1024" d="M0 832q0 26 19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf0e0;" horiz-adv-x="1792" d="M0 32v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113zM0 1098q0 78 41.5 130t118.5 52h1472 q65 0 112.5 -47t47.5 -113q0 -79 -49 -151t-122 -123q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5z" />
-<glyph unicode="&#xf0e1;" d="M0 1217q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122zM19 -80v991h330v-991h-330zM531 -80q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5v-568 h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329z" />
-<glyph unicode="&#xf0e2;" d="M0 832v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298t-61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12 q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf0e3;" horiz-adv-x="1792" d="M40 736q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18 q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5 q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5 t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68z" />
-<glyph unicode="&#xf0e4;" horiz-adv-x="1792" d="M0 384q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29q-141 221 -141 483zM128 384q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z M320 832q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5zM710 241q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91l101 382q6 26 -7.5 48.5t-38.5 29.5t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5 t-63 -98.5zM768 1024q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5zM1216 832q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5zM1408 384q0 -53 37.5 -90.5 t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf0e5;" horiz-adv-x="1792" d="M0 640q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5t-120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5 t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281zM128 640q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5t-381.5 -69.5 t-282 -187.5t-104.5 -255z" />
-<glyph unicode="&#xf0e6;" horiz-adv-x="1792" d="M0 768q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257t-94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25 t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224zM128 768q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52t-286 -52t-211.5 -141t-78.5 -191zM616 132 q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22 t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132z" />
-<glyph unicode="&#xf0e7;" horiz-adv-x="896" d="M1 551l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39z" />
-<glyph unicode="&#xf0e8;" horiz-adv-x="1792" d="M0 -32v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf0e9;" horiz-adv-x="1664" d="M0 681q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17 q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5z M384 128q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180zM768 1310v98q0 26 19 45t45 19t45 -19t19 -45v-98q-42 2 -64 2t-64 -2z" />
-<glyph unicode="&#xf0ea;" horiz-adv-x="1792" d="M0 96v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88v-672q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68zM256 1312q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5v64 q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64zM768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1280 640h299l-299 299v-299z" />
-<glyph unicode="&#xf0eb;" horiz-adv-x="1024" d="M0 960q0 99 44.5 184.5t117 142t164 89t186.5 32.5t186.5 -32.5t164 -89t117 -142t44.5 -184.5q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47q0 -46 -31.5 -71t-77.5 -25 q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268zM128 960q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228 q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134zM480 1088q0 13 9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5 q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf0ec;" horiz-adv-x="1792" d="M0 256q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22zM0 800v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23 t23 9q12 0 24 -10l319 -319q9 -9 9 -23t-9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf0ed;" horiz-adv-x="1920" d="M0 448q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5z M512 608q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5z" />
-<glyph unicode="&#xf0ee;" horiz-adv-x="1920" d="M0 448q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5z M512 672q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24z" />
-<glyph unicode="&#xf0f0;" horiz-adv-x="1408" d="M0 131q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89 q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5 t81 -103t47.5 -132.5t24 -138t5.5 -131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190zM256 192q0 26 19 45t45 19t45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45zM320 1024q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5 t-271.5 112.5t-112.5 271.5z" />
-<glyph unicode="&#xf0f1;" horiz-adv-x="1408" d="M0 768v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48 q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5 t-131.5 271.5v132q-164 20 -274 128t-110 252zM1152 832q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf0f2;" horiz-adv-x="1792" d="M0 96v832q0 92 66 158t158 66h64v-1280h-64q-92 0 -158 66t-66 158zM384 -128v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128v-1280h-1024zM640 1152h512v128h-512v-128zM1504 -128v1280h64q92 0 158 -66t66 -158v-832q0 -92 -66 -158t-158 -66h-64z " />
-<glyph unicode="&#xf0f3;" horiz-adv-x="1664" d="M0 128q190 161 287 397.5t97 498.5q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38 t-38 90zM656 0q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16z" />
-<glyph unicode="&#xf0f4;" horiz-adv-x="1920" d="M0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM256 480v736q0 26 19 45t45 19h1152q159 0 271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158zM1408 704h64q80 0 136 56t56 136 t-56 136t-136 56h-64v-384z" />
-<glyph unicode="&#xf0f5;" horiz-adv-x="1408" d="M0 832v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128 q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111zM768 416v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf0f6;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM384 160v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64 q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23zM384 416v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23zM384 672v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23zM1024 1024h376 q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
-<glyph unicode="&#xf0f7;" horiz-adv-x="1408" d="M0 -192v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45zM128 -128h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224h384v1536h-1152v-1536zM256 160v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 416v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 672v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 928v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 1184v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 416v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 672v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 928v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 1184v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM768 416v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM768 672v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM768 928v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM768 1184v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 160v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 416v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 672v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 928v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 1184v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf0f8;" horiz-adv-x="1408" d="M0 -192v1280q0 26 19 45t45 19h320v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45zM128 -128h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224h384v1152h-256 v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152zM256 160v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 416v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5 v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 672v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 416v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64 q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 672v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 1056q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128 v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320zM768 416v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5 v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM768 672v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 160v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5 v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 416v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 672v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5 v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf0f9;" horiz-adv-x="1920" d="M64 192q0 26 19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128 q-26 0 -45 19t-19 45zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM384 128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5zM896 800q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192 q14 0 23 9t9 23v224h224q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192zM1280 128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf0fa;" horiz-adv-x="1792" d="M0 96v832q0 92 66 158t158 66h32v-1280h-32q-92 0 -158 66t-66 158zM352 -128v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160v-1280h-1088zM512 416q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23v192 q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192zM640 1152h512v128h-512v-128zM1536 -128v1280h32q92 0 158 -66t66 -158v-832q0 -92 -66 -158t-158 -66h-32z" />
-<glyph unicode="&#xf0fb;" horiz-adv-x="1920" d="M0 512v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93l1 -3q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5 t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8z" />
-<glyph unicode="&#xf0fc;" horiz-adv-x="1664" d="M64 1152l32 128h480l32 128h960l32 -192l-64 -32v-800l128 -192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320zM384 768q0 -53 37.5 -90.5t90.5 -37.5h128v384h-256v-256z" />
-<glyph unicode="&#xf0fd;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 192q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45 v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896z" />
-<glyph unicode="&#xf0fe;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 576q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45 v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128z" />
-<glyph unicode="&#xf100;" horiz-adv-x="1024" d="M45 576q0 13 10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23zM429 576q0 13 10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23 l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23z" />
-<glyph unicode="&#xf101;" horiz-adv-x="1024" d="M13 160q0 13 10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23zM397 160q0 13 10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10 l466 -466q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23z" />
-<glyph unicode="&#xf102;" horiz-adv-x="1152" d="M77 224q0 13 10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23zM77 608q0 13 10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23 l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23z" />
-<glyph unicode="&#xf103;" horiz-adv-x="1152" d="M77 672q0 13 10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23zM77 1056q0 13 10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10 l50 -50q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23z" />
-<glyph unicode="&#xf104;" horiz-adv-x="640" d="M45 576q0 13 10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23z" />
-<glyph unicode="&#xf105;" horiz-adv-x="640" d="M13 160q0 13 10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23z" />
-<glyph unicode="&#xf106;" horiz-adv-x="1152" d="M77 352q0 13 10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23z" />
-<glyph unicode="&#xf107;" horiz-adv-x="1152" d="M77 800q0 13 10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23z" />
-<glyph unicode="&#xf108;" horiz-adv-x="1920" d="M0 288v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113zM128 544q0 -13 9.5 -22.5 t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832z" />
-<glyph unicode="&#xf109;" horiz-adv-x="1920" d="M0 96v96h160h1600h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68zM256 416v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113zM384 416q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5 t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-704zM864 112q0 -16 16 -16h160q16 0 16 16t-16 16h-160q-16 0 -16 -16z" />
-<glyph unicode="&#xf10a;" horiz-adv-x="1152" d="M0 160v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-832q-66 0 -113 47t-47 113zM128 288q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960zM512 128 q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf10b;" horiz-adv-x="768" d="M0 128v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90zM96 288q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704zM288 1136 q0 -16 16 -16h160q16 0 16 16t-16 16h-160q-16 0 -16 -16zM304 128q0 -33 23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5z" />
-<glyph unicode="&#xf10c;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273z" />
-<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M0 192v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136z M896 192v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136z" />
-<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M0 832v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136zM896 832v384 q0 80 56 136t136 56h384q80 0 136 -56t56 -136v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136z" />
-<glyph unicode="&#xf110;" horiz-adv-x="1568" d="M0 640q0 66 47 113t113 47t113 -47t47 -113t-47 -113t-113 -47t-113 47t-47 113zM176 1088q0 73 51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5t-51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5zM208 192q0 60 42 102t102 42q59 0 101.5 -42t42.5 -102t-42.5 -102 t-101.5 -42q-60 0 -102 42t-42 102zM608 1280q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136zM672 0q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5zM1136 192q0 46 33 79t79 33t79 -33t33 -79 t-33 -79t-79 -33t-79 33t-33 79zM1168 1088q0 33 23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5t-23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5zM1344 640q0 40 28 68t68 28t68 -28t28 -68t-28 -68t-68 -28t-68 28t-28 68z" />
-<glyph unicode="&#xf111;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5z" />
-<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M0 896q0 26 19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101 t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19l-512 512q-19 19 -19 45z" />
-<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M0 496q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218q0 -87 -27 -168q136 -160 136 -398q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86t-170 -47.5t-171.5 -22t-167 -4.5 q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331zM224 320q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11 q-152 21 -195 21q-118 0 -187 -84t-69 -204zM384 320q0 40 12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82t-12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82zM1024 320q0 40 12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82t-12.5 -82t-43 -76t-72.5 -34t-72.5 34 t-43 76t-12.5 82z" />
-<glyph unicode="&#xf114;" horiz-adv-x="1664" d="M0 224v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158zM128 224q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64 q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960z" />
-<glyph unicode="&#xf115;" horiz-adv-x="1920" d="M0 224v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158zM128 331l256 315q44 53 116 87.5 t140 34.5h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-853zM171 163q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40z " />
-<glyph unicode="&#xf116;" horiz-adv-x="1792" />
-<glyph unicode="&#xf117;" horiz-adv-x="1792" />
-<glyph unicode="&#xf118;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM128 640q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5zM384 896q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5zM402 461q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38 q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5q-37 -121 -138 -195t-228 -74t-228 74t-138 195zM896 896q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5z" />
-<glyph unicode="&#xf119;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM128 640q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5zM384 896q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5zM402 307q37 121 138 195t228 74t228 -74t138 -195q8 -25 -4 -48.5 t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5zM896 896q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5z" />
-<glyph unicode="&#xf11a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM128 640q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5zM384 448q0 26 19 45t45 19h640q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45zM384 896q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5 t-90.5 -37.5t-90.5 37.5t-37.5 90.5zM896 896q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5z" />
-<glyph unicode="&#xf11b;" horiz-adv-x="1920" d="M0 512q0 212 150 362t362 150h896q212 0 362 -150t150 -362t-150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150t-150 362zM192 448q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23v128 q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128zM1152 384q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5zM1408 640q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf11c;" horiz-adv-x="1920" d="M0 128v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5zM128 128h1664v896h-1664v-896zM256 272v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16zM256 528v96 q0 16 16 16h224q16 0 16 -16v-96q0 -16 -16 -16h-224q-16 0 -16 16zM256 784v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16zM512 272v96q0 16 16 16h864q16 0 16 -16v-96q0 -16 -16 -16h-864q-16 0 -16 16zM512 784v96q0 16 16 16h96q16 0 16 -16v-96 q0 -16 -16 -16h-96q-16 0 -16 16zM640 528v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16zM768 784v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16zM896 528v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16z M1024 784v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16zM1152 528v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16zM1280 784v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16zM1408 528v96q0 16 16 16h112v240 q0 16 16 16h96q16 0 16 -16v-352q0 -16 -16 -16h-224q-16 0 -16 16zM1536 272v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16z" />
-<glyph unicode="&#xf11d;" horiz-adv-x="1792" d="M64 1280q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64zM320 320v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86 q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56zM448 426 q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599z" />
-<glyph unicode="&#xf11e;" horiz-adv-x="1792" d="M64 1280q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64zM320 320v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86 q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56zM448 426 q205 96 384 110v192q-181 -16 -384 -117v-185zM448 836q215 111 384 118v197q-172 -8 -384 -126v-189zM832 730h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15 t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2q-23 0 -49 -3v-222zM1280 828q148 -42 384 90v189q-169 -91 -306 -91q-45 0 -78 8v-196z" />
-<glyph unicode="&#xf120;" horiz-adv-x="1664" d="M13 160q0 13 10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23zM640 32v64q0 14 9 23t23 9h960q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-960 q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf121;" horiz-adv-x="1920" d="M45 576q0 13 10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23zM712 -52l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5 l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5zM1293 160q0 13 10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23z" />
-<glyph unicode="&#xf122;" horiz-adv-x="1792" d="M0 896q0 26 19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45l397 -397v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45zM384 896q0 26 19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221 q169 -173 169 -509q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45z" />
-<glyph unicode="&#xf123;" horiz-adv-x="1664" d="M2 900.5q9 27.5 54 34.5l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5z M832 310l59 -31l318 -168l-60 355l-12 66l49 47l257 250l-356 52l-66 10l-30 60l-159 322v-963z" />
-<glyph unicode="&#xf124;" horiz-adv-x="1408" d="M2 561q-5 22 4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5z" />
-<glyph unicode="&#xf125;" horiz-adv-x="1664" d="M0 928v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864 q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23zM512 301l595 595h-595v-595zM557 256h595v595z" />
-<glyph unicode="&#xf126;" horiz-adv-x="1024" d="M0 64q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136 q0 -52 -26 -96.5t-70 -69.5q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136zM96 64q0 -40 28 -68t68 -28t68 28t28 68t-28 68t-68 28t-68 -28t-28 -68zM96 1216q0 -40 28 -68 t68 -28t68 28t28 68t-28 68t-68 28t-68 -28t-28 -68zM736 1088q0 -40 28 -68t68 -28t68 28t28 68t-28 68t-68 28t-68 -28t-28 -68z" />
-<glyph unicode="&#xf127;" horiz-adv-x="1664" d="M0 448q0 14 9 23t23 9h320q14 0 23 -9t9 -23t-9 -23t-23 -9h-320q-14 0 -23 9t-9 23zM16 1088q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56l-239 -18l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68 l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204zM128 32q0 13 9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23zM544 -96v320q0 14 9 23t23 9t23 -9t9 -23v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23zM633 364 l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56zM1056 1184v320q0 14 9 23t23 9t23 -9t9 -23v-320 q0 -14 -9 -23t-23 -9t-23 9t-9 23zM1216 1120q0 13 9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23zM1280 960q0 14 9 23t23 9h320q14 0 23 -9t9 -23t-9 -23t-23 -9h-320q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf128;" horiz-adv-x="1024" d="M96.5 986q-2.5 15 5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5t-10.5 37.5v45q0 83 65 156.5 t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25zM384 40v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28z" />
-<glyph unicode="&#xf129;" horiz-adv-x="640" d="M0 64v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45zM128 1152v192q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-192 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf12a;" horiz-adv-x="640" d="M98 1344q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45zM128 64v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf12b;" d="M5 0v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258zM1013 713q0 64 26 117t65 86.5 t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80h126v-206h-514l-3 27q-4 28 -4 46z " />
-<glyph unicode="&#xf12c;" d="M5 0v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258zM1015 -183q0 64 26 117t65 86.5 t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126v-206h-514l-4 27q-3 45 -3 46z" />
-<glyph unicode="&#xf12d;" horiz-adv-x="1920" d="M1.5 146.5q5.5 37.5 30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5zM128 128h768l336 384h-768z" />
-<glyph unicode="&#xf12e;" horiz-adv-x="1664" d="M0 0v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5 q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124 q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89 q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1z" />
-<glyph unicode="&#xf130;" horiz-adv-x="1152" d="M0 704v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45 t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5zM256 704v512q0 132 94 226t226 94t226 -94t94 -226v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226z" />
-<glyph unicode="&#xf131;" horiz-adv-x="1408" d="M13 64q0 13 10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23t-10 -23l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -221 -147.5 -384.5 t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23zM128 704v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113l-101 -101 q-42 103 -42 214zM384 704v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
-<glyph unicode="&#xf132;" horiz-adv-x="1280" d="M0 576v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150t-33.5 170.5zM640 79 q119 63 213 137q235 184 235 360v640h-448v-1137z" />
-<glyph unicode="&#xf133;" horiz-adv-x="1664" d="M0 -128v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90zM128 -128h1408v1024h-1408v-1024z M384 1088q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288zM1152 1088q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288z" />
-<glyph unicode="&#xf134;" horiz-adv-x="1408" d="M3.5 940q-8.5 25 3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96 q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37 zM384 1344q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf135;" horiz-adv-x="1664" d="M36 464l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85 q-3 -1 -9 -1q-14 0 -23 9l-64 64q-17 19 -5 39zM1248 1088q0 -40 28 -68t68 -28t68 28t28 68t-28 68t-68 28t-68 -28t-28 -68z" />
-<glyph unicode="&#xf136;" horiz-adv-x="1792" d="M0 0l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334z" />
-<glyph unicode="&#xf137;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM346 640q0 -26 19 -45l454 -454q19 -19 45 -19t45 19l102 102q19 19 19 45t-19 45l-307 307l307 307 q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45z" />
-<glyph unicode="&#xf138;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM506 288q0 -26 19 -45l102 -102q19 -19 45 -19t45 19l454 454q19 19 19 45t-19 45l-454 454 q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45z" />
-<glyph unicode="&#xf139;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM250 544q0 -26 19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19l102 102 q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45z" />
-<glyph unicode="&#xf13a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM250 736q0 -26 19 -45l454 -454q19 -19 45 -19t45 19l454 454q19 19 19 45t-19 45l-102 102 q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45z" />
-<glyph unicode="&#xf13b;" horiz-adv-x="1408" d="M0 1408h1408l-128 -1438l-578 -162l-574 162zM262 1114l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674l16 175h-884z" />
-<glyph unicode="&#xf13c;" horiz-adv-x="1792" d="M12 75l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208l59 297h1505l-266 -1333l-804 -267z" />
-<glyph unicode="&#xf13d;" horiz-adv-x="1792" d="M0 0v352q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5 l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30zM832 1280q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf13e;" horiz-adv-x="1152" d="M0 96v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181v-320h736q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28 t-28 68z" />
-<glyph unicode="&#xf140;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM128 640q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5zM256 640q0 212 150 362t362 150t362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362zM384 640q0 -159 112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5zM512 640q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181z" />
-<glyph unicode="&#xf141;" horiz-adv-x="1408" d="M0 608v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68zM512 608v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68zM1024 608v192q0 40 28 68t68 28h192 q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf142;" horiz-adv-x="384" d="M0 96v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68zM0 608v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68zM0 1120v192q0 40 28 68t68 28h192q40 0 68 -28 t28 -68v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf143;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 256q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z M256 575q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10t9 24q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128zM256 959q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128 q13 0 23 10q11 9 9 23q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128z" />
-<glyph unicode="&#xf144;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM512 320q0 -37 32 -56q16 -8 32 -8q17 0 32 9l544 320q32 18 32 55t-32 55l-544 320q-31 19 -64 1 q-32 -19 -32 -56v-640z" />
-<glyph unicode="&#xf145;" horiz-adv-x="1792" d="M54 448.5q0 53.5 37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136t-136 56t-136 -56l-125 126q-37 37 -37 90.5z M342 512q0 -26 19 -45l362 -362q18 -18 45 -18t45 18l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45zM452 512l572 572l316 -316l-572 -572z" />
-<glyph unicode="&#xf146;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 576q0 -26 19 -45t45 -19h896q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128 z" />
-<glyph unicode="&#xf147;" horiz-adv-x="1408" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM128 288q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47 t-47 -113v-832zM256 672v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf148;" horiz-adv-x="1024" d="M3 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18z" />
-<glyph unicode="&#xf149;" horiz-adv-x="1024" d="M3 1261q9 19 29 19h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34z" />
-<glyph unicode="&#xf14a;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM218 640q0 -26 19 -45l358 -358q19 -19 45 -19t45 19l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19 t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45z" />
-<glyph unicode="&#xf14b;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 128h288l544 544l-288 288l-544 -544v-288zM352 320v56l52 52l152 -152l-52 -52h-56v96h-96zM494 494 q-14 13 3 30l291 291q17 17 30 3q14 -13 -3 -30l-291 -291q-17 -17 -30 -3zM864 1024l288 -288l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28z" />
-<glyph unicode="&#xf14c;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM282 320q0 -26 19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59 v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45z" />
-<glyph unicode="&#xf14d;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 448q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5t224 23.5v-160 q0 -42 40 -59q12 -5 24 -5q26 0 45 19l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5z" />
-<glyph unicode="&#xf14e;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM512 241v542l512 256v-542zM640 448l256 128l-256 128v-256z" />
-<glyph unicode="&#xf150;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 160q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5v960q0 13 -9.5 22.5t-22.5 9.5h-960 q-13 0 -22.5 -9.5t-9.5 -22.5v-960zM391 861q17 35 57 35h640q40 0 57 -35q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66z" />
-<glyph unicode="&#xf151;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 160q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5v960q0 13 -9.5 22.5t-22.5 9.5h-960 q-13 0 -22.5 -9.5t-9.5 -22.5v-960zM391 419q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66q-17 -35 -57 -35h-640q-40 0 -57 35z" />
-<glyph unicode="&#xf152;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 160q0 -14 9 -23t23 -9h960q14 0 23 9t9 23v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960z M512 320v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52t-27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57z" />
-<glyph unicode="&#xf153;" horiz-adv-x="1024" d="M0 514v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5 t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5 l12 3l5 2q13 5 26 -2q12 -7 15 -21l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf154;" horiz-adv-x="1024" d="M0 32v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215 h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf155;" horiz-adv-x="1024" d="M52 171l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242 t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48 t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50t53 -63.5t31.5 -76.5t13 -94q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5 t-17.5 18q-17 21 -2 41z" />
-<glyph unicode="&#xf156;" horiz-adv-x="898" d="M0 605v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171 q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22z" />
-<glyph unicode="&#xf157;" horiz-adv-x="1027" d="M4 1360q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103 q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214z" />
-<glyph unicode="&#xf158;" horiz-adv-x="1280" d="M0 256v128q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315t-126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9 h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23zM487 747h320q106 0 171 62t65 162t-65 162t-171 62h-320v-448z" />
-<glyph unicode="&#xf159;" horiz-adv-x="1792" d="M0 672v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111 q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23z M373 896l32 -128h225l35 128h-292zM436 640l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5l81 299h-159zM822 768h139l-35 128h-70zM1118 896l34 -128h230l33 128h-297zM1187 640l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3l78 300h-162z" />
-<glyph unicode="&#xf15a;" horiz-adv-x="1280" d="M56 0l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89 t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200zM522 182q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30t24.5 40t9.5 51q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1 t-47.5 -1v-338zM522 674q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307z" />
-<glyph unicode="&#xf15b;" d="M0 -160v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472z" />
-<glyph unicode="&#xf15c;" d="M0 -160v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM384 160q0 -14 9 -23t23 -9h704q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64zM384 416q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64zM384 672q0 -14 9 -23t23 -9h704q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64zM1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472z" />
-<glyph unicode="&#xf15d;" horiz-adv-x="1664" d="M34 108q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35zM899 768v106h70l230 662h162l230 -662h70v-106h-288v106h75l-47 144h-243l-47 -144h75v-106 h-287zM988 -166l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121v-233h-584v90zM1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18 t-7.5 -29z" />
-<glyph unicode="&#xf15e;" horiz-adv-x="1664" d="M34 108q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35zM899 -150h70l230 662h162l230 -662h70v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287 v106zM988 768v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248v119h121v-233h-584zM1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29 z" />
-<glyph unicode="&#xf160;" horiz-adv-x="1792" d="M34 108q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35zM896 -32q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9 t-9 23v192zM896 288v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23zM896 800v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23zM896 1312v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23 v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf161;" horiz-adv-x="1792" d="M34 108q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35zM896 -32q0 14 9 23t23 9h256q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9 t-9 23v192zM896 288v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23zM896 800v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23zM896 1312v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23 v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf162;" d="M34 108q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35zM946 261q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5q0 -62 -13 -121.5t-41 -114 t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5zM976 1351l192 185h123v-654h165v-114h-469v114h167v432q0 7 0.5 19t0.5 17 v16h-2l-7 -12q-8 -13 -26 -31l-62 -58zM1085 261q0 -57 36.5 -95t104.5 -38q50 0 85 27t35 68q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94z" />
-<glyph unicode="&#xf163;" d="M34 108q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35zM946 1285q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5q0 -62 -13 -121.5t-41 -114 t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5zM976 327l192 185h123v-654h165v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16 h-2l-7 -12q-8 -13 -26 -31l-62 -58zM1085 1285q0 -57 36.5 -95t104.5 -38q50 0 85 27t35 68q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94z" />
-<glyph unicode="&#xf164;" horiz-adv-x="1664" d="M0 64v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45zM128 192q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45zM480 64v641q0 25 18 43.5t43 20.5q24 2 76 59 t101 121q68 87 101 120q18 18 31 48t17.5 48.5t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135 q0 -86 -55 -149q15 -44 15 -76q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5z" />
-<glyph unicode="&#xf165;" horiz-adv-x="1664" d="M0 448q0 -26 19 -45t45 -19h288q26 0 45 19t19 45v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640zM128 960q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45zM480 447v641q0 26 19 44.5t45 19.5q35 1 158 44 q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76q55 -61 55 -149q-1 -78 -57.5 -135t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39 t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121t-76 59q-25 2 -43 20.5t-18 43.5z" />
-<glyph unicode="&#xf166;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM218 366q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73 q20 84 20 260q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5q-20 -87 -20 -260zM300 551v70h232v-70h-80v-423h-74v423h-78zM396 1313l24 -69t23 -69q35 -103 46 -158v-201h74v201l90 296h-75l-51 -195l-53 195 h-78zM542 205v290h66v-270q0 -24 1 -26q1 -15 15 -15q20 0 42 31v280h67v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54zM654 936q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38q-21 -29 -21 -87v-130zM721 923 v156q0 52 32 52t32 -52v-156q0 -51 -32 -51t-32 51zM790 128v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67zM857 200q16 -16 33 -16q29 0 29 49v157q0 50 -29 50q-17 0 -33 -16v-224zM907 893q0 -37 6 -55 q11 -27 43 -27q36 0 77 45v-40h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293zM1037 247v129q0 59 20 86q29 38 80 38t78 -38q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68v-9q0 -29 -2 -43q-3 -22 -15 -40 q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86zM1103 355h66v34q0 51 -33 51t-33 -51v-34z" />
-<glyph unicode="&#xf167;" d="M27 260q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99q-26 112 -26 350zM138 509h105v-569h100v569h107v94h-312 v-94zM266 1536h106l71 -263l68 263h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187zM463 43q0 -49 8 -73q12 -37 58 -37q48 0 102 61v-54h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391zM614 1028v175q0 80 28 117q38 51 105 51 q69 0 106 -51q28 -37 28 -117v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51q-28 38 -28 118zM704 1011q0 -70 43 -70t43 70v210q0 69 -43 69t-43 -69v-210zM798 -60h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89 v-663zM887 36v301q22 22 45 22q39 0 39 -67v-211q0 -67 -39 -67q-23 0 -45 22zM955 971v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75zM1130 100q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54 q2 9 2 58v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51q-28 -37 -28 -116v-173zM1219 245v46q0 68 45 68t45 -68v-46h-90z" />
-<glyph unicode="&#xf168;" horiz-adv-x="1408" d="M5 384q-10 17 0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45l164 -286q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17zM536 539q18 32 531 942q25 45 64 45h241q22 0 31 -15q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37 q-10 -15 -32 -15h-239q-42 0 -66 45z" />
-<glyph unicode="&#xf169;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM227 396q8 -13 24 -13h185q31 0 50 36l199 352q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29 l125 -216v-1l-196 -346q-9 -14 0 -28zM638 516q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1l409 723q8 16 0 28q-7 12 -24 12h-187q-30 0 -49 -35z" />
-<glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M0 640q0 96 1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150t-1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58 t-69.5 123q-14 65 -21.5 147.5t-8.5 136.5t-1 150zM640 320q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54t-30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640z" />
-<glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M64 558l338 271l494 -305l-342 -285zM64 1099l490 319l342 -285l-494 -304zM407 166v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284l147 96v-108l-490 -293v-1l-1 1l-1 -1v1zM896 524l494 305l338 -271l-489 -319zM896 1133l343 285l489 -319l-338 -270z" />
-<glyph unicode="&#xf16c;" horiz-adv-x="1408" d="M0 -255v736h121v-618h928v618h120v-701l-1 -35v-1h-1132l-35 1h-1zM221 -17v151l707 1v-151zM227 243l14 150l704 -65l-13 -150zM270 563l39 146l683 -183l-39 -146zM395 928l77 130l609 -360l-77 -130zM707 1303l125 86l398 -585l-124 -85zM1136 1510l149 26l121 -697 l-149 -26z" />
-<glyph unicode="&#xf16d;" d="M0 69v1142q0 81 58 139t139 58h1142q81 0 139 -58t58 -139v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139zM171 110q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62 q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648zM461 643q0 -124 90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5t-90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5zM1050 1003q0 -29 20 -49t49 -20h174q29 0 49 20t20 49v165q0 28 -20 48.5 t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165z" />
-<glyph unicode="&#xf16e;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM274 640q0 -88 62 -150t150 -62t150 62t62 150t-62 150t-150 62t-150 -62t-62 -150zM838 640q0 -88 62 -150 t150 -62t150 62t62 150t-62 150t-150 62t-150 -62t-62 -150z" />
-<glyph unicode="&#xf170;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM309 384h94l104 160h522l104 -160h94l-459 691zM567 608l201 306l201 -306h-402z" />
-<glyph unicode="&#xf171;" horiz-adv-x="1408" d="M0 1222q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34 t-6 39.5t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158zM173 285l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18t-76.5 27 t-73 43.5t-52 61.5q-25 96 -57 292zM243 1240q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5q-20 27 -56 44.5t-58 22t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43zM481 657q4 -91 77.5 -155t165.5 -56q91 8 152 84 t50 168q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5zM599 710q14 41 52 58q36 18 72.5 12t64 -35.5t27.5 -67.5q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82z" />
-<glyph unicode="&#xf172;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM260 1060q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63 q24 13 39.5 23t31 29t19.5 40q48 267 80 473q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54zM385 384q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71q0 7 5.5 26.5t3 32 t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6zM436 1073q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5t-52.5 16t-54.5 32.5zM607 653q-2 49 25.5 93t72.5 64 q70 31 141.5 -10t81.5 -118q8 -66 -36 -121t-110 -61t-119 40t-56 113zM687.5 660.5q0.5 -52.5 43.5 -70.5q39 -23 81 4t36 72q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5z" />
-<glyph unicode="&#xf173;" horiz-adv-x="1024" d="M78 779v217q91 30 155 84q64 55 103 132q39 78 54 196h219v-388h364v-241h-364v-394q0 -136 14 -172q13 -37 52 -60q50 -31 117 -31q117 0 232 76v-242q-102 -48 -178 -65q-77 -19 -173 -19q-105 0 -186 27q-78 25 -138 75q-58 51 -79 105q-22 54 -22 161v539h-170z" />
-<glyph unicode="&#xf174;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM413 744h127v-404q0 -78 17 -121q17 -42 59 -78q43 -37 104 -57q62 -20 140 -20q67 0 129 14q57 13 134 49v181 q-88 -56 -174 -56q-51 0 -88 23q-29 17 -39 45q-11 30 -11 129v295h274v181h-274v291h-164q-11 -90 -40 -147t-78 -99q-48 -40 -116 -63v-163z" />
-<glyph unicode="&#xf175;" horiz-adv-x="768" d="M3 237q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19t-5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35z" />
-<glyph unicode="&#xf176;" horiz-adv-x="768" d="M3 1043q-8 19 5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19z" />
-<glyph unicode="&#xf177;" horiz-adv-x="1792" d="M64 637q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23z" />
-<glyph unicode="&#xf178;" horiz-adv-x="1792" d="M0 544v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf179;" horiz-adv-x="1408" d="M0 634q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32 q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503zM683 1131q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17z" />
-<glyph unicode="&#xf17a;" horiz-adv-x="1664" d="M0 -27v557h682v-651zM0 614v565l682 94v-659h-682zM757 -131v661h907v-786zM757 614v669l907 125v-794h-907z" />
-<glyph unicode="&#xf17b;" horiz-adv-x="1408" d="M0 337v430q0 42 30 72t73 30q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30t-73 30t-30 73zM241 886q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20l-71 -131q107 -55 171 -153.5t64 -215.5 h-925zM245 184v666h918v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78zM455 1092q0 -16 11 -27.5t27 -11.5t27.5 11.5t11.5 27.5t-11.5 27.5 t-27.5 11.5t-27 -11.5t-11 -27.5zM876 1092q0 -16 11.5 -27.5t27.5 -11.5t27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5zM1203 337v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73z" />
-<glyph unicode="&#xf17c;" d="M11 -115q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48q3 -17 37 -26q20 -6 84.5 -18.5 t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195q-12 112 -16 310q-2 90 24 151.5 t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5 t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13 t16.5 -9.5q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5 q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5zM321 495q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54 t7 -70.5q46 24 7 92q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5 t60 -22.5q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18zM372 630q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12zM603 1190q2 -5 5 -6 q10 0 7 -15q-3 -20 8 -20q3 0 3 3q3 17 -2.5 30t-11.5 15q-9 2 -9 -7zM634 1110q0 12 19 15h10q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5zM721 1122q24 11 32 -2q3 -6 -3 -9q-4 -1 -11.5 6.5t-17.5 4.5zM835 1196l4 -2q14 -4 18 -31q0 -3 8 2l2 3q0 11 -5 19.5t-11 12.5 t-9 3q-14 -1 -7 -7zM851 1381.5q-1 -2.5 3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9zM981 1002q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20q-2 8 -6.5 11.5t-13 5 t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5z" />
-<glyph unicode="&#xf17d;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM112 640q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81t99.5 48l37 13 q4 1 13 3.5t13 4.5q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21zM126 775q302 0 606 80q-120 213 -244 378q-138 -65 -234 -186t-128 -272zM350 134q184 -150 418 -150q132 0 256 52q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5 t-103 -148zM609 1276q1 1 2 1q-1 0 -2 -1zM613 1277q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5l12.5 17.5q-185 164 -433 164q-76 0 -155 -19zM909 797q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5 t36.5 -6t25 -4.5l10 -2q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5zM1007 565q87 -239 128 -469q111 75 185 189.5t96 250.5q-210 60 -409 29z" />
-<glyph unicode="&#xf17e;" d="M0 1024q0 159 112.5 271.5t271.5 112.5q130 0 234 -80q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225 t-55.5 273.5q0 73 16 150q-80 104 -80 234zM376 399q0 -92 122 -157.5t291 -65.5q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12 t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5 q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75z" />
-<glyph unicode="&#xf180;" horiz-adv-x="1664" d="M0 640q0 75 53 128l587 587q53 53 128 53t128 -53l265 -265l-398 -399l-188 188q-42 42 -99 42q-59 0 -100 -41l-120 -121q-42 -40 -42 -99q0 -58 42 -100l406 -408q30 -28 67 -37l6 -4h28q60 0 99 41l619 619l2 -3q53 -53 53 -128t-53 -128l-587 -587 q-52 -53 -127.5 -53t-128.5 53l-587 587q-53 53 -53 128zM302 660q0 21 14 35l121 120q13 15 35 15t36 -15l252 -252l574 575q15 15 36 15t36 -15l120 -120q14 -15 14 -36t-14 -36l-730 -730q-17 -15 -37 -15q-4 0 -6 1q-18 2 -30 14l-407 408q-14 15 -14 36z" />
-<glyph unicode="&#xf181;" d="M0 -64v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM160 192q0 -14 9 -23t23 -9h480q14 0 23 9t9 23v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024zM832 576q0 -14 9 -23t23 -9h480q14 0 23 9t9 23 v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640z" />
-<glyph unicode="&#xf182;" horiz-adv-x="1280" d="M0 480q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192 q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43q-40 0 -68 28t-28 68zM416 1280q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5t-65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5z" />
-<glyph unicode="&#xf183;" horiz-adv-x="1024" d="M0 416v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68z M288 1280q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5t-65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5z" />
-<glyph unicode="&#xf184;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM399.5 766q8.5 -37 24.5 -59l349 -473l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5 t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85z" />
-<glyph unicode="&#xf185;" horiz-adv-x="1792" d="M44 363q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29q-4 -15 -20 -20 l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20zM320 640q0 -117 45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5 t-45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5z" />
-<glyph unicode="&#xf186;" d="M0 640q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298zM128 640q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384z" />
-<glyph unicode="&#xf187;" horiz-adv-x="1792" d="M64 1088v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1536q-26 0 -45 19t-19 45zM128 -64v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM704 704q0 -26 19 -45t45 -19h256 q26 0 45 19t19 45t-19 45t-45 19h-256q-26 0 -45 -19t-19 -45z" />
-<glyph unicode="&#xf188;" horiz-adv-x="1664" d="M32 576q0 26 19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19t19 -45t-19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19 t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45z M512 1152q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5h-640z" />
-<glyph unicode="&#xf189;" horiz-adv-x="1920" d="M-1 1004q0 11 3 16l4 6q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24 q17 19 38 30q53 26 239 24q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5 t13 3t20 0.5l288 2q39 5 64 -2.5t31 -16.5l6 -10q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12 q-30 21 -70 64t-68.5 77.5t-61 58t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211 t-130.5 272q-6 16 -6 27z" />
-<glyph unicode="&#xf18a;" horiz-adv-x="1792" d="M0 391q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5q0 -68 -37 -139.5 t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5zM181 320q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5zM413.5 230.5 q-40.5 92.5 6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5q-45 -102 -158 -150t-224 -12q-107 34 -147.5 126.5zM495 257.5q9 -34.5 43 -50.5t74.5 -2.5t62.5 47.5q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5zM705 399 q-17 -31 13 -45q14 -5 29 0.5t22 18.5q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5zM1165 1274q-6 28 9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158 q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5zM1224 1047q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5t54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37z" />
-<glyph unicode="&#xf18b;" d="M0 638q0 187 83.5 349.5t229.5 269.5t325 137v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495zM398 -34q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211q-171 -94 -368 -94q-196 0 -367 94zM898 909v485q179 -30 325 -137t229.5 -269.5 t83.5 -349.5q0 -280 -181 -495q-204 99 -330.5 306.5t-126.5 459.5z" />
-<glyph unicode="&#xf18c;" horiz-adv-x="1408" d="M0 -211q0 19 13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23 t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89 t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283 q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32z" />
-<glyph unicode="&#xf18d;" horiz-adv-x="1280" d="M21 217v66h1238v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5zM21 354v255h1238v-255h-1238zM21 682v255h1238v-255h-1238zM21 1010v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5v-67h-1238z" />
-<glyph unicode="&#xf18e;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM384 544v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23t-9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf190;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM384 640q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23z" />
-<glyph unicode="&#xf191;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 160q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5v960q0 13 -9.5 22.5t-22.5 9.5h-960 q-13 0 -22.5 -9.5t-9.5 -22.5v-960zM448 640q0 33 27 52l448 320q17 12 37 12q26 0 45 -19t19 -45v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52z" />
-<glyph unicode="&#xf192;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM512 640q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181z" />
-<glyph unicode="&#xf193;" horiz-adv-x="1664" d="M0 320q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5zM416 1348q-2 16 6 42 q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455l198 99l58 -114l-256 -128q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5z" />
-<glyph unicode="&#xf194;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM128 806q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5 q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237q104 139 172.5 292.5t82.5 226.5q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143 q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7z" />
-<glyph unicode="&#xf195;" horiz-adv-x="1152" d="M0 608v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31 l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26z" />
-<glyph unicode="&#xf196;" horiz-adv-x="1408" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM128 288q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47 t-47 -113v-832zM256 672v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf197;" horiz-adv-x="2176" d="M0 576q0 12 38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113q-110 -64 -268 -64h-128v64 h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5zM323 336h29q157 0 273 64h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96zM323 816l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5 t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64h-29zM1739 484l81 -30q68 48 68 122t-68 122l-81 -30q53 -36 53 -92t-53 -92z" />
-<glyph unicode="&#xf198;" horiz-adv-x="1664" d="M0 796q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5 t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72 l-55 163l-153 -53q-29 -9 -50 -9q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5zM620 811l105 -313l310 105l-105 315z" />
-<glyph unicode="&#xf199;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 352q0 -40 28 -68t68 -28h832q40 0 68 28t28 68v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99 q-98 -69 -164 -69t-164 69q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436zM256 928q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13 t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68z" />
-<glyph unicode="&#xf19a;" horiz-adv-x="1792" d="M0 640q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348zM41 640q0 -173 68 -331.5t182.5 -273t273 -182.5t331.5 -68t331.5 68t273 182.5t182.5 273t68 331.5 t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5zM127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM254 1062q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5 q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21t14.5 -24t14 -23q63 -107 63 -212q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15 t-1.5 -18.5t9 -16.5t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5zM679 -97l230 670l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1282 -24l235 678q59 169 59 276q0 42 -6 79 q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5z" />
-<glyph unicode="&#xf19b;" horiz-adv-x="1792" d="M0 455q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360l272 133v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5zM1134 860v172q277 -33 481 -157l140 79l37 -390l-525 114l147 83 q-119 70 -280 99z" />
-<glyph unicode="&#xf19c;" horiz-adv-x="2048" d="M0 -128q0 26 20.5 45t48.5 19h1782q28 0 48.5 -19t20.5 -45v-128h-1920v128zM0 1024v128l960 384l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128zM128 0v64q0 26 20.5 45t48.5 19h59v768h256v-768h128v768h256v-768h128v768h256 v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664z" />
-<glyph unicode="&#xf19d;" horiz-adv-x="2304" d="M0 1024q0 23 22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31t-22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433 q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31zM512 384l18 316l574 -181q22 -7 48 -7t48 7l574 181l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128z" />
-<glyph unicode="&#xf19e;" d="M109 1536q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610l13 -707q-62 11 -105 11 q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287z" />
-<glyph unicode="&#xf1a0;" horiz-adv-x="1280" d="M111 182q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5t-59.5 -93 t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131zM297 228q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13 t99 39t73 73t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5zM403 1222q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5 q53 56 53 159q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160z" />
-<glyph unicode="&#xf1a1;" horiz-adv-x="1984" d="M0 722q0 94 66 160t160 66q83 0 148 -55q248 158 592 164l134 423q4 14 17.5 21.5t28.5 4.5l347 -82q22 50 68.5 81t102.5 31q77 0 131.5 -54.5t54.5 -131.5t-54.5 -132t-131.5 -55q-76 0 -130.5 54t-55.5 131l-315 74l-116 -366q327 -14 560 -166q64 58 151 58 q94 0 160 -66t66 -160q0 -62 -31 -114t-83 -82q5 -33 5 -61q0 -121 -68.5 -230.5t-197.5 -193.5q-125 -82 -285.5 -125.5t-335.5 -43.5q-176 0 -336.5 43.5t-284.5 125.5q-129 84 -197.5 193t-68.5 231q0 29 5 66q-48 31 -77 81.5t-29 109.5zM77 722q0 -67 51 -111 q49 131 180 235q-36 25 -82 25q-62 0 -105.5 -43.5t-43.5 -105.5zM178 465q0 -101 59.5 -194t171.5 -166q116 -75 265.5 -115.5t313.5 -40.5t313.5 40.5t265.5 115.5q112 73 171.5 166t59.5 194t-59.5 193.5t-171.5 165.5q-116 75 -265.5 115.5t-313.5 40.5t-313.5 -40.5 t-265.5 -115.5q-112 -73 -171.5 -165.5t-59.5 -193.5zM555 572q0 57 41.5 98t97.5 41t96.5 -41t40.5 -98q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96zM661 209.5q0 16.5 11 27.5t27 11t27 -11q77 -77 265 -77h2q188 0 265 77q11 11 27 11t27 -11t11 -27.5t-11 -27.5 q-99 -99 -319 -99h-2q-220 0 -319 99q-11 11 -11 27.5zM1153 572q0 57 41.5 98t97.5 41t96.5 -41t40.5 -98q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96zM1555 1350q0 -45 32 -77t77 -32t77 32t32 77t-32 77t-77 32t-77 -32t-32 -77zM1672 843q131 -105 178 -238 q57 46 57 117q0 62 -43.5 105.5t-105.5 43.5q-49 0 -86 -28z" />
-<glyph unicode="&#xf1a2;" d="M0 193v894q0 133 94 227t226 94h896q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227zM155 709q0 -37 19.5 -67.5t52.5 -45.5q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54 q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43 q-51 0 -87 -36.5t-36 -87.5zM493 613q0 37 26 63t63 26t63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64zM560 375q0 11 8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18z M882 613q0 37 26 63t63 26t63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64zM1143 1120q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21q-29 0 -50 21t-21 50z" />
-<glyph unicode="&#xf1a3;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM320 502q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14 q19 0 32.5 -14t13.5 -33v-54l60 -28l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122zM806 500q0 -80 58 -137t139 -57t138.5 57t57.5 139v122h-150v-126q0 -20 -13.5 -33.5t-33.5 -13.5 q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123z" />
-<glyph unicode="&#xf1a4;" horiz-adv-x="1920" d="M0 336v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58l-131 61v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5zM1062 332 v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275h328v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5z" />
-<glyph unicode="&#xf1a5;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM64 640h704v-704h480q93 0 158.5 65.5t65.5 158.5v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480z " />
-<glyph unicode="&#xf1a6;" horiz-adv-x="2048" d="M0 271v697h328v286h204v-983h-532zM205 435h123v369h-123v-369zM614 271h205v697h-205v-697zM614 1050h205v204h-205v-204zM901 26v163h328v82h-328v697h533v-942h-533zM1106 435h123v369h-123v-369zM1516 26v163h327v82h-327v697h532v-942h-532zM1720 435h123v369h-123 v-369z" />
-<glyph unicode="&#xf1a7;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM293 388l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229t-88.5 229t-213.5 95q-74 0 -141 -36h-186v-840z M504 804v277q28 17 70 17q53 0 91 -45t38 -109t-38 -109.5t-91 -45.5q-43 0 -70 15zM636 -39l211 41v206q51 -19 117 -19q125 0 213 95t88 229t-88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101v-636zM847 377v277q28 17 70 17q53 0 91 -45.5t38 -109.5 t-38 -109t-91 -45q-43 0 -70 15z" />
-<glyph unicode="&#xf1a8;" horiz-adv-x="2038" d="M41 455q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80 t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5l1 -21q75 3 143.5 -20.5 t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14q6 -5 28 -23.5t25.5 -22t19 -18 t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63 t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27zM764 676q10 1 32.5 7t34.5 6q19 0 35 -10l-96 -20zM822 568l48 12l109 -177l-73 -48zM859 884q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1 v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5 t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43zM1061 45h31l10 -83l-41 -12v95zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM1116 29 q21 2 60.5 8.5t72 10t60.5 3.5h14q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13t-54 -9.5t-53.5 -7.5t-32 -4.5zM1947 1528l1 3l2 4l-1 -5zM1950 1535v1v-1zM1950 1535l1 1z" />
-<glyph unicode="&#xf1a9;" d="M0 520q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5 t19.5 -177.5q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302zM333 256q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5zM685.5 -76q-0.5 -10 7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5 q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16zM852 31q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5 t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10q-29 -12 -78 -56q-26 -24 -12 -44z" />
-<glyph unicode="&#xf1aa;" d="M0 78q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160l151 -152l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5 t-60 145.5zM2 1202q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5t149.5 -87.5l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5 q-70 15 -115 71t-45 129zM446 803l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126t135.5 51q85 0 145 -60.5t60 -145.5q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152 l-160 -160zM776 793l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5q76 -11 126.5 -68.5t50.5 -134.5q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30 l-152 152z" />
-<glyph unicode="&#xf1ab;" d="M0 -16v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5q20 0 20 -21v-418l147 -47v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3zM39 15l694 232v1032l-694 -233v-1031zM147 293q6 4 82 92 q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8 t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110 q-4 -2 -19.5 -4t-18.5 0zM268 933l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41zM310 -116q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11q73 -37 159.5 -61.5t157.5 -24.5 q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5l-43 73l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16zM777 1294l573 -184v380zM885 453l102 -31l45 110l211 -65l37 -135l102 -31l-181 657l-100 31z M1071 630l76 185l63 -227z" />
-<glyph unicode="&#xf1ac;" horiz-adv-x="1792" d="M0 -96v1088q0 66 47 113t113 47h128q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113zM512 -96v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-163q58 -34 93 -93t35 -128v-768q0 -106 -75 -181 t-181 -75h-864q-66 0 -113 47t-47 113zM640 896h896v256h-160q-40 0 -68 28t-28 68v160h-640v-512zM736 0q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128zM736 256q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9 h-128q-14 0 -23 -9t-9 -23v-128zM736 512q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128zM992 0q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128zM992 256q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128zM992 512q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128zM1248 0q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23 v-128zM1248 256q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128zM1248 512q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128z" />
-<glyph unicode="&#xf1ad;" d="M0 -192v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45zM256 160q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM256 416q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM256 672q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM256 928q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM256 1184q0 -14 9 -23 t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM512 96v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23zM512 416q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64zM512 672q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM512 928q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM512 1184q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM768 416q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM768 672q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM768 928q0 -14 9 -23 t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM768 1184q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM1024 160q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64zM1024 416q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM1024 672q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM1024 928q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM1024 1184q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64z" />
-<glyph unicode="&#xf1ae;" horiz-adv-x="1280" d="M64 1056q0 40 28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68zM416 1152q0 93 65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5t-65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5z" />
-<glyph unicode="&#xf1b0;" horiz-adv-x="1664" d="M0 724q0 80 42 139.5t119 59.5q76 0 141.5 -55.5t100.5 -134t35 -152.5q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152zM256 19q0 86 56 191.5t139.5 192.5t187.5 146t193 59q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45 t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146zM333 1163q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151zM884 1064 q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5q-61 0 -105 39t-63 92.5t-19 113.5zM1226 581q0 74 35 152.5t100.5 134t141.5 55.5q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5 q-77 0 -119 59t-42 139z" />
-<glyph unicode="&#xf1b1;" horiz-adv-x="768" d="M64 1008q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5z" />
-<glyph unicode="&#xf1b2;" horiz-adv-x="1792" d="M0 256v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65zM134 1026l698 -254l698 254l-698 254zM896 -93l640 349v636l-640 -233v-752z" />
-<glyph unicode="&#xf1b3;" horiz-adv-x="2304" d="M0 96v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70v-400l434 -186q36 -16 57 -48t21 -70v-416q0 -36 -19 -67t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4 l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67zM172 531l404 -173l404 173l-404 173zM640 -96l384 192v314l-384 -164v-342zM647 1219l441 -189l441 189l-441 189zM1152 651l384 165v266l-384 -164v-267zM1196 531l404 -173l404 173l-404 173zM1664 -96 l384 192v314l-384 -164v-342z" />
-<glyph unicode="&#xf1b4;" horiz-adv-x="2048" d="M0 22v1260h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5 t45.5 113.5q0 144 -190 144h-260v-294zM1137 477q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658q0 -111 57.5 -171.5t166.5 -60.5q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347zM1337 1073h511v124 h-511v-124zM1388 576h408q-18 195 -200 195q-90 0 -146 -52.5t-62 -142.5z" />
-<glyph unicode="&#xf1b5;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM128 254h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5t-56.5 60.5t-79 29.5 t-97 8.5h-371v-787zM301 388v217h189q124 0 124 -113q0 -104 -128 -104h-185zM301 723v184h163q119 0 119 -90q0 -94 -106 -94h-176zM838 538q0 -135 79 -217t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20q-68 0 -104 38t-36 107h411q1 10 1 30 q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216zM964 911v77h319v-77h-319zM996 600q4 56 39 89t91 33q113 0 124 -122h-254z" />
-<glyph unicode="&#xf1b6;" horiz-adv-x="2048" d="M0 764q0 86 61 146.5t146 60.5q73 0 130 -46t73 -117l783 -315q49 29 106 29q14 0 21 -1l173 248q1 114 82 194.5t195 80.5q115 0 196.5 -81t81.5 -196t-81.5 -196.5t-196.5 -81.5l-265 -194q-8 -80 -67.5 -133.5t-138.5 -53.5q-73 0 -130 46t-73 117l-783 315 q-51 -30 -106 -30q-85 0 -146 61t-61 147zM55 764q0 -64 44.5 -108.5t107.5 -44.5q11 0 33 4l-64 26q-33 14 -52.5 44.5t-19.5 66.5q0 50 35.5 85.5t85.5 35.5q20 0 41 -8v1l76 -31q-20 37 -56.5 59t-78.5 22q-63 0 -107.5 -44.5t-44.5 -107.5zM1164 244q19 -37 55.5 -59 t79.5 -22q63 0 107.5 44.5t44.5 107.5t-44.5 108t-107.5 45q-13 0 -33 -4q2 -1 20 -8t21.5 -8.5t18.5 -8.5t19 -10t16 -11t15.5 -13.5t11 -14.5t10 -18t5 -21t2.5 -25q0 -50 -35.5 -85.5t-85.5 -35.5q-14 0 -31.5 4.5t-29 9t-31.5 13.5t-28 12zM1584 767q0 -77 54.5 -131.5 t131.5 -54.5t132 54.5t55 131.5t-55 131.5t-132 54.5q-76 0 -131 -54.5t-55 -131.5zM1623 767q0 62 43.5 105.5t104.5 43.5t105 -44t44 -105t-43.5 -104.5t-105.5 -43.5q-61 0 -104.5 43.5t-43.5 104.5z" />
-<glyph unicode="&#xf1b7;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM128 693q0 -53 38 -91t92 -38q36 0 66 18l489 -197q10 -44 45.5 -73t81.5 -29q50 0 86.5 34t41.5 83l167 122 q71 0 122 50.5t51 122.5t-51 123t-122 51q-72 0 -122.5 -50.5t-51.5 -121.5l-108 -155q-2 0 -6.5 0.5t-6.5 0.5q-35 0 -67 -19l-489 197q-10 44 -45.5 73t-80.5 29q-54 0 -92 -38t-38 -92zM162 693q0 40 28 68t68 28q27 0 49.5 -14t34.5 -37l-48 19q-29 11 -56.5 -2 t-38.5 -41q-12 -29 -0.5 -57t39.5 -40v-1l40 -16q-14 -2 -20 -2q-40 0 -68 27.5t-28 67.5zM855 369q5 -2 47 -19q29 -12 58 0.5t41 41.5q11 29 -1 57.5t-41 40.5l-40 16q14 2 21 2q39 0 67 -27.5t28 -67.5t-28 -67.5t-67 -27.5q-59 0 -85 51zM1118 695q0 48 34 82t83 34 q48 0 82 -34t34 -82t-34 -82t-82 -34q-49 0 -83 34t-34 82zM1142 696q0 -39 27.5 -66t65.5 -27t65.5 27t27.5 66q0 38 -27.5 65.5t-65.5 27.5t-65.5 -27.5t-27.5 -65.5z" />
-<glyph unicode="&#xf1b8;" horiz-adv-x="1792" d="M16 970l433 -17l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188zM270.5 158q-3.5 28 4 65t12 55t21.5 64t19 53q78 -12 509 -28l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5 q-11 27 -14.5 55zM294 1124l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5t36 -39.5t32 -35q-47 -63 -265 -435l-317 187zM782 1524l405 -1q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190l142 83l-220 -373l-419 20l151 86q-34 89 -75 166 t-75.5 123.5t-64.5 80t-47 46.5zM953 197l211 362l7 -173q170 -16 283 -5t170 33l56 22l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164zM1218 847l313 195l19 11l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22 t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436z" />
-<glyph unicode="&#xf1b9;" horiz-adv-x="1984" d="M0 160v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h704q98 0 179 -63.5t104 -157.5l105 -419h28q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-128v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-928v-128q0 -80 -56 -136 t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23zM160 448q0 -66 47 -113t113 -47t113 47t47 113t-47 113t-113 47t-113 -47t-47 -113zM516 768h952l-89 357q-2 8 -14 17.5t-21 9.5h-704q-9 0 -21 -9.5t-14 -17.5zM1472 448q0 -66 47 -113t113 -47t113 47t47 113 t-47 113t-113 47t-113 -47t-47 -113z" />
-<glyph unicode="&#xf1ba;" horiz-adv-x="1984" d="M0 32v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h64q98 0 179 -63.5t104 -157.5l105 -419h28q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-128v-64q0 -80 -56 -136t-136 -56 t-136 56t-56 136v64h-928v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23zM160 320q0 -66 47 -113t113 -47t113 47t47 113t-47 113t-113 47t-113 -47t-47 -113zM516 640h952l-89 357q-2 8 -14 17.5t-21 9.5h-704q-9 0 -21 -9.5t-14 -17.5zM1472 320 q0 -66 47 -113t113 -47t113 47t47 113t-47 113t-113 47t-113 -47t-47 -113z" />
-<glyph unicode="&#xf1bb;" d="M32 64q0 26 19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45t-19 -45t-45 -19 h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf1bc;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM237 886q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37q159 0 309.5 -34t253.5 -95q21 -12 40 -12 q29 0 50.5 20.5t21.5 51.5q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5zM289 637q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5q0 40 -35 61 q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64zM321 406q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52z" />
-<glyph unicode="&#xf1bd;" d="M0 11v1258q0 58 40.5 98.5t98.5 40.5h1258q58 0 98.5 -40.5t40.5 -98.5v-1258q0 -58 -40.5 -98.5t-98.5 -40.5h-1258q-58 0 -98.5 40.5t-40.5 98.5zM71 11q0 -28 20 -48t48 -20h1258q28 0 48 20t20 48v1258q0 28 -20 48t-48 20h-1258q-28 0 -48 -20t-20 -48v-1258z M121 11v141l711 195l-212 439q4 1 12 2.5t12 1.5q170 32 303.5 21.5t221 -46t143.5 -94.5q27 -28 -25 -42q-64 -16 -256 -62l-97 198q-111 7 -240 -16l188 -387l533 145v-496q0 -7 -5.5 -12.5t-12.5 -5.5h-1258q-7 0 -12.5 5.5t-5.5 12.5zM121 709v560q0 7 5.5 12.5 t12.5 5.5h1258q7 0 12.5 -5.5t5.5 -12.5v-428q-85 30 -188 52q-294 64 -645 12l-18 -3l-65 134h-233l85 -190q-132 -51 -230 -137zM246 413q-24 203 166 305l129 -270l-255 -61q-14 -3 -26 4.5t-14 21.5z" />
-<glyph unicode="&#xf1be;" horiz-adv-x="2304" d="M0 405l17 128q2 9 9 9t9 -9l20 -128l-20 -126q-2 -9 -9 -9t-9 9zM79 405l23 207q0 9 9 9q8 0 10 -9l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10zM169 405l21 245q2 12 12 12q11 0 11 -12l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11zM259 405l21 252q0 13 13 13 q12 0 14 -13l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13zM350 405l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5zM401 159zM442 405l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5l21 -380l-21 -246q0 -7 -5 -12.5 t-12 -5.5q-16 0 -18 18zM534 403l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19zM628 405l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5l18 -506l-18 -242q-2 -21 -22 -21q-19 0 -21 21zM723 405l14 -241 q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17zM784 164zM817 405l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18zM913 404l12 492q1 12 9 20t19 8t18.5 -8 t8.5 -20l14 -492l-14 -236q0 -11 -8 -19t-19 -8t-19 8t-9 19zM1010 405q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11q11 0 20 9q9 7 9 20l1 24l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6zM1079 169zM1103 404l12 636v3q2 15 12 24q9 7 20 7 q8 0 15 -5q14 -8 16 -26l14 -639l-14 -231q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114zM1204 174v899q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22z" />
-<glyph unicode="&#xf1c0;" d="M0 0v170q119 -84 325 -127t443 -43t443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128zM0 384v170q119 -84 325 -127t443 -43t443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128zM0 768 v170q119 -84 325 -127t443 -43t443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128zM0 1152v128q0 69 103 128t280 93.5t385 34.5t385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128z" />
-<glyph unicode="&#xf1c1;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM257 60q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4 q52 85 107 197q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38 q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83z M714 842q1 7 7 44q0 3 7 43q1 4 4 8q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2q-15 -42 -2 -132zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1098 353q76 -28 124 -28q14 0 18 1q0 1 -2 3q-24 24 -140 24z" />
-<glyph unicode="&#xf1c2;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM233 661h70l164 -661h159l128 485q7 20 10 46q2 16 2 24 h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21q-2 26 -7 46l-99 438h90v107h-300v-107zM1024 1024h376 q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
-<glyph unicode="&#xf1c3;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM429 0h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4 h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107h-290v-107h68l189 -272l-194 -283h-68v-106zM1024 1024h376 q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
-<glyph unicode="&#xf1c4;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM416 0h327v106h-93v167h137q76 0 118 15q67 23 106.5 87 t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92v-106zM650 386v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15h-119zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
-<glyph unicode="&#xf1c5;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM256 0v192l192 192l128 -128l384 384l320 -320v-320 h-1024zM256 704q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
-<glyph unicode="&#xf1c6;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536zM384 192q0 25 8 52q21 63 120 396 v128h128v-128h79q22 0 39 -13t23 -34l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5zM512 192q0 -26 37.5 -45t90.5 -19t90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45zM512 896h128v128h-128v-128zM512 1152h128v128h-128v-128 zM640 768h128v128h-128v-128zM640 1024h128v128h-128v-128zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
-<glyph unicode="&#xf1c7;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM256 288v192q0 14 9 23t23 9h131l166 167q16 15 35 7 q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23zM762 206.5q1 -26.5 20 -44.5q20 -17 44 -17q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5z M973.5 54.5q2.5 -26.5 23.5 -42.5q18 -15 40 -15q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
-<glyph unicode="&#xf1c8;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM256 256v384q0 52 38 90t90 38h384q52 0 90 -38t38 -90 v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90zM960 403v90l265 266q9 9 23 9q4 0 12 -2q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
-<glyph unicode="&#xf1c9;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM254 429q-14 19 0 38l226 301q8 11 21 12.5t24 -6.5 l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5zM636 43l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5l-63 10q-13 2 -20.5 13t-5.5 24zM947.5 181 q-1.5 13 6.5 24l182 243l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5l226 -301q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
-<glyph unicode="&#xf1ca;" d="M39 1286h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132 t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390z" />
-<glyph unicode="&#xf1cb;" horiz-adv-x="1792" d="M0 367v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64v-546q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64zM154 511l193 129l-193 129v-258zM216 367l603 -402v359l-334 223zM216 913l269 -180l334 223v359zM624 640 l272 -182l272 182l-272 182zM973 -35l603 402l-269 180l-334 -223v-359zM973 956l334 -223l269 180l-603 402v-359zM1445 640l193 -129v258z" />
-<glyph unicode="&#xf1cc;" horiz-adv-x="2048" d="M0 407q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5 h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55t121.5 -21 q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5t-85 -189.5z " />
-<glyph unicode="&#xf1cd;" horiz-adv-x="1792" d="M0 640q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348zM128 640q0 -190 90 -361l194 194q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361zM512 640 q0 -159 112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5zM535 -38q171 -90 361 -90t361 90l-194 194q-82 -28 -167 -28t-167 28zM535 1318l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90t-361 -90z M1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
-<glyph unicode="&#xf1ce;" horiz-adv-x="1792" d="M0 640q0 222 101 414.5t276.5 317t390.5 155.5v-260q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v260q215 -31 390.5 -155.5t276.5 -317t101 -414.5 q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348z" />
-<glyph unicode="&#xf1d0;" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
-<glyph unicode="&#xf1d1;" horiz-adv-x="1792" d="M0 640q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348zM44 640q0 -173 67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331 t-67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331zM87 640q0 205 98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385zM206 217l58 34q29 -49 73 -99 l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13v-66q-208 6 -385 109.5t-283 275.5zM207 1063q106 172 282 275.5t385 109.5v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98zM415 805q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10 t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162q-67 77 -98 169l232 80q-14 42 -14 85t14 85zM918 -102 q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99l58 -34q-106 -172 -283 -275.5t-385 -109.5v66zM918 1382v66q209 -6 385 -109.5t282 -275.5l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13zM1516 428q36 103 36 212q0 112 -35 212l82 28 q-19 56 -49 112l57 33q98 -180 98 -385t-98 -385l-57 33q27 52 49 112z" />
-<glyph unicode="&#xf1d2;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 218q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5 t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85q0 -53 41 -77v-3q-113 -37 -113 -139zM382 225q0 64 98 64q102 0 102 -61q0 -66 -93 -66 q-107 0 -107 63zM395 693q0 90 77 90q36 0 55 -25.5t19 -63.5q0 -85 -74 -85q-77 0 -77 84zM755 1072q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392q0 -50 -3 -75z M966 771q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117z" />
-<glyph unicode="&#xf1d3;" horiz-adv-x="1792" d="M68 7q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47q98 0 218 47v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58q0 -31 22.5 -51.5t58 -32 t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5zM272 18q0 -101 172 -101q151 0 151 105q0 100 -165 100q-158 0 -158 -104zM293 775q0 -135 124 -135q119 0 119 137q0 61 -30 102t-89 41 q-124 0 -124 -145zM875 1389q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5t-39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5zM901 220q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134h-222zM1217 901v190h96v76q0 54 -6 89h227q-6 -41 -6 -165 h171v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6z" />
-<glyph unicode="&#xf1d4;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM368 1135l323 -589v-435h134v436l343 588h-150q-21 -39 -63.5 -118.5t-68 -128.5t-59.5 -118.5t-60 -128.5h-3 q-21 48 -44.5 97t-52 105.5t-46.5 92t-54 104.5t-49 95h-150z" />
-<glyph unicode="&#xf1d5;" horiz-adv-x="1280" d="M57 953q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5t-78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153 t-153 102t-186 38t-186 -38t-153 -102t-102 -153t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265zM113.5 38.5q10.5 121.5 29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5t136.5 -56.5 t56.5 -136.5t-57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5z" />
-<glyph unicode="&#xf1d6;" horiz-adv-x="1792" d="M18 264q0 275 252 466q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5 t3.5 -5t2 -3.5q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9 t-98 20t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20 q-18 -41 -54.5 -74.5t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100z" />
-<glyph unicode="&#xf1d7;" horiz-adv-x="2048" d="M0 858q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490z M380 1075q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5t-25 66t-66 25q-43 0 -76 -25.5t-33 -65.5zM816 404q0 143 81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109q-150 -37 -218 -37 q-169 0 -311 70.5t-223.5 191.5t-81.5 264zM888 1075q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5t-24.5 66t-65.5 25q-43 0 -76 -25.5t-33 -65.5zM1160 568q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5 t-22.5 -49.5zM1559 568q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5z" />
-<glyph unicode="&#xf1d8;" horiz-adv-x="1792" d="M0 508q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55z" />
-<glyph unicode="&#xf1d9;" horiz-adv-x="1792" d="M0 508q-3 39 32 59l1664 960q35 21 68 -2q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55zM209 522l336 -137l863 639l-478 -797l492 -201 l221 1323z" />
-<glyph unicode="&#xf1da;" d="M0 832v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298t-61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12 q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45zM512 480v64q0 14 9 23t23 9h224v352 q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf1db;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM128 640q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5z" />
-<glyph unicode="&#xf1dc;" horiz-adv-x="1792" d="M62 1338q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5 t45 -15t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18 q-15 10 -45 12t-53 2t-41 14t-18 45z" />
-<glyph unicode="&#xf1dd;" horiz-adv-x="1280" d="M24 926q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108 q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179q-64 117 -64 259z" />
-<glyph unicode="&#xf1de;" d="M0 736v64q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-64q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM128 -96v672h256v-672q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM128 960v416q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-416h-256zM512 224v64q0 40 28 68 t68 28h320q40 0 68 -28t28 -68v-64q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM640 64h256v-160q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v160zM640 448v928q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-928h-256zM1024 992v64q0 40 28 68t68 28h320q40 0 68 -28 t28 -68v-64q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM1152 -96v928h256v-928q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM1152 1216v160q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-160h-256z" />
-<glyph unicode="&#xf1e0;" d="M0 640q0 133 93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86q133 0 226.5 -93.5t93.5 -226.5 t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5z" />
-<glyph unicode="&#xf1e1;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 640q0 -88 62.5 -150.5t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5 t150.5 62.5t62.5 150.5t-62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5z" />
-<glyph unicode="&#xf1e2;" horiz-adv-x="1792" d="M0 448q0 143 55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68l243 244l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5 t-225 150t-150 225t-55.5 273.5zM170 615q10 -24 35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49t-34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49zM1376 1472q0 13 9 23q10 9 23 9t23 -9l90 -91q10 -9 10 -22.5t-10 -22.5 q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23zM1536 1408v96q0 14 9 23t23 9t23 -9t9 -23v-96q0 -14 -9 -23t-23 -9t-23 9t-9 23zM1605 1242.5q0 13.5 10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5z M1605 1381.5q0 13.5 10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5zM1632 1312q0 14 9 23t23 9h96q14 0 23 -9t9 -23t-9 -23t-23 -9h-96q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf1e3;" horiz-adv-x="1792" />
-<glyph unicode="&#xf1e4;" horiz-adv-x="1792" />
-<glyph unicode="&#xf1e5;" horiz-adv-x="1792" />
-<glyph unicode="&#xf1e6;" horiz-adv-x="1792" />
-<glyph unicode="&#xf1e7;" horiz-adv-x="1792" />
-<glyph unicode="&#xf1e8;" horiz-adv-x="1792" />
-<glyph unicode="&#xf1e9;" horiz-adv-x="1792" />
-<glyph unicode="&#xf1ea;" horiz-adv-x="1792" />
-<glyph unicode="&#xf1eb;" horiz-adv-x="1792" />
-<glyph unicode="&#xf1ec;" horiz-adv-x="1792" />
-<glyph unicode="&#xf1ed;" horiz-adv-x="1792" />
-<glyph unicode="&#xf1ee;" horiz-adv-x="1792" />
-<glyph unicode="&#xf500;" horiz-adv-x="1792" />
-<glyph horiz-adv-x="1792" />
-<glyph horiz-adv-x="1792" />
-<glyph horiz-adv-x="1792" />
-<glyph horiz-adv-x="1792" />
-<glyph horiz-adv-x="1792" />
-<glyph horiz-adv-x="1792" />
-<glyph horiz-adv-x="1792" />
-<glyph horiz-adv-x="1792" />
-<glyph horiz-adv-x="1792" />
-<glyph horiz-adv-x="1792" />
-<glyph horiz-adv-x="1792" />
-<glyph horiz-adv-x="1792" />
-<glyph horiz-adv-x="1792" />
-<glyph horiz-adv-x="1792" />
-</font>
-</defs></svg> 
\ No newline at end of file
diff --git a/site/src/site/assets/fonts/fontawesome-webfont.ttf b/site/src/site/assets/fonts/fontawesome-webfont.ttf
deleted file mode 100644
index 5cd6cff..0000000
--- a/site/src/site/assets/fonts/fontawesome-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/fonts/fontawesome-webfont.woff b/site/src/site/assets/fonts/fontawesome-webfont.woff
deleted file mode 100644
index 9eaecb3..0000000
--- a/site/src/site/assets/fonts/fontawesome-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/asf_logo.png b/site/src/site/assets/img/asf_logo.png
deleted file mode 100644
index b20bb7f..0000000
--- a/site/src/site/assets/img/asf_logo.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/books/Kousen-MJG.png b/site/src/site/assets/img/books/Kousen-MJG.png
deleted file mode 100644
index 1ec8359..0000000
--- a/site/src/site/assets/img/books/Kousen-MJG.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/books/g2cook.jpg b/site/src/site/assets/img/books/g2cook.jpg
deleted file mode 100644
index 53dcbbd..0000000
--- a/site/src/site/assets/img/books/g2cook.jpg
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/books/gdsl.jpg b/site/src/site/assets/img/books/gdsl.jpg
deleted file mode 100644
index 7b486c6..0000000
--- a/site/src/site/assets/img/books/gdsl.jpg
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/books/ggood.jpg b/site/src/site/assets/img/books/ggood.jpg
deleted file mode 100644
index c638c61..0000000
--- a/site/src/site/assets/img/books/ggood.jpg
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/books/learning_groovy.jpg b/site/src/site/assets/img/books/learning_groovy.jpg
deleted file mode 100644
index f5ffd87..0000000
--- a/site/src/site/assets/img/books/learning_groovy.jpg
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/books/practical-grails-3-book-cover.png b/site/src/site/assets/img/books/practical-grails-3-book-cover.png
deleted file mode 100644
index 46825bf..0000000
--- a/site/src/site/assets/img/books/practical-grails-3-book-cover.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/books/regina.png b/site/src/site/assets/img/books/regina.png
deleted file mode 100644
index 38fba5a..0000000
--- a/site/src/site/assets/img/books/regina.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/books/vslg2.jpg b/site/src/site/assets/img/books/vslg2.jpg
deleted file mode 100644
index 399f787..0000000
--- a/site/src/site/assets/img/books/vslg2.jpg
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/books/weissmann_groovy_grails.png b/site/src/site/assets/img/books/weissmann_groovy_grails.png
deleted file mode 100644
index 4fd63e2..0000000
--- a/site/src/site/assets/img/books/weissmann_groovy_grails.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/confs/g3summit2016.png b/site/src/site/assets/img/confs/g3summit2016.png
deleted file mode 100644
index b043aa0..0000000
--- a/site/src/site/assets/img/confs/g3summit2016.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/confs/gr8confeu.png b/site/src/site/assets/img/confs/gr8confeu.png
deleted file mode 100644
index 0456dd1..0000000
--- a/site/src/site/assets/img/confs/gr8confeu.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/confs/gr8confin.png b/site/src/site/assets/img/confs/gr8confin.png
deleted file mode 100644
index 0c4573d..0000000
--- a/site/src/site/assets/img/confs/gr8confin.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/confs/gr8confus.png b/site/src/site/assets/img/confs/gr8confus.png
deleted file mode 100644
index 03a4e7c..0000000
--- a/site/src/site/assets/img/confs/gr8confus.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/confs/greach.png b/site/src/site/assets/img/confs/greach.png
deleted file mode 100644
index 909cd05..0000000
--- a/site/src/site/assets/img/confs/greach.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/courses/groovy-course-cover.png b/site/src/site/assets/img/courses/groovy-course-cover.png
deleted file mode 100644
index dec9ec4..0000000
--- a/site/src/site/assets/img/courses/groovy-course-cover.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/ecosystem/beakerx.png b/site/src/site/assets/img/ecosystem/beakerx.png
deleted file mode 100644
index a88bf0c..0000000
--- a/site/src/site/assets/img/ecosystem/beakerx.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/ecosystem/geb.png b/site/src/site/assets/img/ecosystem/geb.png
deleted file mode 100644
index b451961..0000000
--- a/site/src/site/assets/img/ecosystem/geb.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/ecosystem/gpars.png b/site/src/site/assets/img/ecosystem/gpars.png
deleted file mode 100644
index 9079b7d..0000000
--- a/site/src/site/assets/img/ecosystem/gpars.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/ecosystem/gradle.png b/site/src/site/assets/img/ecosystem/gradle.png
deleted file mode 100644
index d6faf67..0000000
--- a/site/src/site/assets/img/ecosystem/gradle.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/ecosystem/grails.png b/site/src/site/assets/img/ecosystem/grails.png
deleted file mode 100644
index 9e46aa8..0000000
--- a/site/src/site/assets/img/ecosystem/grails.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/ecosystem/griffon.png b/site/src/site/assets/img/ecosystem/griffon.png
deleted file mode 100644
index 407b401..0000000
--- a/site/src/site/assets/img/ecosystem/griffon.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/ecosystem/micronaut.png b/site/src/site/assets/img/ecosystem/micronaut.png
deleted file mode 100644
index e672b86..0000000
--- a/site/src/site/assets/img/ecosystem/micronaut.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/ecosystem/ratpack.png b/site/src/site/assets/img/ecosystem/ratpack.png
deleted file mode 100644
index cbab1d8..0000000
--- a/site/src/site/assets/img/ecosystem/ratpack.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/ecosystem/sdkman.png b/site/src/site/assets/img/ecosystem/sdkman.png
deleted file mode 100644
index 0b82592..0000000
--- a/site/src/site/assets/img/ecosystem/sdkman.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/favicon.ico b/site/src/site/assets/img/favicon.ico
deleted file mode 100644
index 2d6c529..0000000
--- a/site/src/site/assets/img/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/groovy-logo-black.svg b/site/src/site/assets/img/groovy-logo-black.svg
deleted file mode 100644
index 410b3d2..0000000
--- a/site/src/site/assets/img/groovy-logo-black.svg
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   version="1.1"
-   width="1000"
-   height="499"
-   id="svg3944">
-  <defs
-     id="defs3946" />
-  <metadata
-     id="metadata3949">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     transform="translate(-35.396599,164.8432)"
-     id="layer1">
-    <path
-       d="m 535.2694,-164.8432 c 0,0 -70.08429,116.134127 -103.38337,172.6061967 -6.4281,2.4088603 -7.14247,1.73215 -14.19486,8.6380303 -17.0619,-19.5616103 -37.36994,-1.7231 -42.83897,9.2036 C 372.47507,1.9707367 368.54798,1.9596267 363.2521,-3.3430333 366.31133,-24.016473 376.40683,-57.706575 353.17832,-81.856483 308.2561,-112.15896 256.27913,-38.080203 227.30704,0.71889667 L 211.68761,26.632967 c -64.41236,-1.31627 -115.141479,0.36378 -176.291011,-0.87409 74.565591,27.94511 77.655211,28.59645 167.743571,62.77992 0,2.7554 6.73603,15.496863 14.14398,22.983313 6.15699,6.22224 12.87199,9.7366 16.22997,11.82587 -4.40832,2.25628 -13.36407,5.77744 -16.02646,10.74611 -12.18833,22.74645 5.76755,27.99967 17.40015,46.12087 13.11826,23.69061 15.94177,39.36548 46.90919,26.06832 10.6135,-4.55735 23.41683,-6.19404 31.59501,-8.74085 -28.85417,45.54568 -36.27108,57.99099 -86.79725,136.40879 l 0.50877,0.15416 c 202.09001,-78.8838 207.26341,-80.9127 307.19919,-120.41816 143.6739,55.7507 151.917,60.3364 309.69219,120.46958 -22.03838,-34.3997 -37.09678,-55.9613 -53.11625,-83.14098 6.30949,-0.50992 20.1357,-1.90003 32.41063,-9.70169 8.85894,-5.63055 19.26354,-11.9767 28.64254,-23.9249 18.45056,-23.50474 22.97538,-53.18375 16.22996,-90.23649 -3.20752,-17.61905 -9.77721,-34.746133 -8.85271,-35.374763 85.87954,-32.43645 95.9848,-35.95678 176.08752,-66.17343 -96.25527,1.41063 -100.90223,0.46404 -191.29993,0.66842 C 842.62498,9.0340067 833.95777,0.16857667 807.36301,1.0273167 797.41843,2.6563967 791.16264,6.0539367 786.50318,19.588787 771.63716,-7.8190533 751.0984,0.24436667 742.39227,13.727267 730.90958,1.9977867 704.15574,-1.9500033 690.70059,6.6317467 680.78438,1.9906567 669.25949,1.9720567 659.15645,14.035767 651.83897,7.9290767 649.58932,6.2059167 633.565,-0.20668333 596.66041,-62.601163 565.9659,-112.36779 535.2694,-164.8432 z m 0.50877,33.42092 c 14.574,22.26603 64.64344,108.722277 77.02875,128.0792467 C 598.76353,-2.396198 584.96251,5.0622677 574.54693,20.051617 565.52614,10.749593 554.98061,1.5250074 536.3486,0.78926085 513.69764,-3.1042287 501.61959,6.945404 486.37598,24.422047 481.84773,9.2462513 464.29824,5.6575459 449.0318,12.801847 462.6397,-8.8452233 527.00887,-117.28988 535.77817,-131.42228 z m -190.02798,96.406497 c -2.09294,59.75931 -44.49802,112.97903 -74.89189,93.52717 -22.96574,-18.69278 6.20436,-65.9927403 24.5739,-82.67822 -1.36272,12.75271 10.23546,20.7177297 0.96668,32.0326697 -18.56681,22.6655903 -11.26099,39.0155303 -3.25617,41.5447703 21.36735,6.75135 41.82142,-51.1318303 41.82142,-91.72757 0,-26.03238 -15.23389,-25.55012 -45.23022,5.65584 -40.95422,42.6056097 -63.06382,83.85864 -48.33376,112.14006 8.20761,15.75838 20.20513,27.093703 39.93895,24.731483 38.53801,-4.613169 61.79707,-52.272283 64.30933,-82.832483 6.14604,-0.15383 4.5204,0.37009 6.1562,-0.87408 0,5.39149 7.39663,31.45961 13.22818,48.58888 7.63176,29.24323 40.17312,87.916423 -57.03383,110.751793 -18.38731,4.63331 -25.61398,6.17496 -43.75477,13.31696 -8.89367,-18.4206 -10.9835,-24.36579 -29.05113,-42.16178 24.51346,-8.55813 24.68821,-7.71321 40.4986,-13.21412 61.13387,-21.27027 79.51442,-39.451033 77.38489,-65.402183 0,0 0.74581,-13.37447 -7.7334,-24.52581 -4.2797,14.93065 -12.21064,26.89099 -12.21064,26.89099 -18.17891,28.333144 -53.97424,45.875653 -85.7797,34.706343 -17.39351,-6.108185 -24.87916,-19.424773 -24.87916,-42.316033 0,-29.26533 66.72325,-113.959533 99.46578,-128.33633 23.13028,-6.88233 24.12398,12.203706 23.81074,30.18165 z m 270.92343,54.19331 c 10.82124,0.20172 22.63996,5.52156 30.62834,14.13962 24.75016,26.7011 22.05022,59.04154 6.8176,79.387553 -18.12144,24.20455 -63.83983,13.4674 -74.63749,-20.361053 -5.0168,-15.71732 3.94377,-54.65478 19.7914,-67.66452 4.78429,-3.92754 10.90741,-5.62263 17.40015,-5.5016 z m -88.01832,2.72509 c 1.5996,0.0385 3.23362,0.2796 4.88426,0.71984 20.93957,1.26543 25.38896,13.00621 29.20376,23.34323 9.61324,26.04922 7.2074,50.457293 -12.56677,70.441023 -29.61924,29.93307 -64.13302,16.70679 -64.00408,-23.651733 0.61145,-28.7005 18.48897,-71.43043 42.48283,-70.85236 z m 77.84279,1.59392 c -15.96846,11.9459 -18.03722,42.61099 -3.35792,53.98765 5.77091,5.38776 8.97792,9.14035 25.54057,10.64328 11.37364,1.03207 29.32526,-10.50351 30.22132,-21.95498 0.40525,-5.17888 -0.52694,-13.85674 -13.02467,-27.91932 -10.46813,-11.77891 -24.09992,-14.518 -27.52481,-12.49429 -11.02187,6.51268 0.88457,11.69202 5.18952,15.99063 6.76723,6.75727 8.38973,9.71258 5.2404,11.72303 -6.2636,3.99857 -13.22593,3.42734 -15.51768,2.36517 -4.35707,-2.01937 -18.97459,-10.24517 -6.76673,-32.34117 z m 156.60138,0.10284 c 6.95636,10.838 8.96444,13.18184 16.73874,40.20794 10.03979,34.901745 22.78604,48.466303 34.03714,42.110363 30.83727,-17.420523 6.12661,-61.530613 -4.73162,-82.266883 6.95809,-0.0984 5.58036,0.28892 11.90537,0.20566 5.00874,19.62551 3.608,16.13524 16.99313,75.53129 16.0161,71.070523 18.41027,89.993063 -22.03002,121.909243 -18.58369,14.66657 -45.95753,15.43934 -69.44798,14.13962 l -26.50725,-3.90768 c 18.26576,-11.98044 22.70201,-23.20105 22.58968,-46.5322 53.24702,22.32422 81.62079,5.50673 92.95344,-21.90356 5.45697,-13.19877 3.56421,-30.61507 -1.67896,-61.28883 0.32863,24.9949 -0.21214,29.60153 -3.51056,41.95611 -6.61695,24.78449 -22.80827,31.70625 -33.83363,14.13962 -4.24259,-6.75969 -14.38417,-29.20948 -17.5019,-53.37064 -3.11772,-24.161213 -5.50729,-58.153723 -20.85984,-72.343453 1.67908,-3.34113 3.41642,-7.10317 4.88426,-8.5866 z m -51.94607,0.41133 c 10.74736,2.85598 23.82289,8.52721 30.85661,21.68335 9.71551,18.17221 16.14983,27.84463 15.62033,60.294373 -0.56527,34.64255 -14.1841,43.93582 -23.17498,45.22746 -11.61336,1.66837 -31.7463,1.42928 -43.7039,-66.584763 -3.96118,-22.53091 -11.19399,-43.9709 -18.77385,-51.00548 3.76415,-4.54387 4.06137,-3.975 6.86849,-8.48377 3.81797,4.17478 7.11476,11.23213 12.41414,32.39259 8.43235,33.67037 16.13233,40.620527 31.03536,42.521693 23.28236,2.97012 32.43743,-32.526513 13.27906,-57.998153 -4.20516,-5.59089 -15.20079,-12.78577 -20.98027,-9.81447 0.33439,9.81798 4.72696,6.7343 4.77597,13.23301 -1.09709,7.72607 -2.21513,9.10835 -4.70641,13.34334 -5.91639,-2.32514 -8.78887,-3.24436 -13.95353,-12.13437 -6.52787,-12.90125 -2.28586,-25.01138 10.44298,-22.67481 z m -191.55432,3.18784 c -10.95551,7.71708 -24.72389,33.31716 -12.66853,56.24999 5.95324,8.52117 12.3732,15.500135 26.60901,12.494284 10.17214,-2.147824 27.94621,-14.160994 30.42483,-31.210004 2.12452,-14.61354 -19.00784,-42.82644 -30.78098,-36.24885 -13.62907,7.6145 -5.31656,13.07763 3.10354,21.28656 7.69871,7.50564 2.17071,12.03053 -3.20529,14.24246 -10.76144,4.42772 -16.79068,0.1178 -19.48614,-8.43236 -2.69544,-8.55018 -0.36879,-15.83297 6.00356,-28.38208 z m -119.46069,2.67368 c 2.34016,7.16684 4.21366,16.71192 9.10709,25.96548 1.15166,0.95711 5.47874,0.0505 11.19308,-6.52993 3.59895,-4.14446 7.68806,-9.91059 14.85627,-19.2813 4.36399,3.9724 4.74431,6.92722 5.95269,9.10077 3.01002,5.41428 9.35938,4.98656 11.34571,4.42185 7.01055,-6.93941 8.12367,-11.44112 12.77029,-12.03153 0.43162,8.97415 0.86624,14.56275 -10.73518,28.1764 -6.79577,7.97448 -17.21806,8.164648 -20.85983,7.14694 -5.01901,-1.402585 -8.27218,-4.496024 -16.18705,-8.529754 -10.7567,1.649919 -7.90622,13.117879 -5.99561,22.772214 5.03698,25.451933 20.88046,35.598553 34.69855,28.124993 4.8078,-2.60033 3.70798,-2.58471 12.9738,-6.37569 -1.55158,16.15299 -2.48089,19.28201 0.40702,37.3286 -22.53954,12.54495 -40.88385,10.37629 -45.89163,-21.08089 -3.80053,-26.360873 -10.88273,-58.352903 -17.29839,-64.836593 -6.05804,-6.12194 -8.54745,-8.12385 -8.54745,-8.12385 0,0 7.58937,-10.07268 12.21064,-16.24771 z m -296.41313,3.39351 c 31.37174,0.39121 66.74576,0.39802 104.40091,0.71983 -5.40726,13.23712 -7.26249,22.50641 -8.03866,35.58043 -17.57855,-6.80531 -78.17637,-28.49901 -96.36225,-36.30026 z m 863.44442,0.41133 c -41.53727,14.97073 -71.44761,26.55704 -111.52379,41.85328 -4.38379,-18.77362 -5.18602,-24.50354 -9.10709,-41.44194 66.69298,-0.19512 67.81873,-0.093 120.63088,-0.41134 z M 676.45485,118.72046 c 4.36141,17.91207 10.51208,26.69056 10.51208,26.69056 8.41675,14.47977 18.93827,22.69893 35.01359,26.84064 3.53863,5.67134 4.78595,6.7896 6.18626,9.83973 1.53184,19.05472 0.42761,21.42153 -14.37313,32.26433 -8.68812,8.50703 -9.05854,20.69052 -0.0964,32.03267 9.63539,9.13361 19.76096,12.42877 57.28822,2.67367 7.25421,12.46712 17.39483,27.20062 32.3073,50.69698 -50.22842,-18.92757 -119.49557,-45.95037 -267.92165,-103.7077 0,0 -173.68384,67.43138 -266.80234,103.75912 38.94593,-61.43401 42.15913,-66.60904 69.855,-109.62064 9.37539,-3.65164 6.21591,-2.15318 14.551,-6.4271 19.12967,-10.18566 34.47824,-25.37398 42.83898,-47.71479 15.32853,34.56596 32.45023,38.53814 68.17603,27.30232 7.37119,-3.39413 15.8369,-8.34706 17.65454,-21.59506 19.14227,17.23743 59.66642,20.4245 89.23938,-15.88779 25.49868,29.83981 83.39187,32.67982 105.57111,-7.14694 z m 89.84991,35.99177 c 0,0 1.70301,5.38083 2.69651,7.0441 -4.23207,0.14101 -8.90358,0.0513 -8.90358,0.0513 2.11939,-1.74264 3.82601,-3.86946 6.20707,-7.09552 z"
-       id="path4019"
-       style="fill:#000000;fill-opacity:1" />
-  </g>
-</svg>
diff --git a/site/src/site/assets/img/groovy-logo-colored.svg b/site/src/site/assets/img/groovy-logo-colored.svg
deleted file mode 100644
index c81b366..0000000
--- a/site/src/site/assets/img/groovy-logo-colored.svg
+++ /dev/null
@@ -1,444 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   viewBox="0 0 1000 499"
-   height="499"
-   width="1000"
-   xml:space="preserve"
-   version="1.1"
-   id="svg2"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="Groovy-Logo (1).svg"><sodipodi:namedview
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1"
-     objecttolerance="10"
-     gridtolerance="10"
-     guidetolerance="10"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:window-width="1920"
-     inkscape:window-height="1017"
-     id="namedview3495"
-     showgrid="false"
-     inkscape:zoom="1.1852457"
-     inkscape:cx="523.07356"
-     inkscape:cy="229.21677"
-     inkscape:window-x="-8"
-     inkscape:window-y="-8"
-     inkscape:window-maximized="1"
-     inkscape:current-layer="g12" /><metadata
-     id="metadata8"><rdf:RDF><cc:Work
-         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
-     id="defs6" /><g
-     transform="matrix(1.25,0,0,-1.25,0,499)"
-     id="g10"><g
-       transform="scale(0.1,0.1)"
-       id="g12"><path
-         id="path14"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="M 6476.1262,3.8687586 4002.141,962.83678 1528.2591,4.1131885 2505.0758,1532.4826 -0.81654949,2468.4049 3076.8615,2454.0529 4002.0305,3991.2072 4927.288,2453.969 8005.0319,2468.0364 5499.1401,1532.3403 6476.1262,3.8687586"
-         inkscape:connector-curvature="0" /><path
-         id="path16"
-         style="fill:#619cbc;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="M 6141.4743,277.229 4004.278,1105.6131 1867.1923,277.40047 2711.0287,1597.7089 546.28434,2406.1993 3204.9636,2393.8173 4004.2043,3721.714 4803.4929,2393.7443 7462.2127,2405.9148 5297.4941,1597.5958 6141.4743,277.229"
-         inkscape:connector-curvature="0" /><path
-         id="path18"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,353.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path20"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,353.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322 z"
-         inkscape:connector-curvature="0" /><path
-         id="path22"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path24"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213 z"
-         inkscape:connector-curvature="0" /><path
-         id="path26"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path28"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z"
-         inkscape:connector-curvature="0" /><path
-         id="path30"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4008.515,2450.6491 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614 z"
-         inkscape:connector-curvature="0" /><path
-         id="path32"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path34"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z"
-         inkscape:connector-curvature="0" /><path
-         id="path36"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4695.6144,2478.0252 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252 z"
-         inkscape:connector-curvature="0" /><path
-         id="path38"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path40"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497 z"
-         inkscape:connector-curvature="0" /><path
-         id="path42"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -693.7313,-329.12312 -855.9912,-329.12312 -19.7114,0 -41.0071,5.58906 -50.4023,18.41251 68.4557,43.53772 111.3419,88.1699 141.959,152.99856 36.6596,77.69585 36.1069,150.47395 31.2804,217.48065 12.969,-7.5372 490.501,4.2319 507.8176,4.2319 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /><path
-         id="path44"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -693.7313,-329.12312 -855.9912,-329.12312 -19.7114,0 -41.0071,5.58906 -50.4023,18.41251 68.4557,43.53772 111.3419,88.1699 141.959,152.99856 36.6596,77.69585 36.1069,150.47395 31.2804,217.48065 12.969,-7.5372 490.501,4.2319 507.8176,4.2319 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494 z"
-         inkscape:connector-curvature="0" /><path
-         id="path46"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,353.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path48"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,353.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322 z"
-         inkscape:connector-curvature="0" /><path
-         id="path50"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path52"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213 z"
-         inkscape:connector-curvature="0" /><path
-         id="path54"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path56"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z"
-         inkscape:connector-curvature="0" /><path
-         id="path58"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4008.515,2450.6491 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614 z"
-         inkscape:connector-curvature="0" /><path
-         id="path60"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path62"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z"
-         inkscape:connector-curvature="0" /><path
-         id="path64"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4695.6144,2478.0252 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252 z"
-         inkscape:connector-curvature="0" /><path
-         id="path66"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path68"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497 z"
-         inkscape:connector-curvature="0" /><path
-         id="path70"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /><path
-         id="path72"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494 z"
-         inkscape:connector-curvature="0" /><path
-         id="path74"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,353.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path76"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,353.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322 z"
-         inkscape:connector-curvature="0" /><path
-         id="path78"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path80"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213 z"
-         inkscape:connector-curvature="0" /><path
-         id="path82"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path84"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z"
-         inkscape:connector-curvature="0" /><path
-         id="path86"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4008.515,2450.6491 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614 z"
-         inkscape:connector-curvature="0" /><path
-         id="path88"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path90"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z"
-         inkscape:connector-curvature="0" /><path
-         id="path92"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4695.6144,2478.0252 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252 z"
-         inkscape:connector-curvature="0" /><path
-         id="path94"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path96"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497 z"
-         inkscape:connector-curvature="0" /><path
-         id="path98"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /><path
-         id="path100"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494 z"
-         inkscape:connector-curvature="0" /><path
-         id="path102"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,353.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path104"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path106"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path108"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path110"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path112"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -242.0267,-464.90213 -760.0132,-339.59712 -922.2732,-339.59712 -19.7114,0 -41.0071,5.58905 -50.4022,18.4125 68.4557,43.53772 111.3418,88.1699 141.9222,152.98397 36.6963,77.71045 36.1437,150.48855 31.3172,217.49525 12.969,-7.5518 54.5656,-26.3802 71.8453,-26.3802 70.1874,0 461.4313,-201.01994 660.8666,168.6311 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /><path
-         id="path212"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="M 6472.2111,0 4000.0333,960.08914 1527.9586,0.2447157 2504.0617,1530.4009 0,2467.4174 3075.4297,2453.0486 3999.9228,3992 4924.5044,2452.9646 8000,2467.0484 5495.9388,1530.2584 6472.2111,0"
-         inkscape:connector-curvature="0" /><path
-         id="path214"
-         style="fill:#619cbc;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="M 6141.4743,277.229 4004.278,1105.6131 1867.1923,277.40047 2711.0287,1597.7089 546.28434,2406.1993 3204.9636,2393.8173 4004.2043,3721.714 4803.4929,2393.7443 7462.2127,2405.9148 5297.4941,1597.5958 6141.4743,277.229"
-         inkscape:connector-curvature="0" /><path
-         id="path216"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,353.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path218"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,353.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322 z"
-         inkscape:connector-curvature="0" /><path
-         id="path220"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path222"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213 z"
-         inkscape:connector-curvature="0" /><path
-         id="path224"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path226"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z"
-         inkscape:connector-curvature="0" /><path
-         id="path228"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4008.515,2450.6491 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614 z"
-         inkscape:connector-curvature="0" /><path
-         id="path230"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path232"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z"
-         inkscape:connector-curvature="0" /><path
-         id="path234"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4695.6144,2478.0252 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252 z"
-         inkscape:connector-curvature="0" /><path
-         id="path236"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path238"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497 z"
-         inkscape:connector-curvature="0" /><path
-         id="path240"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -693.7313,-329.12312 -855.9912,-329.12312 -19.7114,0 -41.0071,5.58906 -50.4023,18.41251 68.4557,43.53772 111.3419,88.1699 141.959,152.99856 36.6596,77.69585 36.1069,150.47395 31.2804,217.48065 12.969,-7.5372 490.501,4.2319 507.8176,4.2319 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /><path
-         id="path242"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -693.7313,-329.12312 -855.9912,-329.12312 -19.7114,0 -41.0071,5.58906 -50.4023,18.41251 68.4557,43.53772 111.3419,88.1699 141.959,152.99856 36.6596,77.69585 36.1069,150.47395 31.2804,217.48065 12.969,-7.5372 490.501,4.2319 507.8176,4.2319 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494 z"
-         inkscape:connector-curvature="0" /><path
-         id="path244"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,353.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path246"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,353.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322 z"
-         inkscape:connector-curvature="0" /><path
-         id="path248"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path250"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213 z"
-         inkscape:connector-curvature="0" /><path
-         id="path252"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path254"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z"
-         inkscape:connector-curvature="0" /><path
-         id="path256"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4008.515,2450.6491 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614 z"
-         inkscape:connector-curvature="0" /><path
-         id="path258"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path260"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z"
-         inkscape:connector-curvature="0" /><path
-         id="path262"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4695.6144,2478.0252 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252 z"
-         inkscape:connector-curvature="0" /><path
-         id="path264"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path266"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497 z"
-         inkscape:connector-curvature="0" /><path
-         id="path268"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /><path
-         id="path270"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494 z"
-         inkscape:connector-curvature="0" /><path
-         id="path272"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,353.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path274"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,353.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322 z"
-         inkscape:connector-curvature="0" /><path
-         id="path276"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path278"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213 z"
-         inkscape:connector-curvature="0" /><path
-         id="path280"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path282"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z"
-         inkscape:connector-curvature="0" /><path
-         id="path284"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4008.515,2450.6491 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614 z"
-         inkscape:connector-curvature="0" /><path
-         id="path286"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path288"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z"
-         inkscape:connector-curvature="0" /><path
-         id="path290"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4695.6144,2478.0252 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252 z"
-         inkscape:connector-curvature="0" /><path
-         id="path292"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path294"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497 z"
-         inkscape:connector-curvature="0" /><path
-         id="path296"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /><path
-         id="path298"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494 z"
-         inkscape:connector-curvature="0" /><path
-         id="path300"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,353.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path302"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path304"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path306"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path308"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path310"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -242.0267,-464.90213 -760.0132,-339.59712 -922.2732,-339.59712 -19.7114,0 -41.0071,5.58905 -50.4022,18.4125 68.4557,43.53772 111.3418,88.1699 141.9222,152.98397 36.6963,77.71045 36.1437,150.48855 31.3172,217.49525 12.969,-7.5518 54.5656,-26.3802 71.8453,-26.3802 70.1874,0 461.4313,-201.01994 660.8666,168.6311 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /></g></g></svg>
\ No newline at end of file
diff --git a/site/src/site/assets/img/groovy-logo-white.png b/site/src/site/assets/img/groovy-logo-white.png
deleted file mode 100644
index 4792118..0000000
--- a/site/src/site/assets/img/groovy-logo-white.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/groovy-logo-white.svg b/site/src/site/assets/img/groovy-logo-white.svg
deleted file mode 100644
index 4c9e38b..0000000
--- a/site/src/site/assets/img/groovy-logo-white.svg
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   version="1.1"
-   width="1000"
-   height="499"
-   id="svg3944">
-  <defs
-     id="defs3946" />
-  <metadata
-     id="metadata3949">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     transform="translate(-35.396599,164.8432)"
-     id="layer1">
-    <path
-       d="m 535.2694,-164.8432 c 0,0 -70.08429,116.134127 -103.38337,172.6061967 -6.4281,2.4088603 -7.14247,1.73215 -14.19486,8.6380303 -17.0619,-19.5616103 -37.36994,-1.7231 -42.83897,9.2036 C 372.47507,1.9707367 368.54798,1.9596267 363.2521,-3.3430333 366.31133,-24.016473 376.40683,-57.706575 353.17832,-81.856483 308.2561,-112.15896 256.27913,-38.080203 227.30704,0.71889667 L 211.68761,26.632967 c -64.41236,-1.31627 -115.141479,0.36378 -176.291011,-0.87409 74.565591,27.94511 77.655211,28.59645 167.743571,62.77992 0,2.7554 6.73603,15.496863 14.14398,22.983313 6.15699,6.22224 12.87199,9.7366 16.22997,11.82587 -4.40832,2.25628 -13.36407,5.77744 -16.02646,10.74611 -12.18833,22.74645 5.76755,27.99967 17.40015,46.12087 13.11826,23.69061 15.94177,39.36548 46.90919,26.06832 10.6135,-4.55735 23.41683,-6.19404 31.59501,-8.74085 -28.85417,45.54568 -36.27108,57.99099 -86.79725,136.40879 l 0.50877,0.15416 c 202.09001,-78.8838 207.26341,-80.9127 307.19919,-120.41816 143.6739,55.7507 151.917,60.3364 309.69219,120.46958 -22.03838,-34.3997 -37.09678,-55.9613 -53.11625,-83.14098 6.30949,-0.50992 20.1357,-1.90003 32.41063,-9.70169 8.85894,-5.63055 19.26354,-11.9767 28.64254,-23.9249 18.45056,-23.50474 22.97538,-53.18375 16.22996,-90.23649 -3.20752,-17.61905 -9.77721,-34.746133 -8.85271,-35.374763 85.87954,-32.43645 95.9848,-35.95678 176.08752,-66.17343 -96.25527,1.41063 -100.90223,0.46404 -191.29993,0.66842 C 842.62498,9.0340067 833.95777,0.16857667 807.36301,1.0273167 797.41843,2.6563967 791.16264,6.0539367 786.50318,19.588787 771.63716,-7.8190533 751.0984,0.24436667 742.39227,13.727267 730.90958,1.9977867 704.15574,-1.9500033 690.70059,6.6317467 680.78438,1.9906567 669.25949,1.9720567 659.15645,14.035767 651.83897,7.9290767 649.58932,6.2059167 633.565,-0.20668333 596.66041,-62.601163 565.9659,-112.36779 535.2694,-164.8432 z m 0.50877,33.42092 c 14.574,22.26603 64.64344,108.722277 77.02875,128.0792467 C 598.76353,-2.396198 584.96251,5.0622677 574.54693,20.051617 565.52614,10.749593 554.98061,1.5250074 536.3486,0.78926085 513.69764,-3.1042287 501.61959,6.945404 486.37598,24.422047 481.84773,9.2462513 464.29824,5.6575459 449.0318,12.801847 462.6397,-8.8452233 527.00887,-117.28988 535.77817,-131.42228 z m -190.02798,96.406497 c -2.09294,59.75931 -44.49802,112.97903 -74.89189,93.52717 -22.96574,-18.69278 6.20436,-65.9927403 24.5739,-82.67822 -1.36272,12.75271 10.23546,20.7177297 0.96668,32.0326697 -18.56681,22.6655903 -11.26099,39.0155303 -3.25617,41.5447703 21.36735,6.75135 41.82142,-51.1318303 41.82142,-91.72757 0,-26.03238 -15.23389,-25.55012 -45.23022,5.65584 -40.95422,42.6056097 -63.06382,83.85864 -48.33376,112.14006 8.20761,15.75838 20.20513,27.093703 39.93895,24.731483 38.53801,-4.613169 61.79707,-52.272283 64.30933,-82.832483 6.14604,-0.15383 4.5204,0.37009 6.1562,-0.87408 0,5.39149 7.39663,31.45961 13.22818,48.58888 7.63176,29.24323 40.17312,87.916423 -57.03383,110.751793 -18.38731,4.63331 -25.61398,6.17496 -43.75477,13.31696 -8.89367,-18.4206 -10.9835,-24.36579 -29.05113,-42.16178 24.51346,-8.55813 24.68821,-7.71321 40.4986,-13.21412 61.13387,-21.27027 79.51442,-39.451033 77.38489,-65.402183 0,0 0.74581,-13.37447 -7.7334,-24.52581 -4.2797,14.93065 -12.21064,26.89099 -12.21064,26.89099 -18.17891,28.333144 -53.97424,45.875653 -85.7797,34.706343 -17.39351,-6.108185 -24.87916,-19.424773 -24.87916,-42.316033 0,-29.26533 66.72325,-113.959533 99.46578,-128.33633 23.13028,-6.88233 24.12398,12.203706 23.81074,30.18165 z m 270.92343,54.19331 c 10.82124,0.20172 22.63996,5.52156 30.62834,14.13962 24.75016,26.7011 22.05022,59.04154 6.8176,79.387553 -18.12144,24.20455 -63.83983,13.4674 -74.63749,-20.361053 -5.0168,-15.71732 3.94377,-54.65478 19.7914,-67.66452 4.78429,-3.92754 10.90741,-5.62263 17.40015,-5.5016 z m -88.01832,2.72509 c 1.5996,0.0385 3.23362,0.2796 4.88426,0.71984 20.93957,1.26543 25.38896,13.00621 29.20376,23.34323 9.61324,26.04922 7.2074,50.457293 -12.56677,70.441023 -29.61924,29.93307 -64.13302,16.70679 -64.00408,-23.651733 0.61145,-28.7005 18.48897,-71.43043 42.48283,-70.85236 z m 77.84279,1.59392 c -15.96846,11.9459 -18.03722,42.61099 -3.35792,53.98765 5.77091,5.38776 8.97792,9.14035 25.54057,10.64328 11.37364,1.03207 29.32526,-10.50351 30.22132,-21.95498 0.40525,-5.17888 -0.52694,-13.85674 -13.02467,-27.91932 -10.46813,-11.77891 -24.09992,-14.518 -27.52481,-12.49429 -11.02187,6.51268 0.88457,11.69202 5.18952,15.99063 6.76723,6.75727 8.38973,9.71258 5.2404,11.72303 -6.2636,3.99857 -13.22593,3.42734 -15.51768,2.36517 -4.35707,-2.01937 -18.97459,-10.24517 -6.76673,-32.34117 z m 156.60138,0.10284 c 6.95636,10.838 8.96444,13.18184 16.73874,40.20794 10.03979,34.901745 22.78604,48.466303 34.03714,42.110363 30.83727,-17.420523 6.12661,-61.530613 -4.73162,-82.266883 6.95809,-0.0984 5.58036,0.28892 11.90537,0.20566 5.00874,19.62551 3.608,16.13524 16.99313,75.53129 16.0161,71.070523 18.41027,89.993063 -22.03002,121.909243 -18.58369,14.66657 -45.95753,15.43934 -69.44798,14.13962 l -26.50725,-3.90768 c 18.26576,-11.98044 22.70201,-23.20105 22.58968,-46.5322 53.24702,22.32422 81.62079,5.50673 92.95344,-21.90356 5.45697,-13.19877 3.56421,-30.61507 -1.67896,-61.28883 0.32863,24.9949 -0.21214,29.60153 -3.51056,41.95611 -6.61695,24.78449 -22.80827,31.70625 -33.83363,14.13962 -4.24259,-6.75969 -14.38417,-29.20948 -17.5019,-53.37064 -3.11772,-24.161213 -5.50729,-58.153723 -20.85984,-72.343453 1.67908,-3.34113 3.41642,-7.10317 4.88426,-8.5866 z m -51.94607,0.41133 c 10.74736,2.85598 23.82289,8.52721 30.85661,21.68335 9.71551,18.17221 16.14983,27.84463 15.62033,60.294373 -0.56527,34.64255 -14.1841,43.93582 -23.17498,45.22746 -11.61336,1.66837 -31.7463,1.42928 -43.7039,-66.584763 -3.96118,-22.53091 -11.19399,-43.9709 -18.77385,-51.00548 3.76415,-4.54387 4.06137,-3.975 6.86849,-8.48377 3.81797,4.17478 7.11476,11.23213 12.41414,32.39259 8.43235,33.67037 16.13233,40.620527 31.03536,42.521693 23.28236,2.97012 32.43743,-32.526513 13.27906,-57.998153 -4.20516,-5.59089 -15.20079,-12.78577 -20.98027,-9.81447 0.33439,9.81798 4.72696,6.7343 4.77597,13.23301 -1.09709,7.72607 -2.21513,9.10835 -4.70641,13.34334 -5.91639,-2.32514 -8.78887,-3.24436 -13.95353,-12.13437 -6.52787,-12.90125 -2.28586,-25.01138 10.44298,-22.67481 z m -191.55432,3.18784 c -10.95551,7.71708 -24.72389,33.31716 -12.66853,56.24999 5.95324,8.52117 12.3732,15.500135 26.60901,12.494284 10.17214,-2.147824 27.94621,-14.160994 30.42483,-31.210004 2.12452,-14.61354 -19.00784,-42.82644 -30.78098,-36.24885 -13.62907,7.6145 -5.31656,13.07763 3.10354,21.28656 7.69871,7.50564 2.17071,12.03053 -3.20529,14.24246 -10.76144,4.42772 -16.79068,0.1178 -19.48614,-8.43236 -2.69544,-8.55018 -0.36879,-15.83297 6.00356,-28.38208 z m -119.46069,2.67368 c 2.34016,7.16684 4.21366,16.71192 9.10709,25.96548 1.15166,0.95711 5.47874,0.0505 11.19308,-6.52993 3.59895,-4.14446 7.68806,-9.91059 14.85627,-19.2813 4.36399,3.9724 4.74431,6.92722 5.95269,9.10077 3.01002,5.41428 9.35938,4.98656 11.34571,4.42185 7.01055,-6.93941 8.12367,-11.44112 12.77029,-12.03153 0.43162,8.97415 0.86624,14.56275 -10.73518,28.1764 -6.79577,7.97448 -17.21806,8.164648 -20.85983,7.14694 -5.01901,-1.402585 -8.27218,-4.496024 -16.18705,-8.529754 -10.7567,1.649919 -7.90622,13.117879 -5.99561,22.772214 5.03698,25.451933 20.88046,35.598553 34.69855,28.124993 4.8078,-2.60033 3.70798,-2.58471 12.9738,-6.37569 -1.55158,16.15299 -2.48089,19.28201 0.40702,37.3286 -22.53954,12.54495 -40.88385,10.37629 -45.89163,-21.08089 -3.80053,-26.360873 -10.88273,-58.352903 -17.29839,-64.836593 -6.05804,-6.12194 -8.54745,-8.12385 -8.54745,-8.12385 0,0 7.58937,-10.07268 12.21064,-16.24771 z m -296.41313,3.39351 c 31.37174,0.39121 66.74576,0.39802 104.40091,0.71983 -5.40726,13.23712 -7.26249,22.50641 -8.03866,35.58043 -17.57855,-6.80531 -78.17637,-28.49901 -96.36225,-36.30026 z m 863.44442,0.41133 c -41.53727,14.97073 -71.44761,26.55704 -111.52379,41.85328 -4.38379,-18.77362 -5.18602,-24.50354 -9.10709,-41.44194 66.69298,-0.19512 67.81873,-0.093 120.63088,-0.41134 z M 676.45485,118.72046 c 4.36141,17.91207 10.51208,26.69056 10.51208,26.69056 8.41675,14.47977 18.93827,22.69893 35.01359,26.84064 3.53863,5.67134 4.78595,6.7896 6.18626,9.83973 1.53184,19.05472 0.42761,21.42153 -14.37313,32.26433 -8.68812,8.50703 -9.05854,20.69052 -0.0964,32.03267 9.63539,9.13361 19.76096,12.42877 57.28822,2.67367 7.25421,12.46712 17.39483,27.20062 32.3073,50.69698 -50.22842,-18.92757 -119.49557,-45.95037 -267.92165,-103.7077 0,0 -173.68384,67.43138 -266.80234,103.75912 38.94593,-61.43401 42.15913,-66.60904 69.855,-109.62064 9.37539,-3.65164 6.21591,-2.15318 14.551,-6.4271 19.12967,-10.18566 34.47824,-25.37398 42.83898,-47.71479 15.32853,34.56596 32.45023,38.53814 68.17603,27.30232 7.37119,-3.39413 15.8369,-8.34706 17.65454,-21.59506 19.14227,17.23743 59.66642,20.4245 89.23938,-15.88779 25.49868,29.83981 83.39187,32.67982 105.57111,-7.14694 z m 89.84991,35.99177 c 0,0 1.70301,5.38083 2.69651,7.0441 -4.23207,0.14101 -8.90358,0.0513 -8.90358,0.0513 2.11939,-1.74264 3.82601,-3.86946 6.20707,-7.09552 z"
-       id="path4019"
-       style="fill:#ffffff;fill-opacity:1" />
-  </g>
-</svg>
diff --git a/site/src/site/assets/img/groovy-logo.png b/site/src/site/assets/img/groovy-logo.png
deleted file mode 100644
index 54af4c1..0000000
--- a/site/src/site/assets/img/groovy-logo.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/icons-colset-2-its.png b/site/src/site/assets/img/icons-colset-2-its.png
deleted file mode 100644
index 6bd1819..0000000
--- a/site/src/site/assets/img/icons-colset-2-its.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logo.png b/site/src/site/assets/img/logo.png
deleted file mode 100644
index 42a050b..0000000
--- a/site/src/site/assets/img/logo.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/airbusgroup.png b/site/src/site/assets/img/logos/airbusgroup.png
deleted file mode 100644
index 94244d3..0000000
--- a/site/src/site/assets/img/logos/airbusgroup.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/amadeus.png b/site/src/site/assets/img/logos/amadeus.png
deleted file mode 100644
index d014cb0..0000000
--- a/site/src/site/assets/img/logos/amadeus.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/bestbuy.png b/site/src/site/assets/img/logos/bestbuy.png
deleted file mode 100644
index ed19a44..0000000
--- a/site/src/site/assets/img/logos/bestbuy.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/carfax.png b/site/src/site/assets/img/logos/carfax.png
deleted file mode 100644
index c5d1611..0000000
--- a/site/src/site/assets/img/logos/carfax.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/carriots.png b/site/src/site/assets/img/logos/carriots.png
deleted file mode 100644
index bcd11a8..0000000
--- a/site/src/site/assets/img/logos/carriots.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/cisco.png b/site/src/site/assets/img/logos/cisco.png
deleted file mode 100644
index 5478053..0000000
--- a/site/src/site/assets/img/logos/cisco.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/commerzbank.png b/site/src/site/assets/img/logos/commerzbank.png
deleted file mode 100644
index 02373ee..0000000
--- a/site/src/site/assets/img/logos/commerzbank.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/credit-suisse.png b/site/src/site/assets/img/logos/credit-suisse.png
deleted file mode 100644
index 0e56711..0000000
--- a/site/src/site/assets/img/logos/credit-suisse.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/eads.png b/site/src/site/assets/img/logos/eads.png
deleted file mode 100644
index 96ad83a..0000000
--- a/site/src/site/assets/img/logos/eads.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/energy-transfer.png b/site/src/site/assets/img/logos/energy-transfer.png
deleted file mode 100644
index 8295b83..0000000
--- a/site/src/site/assets/img/logos/energy-transfer.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/epo.png b/site/src/site/assets/img/logos/epo.png
deleted file mode 100644
index afbc383..0000000
--- a/site/src/site/assets/img/logos/epo.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/fanniemae.png b/site/src/site/assets/img/logos/fanniemae.png
deleted file mode 100644
index 50eab52..0000000
--- a/site/src/site/assets/img/logos/fanniemae.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/google.png b/site/src/site/assets/img/logos/google.png
deleted file mode 100644
index 838abec..0000000
--- a/site/src/site/assets/img/logos/google.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/hypoport.png b/site/src/site/assets/img/logos/hypoport.png
deleted file mode 100644
index 9d0f602..0000000
--- a/site/src/site/assets/img/logos/hypoport.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/ibm.png b/site/src/site/assets/img/logos/ibm.png
deleted file mode 100644
index 36d993d..0000000
--- a/site/src/site/assets/img/logos/ibm.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/jpmorganchase.png b/site/src/site/assets/img/logos/jpmorganchase.png
deleted file mode 100644
index 7fcb968..0000000
--- a/site/src/site/assets/img/logos/jpmorganchase.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/linkedin.png b/site/src/site/assets/img/logos/linkedin.png
deleted file mode 100644
index f7742e9..0000000
--- a/site/src/site/assets/img/logos/linkedin.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/mastercard.png b/site/src/site/assets/img/logos/mastercard.png
deleted file mode 100644
index 7bf5af4..0000000
--- a/site/src/site/assets/img/logos/mastercard.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/mtv.png b/site/src/site/assets/img/logos/mtv.png
deleted file mode 100644
index 5cf4594..0000000
--- a/site/src/site/assets/img/logos/mtv.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/mutual-of-omaha.png b/site/src/site/assets/img/logos/mutual-of-omaha.png
deleted file mode 100644
index a4c0aab..0000000
--- a/site/src/site/assets/img/logos/mutual-of-omaha.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/national-cancer-institute.png b/site/src/site/assets/img/logos/national-cancer-institute.png
deleted file mode 100644
index 981b8b0..0000000
--- a/site/src/site/assets/img/logos/national-cancer-institute.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/nestle.png b/site/src/site/assets/img/logos/nestle.png
deleted file mode 100644
index 46a18af..0000000
--- a/site/src/site/assets/img/logos/nestle.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/netflix.png b/site/src/site/assets/img/logos/netflix.png
deleted file mode 100644
index fa9fbef..0000000
--- a/site/src/site/assets/img/logos/netflix.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/nielsen.png b/site/src/site/assets/img/logos/nielsen.png
deleted file mode 100644
index dc50bfa..0000000
--- a/site/src/site/assets/img/logos/nielsen.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/oracle.png b/site/src/site/assets/img/logos/oracle.png
deleted file mode 100644
index c793812..0000000
--- a/site/src/site/assets/img/logos/oracle.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/paterson-cancer-institute.png b/site/src/site/assets/img/logos/paterson-cancer-institute.png
deleted file mode 100644
index 00f5103..0000000
--- a/site/src/site/assets/img/logos/paterson-cancer-institute.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/roche.png b/site/src/site/assets/img/logos/roche.png
deleted file mode 100644
index bbdf528..0000000
--- a/site/src/site/assets/img/logos/roche.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/sas.png b/site/src/site/assets/img/logos/sas.png
deleted file mode 100644
index af0d4e3..0000000
--- a/site/src/site/assets/img/logos/sas.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/sky.png b/site/src/site/assets/img/logos/sky.png
deleted file mode 100644
index 53d4b0f..0000000
--- a/site/src/site/assets/img/logos/sky.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/smartthings.png b/site/src/site/assets/img/logos/smartthings.png
deleted file mode 100644
index 2bc2603..0000000
--- a/site/src/site/assets/img/logos/smartthings.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/sony.png b/site/src/site/assets/img/logos/sony.png
deleted file mode 100644
index c090ddd..0000000
--- a/site/src/site/assets/img/logos/sony.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/target.png b/site/src/site/assets/img/logos/target.png
deleted file mode 100644
index 777f26d..0000000
--- a/site/src/site/assets/img/logos/target.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/thales.png b/site/src/site/assets/img/logos/thales.png
deleted file mode 100644
index 98095c1..0000000
--- a/site/src/site/assets/img/logos/thales.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/ubs.png b/site/src/site/assets/img/logos/ubs.png
deleted file mode 100644
index 62faa8c..0000000
--- a/site/src/site/assets/img/logos/ubs.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/vodafone.png b/site/src/site/assets/img/logos/vodafone.png
deleted file mode 100644
index be1f96c..0000000
--- a/site/src/site/assets/img/logos/vodafone.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/voyages-sncf.png b/site/src/site/assets/img/logos/voyages-sncf.png
deleted file mode 100644
index e9c849a..0000000
--- a/site/src/site/assets/img/logos/voyages-sncf.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/walmart.png b/site/src/site/assets/img/logos/walmart.png
deleted file mode 100644
index 922d6db..0000000
--- a/site/src/site/assets/img/logos/walmart.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/logos/wells-fargo.png b/site/src/site/assets/img/logos/wells-fargo.png
deleted file mode 100644
index 830b1c2..0000000
--- a/site/src/site/assets/img/logos/wells-fargo.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/videos/groovy-ecosystem-revisited.png b/site/src/site/assets/img/videos/groovy-ecosystem-revisited.png
deleted file mode 100644
index 701475f..0000000
--- a/site/src/site/assets/img/videos/groovy-ecosystem-revisited.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/videos/groovy-puzzlers.png b/site/src/site/assets/img/videos/groovy-puzzlers.png
deleted file mode 100644
index eaa26fc..0000000
--- a/site/src/site/assets/img/videos/groovy-puzzlers.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/img/videos/metaprogramming-part-1.png b/site/src/site/assets/img/videos/metaprogramming-part-1.png
deleted file mode 100644
index f643ecc..0000000
--- a/site/src/site/assets/img/videos/metaprogramming-part-1.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/assets/js/plugins.js b/site/src/site/assets/js/plugins.js
deleted file mode 100644
index 728680b..0000000
--- a/site/src/site/assets/js/plugins.js
+++ /dev/null
@@ -1,24 +0,0 @@
-// Avoid `console` errors in browsers that lack a console.
-(function() {
-    var method;
-    var noop = function () {};
-    var methods = [
-        'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
-        'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
-        'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
-        'timeStamp', 'trace', 'warn'
-    ];
-    var length = methods.length;
-    var console = (window.console = window.console || {});
-
-    while (length--) {
-        method = methods[length];
-
-        // Only stub undefined methods.
-        if (!console[method]) {
-            console[method] = noop;
-        }
-    }
-}());
-
-// Place any jQuery/helper plugins in here.
diff --git a/site/src/site/assets/js/vendor/bootstrap.js b/site/src/site/assets/js/vendor/bootstrap.js
deleted file mode 100644
index 53da1c7..0000000
--- a/site/src/site/assets/js/vendor/bootstrap.js
+++ /dev/null
@@ -1,2114 +0,0 @@
-/*!
- * Bootstrap v3.2.0 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') }
-
-/* ========================================================================
- * Bootstrap: transition.js v3.2.0
- * http://getbootstrap.com/javascript/#transitions
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
-  // ============================================================
-
-  function transitionEnd() {
-    var el = document.createElement('bootstrap')
-
-    var transEndEventNames = {
-      WebkitTransition : 'webkitTransitionEnd',
-      MozTransition    : 'transitionend',
-      OTransition      : 'oTransitionEnd otransitionend',
-      transition       : 'transitionend'
-    }
-
-    for (var name in transEndEventNames) {
-      if (el.style[name] !== undefined) {
-        return { end: transEndEventNames[name] }
-      }
-    }
-
-    return false // explicit for ie8 (  ._.)
-  }
-
-  // http://blog.alexmaccaw.com/css-transitions
-  $.fn.emulateTransitionEnd = function (duration) {
-    var called = false
-    var $el = this
-    $(this).one('bsTransitionEnd', function () { called = true })
-    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
-    setTimeout(callback, duration)
-    return this
-  }
-
-  $(function () {
-    $.support.transition = transitionEnd()
-
-    if (!$.support.transition) return
-
-    $.event.special.bsTransitionEnd = {
-      bindType: $.support.transition.end,
-      delegateType: $.support.transition.end,
-      handle: function (e) {
-        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
-      }
-    }
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: alert.js v3.2.0
- * http://getbootstrap.com/javascript/#alerts
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // ALERT CLASS DEFINITION
-  // ======================
-
-  var dismiss = '[data-dismiss="alert"]'
-  var Alert   = function (el) {
-    $(el).on('click', dismiss, this.close)
-  }
-
-  Alert.VERSION = '3.2.0'
-
-  Alert.prototype.close = function (e) {
-    var $this    = $(this)
-    var selector = $this.attr('data-target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    var $parent = $(selector)
-
-    if (e) e.preventDefault()
-
-    if (!$parent.length) {
-      $parent = $this.hasClass('alert') ? $this : $this.parent()
-    }
-
-    $parent.trigger(e = $.Event('close.bs.alert'))
-
-    if (e.isDefaultPrevented()) return
-
-    $parent.removeClass('in')
-
-    function removeElement() {
-      // detach from parent, fire event then clean up data
-      $parent.detach().trigger('closed.bs.alert').remove()
-    }
-
-    $.support.transition && $parent.hasClass('fade') ?
-      $parent
-        .one('bsTransitionEnd', removeElement)
-        .emulateTransitionEnd(150) :
-      removeElement()
-  }
-
-
-  // ALERT PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.alert')
-
-      if (!data) $this.data('bs.alert', (data = new Alert(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  var old = $.fn.alert
-
-  $.fn.alert             = Plugin
-  $.fn.alert.Constructor = Alert
-
-
-  // ALERT NO CONFLICT
-  // =================
-
-  $.fn.alert.noConflict = function () {
-    $.fn.alert = old
-    return this
-  }
-
-
-  // ALERT DATA-API
-  // ==============
-
-  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: button.js v3.2.0
- * http://getbootstrap.com/javascript/#buttons
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // BUTTON PUBLIC CLASS DEFINITION
-  // ==============================
-
-  var Button = function (element, options) {
-    this.$element  = $(element)
-    this.options   = $.extend({}, Button.DEFAULTS, options)
-    this.isLoading = false
-  }
-
-  Button.VERSION  = '3.2.0'
-
-  Button.DEFAULTS = {
-    loadingText: 'loading...'
-  }
-
-  Button.prototype.setState = function (state) {
-    var d    = 'disabled'
-    var $el  = this.$element
-    var val  = $el.is('input') ? 'val' : 'html'
-    var data = $el.data()
-
-    state = state + 'Text'
-
-    if (data.resetText == null) $el.data('resetText', $el[val]())
-
-    $el[val](data[state] == null ? this.options[state] : data[state])
-
-    // push to event loop to allow forms to submit
-    setTimeout($.proxy(function () {
-      if (state == 'loadingText') {
-        this.isLoading = true
-        $el.addClass(d).attr(d, d)
-      } else if (this.isLoading) {
-        this.isLoading = false
-        $el.removeClass(d).removeAttr(d)
-      }
-    }, this), 0)
-  }
-
-  Button.prototype.toggle = function () {
-    var changed = true
-    var $parent = this.$element.closest('[data-toggle="buttons"]')
-
-    if ($parent.length) {
-      var $input = this.$element.find('input')
-      if ($input.prop('type') == 'radio') {
-        if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
-        else $parent.find('.active').removeClass('active')
-      }
-      if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
-    }
-
-    if (changed) this.$element.toggleClass('active')
-  }
-
-
-  // BUTTON PLUGIN DEFINITION
-  // ========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.button')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.button', (data = new Button(this, options)))
-
-      if (option == 'toggle') data.toggle()
-      else if (option) data.setState(option)
-    })
-  }
-
-  var old = $.fn.button
-
-  $.fn.button             = Plugin
-  $.fn.button.Constructor = Button
-
-
-  // BUTTON NO CONFLICT
-  // ==================
-
-  $.fn.button.noConflict = function () {
-    $.fn.button = old
-    return this
-  }
-
-
-  // BUTTON DATA-API
-  // ===============
-
-  $(document).on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
-    var $btn = $(e.target)
-    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
-    Plugin.call($btn, 'toggle')
-    e.preventDefault()
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: carousel.js v3.2.0
- * http://getbootstrap.com/javascript/#carousel
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // CAROUSEL CLASS DEFINITION
-  // =========================
-
-  var Carousel = function (element, options) {
-    this.$element    = $(element).on('keydown.bs.carousel', $.proxy(this.keydown, this))
-    this.$indicators = this.$element.find('.carousel-indicators')
-    this.options     = options
-    this.paused      =
-    this.sliding     =
-    this.interval    =
-    this.$active     =
-    this.$items      = null
-
-    this.options.pause == 'hover' && this.$element
-      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
-      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
-  }
-
-  Carousel.VERSION  = '3.2.0'
-
-  Carousel.DEFAULTS = {
-    interval: 5000,
-    pause: 'hover',
-    wrap: true
-  }
-
-  Carousel.prototype.keydown = function (e) {
-    switch (e.which) {
-      case 37: this.prev(); break
-      case 39: this.next(); break
-      default: return
-    }
-
-    e.preventDefault()
-  }
-
-  Carousel.prototype.cycle = function (e) {
-    e || (this.paused = false)
-
-    this.interval && clearInterval(this.interval)
-
-    this.options.interval
-      && !this.paused
-      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
-
-    return this
-  }
-
-  Carousel.prototype.getItemIndex = function (item) {
-    this.$items = item.parent().children('.item')
-    return this.$items.index(item || this.$active)
-  }
-
-  Carousel.prototype.to = function (pos) {
-    var that        = this
-    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
-
-    if (pos > (this.$items.length - 1) || pos < 0) return
-
-    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
-    if (activeIndex == pos) return this.pause().cycle()
-
-    return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
-  }
-
-  Carousel.prototype.pause = function (e) {
-    e || (this.paused = true)
-
-    if (this.$element.find('.next, .prev').length && $.support.transition) {
-      this.$element.trigger($.support.transition.end)
-      this.cycle(true)
-    }
-
-    this.interval = clearInterval(this.interval)
-
-    return this
-  }
-
-  Carousel.prototype.next = function () {
-    if (this.sliding) return
-    return this.slide('next')
-  }
-
-  Carousel.prototype.prev = function () {
-    if (this.sliding) return
-    return this.slide('prev')
-  }
-
-  Carousel.prototype.slide = function (type, next) {
-    var $active   = this.$element.find('.item.active')
-    var $next     = next || $active[type]()
-    var isCycling = this.interval
-    var direction = type == 'next' ? 'left' : 'right'
-    var fallback  = type == 'next' ? 'first' : 'last'
-    var that      = this
-
-    if (!$next.length) {
-      if (!this.options.wrap) return
-      $next = this.$element.find('.item')[fallback]()
-    }
-
-    if ($next.hasClass('active')) return (this.sliding = false)
-
-    var relatedTarget = $next[0]
-    var slideEvent = $.Event('slide.bs.carousel', {
-      relatedTarget: relatedTarget,
-      direction: direction
-    })
-    this.$element.trigger(slideEvent)
-    if (slideEvent.isDefaultPrevented()) return
-
-    this.sliding = true
-
-    isCycling && this.pause()
-
-    if (this.$indicators.length) {
-      this.$indicators.find('.active').removeClass('active')
-      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
-      $nextIndicator && $nextIndicator.addClass('active')
-    }
-
-    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
-    if ($.support.transition && this.$element.hasClass('slide')) {
-      $next.addClass(type)
-      $next[0].offsetWidth // force reflow
-      $active.addClass(direction)
-      $next.addClass(direction)
-      $active
-        .one('bsTransitionEnd', function () {
-          $next.removeClass([type, direction].join(' ')).addClass('active')
-          $active.removeClass(['active', direction].join(' '))
-          that.sliding = false
-          setTimeout(function () {
-            that.$element.trigger(slidEvent)
-          }, 0)
-        })
-        .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)
-    } else {
-      $active.removeClass('active')
-      $next.addClass('active')
-      this.sliding = false
-      this.$element.trigger(slidEvent)
-    }
-
-    isCycling && this.cycle()
-
-    return this
-  }
-
-
-  // CAROUSEL PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.carousel')
-      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
-      var action  = typeof option == 'string' ? option : options.slide
-
-      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
-      if (typeof option == 'number') data.to(option)
-      else if (action) data[action]()
-      else if (options.interval) data.pause().cycle()
-    })
-  }
-
-  var old = $.fn.carousel
-
-  $.fn.carousel             = Plugin
-  $.fn.carousel.Constructor = Carousel
-
-
-  // CAROUSEL NO CONFLICT
-  // ====================
-
-  $.fn.carousel.noConflict = function () {
-    $.fn.carousel = old
-    return this
-  }
-
-
-  // CAROUSEL DATA-API
-  // =================
-
-  $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
-    var href
-    var $this   = $(this)
-    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
-    if (!$target.hasClass('carousel')) return
-    var options = $.extend({}, $target.data(), $this.data())
-    var slideIndex = $this.attr('data-slide-to')
-    if (slideIndex) options.interval = false
-
-    Plugin.call($target, options)
-
-    if (slideIndex) {
-      $target.data('bs.carousel').to(slideIndex)
-    }
-
-    e.preventDefault()
-  })
-
-  $(window).on('load', function () {
-    $('[data-ride="carousel"]').each(function () {
-      var $carousel = $(this)
-      Plugin.call($carousel, $carousel.data())
-    })
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: collapse.js v3.2.0
- * http://getbootstrap.com/javascript/#collapse
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // COLLAPSE PUBLIC CLASS DEFINITION
-  // ================================
-
-  var Collapse = function (element, options) {
-    this.$element      = $(element)
-    this.options       = $.extend({}, Collapse.DEFAULTS, options)
-    this.transitioning = null
-
-    if (this.options.parent) this.$parent = $(this.options.parent)
-    if (this.options.toggle) this.toggle()
-  }
-
-  Collapse.VERSION  = '3.2.0'
-
-  Collapse.DEFAULTS = {
-    toggle: true
-  }
-
-  Collapse.prototype.dimension = function () {
-    var hasWidth = this.$element.hasClass('width')
-    return hasWidth ? 'width' : 'height'
-  }
-
-  Collapse.prototype.show = function () {
-    if (this.transitioning || this.$element.hasClass('in')) return
-
-    var startEvent = $.Event('show.bs.collapse')
-    this.$element.trigger(startEvent)
-    if (startEvent.isDefaultPrevented()) return
-
-    var actives = this.$parent && this.$parent.find('> .panel > .in')
-
-    if (actives && actives.length) {
-      var hasData = actives.data('bs.collapse')
-      if (hasData && hasData.transitioning) return
-      Plugin.call(actives, 'hide')
-      hasData || actives.data('bs.collapse', null)
-    }
-
-    var dimension = this.dimension()
-
-    this.$element
-      .removeClass('collapse')
-      .addClass('collapsing')[dimension](0)
-
-    this.transitioning = 1
-
-    var complete = function () {
-      this.$element
-        .removeClass('collapsing')
-        .addClass('collapse in')[dimension]('')
-      this.transitioning = 0
-      this.$element
-        .trigger('shown.bs.collapse')
-    }
-
-    if (!$.support.transition) return complete.call(this)
-
-    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
-
-    this.$element
-      .one('bsTransitionEnd', $.proxy(complete, this))
-      .emulateTransitionEnd(350)[dimension](this.$element[0][scrollSize])
-  }
-
-  Collapse.prototype.hide = function () {
-    if (this.transitioning || !this.$element.hasClass('in')) return
-
-    var startEvent = $.Event('hide.bs.collapse')
-    this.$element.trigger(startEvent)
-    if (startEvent.isDefaultPrevented()) return
-
-    var dimension = this.dimension()
-
-    this.$element[dimension](this.$element[dimension]())[0].offsetHeight
-
-    this.$element
-      .addClass('collapsing')
-      .removeClass('collapse')
-      .removeClass('in')
-
-    this.transitioning = 1
-
-    var complete = function () {
-      this.transitioning = 0
-      this.$element
-        .trigger('hidden.bs.collapse')
-        .removeClass('collapsing')
-        .addClass('collapse')
-    }
-
-    if (!$.support.transition) return complete.call(this)
-
-    this.$element
-      [dimension](0)
-      .one('bsTransitionEnd', $.proxy(complete, this))
-      .emulateTransitionEnd(350)
-  }
-
-  Collapse.prototype.toggle = function () {
-    this[this.$element.hasClass('in') ? 'hide' : 'show']()
-  }
-
-
-  // COLLAPSE PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.collapse')
-      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
-      if (!data && options.toggle && option == 'show') option = !option
-      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.collapse
-
-  $.fn.collapse             = Plugin
-  $.fn.collapse.Constructor = Collapse
-
-
-  // COLLAPSE NO CONFLICT
-  // ====================
-
-  $.fn.collapse.noConflict = function () {
-    $.fn.collapse = old
-    return this
-  }
-
-
-  // COLLAPSE DATA-API
-  // =================
-
-  $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
-    var href
-    var $this   = $(this)
-    var target  = $this.attr('data-target')
-        || e.preventDefault()
-        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
-    var $target = $(target)
-    var data    = $target.data('bs.collapse')
-    var option  = data ? 'toggle' : $this.data()
-    var parent  = $this.attr('data-parent')
-    var $parent = parent && $(parent)
-
-    if (!data || !data.transitioning) {
-      if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed')
-      $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
-    }
-
-    Plugin.call($target, option)
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: dropdown.js v3.2.0
- * http://getbootstrap.com/javascript/#dropdowns
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // DROPDOWN CLASS DEFINITION
-  // =========================
-
-  var backdrop = '.dropdown-backdrop'
-  var toggle   = '[data-toggle="dropdown"]'
-  var Dropdown = function (element) {
-    $(element).on('click.bs.dropdown', this.toggle)
-  }
-
-  Dropdown.VERSION = '3.2.0'
-
-  Dropdown.prototype.toggle = function (e) {
-    var $this = $(this)
-
-    if ($this.is('.disabled, :disabled')) return
-
-    var $parent  = getParent($this)
-    var isActive = $parent.hasClass('open')
-
-    clearMenus()
-
-    if (!isActive) {
-      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
-        // if mobile we use a backdrop because click events don't delegate
-        $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
-      }
-
-      var relatedTarget = { relatedTarget: this }
-      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
-
-      if (e.isDefaultPrevented()) return
-
-      $this.trigger('focus')
-
-      $parent
-        .toggleClass('open')
-        .trigger('shown.bs.dropdown', relatedTarget)
-    }
-
-    return false
-  }
-
-  Dropdown.prototype.keydown = function (e) {
-    if (!/(38|40|27)/.test(e.keyCode)) return
-
-    var $this = $(this)
-
-    e.preventDefault()
-    e.stopPropagation()
-
-    if ($this.is('.disabled, :disabled')) return
-
-    var $parent  = getParent($this)
-    var isActive = $parent.hasClass('open')
-
-    if (!isActive || (isActive && e.keyCode == 27)) {
-      if (e.which == 27) $parent.find(toggle).trigger('focus')
-      return $this.trigger('click')
-    }
-
-    var desc = ' li:not(.divider):visible a'
-    var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
-
-    if (!$items.length) return
-
-    var index = $items.index($items.filter(':focus'))
-
-    if (e.keyCode == 38 && index > 0)                 index--                        // up
-    if (e.keyCode == 40 && index < $items.length - 1) index++                        // down
-    if (!~index)                                      index = 0
-
-    $items.eq(index).trigger('focus')
-  }
-
-  function clearMenus(e) {
-    if (e && e.which === 3) return
-    $(backdrop).remove()
-    $(toggle).each(function () {
-      var $parent = getParent($(this))
-      var relatedTarget = { relatedTarget: this }
-      if (!$parent.hasClass('open')) return
-      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
-      if (e.isDefaultPrevented()) return
-      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
-    })
-  }
-
-  function getParent($this) {
-    var selector = $this.attr('data-target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    var $parent = selector && $(selector)
-
-    return $parent && $parent.length ? $parent : $this.parent()
-  }
-
-
-  // DROPDOWN PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.dropdown')
-
-      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  var old = $.fn.dropdown
-
-  $.fn.dropdown             = Plugin
-  $.fn.dropdown.Constructor = Dropdown
-
-
-  // DROPDOWN NO CONFLICT
-  // ====================
-
-  $.fn.dropdown.noConflict = function () {
-    $.fn.dropdown = old
-    return this
-  }
-
-
-  // APPLY TO STANDARD DROPDOWN ELEMENTS
-  // ===================================
-
-  $(document)
-    .on('click.bs.dropdown.data-api', clearMenus)
-    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
-    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
-    .on('keydown.bs.dropdown.data-api', toggle + ', [role="menu"], [role="listbox"]', Dropdown.prototype.keydown)
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: modal.js v3.2.0
- * http://getbootstrap.com/javascript/#modals
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // MODAL CLASS DEFINITION
-  // ======================
-
-  var Modal = function (element, options) {
-    this.options        = options
-    this.$body          = $(document.body)
-    this.$element       = $(element)
-    this.$backdrop      =
-    this.isShown        = null
-    this.scrollbarWidth = 0
-
-    if (this.options.remote) {
-      this.$element
-        .find('.modal-content')
-        .load(this.options.remote, $.proxy(function () {
-          this.$element.trigger('loaded.bs.modal')
-        }, this))
-    }
-  }
-
-  Modal.VERSION  = '3.2.0'
-
-  Modal.DEFAULTS = {
-    backdrop: true,
-    keyboard: true,
-    show: true
-  }
-
-  Modal.prototype.toggle = function (_relatedTarget) {
-    return this.isShown ? this.hide() : this.show(_relatedTarget)
-  }
-
-  Modal.prototype.show = function (_relatedTarget) {
-    var that = this
-    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
-
-    this.$element.trigger(e)
-
-    if (this.isShown || e.isDefaultPrevented()) return
-
-    this.isShown = true
-
-    this.checkScrollbar()
-    this.$body.addClass('modal-open')
-
-    this.setScrollbar()
-    this.escape()
-
-    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
-
-    this.backdrop(function () {
-      var transition = $.support.transition && that.$element.hasClass('fade')
-
-      if (!that.$element.parent().length) {
-        that.$element.appendTo(that.$body) // don't move modals dom position
-      }
-
-      that.$element
-        .show()
-        .scrollTop(0)
-
-      if (transition) {
-        that.$element[0].offsetWidth // force reflow
-      }
-
-      that.$element
-        .addClass('in')
-        .attr('aria-hidden', false)
-
-      that.enforceFocus()
-
-      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
-
-      transition ?
-        that.$element.find('.modal-dialog') // wait for modal to slide in
-          .one('bsTransitionEnd', function () {
-            that.$element.trigger('focus').trigger(e)
-          })
-          .emulateTransitionEnd(300) :
-        that.$element.trigger('focus').trigger(e)
-    })
-  }
-
-  Modal.prototype.hide = function (e) {
-    if (e) e.preventDefault()
-
-    e = $.Event('hide.bs.modal')
-
-    this.$element.trigger(e)
-
-    if (!this.isShown || e.isDefaultPrevented()) return
-
-    this.isShown = false
-
-    this.$body.removeClass('modal-open')
-
-    this.resetScrollbar()
-    this.escape()
-
-    $(document).off('focusin.bs.modal')
-
-    this.$element
-      .removeClass('in')
-      .attr('aria-hidden', true)
-      .off('click.dismiss.bs.modal')
-
-    $.support.transition && this.$element.hasClass('fade') ?
-      this.$element
-        .one('bsTransitionEnd', $.proxy(this.hideModal, this))
-        .emulateTransitionEnd(300) :
-      this.hideModal()
-  }
-
-  Modal.prototype.enforceFocus = function () {
-    $(document)
-      .off('focusin.bs.modal') // guard against infinite focus loop
-      .on('focusin.bs.modal', $.proxy(function (e) {
-        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
-          this.$element.trigger('focus')
-        }
-      }, this))
-  }
-
-  Modal.prototype.escape = function () {
-    if (this.isShown && this.options.keyboard) {
-      this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
-        e.which == 27 && this.hide()
-      }, this))
-    } else if (!this.isShown) {
-      this.$element.off('keyup.dismiss.bs.modal')
-    }
-  }
-
-  Modal.prototype.hideModal = function () {
-    var that = this
-    this.$element.hide()
-    this.backdrop(function () {
-      that.$element.trigger('hidden.bs.modal')
-    })
-  }
-
-  Modal.prototype.removeBackdrop = function () {
-    this.$backdrop && this.$backdrop.remove()
-    this.$backdrop = null
-  }
-
-  Modal.prototype.backdrop = function (callback) {
-    var that = this
-    var animate = this.$element.hasClass('fade') ? 'fade' : ''
-
-    if (this.isShown && this.options.backdrop) {
-      var doAnimate = $.support.transition && animate
-
-      this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
-        .appendTo(this.$body)
-
-      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
-        if (e.target !== e.currentTarget) return
-        this.options.backdrop == 'static'
-          ? this.$element[0].focus.call(this.$element[0])
-          : this.hide.call(this)
-      }, this))
-
-      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
-
-      this.$backdrop.addClass('in')
-
-      if (!callback) return
-
-      doAnimate ?
-        this.$backdrop
-          .one('bsTransitionEnd', callback)
-          .emulateTransitionEnd(150) :
-        callback()
-
-    } else if (!this.isShown && this.$backdrop) {
-      this.$backdrop.removeClass('in')
-
-      var callbackRemove = function () {
-        that.removeBackdrop()
-        callback && callback()
-      }
-      $.support.transition && this.$element.hasClass('fade') ?
-        this.$backdrop
-          .one('bsTransitionEnd', callbackRemove)
-          .emulateTransitionEnd(150) :
-        callbackRemove()
-
-    } else if (callback) {
-      callback()
-    }
-  }
-
-  Modal.prototype.checkScrollbar = function () {
-    if (document.body.clientWidth >= window.innerWidth) return
-    this.scrollbarWidth = this.scrollbarWidth || this.measureScrollbar()
-  }
-
-  Modal.prototype.setScrollbar = function () {
-    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
-    if (this.scrollbarWidth) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
-  }
-
-  Modal.prototype.resetScrollbar = function () {
-    this.$body.css('padding-right', '')
-  }
-
-  Modal.prototype.measureScrollbar = function () { // thx walsh
-    var scrollDiv = document.createElement('div')
-    scrollDiv.className = 'modal-scrollbar-measure'
-    this.$body.append(scrollDiv)
-    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
-    this.$body[0].removeChild(scrollDiv)
-    return scrollbarWidth
-  }
-
-
-  // MODAL PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option, _relatedTarget) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.modal')
-      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
-      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
-      if (typeof option == 'string') data[option](_relatedTarget)
-      else if (options.show) data.show(_relatedTarget)
-    })
-  }
-
-  var old = $.fn.modal
-
-  $.fn.modal             = Plugin
-  $.fn.modal.Constructor = Modal
-
-
-  // MODAL NO CONFLICT
-  // =================
-
-  $.fn.modal.noConflict = function () {
-    $.fn.modal = old
-    return this
-  }
-
-
-  // MODAL DATA-API
-  // ==============
-
-  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
-    var $this   = $(this)
-    var href    = $this.attr('href')
-    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
-    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
-
-    if ($this.is('a')) e.preventDefault()
-
-    $target.one('show.bs.modal', function (showEvent) {
-      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
-      $target.one('hidden.bs.modal', function () {
-        $this.is(':visible') && $this.trigger('focus')
-      })
-    })
-    Plugin.call($target, option, this)
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: tooltip.js v3.2.0
- * http://getbootstrap.com/javascript/#tooltip
- * Inspired by the original jQuery.tipsy by Jason Frame
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // TOOLTIP PUBLIC CLASS DEFINITION
-  // ===============================
-
-  var Tooltip = function (element, options) {
-    this.type       =
-    this.options    =
-    this.enabled    =
-    this.timeout    =
-    this.hoverState =
-    this.$element   = null
-
-    this.init('tooltip', element, options)
-  }
-
-  Tooltip.VERSION  = '3.2.0'
-
-  Tooltip.DEFAULTS = {
-    animation: true,
-    placement: 'top',
-    selector: false,
-    template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
-    trigger: 'hover focus',
-    title: '',
-    delay: 0,
-    html: false,
-    container: false,
-    viewport: {
-      selector: 'body',
-      padding: 0
-    }
-  }
-
-  Tooltip.prototype.init = function (type, element, options) {
-    this.enabled   = true
-    this.type      = type
-    this.$element  = $(element)
-    this.options   = this.getOptions(options)
-    this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
-
-    var triggers = this.options.trigger.split(' ')
-
-    for (var i = triggers.length; i--;) {
-      var trigger = triggers[i]
-
-      if (trigger == 'click') {
-        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
-      } else if (trigger != 'manual') {
-        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
-        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
-
-        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
-        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
-      }
-    }
-
-    this.options.selector ?
-      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
-      this.fixTitle()
-  }
-
-  Tooltip.prototype.getDefaults = function () {
-    return Tooltip.DEFAULTS
-  }
-
-  Tooltip.prototype.getOptions = function (options) {
-    options = $.extend({}, this.getDefaults(), this.$element.data(), options)
-
-    if (options.delay && typeof options.delay == 'number') {
-      options.delay = {
-        show: options.delay,
-        hide: options.delay
-      }
-    }
-
-    return options
-  }
-
-  Tooltip.prototype.getDelegateOptions = function () {
-    var options  = {}
-    var defaults = this.getDefaults()
-
-    this._options && $.each(this._options, function (key, value) {
-      if (defaults[key] != value) options[key] = value
-    })
-
-    return options
-  }
-
-  Tooltip.prototype.enter = function (obj) {
-    var self = obj instanceof this.constructor ?
-      obj : $(obj.currentTarget).data('bs.' + this.type)
-
-    if (!self) {
-      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
-      $(obj.currentTarget).data('bs.' + this.type, self)
-    }
-
-    clearTimeout(self.timeout)
-
-    self.hoverState = 'in'
-
-    if (!self.options.delay || !self.options.delay.show) return self.show()
-
-    self.timeout = setTimeout(function () {
-      if (self.hoverState == 'in') self.show()
-    }, self.options.delay.show)
-  }
-
-  Tooltip.prototype.leave = function (obj) {
-    var self = obj instanceof this.constructor ?
-      obj : $(obj.currentTarget).data('bs.' + this.type)
-
-    if (!self) {
-      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
-      $(obj.currentTarget).data('bs.' + this.type, self)
-    }
-
-    clearTimeout(self.timeout)
-
-    self.hoverState = 'out'
-
-    if (!self.options.delay || !self.options.delay.hide) return self.hide()
-
-    self.timeout = setTimeout(function () {
-      if (self.hoverState == 'out') self.hide()
-    }, self.options.delay.hide)
-  }
-
-  Tooltip.prototype.show = function () {
-    var e = $.Event('show.bs.' + this.type)
-
-    if (this.hasContent() && this.enabled) {
-      this.$element.trigger(e)
-
-      var inDom = $.contains(document.documentElement, this.$element[0])
-      if (e.isDefaultPrevented() || !inDom) return
-      var that = this
-
-      var $tip = this.tip()
-
-      var tipId = this.getUID(this.type)
-
-      this.setContent()
-      $tip.attr('id', tipId)
-      this.$element.attr('aria-describedby', tipId)
-
-      if (this.options.animation) $tip.addClass('fade')
-
-      var placement = typeof this.options.placement == 'function' ?
-        this.options.placement.call(this, $tip[0], this.$element[0]) :
-        this.options.placement
-
-      var autoToken = /\s?auto?\s?/i
-      var autoPlace = autoToken.test(placement)
-      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
-
-      $tip
-        .detach()
-        .css({ top: 0, left: 0, display: 'block' })
-        .addClass(placement)
-        .data('bs.' + this.type, this)
-
-      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
-
-      var pos          = this.getPosition()
-      var actualWidth  = $tip[0].offsetWidth
-      var actualHeight = $tip[0].offsetHeight
-
-      if (autoPlace) {
-        var orgPlacement = placement
-        var $parent      = this.$element.parent()
-        var parentDim    = this.getPosition($parent)
-
-        placement = placement == 'bottom' && pos.top   + pos.height       + actualHeight - parentDim.scroll > parentDim.height ? 'top'    :
-                    placement == 'top'    && pos.top   - parentDim.scroll - actualHeight < 0                                   ? 'bottom' :
-                    placement == 'right'  && pos.right + actualWidth      > parentDim.width                                    ? 'left'   :
-                    placement == 'left'   && pos.left  - actualWidth      < parentDim.left                                     ? 'right'  :
-                    placement
-
-        $tip
-          .removeClass(orgPlacement)
-          .addClass(placement)
-      }
-
-      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
-
-      this.applyPlacement(calculatedOffset, placement)
-
-      var complete = function () {
-        that.$element.trigger('shown.bs.' + that.type)
-        that.hoverState = null
-      }
-
-      $.support.transition && this.$tip.hasClass('fade') ?
-        $tip
-          .one('bsTransitionEnd', complete)
-          .emulateTransitionEnd(150) :
-        complete()
-    }
-  }
-
-  Tooltip.prototype.applyPlacement = function (offset, placement) {
-    var $tip   = this.tip()
-    var width  = $tip[0].offsetWidth
-    var height = $tip[0].offsetHeight
-
-    // manually read margins because getBoundingClientRect includes difference
-    var marginTop = parseInt($tip.css('margin-top'), 10)
-    var marginLeft = parseInt($tip.css('margin-left'), 10)
-
-    // we must check for NaN for ie 8/9
-    if (isNaN(marginTop))  marginTop  = 0
-    if (isNaN(marginLeft)) marginLeft = 0
-
-    offset.top  = offset.top  + marginTop
-    offset.left = offset.left + marginLeft
-
-    // $.fn.offset doesn't round pixel values
-    // so we use setOffset directly with our own function B-0
-    $.offset.setOffset($tip[0], $.extend({
-      using: function (props) {
-        $tip.css({
-          top: Math.round(props.top),
-          left: Math.round(props.left)
-        })
-      }
-    }, offset), 0)
-
-    $tip.addClass('in')
-
-    // check to see if placing tip in new offset caused the tip to resize itself
-    var actualWidth  = $tip[0].offsetWidth
-    var actualHeight = $tip[0].offsetHeight
-
-    if (placement == 'top' && actualHeight != height) {
-      offset.top = offset.top + height - actualHeight
-    }
-
-    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
-
-    if (delta.left) offset.left += delta.left
-    else offset.top += delta.top
-
-    var arrowDelta          = delta.left ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
-    var arrowPosition       = delta.left ? 'left'        : 'top'
-    var arrowOffsetPosition = delta.left ? 'offsetWidth' : 'offsetHeight'
-
-    $tip.offset(offset)
-    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], arrowPosition)
-  }
-
-  Tooltip.prototype.replaceArrow = function (delta, dimension, position) {
-    this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')
-  }
-
-  Tooltip.prototype.setContent = function () {
-    var $tip  = this.tip()
-    var title = this.getTitle()
-
-    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
-    $tip.removeClass('fade in top bottom left right')
-  }
-
-  Tooltip.prototype.hide = function () {
-    var that = this
-    var $tip = this.tip()
-    var e    = $.Event('hide.bs.' + this.type)
-
-    this.$element.removeAttr('aria-describedby')
-
-    function complete() {
-      if (that.hoverState != 'in') $tip.detach()
-      that.$element.trigger('hidden.bs.' + that.type)
-    }
-
-    this.$element.trigger(e)
-
-    if (e.isDefaultPrevented()) return
-
-    $tip.removeClass('in')
-
-    $.support.transition && this.$tip.hasClass('fade') ?
-      $tip
-        .one('bsTransitionEnd', complete)
-        .emulateTransitionEnd(150) :
-      complete()
-
-    this.hoverState = null
-
-    return this
-  }
-
-  Tooltip.prototype.fixTitle = function () {
-    var $e = this.$element
-    if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {
-      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
-    }
-  }
-
-  Tooltip.prototype.hasContent = function () {
-    return this.getTitle()
-  }
-
-  Tooltip.prototype.getPosition = function ($element) {
-    $element   = $element || this.$element
-    var el     = $element[0]
-    var isBody = el.tagName == 'BODY'
-    return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : null, {
-      scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop(),
-      width:  isBody ? $(window).width()  : $element.outerWidth(),
-      height: isBody ? $(window).height() : $element.outerHeight()
-    }, isBody ? { top: 0, left: 0 } : $element.offset())
-  }
-
-  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
-    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2  } :
-           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2  } :
-           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
-        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width   }
-
-  }
-
-  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
-    var delta = { top: 0, left: 0 }
-    if (!this.$viewport) return delta
-
-    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
-    var viewportDimensions = this.getPosition(this.$viewport)
-
-    if (/right|left/.test(placement)) {
-      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
-      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
-      if (topEdgeOffset < viewportDimensions.top) { // top overflow
-        delta.top = viewportDimensions.top - topEdgeOffset
-      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
-        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
-      }
-    } else {
-      var leftEdgeOffset  = pos.left - viewportPadding
-      var rightEdgeOffset = pos.left + viewportPadding + actualWidth
-      if (leftEdgeOffset < viewportDimensions.left) { // left overflow
-        delta.left = viewportDimensions.left - leftEdgeOffset
-      } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow
-        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
-      }
-    }
-
-    return delta
-  }
-
-  Tooltip.prototype.getTitle = function () {
-    var title
-    var $e = this.$element
-    var o  = this.options
-
-    title = $e.attr('data-original-title')
-      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
-
-    return title
-  }
-
-  Tooltip.prototype.getUID = function (prefix) {
-    do prefix += ~~(Math.random() * 1000000)
-    while (document.getElementById(prefix))
-    return prefix
-  }
-
-  Tooltip.prototype.tip = function () {
-    return (this.$tip = this.$tip || $(this.options.template))
-  }
-
-  Tooltip.prototype.arrow = function () {
-    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
-  }
-
-  Tooltip.prototype.validate = function () {
-    if (!this.$element[0].parentNode) {
-      this.hide()
-      this.$element = null
-      this.options  = null
-    }
-  }
-
-  Tooltip.prototype.enable = function () {
-    this.enabled = true
-  }
-
-  Tooltip.prototype.disable = function () {
-    this.enabled = false
-  }
-
-  Tooltip.prototype.toggleEnabled = function () {
-    this.enabled = !this.enabled
-  }
-
-  Tooltip.prototype.toggle = function (e) {
-    var self = this
-    if (e) {
-      self = $(e.currentTarget).data('bs.' + this.type)
-      if (!self) {
-        self = new this.constructor(e.currentTarget, this.getDelegateOptions())
-        $(e.currentTarget).data('bs.' + this.type, self)
-      }
-    }
-
-    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
-  }
-
-  Tooltip.prototype.destroy = function () {
-    clearTimeout(this.timeout)
-    this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
-  }
-
-
-  // TOOLTIP PLUGIN DEFINITION
-  // =========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.tooltip')
-      var options = typeof option == 'object' && option
-
-      if (!data && option == 'destroy') return
-      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.tooltip
-
-  $.fn.tooltip             = Plugin
-  $.fn.tooltip.Constructor = Tooltip
-
-
-  // TOOLTIP NO CONFLICT
-  // ===================
-
-  $.fn.tooltip.noConflict = function () {
-    $.fn.tooltip = old
-    return this
-  }
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: popover.js v3.2.0
- * http://getbootstrap.com/javascript/#popovers
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // POPOVER PUBLIC CLASS DEFINITION
-  // ===============================
-
-  var Popover = function (element, options) {
-    this.init('popover', element, options)
-  }
-
-  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
-
-  Popover.VERSION  = '3.2.0'
-
-  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
-    placement: 'right',
-    trigger: 'click',
-    content: '',
-    template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
-  })
-
-
-  // NOTE: POPOVER EXTENDS tooltip.js
-  // ================================
-
-  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
-
-  Popover.prototype.constructor = Popover
-
-  Popover.prototype.getDefaults = function () {
-    return Popover.DEFAULTS
-  }
-
-  Popover.prototype.setContent = function () {
-    var $tip    = this.tip()
-    var title   = this.getTitle()
-    var content = this.getContent()
-
-    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
-    $tip.find('.popover-content').empty()[ // we use append for html objects to maintain js events
-      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
-    ](content)
-
-    $tip.removeClass('fade top bottom left right in')
-
-    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
-    // this manually by checking the contents.
-    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
-  }
-
-  Popover.prototype.hasContent = function () {
-    return this.getTitle() || this.getContent()
-  }
-
-  Popover.prototype.getContent = function () {
-    var $e = this.$element
-    var o  = this.options
-
-    return $e.attr('data-content')
-      || (typeof o.content == 'function' ?
-            o.content.call($e[0]) :
-            o.content)
-  }
-
-  Popover.prototype.arrow = function () {
-    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
-  }
-
-  Popover.prototype.tip = function () {
-    if (!this.$tip) this.$tip = $(this.options.template)
-    return this.$tip
-  }
-
-
-  // POPOVER PLUGIN DEFINITION
-  // =========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.popover')
-      var options = typeof option == 'object' && option
-
-      if (!data && option == 'destroy') return
-      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.popover
-
-  $.fn.popover             = Plugin
-  $.fn.popover.Constructor = Popover
-
-
-  // POPOVER NO CONFLICT
-  // ===================
-
-  $.fn.popover.noConflict = function () {
-    $.fn.popover = old
-    return this
-  }
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: scrollspy.js v3.2.0
- * http://getbootstrap.com/javascript/#scrollspy
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // SCROLLSPY CLASS DEFINITION
-  // ==========================
-
-  function ScrollSpy(element, options) {
-    var process  = $.proxy(this.process, this)
-
-    this.$body          = $('body')
-    this.$scrollElement = $(element).is('body') ? $(window) : $(element)
-    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
-    this.selector       = (this.options.target || '') + ' .nav li > a'
-    this.offsets        = []
-    this.targets        = []
-    this.activeTarget   = null
-    this.scrollHeight   = 0
-
-    this.$scrollElement.on('scroll.bs.scrollspy', process)
-    this.refresh()
-    this.process()
-  }
-
-  ScrollSpy.VERSION  = '3.2.0'
-
-  ScrollSpy.DEFAULTS = {
-    offset: 10
-  }
-
-  ScrollSpy.prototype.getScrollHeight = function () {
-    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
-  }
-
-  ScrollSpy.prototype.refresh = function () {
-    var offsetMethod = 'offset'
-    var offsetBase   = 0
-
-    if (!$.isWindow(this.$scrollElement[0])) {
-      offsetMethod = 'position'
-      offsetBase   = this.$scrollElement.scrollTop()
-    }
-
-    this.offsets = []
-    this.targets = []
-    this.scrollHeight = this.getScrollHeight()
-
-    var self     = this
-
-    this.$body
-      .find(this.selector)
-      .map(function () {
-        var $el   = $(this)
-        var href  = $el.data('target') || $el.attr('href')
-        var $href = /^#./.test(href) && $(href)
-
-        return ($href
-          && $href.length
-          && $href.is(':visible')
-          && [[$href[offsetMethod]().top + offsetBase, href]]) || null
-      })
-      .sort(function (a, b) { return a[0] - b[0] })
-      .each(function () {
-        self.offsets.push(this[0])
-        self.targets.push(this[1])
-      })
-  }
-
-  ScrollSpy.prototype.process = function () {
-    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
-    var scrollHeight = this.getScrollHeight()
-    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
-    var offsets      = this.offsets
-    var targets      = this.targets
-    var activeTarget = this.activeTarget
-    var i
-
-    if (this.scrollHeight != scrollHeight) {
-      this.refresh()
-    }
-
-    if (scrollTop >= maxScroll) {
-      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
-    }
-
-    if (activeTarget && scrollTop <= offsets[0]) {
-      return activeTarget != (i = targets[0]) && this.activate(i)
-    }
-
-    for (i = offsets.length; i--;) {
-      activeTarget != targets[i]
-        && scrollTop >= offsets[i]
-        && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
-        && this.activate(targets[i])
-    }
-  }
-
-  ScrollSpy.prototype.activate = function (target) {
-    this.activeTarget = target
-
-    $(this.selector)
-      .parentsUntil(this.options.target, '.active')
-      .removeClass('active')
-
-    var selector = this.selector +
-        '[data-target="' + target + '"],' +
-        this.selector + '[href="' + target + '"]'
-
-    var active = $(selector)
-      .parents('li')
-      .addClass('active')
-
-    if (active.parent('.dropdown-menu').length) {
-      active = active
-        .closest('li.dropdown')
-        .addClass('active')
-    }
-
-    active.trigger('activate.bs.scrollspy')
-  }
-
-
-  // SCROLLSPY PLUGIN DEFINITION
-  // ===========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.scrollspy')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.scrollspy
-
-  $.fn.scrollspy             = Plugin
-  $.fn.scrollspy.Constructor = ScrollSpy
-
-
-  // SCROLLSPY NO CONFLICT
-  // =====================
-
-  $.fn.scrollspy.noConflict = function () {
-    $.fn.scrollspy = old
-    return this
-  }
-
-
-  // SCROLLSPY DATA-API
-  // ==================
-
-  $(window).on('load.bs.scrollspy.data-api', function () {
-    $('[data-spy="scroll"]').each(function () {
-      var $spy = $(this)
-      Plugin.call($spy, $spy.data())
-    })
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: tab.js v3.2.0
- * http://getbootstrap.com/javascript/#tabs
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // TAB CLASS DEFINITION
-  // ====================
-
-  var Tab = function (element) {
-    this.element = $(element)
-  }
-
-  Tab.VERSION = '3.2.0'
-
-  Tab.prototype.show = function () {
-    var $this    = this.element
-    var $ul      = $this.closest('ul:not(.dropdown-menu)')
-    var selector = $this.data('target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    if ($this.parent('li').hasClass('active')) return
-
-    var previous = $ul.find('.active:last a')[0]
-    var e        = $.Event('show.bs.tab', {
-      relatedTarget: previous
-    })
-
-    $this.trigger(e)
-
-    if (e.isDefaultPrevented()) return
-
-    var $target = $(selector)
-
-    this.activate($this.closest('li'), $ul)
-    this.activate($target, $target.parent(), function () {
-      $this.trigger({
-        type: 'shown.bs.tab',
-        relatedTarget: previous
-      })
-    })
-  }
-
-  Tab.prototype.activate = function (element, container, callback) {
-    var $active    = container.find('> .active')
-    var transition = callback
-      && $.support.transition
-      && $active.hasClass('fade')
-
-    function next() {
-      $active
-        .removeClass('active')
-        .find('> .dropdown-menu > .active')
-        .removeClass('active')
-
-      element.addClass('active')
-
-      if (transition) {
-        element[0].offsetWidth // reflow for transition
-        element.addClass('in')
-      } else {
-        element.removeClass('fade')
-      }
-
-      if (element.parent('.dropdown-menu')) {
-        element.closest('li.dropdown').addClass('active')
-      }
-
-      callback && callback()
-    }
-
-    transition ?
-      $active
-        .one('bsTransitionEnd', next)
-        .emulateTransitionEnd(150) :
-      next()
-
-    $active.removeClass('in')
-  }
-
-
-  // TAB PLUGIN DEFINITION
-  // =====================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.tab')
-
-      if (!data) $this.data('bs.tab', (data = new Tab(this)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.tab
-
-  $.fn.tab             = Plugin
-  $.fn.tab.Constructor = Tab
-
-
-  // TAB NO CONFLICT
-  // ===============
-
-  $.fn.tab.noConflict = function () {
-    $.fn.tab = old
-    return this
-  }
-
-
-  // TAB DATA-API
-  // ============
-
-  $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
-    e.preventDefault()
-    Plugin.call($(this), 'show')
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: affix.js v3.2.0
- * http://getbootstrap.com/javascript/#affix
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // AFFIX CLASS DEFINITION
-  // ======================
-
-  var Affix = function (element, options) {
-    this.options = $.extend({}, Affix.DEFAULTS, options)
-
-    this.$target = $(this.options.target)
-      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
-      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
-
-    this.$element     = $(element)
-    this.affixed      =
-    this.unpin        =
-    this.pinnedOffset = null
-
-    this.checkPosition()
-  }
-
-  Affix.VERSION  = '3.2.0'
-
-  Affix.RESET    = 'affix affix-top affix-bottom'
-
-  Affix.DEFAULTS = {
-    offset: 0,
-    target: window
-  }
-
-  Affix.prototype.getPinnedOffset = function () {
-    if (this.pinnedOffset) return this.pinnedOffset
-    this.$element.removeClass(Affix.RESET).addClass('affix')
-    var scrollTop = this.$target.scrollTop()
-    var position  = this.$element.offset()
-    return (this.pinnedOffset = position.top - scrollTop)
-  }
-
-  Affix.prototype.checkPositionWithEventLoop = function () {
-    setTimeout($.proxy(this.checkPosition, this), 1)
-  }
-
-  Affix.prototype.checkPosition = function () {
-    if (!this.$element.is(':visible')) return
-
-    var scrollHeight = $(document).height()
-    var scrollTop    = this.$target.scrollTop()
-    var position     = this.$element.offset()
-    var offset       = this.options.offset
-    var offsetTop    = offset.top
-    var offsetBottom = offset.bottom
-
-    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
-    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
-    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
-
-    var affix = this.unpin   != null && (scrollTop + this.unpin <= position.top) ? false :
-                offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
-                offsetTop    != null && (scrollTop <= offsetTop) ? 'top' : false
-
-    if (this.affixed === affix) return
-    if (this.unpin != null) this.$element.css('top', '')
-
-    var affixType = 'affix' + (affix ? '-' + affix : '')
-    var e         = $.Event(affixType + '.bs.affix')
-
-    this.$element.trigger(e)
-
-    if (e.isDefaultPrevented()) return
-
-    this.affixed = affix
-    this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
-
-    this.$element
-      .removeClass(Affix.RESET)
-      .addClass(affixType)
-      .trigger($.Event(affixType.replace('affix', 'affixed')))
-
-    if (affix == 'bottom') {
-      this.$element.offset({
-        top: scrollHeight - this.$element.height() - offsetBottom
-      })
-    }
-  }
-
-
-  // AFFIX PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.affix')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.affix
-
-  $.fn.affix             = Plugin
-  $.fn.affix.Constructor = Affix
-
-
-  // AFFIX NO CONFLICT
-  // =================
-
-  $.fn.affix.noConflict = function () {
-    $.fn.affix = old
-    return this
-  }
-
-
-  // AFFIX DATA-API
-  // ==============
-
-  $(window).on('load', function () {
-    $('[data-spy="affix"]').each(function () {
-      var $spy = $(this)
-      var data = $spy.data()
-
-      data.offset = data.offset || {}
-
-      if (data.offsetBottom) data.offset.bottom = data.offsetBottom
-      if (data.offsetTop)    data.offset.top    = data.offsetTop
-
-      Plugin.call($spy, data)
-    })
-  })
-
-}(jQuery);
diff --git a/site/src/site/assets/js/vendor/bootstrap.min.js b/site/src/site/assets/js/vendor/bootstrap.min.js
deleted file mode 100644
index 1765631..0000000
--- a/site/src/site/assets/js/vendor/bootstrap.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
-* bootstrap.js v3.0.0 by @fat and @mdo
-* Copyright 2013 Twitter Inc.
-* http://www.apache.org/licenses/LICENSE-2.0
-*/
-if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("dropdown");d||c.data("dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery);
\ No newline at end of file
diff --git a/site/src/site/assets/js/vendor/classie.js b/site/src/site/assets/js/vendor/classie.js
deleted file mode 100644
index a967554..0000000
--- a/site/src/site/assets/js/vendor/classie.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/*!
- * classie - class helper functions
- * from bonzo https://github.com/ded/bonzo
- * 
- * classie.has( elem, 'my-class' ) -> true/false
- * classie.add( elem, 'my-new-class' )
- * classie.remove( elem, 'my-unwanted-class' )
- * classie.toggle( elem, 'my-class' )
- */
-
-/*jshint browser: true, strict: true, undef: true */
-/*global define: false */
-
-( function( window ) {
-
-'use strict';
-
-// class helper functions from bonzo https://github.com/ded/bonzo
-
-function classReg( className ) {
-  return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
-}
-
-// classList support for class management
-// altho to be fair, the api sucks because it won't accept multiple classes at once
-var hasClass, addClass, removeClass;
-
-if ( 'classList' in document.documentElement ) {
-  hasClass = function( elem, c ) {
-    return elem.classList.contains( c );
-  };
-  addClass = function( elem, c ) {
-    elem.classList.add( c );
-  };
-  removeClass = function( elem, c ) {
-    elem.classList.remove( c );
-  };
-}
-else {
-  hasClass = function( elem, c ) {
-    return classReg( c ).test( elem.className );
-  };
-  addClass = function( elem, c ) {
-    if ( !hasClass( elem, c ) ) {
-      elem.className = elem.className + ' ' + c;
-    }
-  };
-  removeClass = function( elem, c ) {
-    elem.className = elem.className.replace( classReg( c ), ' ' );
-  };
-}
-
-function toggleClass( elem, c ) {
-  var fn = hasClass( elem, c ) ? removeClass : addClass;
-  fn( elem, c );
-}
-
-var classie = {
-  // full names
-  hasClass: hasClass,
-  addClass: addClass,
-  removeClass: removeClass,
-  toggleClass: toggleClass,
-  // short names
-  has: hasClass,
-  add: addClass,
-  remove: removeClass,
-  toggle: toggleClass
-};
-
-// transport
-if ( typeof define === 'function' && define.amd ) {
-  // AMD
-  define( classie );
-} else {
-  // browser global
-  window.classie = classie;
-}
-
-})( window );
diff --git a/site/src/site/assets/js/vendor/jquery-1.10.2.min.js b/site/src/site/assets/js/vendor/jquery-1.10.2.min.js
deleted file mode 100644
index da41706..0000000
--- a/site/src/site/assets/js/vendor/jquery-1.10.2.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
-//@ sourceMappingURL=jquery-1.10.2.min.map
-*/
-(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
-}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},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(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
-u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.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(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,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"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
diff --git a/site/src/site/assets/js/vendor/modernizr-2.6.2.min.js b/site/src/site/assets/js/vendor/modernizr-2.6.2.min.js
deleted file mode 100644
index f65d479..0000000
--- a/site/src/site/assets/js/vendor/modernizr-2.6.2.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
- * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
- */
-;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
diff --git a/site/src/site/assets/js/vendor/sidebarEffects.js b/site/src/site/assets/js/vendor/sidebarEffects.js
deleted file mode 100644
index 5906710..0000000
--- a/site/src/site/assets/js/vendor/sidebarEffects.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * sidebarEffects.js v1.0.0
- * http://www.codrops.com
- *
- * Licensed under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
- * 
- * Copyright 2013, Codrops
- * http://www.codrops.com
- */
- var SidebarMenuEffects = (function() {
-
- 	function hasParentClass( e, classname ) {
-		if(e === document) return false;
-		if( classie.has( e, classname ) ) {
-			return true;
-		}
-		return e.parentNode && hasParentClass( e.parentNode, classname );
-	}
-
-	// http://coveroverflow.com/a/11381730/989439
-	function mobilecheck() {
-		var check = false;
-		(function(a){if(/(android|ipad|playbook|silk|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);
-		return check;
-	}
-
-	function init() {
-
-		var container = document.getElementById( 'st-container' ),
-			buttons = Array.prototype.slice.call( document.querySelectorAll( '.st-trigger' ) ),
-			// event type (if mobile use touch events)
-			eventtype = mobilecheck() ? 'touchstart' : 'click',
-			resetMenu = function() {
-				classie.remove( container, 'st-menu-open' );
-                $("html").removeClass('noScroll');
-			},
-			bodyClickFn = function(evt) {
-				if( !hasParentClass( evt.target, 'st-menu' ) ) {
-					resetMenu();
-					document.removeEventListener( eventtype, bodyClickFn );
-				}
-			};
-
-		buttons.forEach( function( el, i ) {
-			var effect = el.getAttribute( 'data-effect' );
-
-			el.addEventListener( eventtype, function( ev ) {
-				ev.stopPropagation();
-				ev.preventDefault();
-				container.className = 'st-container'; // clear
-				classie.add( container, effect );
-				setTimeout( function() {
-					classie.add( container, 'st-menu-open' );
-					$("html").addClass('noScroll');
-				}, 25 );
-				document.addEventListener( eventtype, bodyClickFn );
-			});
-		} );
-
-	}
-
-	init();
-
-})();
\ No newline at end of file
diff --git a/site/src/site/html/index.html b/site/src/site/html/index.html
deleted file mode 100644
index 970d45e..0000000
--- a/site/src/site/html/index.html
+++ /dev/null
@@ -1,68 +0,0 @@
-    <section class="row colset-2-its">
-        <h1>A multi-faceted language for the Java platform</h1>
-
-        <p>
-            <a href='http://www.apache.org/'>Apache</a> Groovy is a <strong>powerful</strong>, <strong>optionally typed</strong> and <strong>dynamic</strong>
-            language, with <strong>static-typing and static compilation</strong> capabilities, for the Java platform
-            aimed at improving developer productivity thanks to a concise, <strong>familiar and easy to learn
-            syntax</strong>. It integrates smoothly with any Java program, and immediately delivers to your application
-            powerful features, including scripting capabilities, <strong>Domain-Specific Language</strong> authoring,
-            runtime and compile-time <strong>meta-programming</strong> and <strong>functional</strong> programming.
-        </p>
-
-        <div class="col1">
-            <article>
-                <div class="icon icon-1"></div>
-                <h1>Flat learning curve</h1>
-
-                <p>Concise, readable and expressive syntax, easy to learn for Java developers</p>
-            </article>
-            <article>
-                <div class="icon icon-2"></div>
-                <h1>Smooth Java integration</h1>
-
-                <p>
-                    Seamlessly and transparently integrates and interoperates with Java and any third-party libraries
-                </p>
-            </article>
-            <article>
-                <div class="icon icon-6"></div>
-                <h1>Vibrant and rich ecosystem</h1>
-
-                <p>
-                    Web development, reactive applications, concurrency / asynchronous / parallelism library, test
-                    frameworks, build tools, code analysis, GUI building
-                </p>
-            </article>
-        </div>
-
-        <div class="col2">
-            <article>
-                <div class="icon icon-4"></div>
-                <h1>Powerful features</h1>
-
-                <p>
-                    Closures, builders, runtime &amp; compile-time meta-programming, functional programming, type
-                    inference, and static compilation
-                </p>
-            </article>
-            <article>
-                <div class="icon icon-5"></div>
-                <h1>Domain-Specific Languages</h1>
-
-                <p>
-                    Flexible &amp; malleable syntax, advanced integration &amp; customization mechanisms, to integrate
-                    readable business rules in your applications
-                </p>
-            </article>
-            <article>
-                <div class="icon icon-3"></div>
-                <h1>Scripting and testing glue</h1>
-
-                <p>
-                    Great for writing concise and maintainable tests, and for all your build and automation tasks
-                </p>
-            </article>
-        </div>
-    </section>
-    <hr class="row"/>
diff --git a/site/src/site/html/they-use-groovy.html b/site/src/site/html/they-use-groovy.html
deleted file mode 100644
index 8f03f2d..0000000
--- a/site/src/site/html/they-use-groovy.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<div id="they-use-groovy" class="orange-band">
-    <div class="row">
-        <div class="item">
-            <h1><strong>They all use Apache Groovy!</strong></h1>
-            <div id='logos-holder'>
-                <div class='logo' style='background-image:url(img/logos/netflix.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/amadeus.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/bestbuy.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/carfax.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/carriots.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/cisco.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/mutual-of-omaha.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/credit-suisse.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/airbusgroup.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/energy-transfer.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/epo.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/fanniemae.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/google.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/hypoport.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/ibm.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/jpmorganchase.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/linkedin.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/mastercard.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/mtv.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/commerzbank.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/national-cancer-institute.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/nestle.png)'></div>
-		        <div class='logo' style='background-image:url(img/logos/nielsen.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/oracle.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/paterson-cancer-institute.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/roche.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/sas.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/sky.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/sony.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/smartthings.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/target.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/thales.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/ubs.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/vodafone.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/voyages-sncf.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/walmart.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/wells-fargo.png)'></div>
-            </div>
-        </div>
-    </div>
-</div>
diff --git a/site/src/site/html/twittersearch.html b/site/src/site/html/twittersearch.html
deleted file mode 100644
index fcf1a57..0000000
--- a/site/src/site/html/twittersearch.html
+++ /dev/null
@@ -1 +0,0 @@
-<a class="twitter-timeline" href="https://twitter.com/ApacheGroovy?ref_src=twsrc%5Etfw">Tweets by ApacheGroovy</a> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
diff --git a/site/src/site/includes/bottommenu.groovy b/site/src/site/includes/bottommenu.groovy
deleted file mode 100644
index fb044db..0000000
--- a/site/src/site/includes/bottommenu.groovy
+++ /dev/null
@@ -1,29 +0,0 @@
-
-// footer
-footer(id: 'footer') {
-    div(class: 'row') {
-        div(class: 'colset-3-footer') {
-            menu.entrySet().eachWithIndex { entry, i ->
-                def (name, menu) = [entry.key, entry.value]
-                div(class: "col-${i+1}") {
-                    h1(name)
-                    ul {
-                        menu.each { menuItem ->
-                            li { a(href: relative(menuItem.link), menuItem.name) }
-                        }
-                    }
-                }
-            }
-            div(class: 'col-right') {
-                p {
-                    yield "The Groovy programming language is supported by the " 
-                    a href: 'http://www.apache.org', 'Apache Software Foundation'
-                    yield " and the Groovy community"
-                }
-                img(src: relative('img/asf_logo.png'), title: 'The Apache Software Foundation', alt: 'The Apache Software Foundation', class:'img-responsive')
-            }
-        }
-        div(class: 'clearfix', "&copy; 2003-${Calendar.instance[Calendar.YEAR]} the Apache Groovy project &mdash; " +
-                "Groovy is Open Source, ${$a(href: 'http://www.apache.org/licenses/LICENSE-2.0.html', 'Apache 2 License')}")
-    }
-}
diff --git a/site/src/site/includes/contribute-button.groovy b/site/src/site/includes/contribute-button.groovy
deleted file mode 100644
index 41729e8..0000000
--- a/site/src/site/includes/contribute-button.groovy
+++ /dev/null
@@ -1,7 +0,0 @@
-div(id: 'contribute-btn') {
-    button(type: 'button', class: 'btn btn-default',
-            onclick: "window.location.href=\"https://github.com/groovy/groovy-website/tree/master/site/src/site/pages/${currentPage}.groovy\"") {
-        i(class: 'fa fa-pencil-square-o') {}
-        yield ' Improve this doc'
-    }
-}
\ No newline at end of file
diff --git a/site/src/site/includes/support-navbar.groovy b/site/src/site/includes/support-navbar.groovy
deleted file mode 100644
index 0e14f1a..0000000
--- a/site/src/site/includes/support-navbar.groovy
+++ /dev/null
@@ -1,23 +0,0 @@
-
-ul(class: 'nav-sidebar') {
-    [
-            'support': 'Support',
-            'http://groovy.apache.org/index': 'Contribute',
-            'reporting-issues': 'Reporting issues',
-            'mailing-lists': 'Mailing-lists',
-            'events': 'Events',
-            'usergroups': 'User groups',
-            'thanks': 'Thanks',
-            'groovy-weekly': 'Groovy newsletter'
-    ].each { page, label ->
-        if (currentPage == page) {
-            li(class: 'active') { a(href: relative("${page}.html")) { strong(label) } }
-        } else {
-            li { a(href: "${page}.html", label) }
-        }
-    }
-    li { a(href: relative("groovy-weekly.html#subscribe"), class: 'anchor-link', 'Subscribe') }
-    li { a(href: relative("groovy-weekly.html#archives"), class: 'anchor-link', 'Archive') }
-}
-br()
-include unescaped: 'html/twittersearch.html'
diff --git a/site/src/site/includes/topmenu.groovy b/site/src/site/includes/topmenu.groovy
deleted file mode 100644
index 2d5fc1d..0000000
--- a/site/src/site/includes/topmenu.groovy
+++ /dev/null
@@ -1,31 +0,0 @@
-div(class: 'navbar navbar-default navbar-static-top', role: 'navigation') {
-    div(class: 'container') {
-        div(class: 'navbar-header') {
-            button(type: 'button', class: 'navbar-toggle', 'data-toggle': 'collapse', 'data-target': '.navbar-collapse') {
-                span(class: 'sr-only') {}
-                span(class: 'icon-bar') {}
-                span(class: 'icon-bar') {}
-                span(class: 'icon-bar') {}
-            }
-            a(class: 'navbar-brand', href: relative('index.html')) {
-                i(class: 'fa fa-star') {}
-                yield ' Apache Groovy'
-            }
-        }
-        div(class: 'navbar-collapse collapse') {
-            ul(class: 'nav navbar-nav navbar-right') {
-                menu['Groovy'].each { menuItem ->
-                    li(class: category == menuItem.name ? 'active' : '') { a(href: relative(menuItem.link), menuItem.name) }
-                }
-                li {
-                    a('data-effect': 'st-effect-9', class: 'st-trigger', href: '#', 'Socialize')
-                }
-                li(class: (category == 'Search') ? 'active' : '') {
-                    a(href: relative('search.html')) {
-                        i(class: 'fa fa-search') {}
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/site/src/site/layouts/iframedoc.groovy b/site/src/site/layouts/iframedoc.groovy
deleted file mode 100644
index fb528fd..0000000
--- a/site/src/site/layouts/iframedoc.groovy
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * This layout accepts the following parameters:
- *
- * @param menu the navigation menu
- * @param pageTitle the page title
- * @param extraStyles , a list of CSS files to be added in the header
- * @param scripts , a list of scripts to be imported
- * @param iframeTarget , the URL of the page to be included as an iframe
- */
-layout 'layouts/page.groovy', true,
-        mainContent: contents {
-            div {
-                include template: 'includes/topmenu.groovy'
-            }
-            iframe(class: 'doc-embed', frameborder: '0', height: '100%', width: '100%', src: iframeTarget) {}
-        }
diff --git a/site/src/site/layouts/main.groovy b/site/src/site/layouts/main.groovy
deleted file mode 100644
index 2f4626c..0000000
--- a/site/src/site/layouts/main.groovy
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * This layout accepts the following parameters:
- *
- * @param menu the navigation menu
- * @param pageTitle the page title
- * @param extraStyles , a list of CSS files to be added in the header
- * @param scripts , a list of scripts to be imported
- * @param extraFooter , a section to be added before closing body
- */
-layout 'layouts/page.groovy', true,
-        mainContent: contents {
-            // 'Content'
-            div {
-                include template: 'includes/topmenu.groovy'
-
-                // main contents goes here!
-                mainContent()
-
-                include template: 'includes/bottommenu.groovy'
-            }
-        }
diff --git a/site/src/site/layouts/page.groovy b/site/src/site/layouts/page.groovy
deleted file mode 100644
index bff19e9..0000000
--- a/site/src/site/layouts/page.groovy
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * This layout accepts the following parameters:
- *
- * @param pageTitle the page title
- * @param extraStyles , a list of CSS files to be added in the header
- * @param scripts , a list of scripts to be imported
- * @param contents the main page contents
- * @param extraFooter, a section to be added before closing body
- */
-
-// main layout
-yieldUnescaped '''<!DOCTYPE html>
-<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
-<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
-<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
-<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->'''
-
-head {
-    meta charset: 'utf-8'
-    meta 'http-equiv': 'X-UA-Compatible', content: 'IE=edge'
-    meta name: 'viewport', content: "width=device-width, initial-scale=1"
-    title(pageTitle)
-    link(href: relative("img/favicon.ico"), type: "image/x-ico", rel: "icon")
-    def styles = extraStyles ?: []
-    ['bootstrap.css', 'font-awesome.min.css', 'style.css', *styles].each {
-        link rel: 'stylesheet', type: 'text/css', href:
-                it.startsWith('http')?it:relative("css/$it")
-    }
-}
-
-body {
-    div(id: 'fork-me') {
-        a(href: 'https://github.com/apache/groovy') {
-            img(
-                    style: "position: fixed; top: -14px; right: -14px; border: 0; z-index: 100",
-                    src: 'https://camo.githubusercontent.com/365986a132ccd6a44c23a9169022c0b5c890c387/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f7265645f6161303030302e706e67', alt: 'Fork me on GitHub', 'data-canonical-src': 'https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png'
-            )
-        }
-    }
-
-    div(id: 'st-container', class: "st-container st-effect-9") {
-        nav(class: "st-menu st-effect-9", id: "menu-12") {
-            h2(class: "icon icon-lab", 'Socialize')
-            ul {
-                menu['Socialize'].each {
-                    def (text,url, style) = [it.name, it.link, it.style ]
-                    li {
-                        a(href: relative(url), class: 'icon') { yieldUnescaped "<span class='fa $style'></span> $text" }
-                    }
-                }
-            }
-        }
-
-        // 'content push wrapper'
-
-        div(class: 'st-pusher') {
-            div(class: 'st-content') {
-                div(class: 'st-content-inner') {
-                    yieldUnescaped '''<!--[if lt IE 7]>
-                    <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
-                <![endif]-->'''
-                    if (mainContent) {
-                        mainContent()
-                    }
-                }
-            }
-        }
-    }
-
-    def scripts = extraScripts ?: []
-    ['vendor/jquery-1.10.2.min.js', 'vendor/classie.js', 'vendor/bootstrap.js', 'vendor/sidebarEffects.js', 'vendor/modernizr-2.6.2.min.js','plugins.js', *scripts].each {
-        yieldUnescaped "<script src='${it.startsWith('http')?it:relative('js/'+it)}' defer></script>"
-    }
-
-    if (extraFooter) {
-        extraFooter()
-    }
-
-    script '''
-          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
-          ga('create', 'UA-257558-10', 'auto');
-          ga('send', 'pageview');
-    '''
-}
-
-yieldUnescaped '</html>'
\ No newline at end of file
diff --git a/site/src/site/pages/404.groovy b/site/src/site/pages/404.groovy
deleted file mode 100644
index 283d3b6..0000000
--- a/site/src/site/pages/404.groovy
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Ths template is generating the 404 page
- */
-
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - 404',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'panel panel-danger') {
-                            div(class: 'panel-heading', 'Oops! The page you are looking for does not exist!')
-                            div(class: 'panel-body') {
-                                p 'We could not find the page you are looking for. Maybe you are looking for one of those?'
-                                ul {
-                                    li("The ${$a(href: latestDocURL('documentation'), 'reference documentation')} of the Groovy language.")
-                                    li("The latest ${$a(href: latestDocURL('api'), 'Javadocs')} of the language.")
-                                    li("The latest ${$a(href: latestDocURL('gapi'), 'Groovdocs')} of the language.")
-                                    li("Description of ${$a(href: latestDocURL('groovy-jdk'), 'the Groovy development kit APIs')}.")
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
diff --git a/site/src/site/pages/api.groovy b/site/src/site/pages/api.groovy
deleted file mode 100644
index ec42398..0000000
--- a/site/src/site/pages/api.groovy
+++ /dev/null
@@ -1,2 +0,0 @@
-layout 'layouts/iframedoc.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Groovy Development Kit"
diff --git a/site/src/site/pages/buildstatus.groovy b/site/src/site/pages/buildstatus.groovy
deleted file mode 100644
index e78cdb9..0000000
--- a/site/src/site/pages/buildstatus.groovy
+++ /dev/null
@@ -1,78 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Continuous integration',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-circle-o-notch') {}
-                                yield ' Continuous integration'
-                            }
-                            article {
-                                p """
-                                    Our ${
-                                    $a(href: 'http://ci.groovy-lang.org?guest=1', 'continuous integration server')
-                                },
-                                    sponsored by ${$a(href: 'http://www.jetbrains.com', 'JetBrains')},
-                                    builds Groovy against multiple JDK versions, as well as some projects from the community tested
-                                    against development versions of Groovy:
-                                """
-                                hr(class: 'divider')
-
-                                h2 'Groovy builds'
-
-                                def renderBuilds = { Map builds ->
-                                    table(class: 'table table-stripped') {
-                                        thead {
-                                            tr {
-                                                th('Build name')
-                                                th('Status')
-                                            }
-                                        }
-                                        tbody {
-                                            builds.each { name, ref ->
-                                                def (id, branch) = ref
-                                                tr {
-                                                    td(name)
-                                                    td {
-                                                        a(href: "http://ci.groovy-lang.org/viewType.html?buildTypeId=$id&branch=$branch&tab=buildTypeStatusDiv&guest=1") {
-                                                            img(src: """http://ci.groovy-lang.org:8111/app/rest/builds/buildType:(id:$id)${branch?",branch:$branch":''}/statusIcon""")
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                                renderBuilds([
-                                        'Groovy master, JDK 7': ['Groovy_Jdk7Build', 'master'],
-                                        'Groovy master, JDK 8': ['Groovy_Jdk8Build_2', 'master'],
-                                        'Groovy master, JDK 9': ['Groovy_Jdk9Build', 'master'],
-                                        'Groovy 2.4.X, JDK 6': ['Groovy_Jdk6Build', 'GROOVY_2_4_X'],
-                                        'Groovy 2.4.X, JDK 7': ['Groovy_Jdk7Build', 'GROOVY_2_4_X'],
-                                        'Groovy 2.5.X, JDK 7': ['Groovy_Jdk7Build_2', 'GROOVY_2_5_X']
-                                ])
-
-                                hr(class: 'divider')
-
-                                h2 'Community joint builds'
-                                renderBuilds([
-                                        'Grails 3.2.x, Groovy 2.4.X': ['JointBuilds_Grails_Grails32x_Groovy24x', ''],
-                                        'GORM 6.1.x, Groovy 2.4.X': ['JointBuilds_Grails_Gorm61xGroovy24x', ''],
-                                        'Nextflow master, Groovy 2.4.X': ['JointBuilds_Nextflow_Groovy24xJointBuild', ''],
-                                        'Ratpack master, Groovy 2.4.X': ['JointBuilds_Ratpac_RatpackGroovy24x', '']
-                                ])
-
-                                p """
-                                    The Groovy development team is keen to test Groovy development versions against important
-                                    ecosystem projects. If you want your project to be added to the list, please contact
-                                    us on the ${$a(href:'mailing-lists.html','development mailing list')}.
-                                """
-                            }
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/changelog.groovy b/site/src/site/pages/changelog.groovy
deleted file mode 100644
index dfbdf09..0000000
--- a/site/src/site/pages/changelog.groovy
+++ /dev/null
@@ -1,39 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Groovy $groovyVersion Changelog",
-        mainContent: contents {
-            def issueMap = issues.groupBy { it.type }
-            def issueTypes = issueMap.keySet().sort()
-
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class:'active') {
-                                    a(href: '#changelog', "Changelog for Groovy $groovyVersion")
-                                }
-                                issueTypes.eachWithIndex { type, i ->
-                                    li { a(href: "#type$i", class: 'anchor-link', type) }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            a(name:"changelog"){}
-                            h1("Changelog for Groovy $groovyVersion")
-                            issueTypes.eachWithIndex { type,i ->
-                                def list = issueMap[type]
-                                a(name:"type$i"){}
-                                h2("$type")
-                                ul {
-                                    list.each { issue ->
-                                        li("[${$a(href: 'https://issues.apache.org/jira/browse/' + issue.id, issue.id)}] - ${issue.description}")
-                                    }
-                                }
-
-                            }
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/changelogs.groovy b/site/src/site/pages/changelogs.groovy
deleted file mode 100644
index 3d8cd8e..0000000
--- a/site/src/site/pages/changelogs.groovy
+++ /dev/null
@@ -1,43 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Changelogs",
-        mainContent: contents {
-            def majorize = { it.split(/\.|-/)[0..1].join('.')}
-
-            def major = versions.collect([] as Set) { majorize(it) }
-
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class:'active') {
-                                    a(href: '#changelog', "Changelogs")
-                                }
-                                major.each { v ->
-                                    li { a(href: "#changelog$v", class: 'anchor-link', "Groovy $v") }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            h1('Changelogs for Groovy')
-                            p 'Here you can find the changelogs for the past Groovy releases.'
-                            versions.groupBy { majorize(it) }.each {
-                                String mj = it.key
-                                List<String> minor = it.value
-                                a(name: "changelog$mj") {}
-                                h2("Groovy $mj")
-                                ul {
-                                    minor.each { v->
-                                        li {
-                                            yieldUnescaped "Changelog for "
-                                            a(href: "changelogs/changelog-${v}.html", "Groovy $v")
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/contribute.groovy b/site/src/site/pages/contribute.groovy
deleted file mode 100644
index d03a68d..0000000
--- a/site/src/site/pages/contribute.groovy
+++ /dev/null
@@ -1,227 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Contribute',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-pencil-square-o') {}
-                                yield ' Getting Involved'
-                            }
-                            article {
-                                p '''
-                                    Would you like to help us make the Groovy programming language even better? 
-                                    There are many ways in which you can get involved, make a difference and help
-                                    the Groovy development team to make Groovy even, well, groovier?
-                                    We really appreciate and welcome contributions and you can help us by:
-                                '''
-                                ul {
-                                    li {
-                                        yield 'helping other users or discussing future language directions on the '
-                                        a(href: 'http://groovy-lang.org/mailing-lists.html', 'mailing-lists')
-                                    }
-                                    li {
-                                        yield 'contribute to discussions on '
-                                        a(href: 'https://groovycommunity.com/', 'Slack')
-                                        yield " - this channel is not endorsed by the Apache Software Foundation, it's run by Groovy enthusiasts in the community for casual conversations and Q&A,"
-                                    }
-                                    li {
-                                        yield 'reporting or fixing '
-                                        a(href: '#reporting-issues', 'issues')
-                                        yield ' you encounter in our '
-                                        a(href: 'https://issues.apache.org/jira/browse/GROOVY', 'bug tracker')
-                                    }
-                                    li {
-                                        a(href: '#documenting', 'documenting')
-                                        yield ' various aspects of the language or its APIs'
-                                    }
-                                    li {
-                                        yield 'Creating or commenting on the '
-                                        a(href: 'wiki/geps.html', 'Groovy Enhancement Proposals')
-                                        yield ' which describe how we make significant changes to the language'
-                                    }
-                                    li {
-                                        yield 'improving this '
-                                        a(href: 'https://github.com/groovy/groovy-website', 'website')
-                                    }
-                                    li 'covering the code base with more tests to avoid future regressions, '
-                                    li {
-                                        yield 'and of course, by '
-                                        a(href: '#code', 'contributing bug fixes or new features')
-                                    }
-                                }
-                                hr(class: 'divider')
-
-                                h2 'Discussing on the mailing-lists and forums'
-                                p {
-                                    yield '''
-                                        If you encounter a problem, want to discuss a new feature,
-                                        share interesting findings, and more, then the '''
-                                    a(href: 'mailing-lists.html', 'mailing-lists')
-                                    yield '''
-                                        are the place to go to start a conversation with the Groovy developers
-                                        and other Groovy users. Discussions on the mailing list are archived.
-                                        It's the place to go to for all formal discussions or if you want to
-                                        search the archives. '''
-                                }
-                                p {
-                                    yield 'Alternatively, for more casual conversations and Q&A, consider using the '
-                                    a(href: 'https://groovycommunity.com/', 'Slack')
-                                    yield " channel. (This channel is not endorsed by the Apache Software Foundation; it's run by Groovy enthusiasts in the community.)"
-                                }
-
-                                hr(class: 'divider')
-
-                                a(name: 'reporting-issues') {}
-                                h2 'Reporting issues'
-                                p {
-                                    yield '''
-                                        If you are wanting to search existing issues, raise a new one or are keen
-                                        to fix some existing issues, then you should become familiar with Groovy's '''
-                                    a(href: 'https://issues.apache.org/jira/browse/GROOVY', 'Bug tracker')
-                                    yield '.'
-                                }
-                                p {
-                                    yield 'Before submitting a new issue, we recommend you read our guide to '
-                                    a(href: 'http://groovy-lang.org/reporting-issues.html', 'reporting issues')
-                                }
-                                p {
-                                    button(type: 'button', class: 'btn btn-default', 'Report an issue',
-                                            onclick: 'window.location.href="https://issues.apache.org/jira/browse/GROOVY"')
-                                }
-
-                                hr(class: 'divider')
-
-                                a(name: 'documenting') {}
-                                h2 'Improving the documentation'
-                                p 'The documentation of the Groovy programming language comes in various forms:'
-                                ul {
-                                    li {
-                                        yield 'the '
-                                        a(href: 'single-page-documentation.html', 'reference documentation')
-                                        yield ' covering the language specification, the user guides, getting started, and more.'
-                                    }
-                                    li {
-                                        yield 'the '
-                                        a(href: 'api.html', 'GroovyDoc APIs')
-                                        yield ' documenting the classes of the Groovy code base'
-                                    }
-                                    li {
-                                        yield 'the '
-                                        a(href: 'gdk.html', 'Groovy GDK')
-                                        yield ' documentation, explaining how Groovy enriches the JDK APIs'
-                                    }
-                                    li {
-                                        yield 'this '
-                                        a(href: 'https://github.com/groovy/groovy-website', 'website')
-                                    }
-                                }
-                                p {
-                                    yield 'To contribute to the Groovy reference documentation, this '
-                                    a(href: 'http://blog.cacoethes.co.uk/groovyandgrails/contributing-to-the-groovy-documentation', 'blog post')
-                                    yield ' gives all the details on how you can work on that documentation.'
-                                }
-                                p {
-                                    yield 'All the above is stored in our code '
-                                    a(href: 'https://github.com/groovy', 'repositories on Github')
-                                    yield ', so having an account on Github would be ideal.'
-                                }
-                                p """
-                                    Contributing to this website is fairly easy, if you have a Github account already,
-                                    as you can click on the ${$em('Improve this doc')} buttons that you can see on all the pages of this website.
-                                    So don't hesitate to help us improve it, fix typos, broken language, clarify complicated sections,
-                                    add new material, etc.
-                                """
-                                p 'Please check the following section for more information on how to contribute to our codebase.'
-                                hr(class: 'divider')
-
-                                a(name: 'code') {}
-                                h2 'Contributing code'
-                                p {
-                                    yield '''
-                                        If you know the area you want to contribute to, this is great, but if you are looking for
-                                        some first contributions, the Groovy development team tries to maintain a '''
-                                    a(href: 'https://issues.apache.org/jira/secure/IssueNavigator%21executeAdvanced.jspa?jqlQuery=project%3DGROOVY+and+labels+%3D+contrib+AND+resolution%3DUnresolved&runQuery=true&clear=true', 'list of tickets')
-                                    yield '''
-                                        of possible easy contributions that could get you started on your journey
-                                        to become a Groovy committer. Just raise your hand on the Groovy developer '''
-                                    a(href: 'mailing-lists.html', 'mailing-list')
-                                    yield ''' to tell us about your desire to work on that ticket.'''
-                                }
-                                p '''
-                                    For more complicated tasks, the best approach is also to bring that to the attention of the Groovy developers,
-                                    so they can give you some guidance on how best to tackle a particular problem, discuss implementation ideas
-                                    and the semantics or scope of the proposed change.
-                                '''
-
-                                h3 'Cloning the code base'
-                                p {
-                                    yield 'To work on the Groovy code base, you should be proficient enough in '
-                                    a(href: 'http://git-scm.com/', 'git')
-                                    yield ' and you should have an account on '
-                                    a(href: 'https://github.com/', 'Github')
-                                    yield ' to be able to create '
-                                    a(href: 'https://help.github.com/articles/creating-a-pull-request', 'pull requests')
-                                    yield ' with your changes.'
-                                }
-                                p { 
-                                    yield 'Please fork '
-                                    a(href: 'https://github.com/apache/groovy', 'https://github.com/apache/groovy')
-                                    yield ' and create a local clone of your fork as explained in '
-                                    a(href: 'https://help.github.com/articles/fork-a-repo/', 'fork a repo')
-                                    yield '.'
-                                }
-                                p 'Make sure you configure Git appropriately with the same email that you registered with on Github:'
-                                pre { code 'git config --global user.name "YOUR NAME"\n' +
-                                        'git config --global user.email "YOUR EMAIL"' }
-                                p 'You can verify these are configured appropriately by running:'
-                                pre { code 'git config --list' }
-
-                                h3 'Working on the code base'
-                                p {
-                                    yield 'If you are working with the IntelliJ IDEA development environment, this '
-                                    a(href: 'http://melix.github.io/blog/2014/06/contribute-groovy-ide.html', 'screencast')
-                                    yield ' gives lots of details on how to setup your IDE.'
-                                }
-                                p {
-                                    yield 'Then, to work on the Groovy code base, to build and test Groovy, you can follow the '
-                                    a(href: 'https://github.com/apache/groovy/blob/master/README.adoc', 'instructions')
-                                    yield ' from the readme file in the Groovy repository.'
-                                }
-                                p 'The most important command you will have to run before sending your changes is the test command:'
-                                pre { code './gradlew test' }
-                                p 'For a successful contribution, all tests should be green!'
-
-                                h3 'Creating a pull request'
-                                p 'Once you are satisfied with your changes:'
-                                ul {
-                                    li 'commit your changes in your local branch'
-                                    li 'push your changes to your remote branch on Github'
-                                    li {
-                                        yield 'send us a '
-                                        a(href: 'https://help.github.com/articles/creating-a-pull-request', 'pull request')
-                                    }
-                                }
-                            }
-                            hr(class: 'divider')
-
-                            h2('Build status')
-
-                            p "The Groovy sources are tested thanks to our ${$a(href:'buildstatus.html','continuous integration server')}."
-
-                            h2('Help Wanted')
-
-                            p {
-                                yield "We try to keep a list of tasks that we would greatly appreciate help with in the Apache "
-                                a(href: 'https://helpwanted.apache.org/', 'Help Wanted')
-                                yield " app:"
-                            }
-                            div(style: "width: 100%; margin-left: 0px; margin-right: 0px;", type:"helpwanted", project:"groovy", description:"the Apache Groovy Project")
-                            script(src: "https://helpwanted.apache.org/widget.js", type: "text/javascript")
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/docpage.groovy b/site/src/site/pages/docpage.groovy
deleted file mode 100644
index b15e3df..0000000
--- a/site/src/site/pages/docpage.groovy
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * This layout accepts the following parameters:
- *
- * @param menu the navigation menu
- * @param pageTitle the page title
- * @param extraStyles , a list of CSS files to be added in the header
- * @param scripts , a list of scripts to be imported
- * @param iframeTarget , the URL of the page to be included as an iframe
- */
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - $title",
-        extraStyles: ['docstyle.css','https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css'],
-        extraFooter: contents {
-            script(src: 'https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.js') {}
-            script { yieldUnescaped "document.addEventListener('DOMContentLoaded',prettyPrint)" }
-        },
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class: 'active') {
-                                    a(href: '#') { strong('Table of contents') }
-                                }
-                                yieldUnescaped page.toc
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            h1(title)
-                            yieldUnescaped(page.content)
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/documentation.groovy b/site/src/site/pages/documentation.groovy
deleted file mode 100644
index 08fd3af..0000000
--- a/site/src/site/pages/documentation.groovy
+++ /dev/null
@@ -1,79 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Documentation',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class: 'active') {
-                                    a(href: '#') { strong('Documentation') }
-                                }
-                                docSections.each { section ->
-                                    li { a(href: "#${section.anchor}", class: 'anchor-link', section.name) }
-                                }
-                                li {
-                                    a(href: "#all-versions", class: 'anchor-link', 'Documentation for other versions')
-                                }
-                                li {
-                                    a(href: 'faq.html', 'FAQ')
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-university') {}
-                                yield ' Documentation'
-                            }
-                            p {
-                                yield 'The documentation is available as a '
-                                a(href: "single-page-documentation.html", 'single-page document')
-                                yield ', or feel free to pick at a direct section below.'
-                            }
-                            p "You can also browse ${$a(href: '#all-versions', 'documentation for other versions')}."
-                            hr(class: 'divider')
-
-                            // group sections by 2, for 2 columns
-                            def rows = docSections.collate(2)
-                            rows.each { row ->
-                                div(class: 'row-fluid') {
-                                    article {
-                                        row.each { section ->
-                                            div(class: 'col-md-6') {
-                                                a(name: section.anchor) {}
-                                                h2 {
-                                                    i(class: "fa ${section.icon}", " $section.name")
-                                                }
-                                                ul {
-                                                    section.getItems().each { item ->
-                                                        li { a(href: "${item.targetFilename}.html", item.name) }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                            div(class: 'col-md-12') {
-                                hr(class: 'divider')
-
-                                a(name: 'all-versions') {}
-                                article {
-                                    h2 'Documentation for all Groovy versions'
-                                    p 'You can browse the documentation of a particular version of Groovy (since Groovy 1.7):'
-                                    def allVersions =  [*allDocVersions, 'Select a version'].reverse()
-
-                                    select(class: 'form-control', onchange: "window.location.href='http://docs.groovy-lang.org/docs/groovy-' + this.value + '/html/'") {
-                                        allVersions.each { String version ->
-                                            option version
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/download.groovy b/site/src/site/pages/download.groovy
deleted file mode 100644
index bd90643..0000000
--- a/site/src/site/pages/download.groovy
+++ /dev/null
@@ -1,483 +0,0 @@
-import generator.SiteGenerator
-
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Download',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class: 'active') {
-                                    a(href: 'download.html') { strong('Download Groovy') }
-                                }
-                                li {
-                                    a(href: '#distro', class: 'anchor-link', 'Distributions')
-                                }
-                                li {
-                                    a(href: '#osinstall', class: 'anchor-link', 'OS/package manager install')
-                                }
-                                li {
-                                    a(href: '#buildtools', class: 'anchor-link', 'From your build tools')
-                                }
-                                li {
-                                    a(href: '#requirements', class: 'anchor-link', 'System requirements')
-                                }
-                                li {
-                                    a(href: 'versioning.html', 'Groovy version scheme')
-                                }
-                                li {
-                                    a(href: 'indy.html', 'Invoke dynamic support')
-                                }
-                                li {
-                                    a(href: 'releases.html', 'Release notes')
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-cloud-download') {}
-                                yield ' Download'
-                            }
-                            def linkVersionToDownload = distributions.collect { it.packages }.flatten().find { it.stable }.version
-                            button(id: 'big-download-button', type: 'button', class: 'btn btn-default',
-                                    title: "Download Apache Groovy ${linkVersionToDownload} binary zip\nSee below for verification information",
-                                    onclick: "window.location.href=\"https://dl.bintray.com/groovy/maven/apache-groovy-sdk-${linkVersionToDownload}.zip\"") {
-                                i(class: 'fa fa-download') {}
-                                yield " Download ${linkVersionToDownload}"
-                            }
-                            article {
-                                p 'Ways to get Apache Groovy:'
-                                ul {
-                                    li {
-                                        yield 'Download a source or binary '
-                                        a(href: '#distro', 'distribution')
-                                        yield '.'
-                                    }
-                                    li {
-                                        yield 'Use a package manager or bundle for your '
-                                        a(href: '#osinstall', 'operating system')
-                                        yield '.'
-                                    }
-                                    li {
-                                        yield 'Refer to the appropriate Apache Groovy jars from your '
-                                        a(href: '#buildtools', 'build tools')
-                                        yield '.'
-                                    }
-                                    li {
-                                        yield 'Grab the latest '
-                                        a(href: 'ides.html', 'plugin')
-                                        yield ' for your IDE and follow the installation instructions.'
-                                    }
-                                    li {
-                                        yield 'Find the latest source code in the '
-                                        a(href: 'https://git-wip-us.apache.org/repos/asf/groovy.git', 'Git repo')
-                                        yield ' (or the '
-                                        a(href: 'https://github.com/apache/groovy', 'GitHub mirror')
-                                        yield ').'
-                                    }
-                                    li {
-                                        yield 'If you\'re using Docker, Groovy is available on '
-                                        a(href: 'https://hub.docker.com/_/groovy/', 'Docker Hub')
-                                        yield '.'
-                                    }
-                                }
-                            }
-                            hr(class: 'divider')
-
-                            a(name: 'distro') {}
-                            article {
-                                h1 'Distributions'
-                                p {
-                                    yield 'Distributions are bundles of source or class files needed to build or use Groovy.'
-                                }
-                                p {
-                                    yield 'All Apache projects provide a source zip which'
-                                    yield ' lets anyone build the software from scratch. If any doubt arises, you can regard'
-                                    yield ' the source zip as the authoritative artifact for each release. We also provide binary, downloadable documentation and'
-                                    yield ' SDK (combines src, binary and docs) convenience artifacts. You can also find a link'
-                                    yield ' to a non-ASF Windows installer convenience executable (if available).'
-                                }
-                                h3 'Verification'
-                                p {
-                                    yield "We provide OpenPGP signatures ('.asc') files and checksums for every release artifact. We recommend that you "
-                                    a(href: 'https://www.apache.org/info/verification.html', 'verify')
-                                    yield ' the integrity of downloaded files by generating your own checksums and matching them against ours and checking signatures using the '
-                                    a(href: 'https://www.apache.org/dist/groovy/KEYS', 'KEYS')
-                                    yield " file which contains the OpenPGP keys of Groovy's Release Managers across all releases."
-                                }
-
-                                distributions.each { dist ->
-                                    h2 {
-                                        i(class: 'fa fa-star') {}
-                                        yield " ${dist.name}"
-                                    }
-                                    if (dist.description) {
-                                        p {
-                                            dist.description.rehydrate(this, this, this)()
-                                        }
-                                    }
-                                    def archiveUrl = { String type, String area, v -> "https://archive.apache.org/dist/groovy/${v}/${area}/apache-groovy-${type}-${v}.zip".toString() }
-                                    def archiveExtUrl = { String type, String area, v, String ext -> "${archiveUrl(type, area, v)}.$ext".toString() }
-                                    def distUrl = { String type, String area, v -> "https://www.apache.org/dist/groovy/${v}/${area}/apache-groovy-${type}-${v}.zip".toString() }
-                                    def distExtUrl = { String type, String area, v, String ext -> "${distUrl(type, area, v)}.$ext".toString() }
-                                    def findUrl = { String type, String area, v, String ext, boolean preferPermalink ->
-                                        def u
-                                        if (preferPermalink) {
-                                            u = archiveExtUrl(type, area, v, ext)
-                                            if (SiteGenerator.exists(u)) return u
-                                        }
-                                        u = distExtUrl(type, area, v, ext)
-                                        if (SiteGenerator.exists(u)) return u
-                                        if (!preferPermalink) {
-                                            u = archiveExtUrl(type, area, v, ext)
-                                            if (SiteGenerator.exists(u)) return u
-                                        }
-                                        null
-                                    }
-                                    def buildExtras = { String type, String area, String v, boolean preferPermalink ->
-                                        def extras = [:]
-                                        def url = findUrl(type, area, v, 'asc', preferPermalink)
-                                        if (url) { extras.asc = url }
-                                        url = findUrl(type, area, v, 'md5', preferPermalink)
-                                        if (url) { extras.md5 = url }
-                                        url = findUrl(type, area, v, 'sha256', preferPermalink)
-                                        if (url) { extras.sha256 = url }
-                                        if (extras) {
-                                            def first = true
-                                            br()
-                                            yield '('
-                                            extras.each { ext, u ->
-                                                if (first) first = false
-                                                else yield ' '
-                                                a(href: u, ext)
-                                            }
-                                            yield ')'
-                                        }
-                                    }
-                                    def srcUrl = { pkg ->
-                                        def v = pkg.version
-                                        pkg.archive ? archiveUrl('src', 'sources', v) : "http://www.apache.org/dyn/closer.cgi/groovy/${v}/sources/apache-groovy-src-${v}.zip"
-                                    }
-                                    dist.packages.each { pkg ->
-                                        def v = pkg.version
-                                        h3 "${v} distributions"
-                                        table(width: '100%', class: 'download-table') {
-                                            tr {
-                                                td {
-                                                    a(href: "https://dl.bintray.com/groovy/maven/apache-groovy-binary-${v}.zip") {
-                                                        i(class: 'fa fa-gears fa-4x') {}
-                                                        br()
-                                                        yield 'binary'
-                                                    }
-                                                    buildExtras('binary', 'distribution', v, true)
-                                                }
-                                                td {
-                                                    a(href: srcUrl(pkg)) {
-                                                        i(class: 'fa fa-code fa-4x') {}
-                                                        br()
-                                                        yield ' source'
-                                                    }
-                                                    buildExtras('src', 'sources', v, pkg.archive)
-                                                }
-                                                td {
-                                                    a(href: "https://dl.bintray.com/groovy/maven/apache-groovy-docs-${v}.zip") {
-                                                        i(class: 'fa fa-file-text fa-4x') {}
-                                                        br()
-                                                        yield ' documentation'
-                                                    }
-                                                    buildExtras('docs', 'distribution', v, true)
-                                                }
-                                                td {
-                                                    a(href: "https://dl.bintray.com/groovy/maven/apache-groovy-sdk-${v}.zip") {
-                                                        i(class: 'fa fa-file-zip-o fa-4x') {}
-                                                        br()
-                                                        yield ' SDK bundle'
-                                                    }
-                                                    buildExtras('sdk', 'distribution', v, true)
-                                                }
-                                                if (pkg.windowsInstaller) {
-                                                    td {
-                                                        a(href: pkg.windowsInstaller) {
-                                                            i(class: 'fa fa-windows fa-4x') {}
-                                                            br()
-                                                            yield ' Windows installer'
-                                                        }
-                                                        br()
-                                                        yield '(community artifact)'
-                                                    }
-                                                }
-                                            }
-                                        }
-                                        p {
-                                            yield 'Please consult the '
-                                            a(href: "changelogs/changelog-${v}.html", ' change log')
-                                            yield ' for details. '
-                                        }
-                                    }
-                                }
-                                article {
-                                    h3 'Other versions'
-
-                                    p {
-                                        yield 'Downloads for all versions are hosted (and mirrored) in:'
-                                        ul {
-                                            li {
-                                                yield "Apache's "
-                                                a(href: 'http://www.apache.org/dyn/closer.cgi/groovy/', 'release mirrors')
-                                                yield ' and '
-                                                a(href: 'https://archive.apache.org/dist/groovy/', 'archive repository')
-                                                yield '.'
-                                            }
-                                            li {
-                                                yield "Bintray's "
-                                                a(href: 'http://bintray.com/groovy/', 'Groovy repository')
-                                                yield '. Register on Bintray to rate, review, and register for new version notifications. Or '
-                                                a(href: 'https://dl.bintray.com/groovy/maven/', 'browse')
-                                                yield ' all versions.'
-                                            }
-                                        }
-                                    }
-                                    p {
-                                        yield 'You can also read the changelogs for '
-                                        a(href: "changelogs.html", 'all versions')
-                                        yield '.'
-                                    }
-                                }
-                                article {
-                                    h3 'Invoke dynamic support'
-
-                                    p {
-                                        yield 'Please read the '
-                                        a(href: "indy.html", 'invoke dynamic support information')
-                                        yield ' if you would like to enable indy support and are using Groovy on JDK 7+.'
-                                    }
-                                }
-                            }
-
-                            hr(class: 'divider')
-
-                            a(name: 'osinstall') {}
-                            article {
-                                h1 'Operating system/package manager installation'
-
-                                p {
-                                    a(href: 'http://groovy-lang.org/install.html', 'Installing')
-                                    yield ' Apache Groovy from a distribution zip is not hard but if you don\'t want'
-                                    yield ' the hassle, consider the alternatives listed here.'
-                                }
-                                article {
-                                    p {
-                                        a(href: 'http://sdkman.io/', 'SDKMAN!')
-                                        yield ' is a tool for managing parallel versions of multiple Software Development Kits on most Unix-based systems:'
-                                    }
-                                    pre { code '$ sdk install groovy' }
-                                    p {
-                                        yield 'Windows users: see the SDKMAN '
-                                        a(href: 'https://sdkman.io/install', 'install')
-                                        yield ' instructions for potential options.'
-                                    }
-                                }
-                                article {
-                                    p {
-                                        a(href: 'http://brew.sh/', 'Homebrew')
-                                        yield ' is "the missing package manager for macOS":'
-                                    }
-                                    pre { code '$ brew install groovy' }
-                                }
-                                article {
-                                    p {
-                                        a(href: 'http://www.macports.org/', 'MacPorts')
-                                        yield ' is a system for managing tools on macOS:'
-                                    }
-                                    pre { code '$ sudo port install groovy' }
-                                }
-                                article {
-                                    p {
-                                        a(href: 'http://scoop.sh/', 'Scoop')
-                                        yield ' is a command-line installer for Windows inspired by Homebrew:'
-                                    }
-                                    pre { code '> scoop install groovy' }
-                                }
-                                article {
-                                    p {
-                                        a(href: 'https://chocolatey.org/', 'Chocolatey')
-                                        yield ' provides a sane way to manage software on Windows:'
-                                    }
-                                    pre { code '> choco install groovy' }
-                                }
-                                p 'Linux/*nix users: you may also find Groovy is available using your preferred operating system package manager, e.g.: apt, dpkg, pacman, etc.'
-                                p 'Windows users: consider also the Windows installer (see links above under Distributions).'
-                            }
-                            hr(class: 'divider')
-
-                            a(name: 'buildtools') {}
-                            article {
-                                h1 'From your build tools'
-                                p 'If you wish to add Groovy as a dependency in your projects, you can refer to the Groovy JARs in the dependency section of your project build file descriptor:'
-                                table(class: 'table') {
-                                    thead {
-                                        tr {
-                                            th 'Gradle'
-                                            th 'Maven'
-                                            th 'Explanation'
-                                        }
-                                    }
-                                    tbody {
-                                        tr {
-                                            td {
-                                                code 'org.codehaus.groovy:groovy:x.y.z'
-                                            }
-                                            td {
-                                                code '&lt;groupId&gt;org.codehaus.groovy&lt;/groupId&gt;'
-                                                br()
-                                                code '&lt;artifactId&gt;groovy&lt;/artifactId&gt;'
-                                                br()
-                                                code '&lt;version&gt;x.y.z&lt;/version&gt;'
-                                            }
-                                            td 'Just the core of Groovy without the modules*. Also includes jarjar\'ed versions of Antlr, ASM, and an internal copy of needed CLI implementation classes.'
-                                        }
-                                        tr {
-                                            td {
-                                                code 'org.codehaus.groovy:groovy-$module:x.y.z'
-                                            }
-                                            td {
-                                                code '&lt;groupId&gt;org.codehaus.groovy&lt;/groupId&gt;'
-                                                br()
-                                                code '&lt;artifactId&gt;groovy-$module&lt;/artifactId&gt;'
-                                                br()
-                                                code '&lt;version&gt;x.y.z&lt;/version&gt;'
-                                            }
-                                            td {
-                                                code '"$module"'
-                                                yield ' stands for the different optional groovy modules*.'
-                                                yield ' Example: '
-                                                code '&lt;artifactId&gt;groovy-sql&lt;/artifactId&gt;'
-                                                yield '.'
-                                            }
-                                        }
-                                        tr {
-                                            td {
-                                                code 'org.codehaus.groovy:groovy-all:x.y.z'
-                                            }
-                                            td {
-                                                code '&lt;groupId&gt;org.codehaus.groovy&lt;/groupId&gt;'
-                                                br()
-                                                code '&lt;artifactId&gt;groovy-all&lt;/artifactId&gt;'
-                                                br()
-                                                code '&lt;version&gt;x.y.z&lt;/version&gt;'
-                                                br()
-                                                code '&lt;type&gt;pom&lt;/type&gt; &lt;!-- required JUST since Groovy 2.5.0 --&gt;'
-                                            }
-                                            td {
-                                                yield 'Core plus all of the modules (excluding optional modules) according to the version packaging scheme**.'
-                                            }
-                                        }
-                                        tr {
-                                            td(colspan: 3) {
-                                                yield '* Modules:'
-                                                br()
-                                                em '2.4.X:'
-                                                yield ' "ant", "bsf", "console", "docgenerator", "groovydoc", "groovysh", "jmx", "json", "jsr223", "nio", "servlet", "sql", "swing", "test", "templates", "testng" and "xml"'
-                                                br()
-                                                em '2.5.0:'
-                                                yield ' as above but excluding optional module "bsf" plus "cli-picocli", "datetime", "macro", "test-junit5". Optional modules: "bsf", "dateutil", "cli-commons"'
-                                                br()
-                                                em '2.5.1+:'
-                                                yield ' as above but "groovy-jaxb" is moved to become optional'
-                                            }
-                                        }
-                                        tr {
-                                            td(colspan: 3) {
-                                                yield '** Packaging Scheme:'
-                                                br()
-                                                em '2.4.X:'
-                                                yield ' The core plus all the modules merged into one "fat jar". Optional dependencies are marked as optional, so you may need to include some of the' +
-                                                        ' optional dependencies to use some features of Groovy, e.g. AntBuilder, GroovyMBeans...'
-                                                br()
-                                                em '2.5+:'
-                                                yield ' A "fat pom" '
-                                                code 'groovy-all-x.y.z.pom'
-                                                yield ' referring to the core plus all modules (excluding optional ones).'
-                                                yield ' In order to cater to the module system of Java 9+, the '
-                                                code 'groovy-all-x.y.z.jar'
-                                                yield ' file is no longer available.'
-                                            }
-                                        }
-                                        tr {
-                                            td(colspan: 3) {
-                                                yield 'Indy jars'
-                                                br()
-                                                yield "You can access the indy version of the core or a module jar by using the 'indy' classifier."
-                                            }
-                                        }
-                                    }
-                                }
-                                h3 'Maven repositories'
-                                p "Groovy release jars are available from ${$a(href:'http://repo1.maven.org/maven2/org/codehaus/groovy/','Maven Central')} or ${$a(href:'http://jcenter.bintray.com/org/codehaus/groovy/','JCenter')}."
-                                p "Groovy snapshot jars are available from ${$a(href:'https://oss.jfrog.org/oss-snapshot-local/org/codehaus/groovy','JFrog OpenSource Snapshots repository')}. Snapshots are not official releases but are provided to assist with integration testing leading up to an official release."
-                            }
-                            hr(class: 'divider')
-
-                            a(name: 'requirements') {}
-                            article {
-                                h1 'System requirements'
-                                p {
-                                    table(class: 'table') {
-                                        thead {
-                                            tr {
-                                                th 'Groovy'
-                                                th 'JVM Required (non-indy)'
-                                                th 'JVM Required (indy) *'
-                                            }
-                                        }
-                                        tbody {
-                                            tr {
-                                                td { b '3.0 - current' }
-                                                td '1.8+'
-                                                td '1.8+'
-                                            }
-                                            tr {
-                                                td { b '2.5 - 2.6' }
-                                                td '1.7+'
-                                                td '1.7+'
-                                            }
-                                            tr {
-                                                td { b '2.3 - 2.4' }
-                                                td '1.6+'
-                                                td '1.7+'
-                                            }
-                                            tr {
-                                                td { b '2.0 - 2.2' }
-                                                td '1.5+'
-                                                td '1.7+'
-                                            }
-                                            tr {
-                                                td { b '1.6 - 1.8' }
-                                                td '1.5+'
-                                                td 'N/A'
-                                            }
-                                            tr {
-                                                td { b '1.5' }
-                                                td '1.4+'
-                                                td 'N/A'
-                                            }
-                                            tr {
-                                                td { b '1.0' }
-                                                td '1.4-1.7'
-                                                td 'N/A'
-                                            }
-                                        }
-                                    }
-                                    yield '* If you plan to use invoke dynamic support, please read the '
-                                    a(href: "indy.html", 'support information')
-                                    yield '.'
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/ecosystem.groovy b/site/src/site/pages/ecosystem.groovy
deleted file mode 100644
index 18fda88..0000000
--- a/site/src/site/pages/ecosystem.groovy
+++ /dev/null
@@ -1,59 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Ecosystem',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                section(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class: 'active') { a(href: 'ecosystem.html') { strong('Ecosystem') } }
-                                ecosys.keySet().each { name ->
-                                    li { a(href: "#$name", class: 'anchor-link', name) }
-                                }
-                            }
-                        }
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-leaf') {}
-                                yield ' Ecosystem'
-                            }
-                            p {
-                                yield '''
-                                        Beside the language and its API, Groovy gave birth to a fruitful ecosystem of projects around it,
-                                        on various themes such as web frameworks, desktop application framework, concurrency, testing, and more.
-                                        In this section, we'll highlight a few of the most well-known and successful projects,
-                                        which leverage Groovy at their core.
-                            '''
-                            }
-                            hr(class: 'divider')
-
-                            ecosys.eachWithIndex { e, index ->
-                                def (name, item) = [e.key, e.value]
-                                article {
-                                    a(name: "${name}") {}
-                                    div(class:"content-heading clearfix media") {
-                                        div {
-                                            if (item.logo) {
-                                                img class: "pull-${(index % 2 == 0) ? 'left' : 'right'}", src: item.logo, alt: name, hspace: '20px'
-                                            } else {
-                                                h2(name)
-                                            }
-                                            p(item.description)
-                                        }
-                                        a(href: item.url, target:'_blank', "Learn more...")
-                                    }
-                                }
-                                hr(class: 'divider')
-                            }
-                            article {
-                                p """
-                                    There are of course many other projects using or built with the Groovy programming language.
-                                    For instance, you can find some more by having a look at the ${$a(href:'https://github.com/trending?l=groovy', 'trending Groovy projects')} on Github.
-                                """
-                            }
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/events.groovy b/site/src/site/pages/events.groovy
deleted file mode 100644
index e850085..0000000
--- a/site/src/site/pages/events.groovy
+++ /dev/null
@@ -1,61 +0,0 @@
-import model.Event
-
-/**
- * This template is generating the events page.
- * If you want to add a new event, please edit the "allEvents" section in src/site/sitemap-user.groovy
- */
-
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Events',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/support-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-calendar') {}
-                                yield ' Events'
-                            }
-                            article {
-                                p '''
-                                    Groovy and its ecosystem are often represented at various Java-oriented conferences,
-                                    but there are also events fully dedicated to the Groovy ecosystem.
-                                    Here are upcoming ones you might be interested in learning about.
-                                '''
-                                hr(class: 'divider')
-                                allEvents.each {
-                                    String eventName = it.key
-                                    Event event = it.value
-                                    div(class: 'event-logo') {
-                                        img(src: "${event.logo}", class:'event-logo', alt:"${eventName}")
-                                    }
-                                    h2 {
-                                        a(href: event.url, eventName)
-                                    }
-
-                                    h3 {
-                                        i(class: 'fa fa-globe') {}
-                                        yieldUnescaped " &nbsp;${event.location} &nbsp; &mdash; &nbsp; "
-                                        i(class: 'fa fa-calendar') {}
-                                        yieldUnescaped " &nbsp;"
-                                        em event.date
-                                    }
-                                    div {
-                                        yieldUnescaped event.description
-                                    }
-                                    hr(class: 'divider')
-                                }
-                            }
-
-                        }
-                    }
-                }
-            }
-        }
-
-
diff --git a/site/src/site/pages/faq.groovy b/site/src/site/pages/faq.groovy
deleted file mode 100644
index c69ae66..0000000
--- a/site/src/site/pages/faq.groovy
+++ /dev/null
@@ -1,52 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - FAQ - Frequently Asked Questions',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li {
-                                    a(href: 'documentation.html', 'Documentation')
-                                }
-                                docSections.each { section ->
-                                    li { a(href: "documentation.html#${section.anchor}", class: 'anchor-link', section.name) }
-                                }
-                                li {
-                                    a(href: "documentation.html#all-versions", class: 'anchor-link', 'Documentation for other versions')
-                                }
-                                li(class: 'active') {
-                                    a(href: 'faq.html') { strong('FAQ') }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-question-circle') {}
-                                yieldUnescaped ' Frequently Asked Questions'
-                            }
-                            hr(class: 'divider')
-                            article {
-                                h2 'Is Groovy an Open Source project?'
-                                p {
-                                    yield 'Yes, Groovy is an Open Source programming language project, licensed under the '
-                                    a(href: 'http://www.apache.org/licenses/LICENSE-2.0', 'Apache License v2')
-                                    yield '. You can see the license header in all the source files of the project, as well as a '
-                                    a(href: 'https://github.com/apache/groovy/blob/master/LICENSE', 'license file')
-                                    yield ' at the root of the project'
-                                }
-
-                                h2 'What are the differences between Groovy and Java?'
-                                p {
-                                    yield 'Learn more about the '
-                                    a(href: 'differences.html', 'differences between Groovy and Java')
-                                    yield '.'
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/gdk.groovy b/site/src/site/pages/gdk.groovy
deleted file mode 100644
index 8895762..0000000
--- a/site/src/site/pages/gdk.groovy
+++ /dev/null
@@ -1,2 +0,0 @@
-layout 'layouts/iframedoc.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Groovy APIs"
diff --git a/site/src/site/pages/geps.groovy b/site/src/site/pages/geps.groovy
deleted file mode 100644
index abe0a03..0000000
--- a/site/src/site/pages/geps.groovy
+++ /dev/null
@@ -1,33 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - GEPs",
-        mainContent: contents {
-            def sorted = list.sort{ (it.key - 'GEP-').toInteger() }
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class:'active') {
-                                    a(href: '#gep', "GEPs")
-                                }
-                                sorted.each { gep ->
-                                    li { a(href: "#$gep.key", class: 'anchor-link', "$gep.key") }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            h1('GEPs for Groovy')
-                            p 'Here you can find the GEPs for the Groovy programming language.'
-                            ul {
-                                sorted.each { gep ->
-                                    li {
-                                        a(href: "${gep.key}.html", "$gep.key: $gep.value")
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/groovy-weekly.groovy b/site/src/site/pages/groovy-weekly.groovy
deleted file mode 100644
index 3924d2c..0000000
--- a/site/src/site/pages/groovy-weekly.groovy
+++ /dev/null
@@ -1,103 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Groovy newsletter',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/support-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-envelope-o') {}
-                                yield ' Groovy Newsletter '
-                            }
-                            article {
-                                p 'Once in a while, receive a newsletter, directly in your inbox, with all the news ' +
-                                        'of the Groovy ecosystem: the latest releases, interesting articles, interviews, ' +
-                                        'presentations, relevant tweets or Google+ posts, links to podcasts or screencasts, ' +
-                                        'code snippets, books, upcoming events, and more.'
-                                p 'The Groovy newsletter is the best way to stay up-to-date with all things Groovy!'
-                                p {
-                                    yield 'This newsletter is powered by '
-                                    a(href: "http://eepurl.com/XXyCD", 'MailChimp')
-                                    yield '.'
-                                }
-                            }
-                            hr(class: 'divider')
-
-                            a(name: 'subscribe') {}
-                            h2 {
-                                i(class: 'fa fa-envelope') {}
-                                yield ' Subscribe to the newsletter'
-                            }
-                            article {
-                                p 'To subscribe to the newsletter, please fill in the form below.'
-                                p 'Please note that all fields are required.'
-                            }
-                            div(id: 'mc_embed_signup') {
-                                form(action: 'http://appspot.us4.list-manage2.com/subscribe/post?u=cb8b56e9d6a1cb1696cecc673&amp;id=1a76961630',
-                                        method: 'post', id: 'mc-embedded-subscribe-form', name: 'mc-embedded-subscribe-form',
-                                        class: 'validate', target: '_blank', novalidate: true, role: 'form') {
-                                    div(class: 'form-group') {
-                                        label(for: 'mce-EMAIL', 'Email address')
-                                        input(type: 'email', value: '', class: 'required email form-control', id: 'mce-EMAIL')
-                                    }
-                                    div(class: 'form-group') {
-                                        label(for: 'mce-MNAME', 'First name')
-                                        input(type: 'text', value: '', class: 'required required email form-control', id: 'mce-FNAME')
-                                    }
-                                    div(class: 'form-group') {
-                                        label(for: 'mce-LNAME', 'Last name')
-                                        input(type: 'text', value: '', class: 'required required email form-control', id: 'mce-LNAME')
-                                    }
-                                    div(class: 'form-group') {
-                                        label(for: 'mce-COMPANY', 'Company')
-                                        input(type: 'text', value: '', class: 'required required email form-control', id: 'mce-COMPANY')
-                                    }
-                                    div(class: 'form-group radio') {
-                                        div {
-                                            strong 'Email format '
-                                        }
-                                        label(class: 'radio-inline') {
-                                            input(type: 'radio', value: 'html', name: 'EMAILTYPE', id: 'mce-EMAILTYPE-0', checked: 'checked')
-                                            span 'html'
-                                        }
-                                        label(class: 'radio-inline') {
-                                            input(type: 'radio', value: 'text', name: 'EMAILTYPE', id: 'mce-EMAILTYPE-1')
-                                            span 'text'
-                                        }
-                                    }
-                                    div(id: 'mce-responses', class: 'clear') {
-                                        div(class: 'response', id: 'mce-error-response', style: 'display-none') {}
-                                        div(class: 'response', id: 'mce-success-response', style: 'display-none') {}
-                                    }
-                                    div(style: 'position: absolute; left: -5000px') {
-                                        input(type: 'text', name: 'b_cb8b56e9d6a1cb1696cecc673_1a76961630', tabindex: '-1', value: '')
-                                    }
-                                    br()
-                                    div(class: 'clear form-group') {
-                                        input(type: 'submit', value: 'Subscribe', name: 'subscribe', id: 'mc-embedded-subscribe', class: 'btn btn-default')
-                                    }
-                                }
-                            }
-                            hr(class: 'divider')
-
-                            a(name: 'archives') {}
-                            h2 {
-                                i(class: 'fa fa-archive') {}
-                                yield ' Archives'
-                            }
-                            article {
-                                p {
-                                    a(href: 'http://us4.campaign-archive2.com/home/?u=cb8b56e9d6a1cb1696cecc673&id=1a76961630',
-                                            'View past editions of the Groovy newsletter.')
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/index.groovy b/site/src/site/pages/index.groovy
deleted file mode 100644
index 4fde163..0000000
--- a/site/src/site/pages/index.groovy
+++ /dev/null
@@ -1,45 +0,0 @@
-import model.Event
-
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language',
-        mainContent: contents {
-            div(id: 'band', class: 'band') {
-
-            }
-            div(id: 'content') {
-                include unescaped: 'html/index.html'
-
-                def firstThreeEvents = allEvents?.keySet()?.take(3)
-                if (firstThreeEvents) {
-                    section(class: 'row colset-3-article first-event-row') {
-                        h1 { strong "Apache Groovy events you shouldn't miss!" }
-                        firstThreeEvents.each { String eventName ->
-                            Event event = allEvents[eventName]
-                            article {
-                                div(class: 'content') {
-                                    // Note that the event image should be 257x180 to look nice
-                                    div(class: 'event-img', style: "background-image: url(${event.logo})") {}
-                                    h1 {
-                                        a(href: event.url) {
-                                            strong eventName
-                                            br()
-                                            em event.location
-                                        }
-                                    }
-                                    time event.date
-                                    yieldUnescaped event.description
-                                }
-                            }
-                        }
-                    }
-                    section(class: 'row  last-event-row') {
-                        p(class: 'text-center') {
-                            yield "For more events see the "
-                            a(href: relative("events.html")) { strong('Events') }
-                            yield " page"
-                        }
-                    }
-                }
-            }
-            include unescaped: 'html/they-use-groovy.html'
-        }
diff --git a/site/src/site/pages/indy.groovy b/site/src/site/pages/indy.groovy
deleted file mode 100644
index 46a42f3..0000000
--- a/site/src/site/pages/indy.groovy
+++ /dev/null
@@ -1,176 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Invoke dynamic support',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li {
-                                    a(href: 'download.html', 'Download Groovy')
-                                }
-                                li {
-                                    a(href: 'download.html#distro', class: 'anchor-link', 'Distributions')
-                                }
-                                li {
-                                    a(href: 'download.html#sdkman', class: 'anchor-link', 'Through SDKMAN!')
-                                }
-                                li {
-                                    a(href: 'download.html#buildtools', class: 'anchor-link', 'From your build tools')
-                                }
-                                li {
-                                    a(href: 'download.html#otherways', class: 'anchor-link', 'Other ways to get Groovy')
-                                }
-                                li {
-                                    a(href: 'versioning.html', 'Groovy version scheme')
-                                }
-                                li(class: 'active') {
-                                    a(href: 'indy.html') {
-                                        strong 'Invoke dynamic support'
-                                    }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-gear') {}
-                                yield ' Invoke dynamic support'
-                            }
-                            article {
-                                h2 'Introduction'
-                                p '''
-                                    Since Groovy 2.0, support was added for the JVM invokedynamic instruction.
-                                    This instruction is supported since Java 7 and is a new bytecode instruction in the JVM
-                                    that allows easier implementation of dynamic languages.
-                                    This instruction is used internally, by the JVM, for the lambda support in Java 8.
-                                '''
-                                p '''
-                                    This means that unlike APIs, AST transformations or syntactic sugar,
-                                    this feature is not visible to the developer or the end user.
-                                    It is a compilation and runtime feature only.
-                                    This means that given two programs written in Groovy,
-                                    you have the choice to compile it with or without invokedynamic support.
-                                    Whatever you choose, it comes with pros and cons.
-                                '''
-                                ul {
-                                    li {
-                                        yield 'classes compiled with invokedynamic can only be used on JDK 1.7+'
-                                        ul {
-                                            li 'without invokedynamic, Groovy classes are still compatible with JDK 1.6+'
-                                        }
-                                    }
-                                    li 'it is possible to mix classes compiled with and without invokedynamic in the same project, as long as you run JDK 1.7+'
-                                    li 'depending on the JVM (even different minor versions of the JVM), you can target close to Java performance for dynamic Groovy with invokedynamic support activated'
-                                }
-
-                                h2 'JDK version'
-                                p '''
-                                    All JDK 7 versions ranging from 7u21 to 7u55 are buggy with regards to invokedynamic.
-                                    If you plan to use invokedynamic support, make sure you either use 7u60 or JDK 8.
-                                '''
-
-                                h2 'The distributions'
-                                h3 'Two JARs'
-                                p 'The Groovy distribution comes with two jars:'
-                                ul {
-                                    li {
-                                        code 'groovy-x.y.z.jar'
-                                        yield ': compatible with JDK 1.6+, contains Groovy sources compiled with call site caching'
-                                    }
-                                    li {
-                                        code 'groovy-x-y-z-indy.jar'
-                                        yield ': compatible with JDK 1.7+, contains Groovy sources compiled with invokedynamic'
-                                    }
-                                }
-                                p '''
-                                    As Groovy core and the Groovy modules are sometimes written in Groovy, we currently have no choice but to distribute two distinct versions of Groovy.
-                                    This means that if you pick the "normal" jar, the Groovy classes of Groovy itself are compiled with call site caching,
-                                    while if you use the "indy" jar, the Groovy classes of Groovy itself are compiled using invokedynamic.
-                                '''
-                                p '''Both jars contain a fully working Groovy implementation that is capable of compiling user supplied Groovy sources using either 
-                                     invokedynamic or call site caching. The sets of jars are mutually exclusive (don't put both on classpath) and the key difference between 
-                                     them has to do with how the Groovy source files that make up Groovy itself are compiled.
-                                '''
-                                p '''
-                                    When accessing a Groovy jar from a Maven repository, you can select the indy version using the 'indy' classifier.
-                                '''
-
-                                h3 'Command-line and indy'
-                                p '''
-                                    If you download the distribution and use the command line,
-                                    it's always the "normal" version of Groovy which is picked up in classpath.
-                                    This means that whatever command you use (groovy, groovyc, groovysh or groovyConsole), invokedynamic support is not available out of the box.
-                                    To use a Groovy distribution that was compiled with invokedynamic for its Groovy sources you have to switch the jars manually.
-                                    The distribution makes use of the jars in the lib directory, while the indy jars are available in the indy directory.
-                                    You have three things to do:
-                                '''
-                                ul {
-                                    li 'remove or rename the groovy-*.jar files in the lib directory'
-                                    li 'replace them with the indy version from the indy directory'
-                                    li 'remove the -indy classifier from jar names'
-                                }
-                                p "Here's a bash script that would do it all at once:"
-                                pre { code '$ for f in `ls lib/groovy*.jar | cut -d/ -f2`;do k=`basename $f .jar`; mv lib/$k.jar lib/$k.jar.old; cp indy/$k-indy.jar lib/$k.jar ; done' }
-
-                                h3 'Running groovy script from command line'
-                                p '''
-                                    The usual way to run a script from the command line is by "groovy foo.groovy", where foo.groovy is the Groovy program in source form.
-                                    To use indy for this you have to use the indy compilation flag, "groovy --indy foo.groovy".
-                                '''
-
-                                h3 'The compilation flag'
-                                p '''
-                                    Independently of the jar version that you use, invokedynamic support requires a specific compilation flag (indy).
-                                    If you want to compile your classes with invokedynamic support, this flag must be set at compile time.
-                                    The following tables show you what happens with user compiled classes and Groovy core classes depending on the jar you use and the compilation flag:
-                                '''
-                                p 'For user compiled classes:'
-                                table(class: 'table') {
-                                    tr {
-                                        th 'indy flag'
-                                        th 'off'
-                                        th 'on'
-                                    }
-                                    tr {
-                                        td 'normal jar'
-                                        td 'call site caching'
-                                        td 'invokedynamic'
-                                    }
-                                    tr {
-                                        td 'indy jar'
-                                        td 'call site caching'
-                                        td 'invokedynamic'
-                                    }
-                                }
-
-                                p 'For core Groovy classes:'
-                                table(class: 'table') {
-                                    tr {
-                                        th 'indy flag'
-                                        th 'off'
-                                        th 'on'
-                                    }
-                                    tr {
-                                        td 'normal jar'
-                                        td 'call site caching'
-                                        td 'call site caching'
-                                    }
-                                    tr {
-                                        td 'indy jar'
-                                        td 'invokedynamic'
-                                        td 'invokedynamic'
-                                    }
-                                }
-                                p '''
-                                    So even if you use the indy jar, if you don't use the invokedynamic flag at compile time,
-                                    then the compiled classes will use the "old" format, meaning they will use the JDK1.6+ classes without invokedynamic.
-                                '''
-                            }
-                            hr(class: 'divider')
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/learn.groovy b/site/src/site/pages/learn.groovy
deleted file mode 100644
index 70858ce..0000000
--- a/site/src/site/pages/learn.groovy
+++ /dev/null
@@ -1,193 +0,0 @@
-import model.Book
-import model.Video
-import model.Course
-
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Learn',
-        extraStyles: ['book.css'],
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class: 'active') {
-                                    a(href: '#') { strong('Learn') }
-                                }
-                                li {
-                                    a(href: '#books', class: 'anchor-link', 'Books')
-                                }
-                                li {
-                                    a(href: '#videos', class: 'anchor-link', 'Presentations')
-                                }
-                                li {
-                                    a(href: '#courses', class: 'anchor-link', 'Courses')
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-graduation-cap') {}
-                                yield ' Learn'
-                            }
-                            article {
-                                p 'Welcome to the learning section of the Groovy website.'
-                                p """
-                                    First of all, you will need to ${$a(href: 'documentation.html#gettingstarted', 'get started')}
-                                    by installing Groovy on your system or project.
-                                """
-                                p """
-                                    Once all set up, we invite you to have a look at the Groovy
-                                    ${$a(href: 'documentation.html', 'documentation')}, which explains all the
-                                    ${$a(href: 'documentation.html#languagespecification', 'details of the language')}, such as how to use the
-                                    ${$a(href: 'documentation.html#tools', 'tools')}
-                                    that come with a Groovy installation, and how to tackle more complex tasks with the various
-                                    ${$a(href: 'documentation.html#groovymoduleguides', 'module user guides')}.
-                                """
-                                p """
-                                    But there are other ways to learn more about Groovy, thanks to ${$a(href: '#books', 'books')}
-                                    and ${$a(href: '#videos', 'presentations')} given about Groovy at conferences.
-                                """
-                                hr(class: 'divider')
-
-                                a(name: 'books') {}
-                                h2 {
-                                    i(class: 'fa fa-book') {}
-                                    yield ' Books'
-                                }
-                                p '''
-                                    Another great approach to learning Groovy is to read the various books published
-                                    on the language:'''
-
-                                allBooks.each {
-                                    String title = it.key
-                                    Book book = it.value
-
-                                    figure(class: 'book') {
-                                        ul(class: 'hardcover_front') {
-                                            li {
-                                                img(src: book.cover, width: '100%', height: '100%')
-                                            }
-                                            li {}
-                                        }
-                                        ul(class: 'page') {
-                                            li {}
-                                            li {
-                                                a(class: 'book-btn', href: book.url, target: '_blank', 'More info')
-                                            }
-                                            3.times { li {} }
-                                        }
-                                        ul(class: 'hardcover_back') {
-                                            2.times { li {} }
-                                        }
-                                        ul(class: 'book_spine') {
-                                            2.times { li {} }
-                                        }
-                                        figcaption {
-                                            h1 { a(href: book.url, book.title) }
-                                            span "By ${book.authors}"
-                                            p book.description
-                                        }
-                                    }
-                                }
-
-                                hr(class: 'divider')
-
-                                a(name: 'videos') {}
-                                h2 {
-                                    i(class: 'fa fa-film') {}
-                                    yield ' Presentations'
-                                }
-                                p """
-                                    Many Groovy-related presentations have been recorded at ${$a(href: 'events.html', 'conferences')}
-                                    that you might wish to have a look at, to learn more about Groovy, delve into particular topics, and more.
-                                """
-                                p """
-                                    Below are a few selected presentations given at the
-                                    ${$a(href: 'http://springone2gx.com/', 'SpringOne2GX')},
-                                    ${$a(href: 'http://gr8conf.eu/', 'GR8Conf')} and
-                                    ${$a(href: 'http://greach.es/', 'Greach')} conferences.
-                                """
-
-                                videos.each { Video video ->
-                                    div(class: 'presentations') {
-                                        a(href: video.videoUrl) {
-                                            img(class: 'screenshot', src: "img/videos/${video.pictureUrl}")
-                                        }
-                                        div(class: 'metadata') {
-                                            a(href: video.videoUrl) {
-                                                h1(class: 'title', video.title)
-                                            }
-                                            span(class: 'speaker', "By ${video.speaker}")
-                                            if(video.slidesUrl || video.codeUrl) {
-                                                p(class: 'urls') {
-                                                    if (video.slidesUrl) {
-                                                        i(class: 'fa fa-photo') {}
-                                                        yield ' '
-                                                        a(href: video.slidesUrl, 'slides')
-                                                    }
-                                                    if (video.slidesUrl && video.codeUrl) yield ' | '
-                                                    if (video.codeUrl) {
-                                                        i(class: 'fa fa-code') {}
-                                                        yield ' '
-                                                        a(href: video.codeUrl, 'source code')
-                                                    }
-                                                }
-                                            }
-                                            div(class: 'summary') {
-                                                yieldUnescaped video.summary
-                                            }
-                                        }
-                                    }
-                                }
-
-                                p "You can find more presentations:"
-                                ul {
-                                    li {
-                                        a(href: 'https://www.youtube.com/channel/UCJXNOMywewNmau4hzAy4LjA/videos', 'GR8Conf YouTube channel')
-                                    }
-                                    li {
-                                        a(href: 'https://www.youtube.com/user/GR8ConfUS/videos', 'GR8Conf US YouTube channel')
-                                    }
-                                    li {
-                                        a(href: 'https://www.youtube.com/user/TheGreachChannel/videos', 'Greach YouTube channel')
-                                    }
-                                }
-
-                                hr(class: 'divider')
-
-                                a(name: 'courses') {}
-                                h2 {
-                                    i(class: 'fa fa-film') {}
-                                    yield ' Courses'
-                                }
-                                p '''
-                                    Another great resource for learning Groovy is by watching a course. You could spend time hunting down
-                                    various videos on the web but these courses have all the information you need packed into one place.
-                                  '''
-
-                                courses.each { Course course ->
-                                    div(class: 'courses') {
-                                        a(href: course.url, target: "_blank") {
-                                            img(class: 'screenshot', src: "img/courses/${course.cover}")
-                                        }
-                                        div(class: 'metadata') {
-                                            a(href: course.url, target: '_blank') {
-                                                h1(class: 'title', course.title)
-                                            }
-                                            span(class: 'instructor', "By ${course.instructor}")
-                                            div(class: 'description') {
-                                                yieldUnescaped course.description
-                                            }
-                                        }
-                                    }
-                                }
-
-                            }
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/mailing-lists.groovy b/site/src/site/pages/mailing-lists.groovy
deleted file mode 100644
index 02e554a..0000000
--- a/site/src/site/pages/mailing-lists.groovy
+++ /dev/null
@@ -1,130 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Mailing-lists',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/support-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-envelope-o') {}
-                                yield ' Mailing-lists'
-                            }
-                            p '''The Groovy mailing lists are a great way to interact with the Groovy developers and Groovy users.'''
-                            hr(class: 'divider')
-
-                            article {
-                                h1 'Available lists'
-                                table(class: 'table') {
-                                    tr {
-                                        td {
-                                            h3 'users@groovy.apache.org'
-                                            em 'General purpose list for questions and discussion about Groovy'
-                                        }
-                                        td { a(href: 'https://lists.apache.org/list.html?users@groovy.apache.org', 'Browse') }
-                                        td { a(href: 'mailto:users-subscribe@groovy.apache.org', 'Subscribe') }
-                                        td { a(href: 'mailto:users-unsubscribe@groovy.apache.org', 'Unsubscribe') }
-                                        td { a(href: 'http://mail-archives.apache.org/mod_mbox/groovy-users/', 'Archive') }
-                                    }
-                                    tr {
-                                        td {
-                                            h3 'dev@groovy.apache.org'
-                                            em 'More focused list about the language implementation and its evolution'
-                                        }
-                                        td { a(href: 'https://lists.apache.org/list.html?dev@groovy.apache.org', 'Browse') }
-                                        td { a(href: 'mailto:dev-subscribe@groovy.apache.org', 'Subscribe') }
-                                        td { a(href: 'mailto:dev-unsubscribe@groovy.apache.org', 'Unsubscribe') }
-                                        td { a(href: 'http://mail-archives.apache.org/mod_mbox/groovy-dev/', 'Archive') }
-                                    }
-                                    tr {
-                                        td {
-                                            h3 'commits@groovy.apache.org'
-                                            em 'Tracks all commits'
-                                        }
-                                        td { a(href: 'https://lists.apache.org/list.html?commits@groovy.apache.org', 'Browse') }
-                                        td { a(href: 'mailto:commits-subscribe@groovy.apache.org', 'Subscribe') }
-                                        td { a(href: 'mailto:commits-unsubscribe@groovy.apache.org', 'Unsubscribe') }
-                                        td { a(href: 'http://mail-archives.apache.org/mod_mbox/groovy-commits/', 'Archive') }
-                                    }
-                                    tr {
-                                        td {
-                                            h3 'notifications@groovy.apache.org'
-                                            em 'Contains JIRA and Github notifications'
-                                        }
-                                        td { a(href: 'https://lists.apache.org/list.html?notifications@groovy.apache.org', 'Browse') }
-                                        td { a(href: 'mailto:notifications-subscribe@groovy.apache.org', 'Subscribe') }
-                                        td { a(href: 'mailto:notifications-unsubscribe@groovy.apache.org', 'Unsubscribe') }
-                                        td { a(href: 'http://mail-archives.apache.org/mod_mbox/groovy-notifications/', 'Archive') }
-                                    }
-                                }
-                                hr(class: 'divider')
-
-                                h2 'Alternative mailing list archives'
-                                ul {
-                                    li {
-                                        p """
-                                        The mailing lists are archived on ${
-                                            $a(href: 'http://groovy.markmail.org/', 'MarkMail')
-                                        }.
-                                        You can browse ${
-                                            $a(href: 'http://groovy.markmail.org/search/?q=', 'recent emails')
-                                        }."""
-                                        p """
-                                        MarkMail also provide RSS feeds: ${
-                                            $a(href: 'http://groovy.markmail.org/atom/+list:org.apache.groovy.users', 'users')
-                                        } ${
-                                            $a(href: 'http://groovy.markmail.org/atom/+list:org.apache.groovy.dev', 'dev')
-                                        } ${
-                                            $a(href: 'http://groovy.markmail.org/atom/+list:org.apache.groovy.commits', 'commits')
-                                        } ${
-                                            $a(href: 'http://groovy.markmail.org/atom/+list:org.apache.groovy.notifications', 'notifications')
-                                        }
-                                        """
-                                    }
-
-                                    li {
-                                        p """
-                                        The mailing lists are archived on ${
-                                            $a(href: 'http://www.nabble.com/', 'Nabble')
-                                        }: ${
-                                            $a(href: 'http://groovy.329449.n5.nabble.com/', 'combined')
-                                        } ${
-                                            $a(href: 'http://groovy.329449.n5.nabble.com/Groovy-Users-f329450.html', 'users')
-                                        } ${
-                                            $a(href: 'http://groovy.329449.n5.nabble.com/Groovy-Dev-f372993.html', 'dev')
-                                        } ${
-                                            $a(href: 'http://groovy.329449.n5.nabble.com/Groovy-Commits-f5723493.html', 'commits')
-                                        } ${
-                                            $a(href: 'http://groovy.329449.n5.nabble.com/Groovy-Notifications-f5723494.html', 'notifications')
-                                        }"""
-                                        p """
-                                        You can even post messages to a mailing list through Nabble
-                                        but you first need to be subscribed to the appropriate list!
-                                        """
-                                    }
-
-                                    li """
-                                    You can also find archives on mail-archive.com: ${
-                                        $a(href: 'https://www.mail-archive.com/users@groovy.apache.org/', 'users')} ${
-                                        $a(href: 'https://www.mail-archive.com/dev@groovy.apache.org/', 'dev')} ${
-                                        $a(href: 'https://www.mail-archive.com/commits@groovy.apache.org/', 'commits')} ${
-                                        $a(href: 'https://www.mail-archive.com/notifications@groovy.apache.org/', 'notifications')
-                                    }
-                                    """
-
-                                    li """
-                                    You can also find some historic dev mailing list archives on MARC: ${
-                                        $a(href: 'https://marc.info/?l=groovy-dev&r=1&s=groovy&q=b&w=4', 'groovy-dev')
-                                    }
-                                    """
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/release-notes.groovy b/site/src/site/pages/release-notes.groovy
deleted file mode 100644
index d5f2447..0000000
--- a/site/src/site/pages/release-notes.groovy
+++ /dev/null
@@ -1,48 +0,0 @@
-import generator.DocUtils
-
-modelTypes = {
-    String groovyVersion
-    String notes
-}
-
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Groovy $groovyVersion release notes",
-        extraStyles: ['https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css'],
-        extraFooter: contents {
-            script(src:'https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.js') { }
-            script { yieldUnescaped "document.addEventListener('DOMContentLoaded',prettyPrint)" }
-        },
-        mainContent: contents {
-            Map options = [attributes:[DOCS_BASEURL:DocUtils.DOCS_BASEURL]]
-            def notesAsHTML = asciidocText(notes,options)
-            def matcher = notesAsHTML =~ /<h2 id="(.+?)">(.+?)<\/h2>/
-            def sections = [:]
-            while (matcher.find()) {
-                sections[matcher.group(1)] = matcher.group(2)
-            }
-
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class:'active') {
-                                    a(href: '#releasenotes', "Release notes for Groovy $groovyVersion")
-                                }
-                                sections.each { k,v ->
-                                    li {
-                                        a(href:"#$k", class: 'anchor-link', v)
-                                    }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            a(name:"releasenotes"){}
-                            h1("Release notes for Groovy $groovyVersion")
-                            yieldUnescaped notesAsHTML
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/releases.groovy b/site/src/site/pages/releases.groovy
deleted file mode 100644
index bf6abfa..0000000
--- a/site/src/site/pages/releases.groovy
+++ /dev/null
@@ -1,36 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Release notes",
-        mainContent: contents {
-
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class: 'active') {
-                                    a(href: '#notes', "Release notes")
-                                }
-                                versions.each { v ->
-                                    li { a(href: "#notes$v", class: 'anchor-link', "Groovy $v") }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            h1('Release notes for Groovy')
-                            p '''Here you can find the release notes for the past Groovy releases, describing
-thoroughly what are the novelties and bug fixes of each version.'''
-                            ul {
-                                versions.each { mj ->
-                                    li {
-                                        a(name: "notes$mj") {}
-                                        yieldUnescaped "Release notes for "
-                                        a(href: "releasenotes/groovy-${mj}.html", "Groovy $mj")
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/reporting-issues.groovy b/site/src/site/pages/reporting-issues.groovy
deleted file mode 100644
index bfb87a0..0000000
--- a/site/src/site/pages/reporting-issues.groovy
+++ /dev/null
@@ -1,72 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Reporting Issues',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/support-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-envelope-o') {}
-                                yield ' Reporting Issues'
-                            }
-                            h2 'Reporting issues'
-                            p {
-                                yield 'The Groovy project is using the '
-                                a(href: 'https://issues.apache.org/jira/browse/GROOVY/', 'JIRA bug tracker')
-                                yield ' to report and track issues, feature enhancements, and new features.'
-                            }
-                            p {
-                                yield "Here is a checklist before creating a new issue:"
-                                ul {
-                                    li {
-                                        yield "Check the "
-                                        a(href: 'https://groovy.apache.org/#documenting', 'existing documentation')
-                                        yield " to make sure the behavior you are reporting is really a bug, not a feature."
-                                    }
-                                    li {
-                                        yield "Check the "
-                                        a(href: 'https://issues.apache.org/jira/browse/GROOVY/', 'existing issues')
-                                        yield " to make sure you aren\'t experiencing an existing known bug."
-                                        yield " (In this case feel free to add additional information to the existing issue if you have new information.)"
-                                    }
-                                    li {
-                                        yield "You'll frequently wish to discuss your issue first on one of the "
-                                        a(href: 'mailing-lists.html', 'mailing-lists')
-                                        yield '''
-                                        or in one of the forums to make sure what you believe is a bug isn't really
-                                        a feature or to gather support and ideas for your feature enhancement request.
-                                        '''
-                                        yield 'Alternatively, consider using the '
-                                        a(href: 'https://groovycommunity.com/', 'Slack')
-                                        yield " channel. (This channel is not endorsed by the Apache Software Foundation; it's run by Groovy enthusiasts in the community.)"
-                                    }
-                                }
-                                yield "NOTE: While we don't absolutely exclude you from asking questions within Jira (as distinct from reporting technical issues), you'll probably receive much better support from the mailing lists or forums."
-                            }
-                            p {
-                                yield 'If proceeding with reporting a new issue, here are some tips for making a good bug/issue report:'
-                                ul {
-                                    li('A meaningful title that captures how you believe Groovy is working incorrectly')
-                                    li('Relevant version information: Groovy version(s) showing the problem, Groovy version where the behavior last worked, JDK version, operating system or third-party library versions if relevant')
-                                    li('Any relevant stacktraces')
-                                    li('Preconditions and steps to reproduce the bug. Preferably with no (or as few as possible) dependencies on third-party projects/libraries')
-                                    li('Actual and expected results')
-                                    li('Any relevant additional information: are you using indy, static compilation, local meta-programming additions, other libraries that might have metaprogramming in play.')
-                                }
-                            }
-                            p 'Ready to report a new issue? (You\'ll need to sign up and log in, before proceeding.)'
-                            p {
-                                button(type: 'button', class: 'btn btn-default', 'Report an issue',
-                                        onclick: 'window.location.href="https://issues.apache.org/jira/browse/GROOVY"')
-                            }
-
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/search.groovy b/site/src/site/pages/search.groovy
deleted file mode 100644
index 6a6d061..0000000
--- a/site/src/site/pages/search.groovy
+++ /dev/null
@@ -1,113 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Search',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {}
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-search') {}
-                                yield ' Search'
-                            }
-                            p '''
-                                You can search the Groovy website, the Groovy documentation, and the Groovy APIs,
-                                with the Google Custom Search box below. Please type your search query, and hit enter:'''
-                            div {
-                                script '''
-                                  (function() {
-                                    var cx = '013939896723962546743:hbhn__olhii';
-                                    var gcse = document.createElement('script');
-                                    gcse.type = 'text/javascript';
-                                    gcse.async = true;
-                                    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
-                                        '//www.google.com/cse/cse.js?cx=' + cx;
-                                    var s = document.getElementsByTagName('script')[0];
-                                    s.parentNode.insertBefore(gcse, s);
-                                  })();
-                                '''
-                                'gcse:search'(linkTarget: '_blank'){}
-                                style '''
-                                    .gsc-input-box {
-                                        height: 30px;
-                                    }
-                                    input.gsc-search-button, input.gsc-search-button-v2 {
-                                        height: 30px;
-                                        display: none;
-                                    }
-                                    .gs-title {
-                                        line-height: 20px;
-                                        font-weight: bold;
-                                    }
-                                    .gs-snippet {
-                                        margin-left: 8px;
-                                        line-height: 18px;
-                                        font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
-                                    }
-                                    .gsc-cursor-page {
-                                        margin: 4px;
-                                        padding: 4px;
-                                        padding-left: 8px;
-                                        padding-right: 8px;
-                                        border: 1px solid gray;
-                                    }
-                                    .gsc-cursor-page:hover {
-                                        color: white !important;
-                                        background-color: #db4800 !important;
-                                        text-decoration: none !important;
-                                    }
-                                    .gsc-cursor-current-page {
-                                        background-color: #F2F2F2 !important;
-                                        color: black !important;
-                                    }
-                                    .gsc-selected-option-container {
-                                        width: 120px !important;
-                                    }
-                                    td.gsc-search-button {
-                                        padding-top: 6px;
-                                    }
-                                    td.gsc-orderby-container {
-                                        padding-right: 20px;
-                                    }
-                                    .gs-no-results-result .gs-snippet {
-                                        font-weight: bold;
-                                        color: #db4800;
-                                        background-color: white;
-                                        border: 0px;
-                                    }
-                                    .gsc-webResult, .gsc-result {
-                                        font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
-                                    }
-                                    .gsst_a, .gscb_a {
-                                        margin-top: 3px;
-                                    }
-                                    .gs-per-result-labels {
-                                        margin-left: 8px;
-                                        margin-top: 4px;
-                                    }
-                                    .gs-per-result-labels:before {
-                                        font-family: FontAwesome;
-                                        content: '\\f02c';
-                                        margin-right: 8px;
-                                    }
-                                    .gsc-tabHeader.gsc-tabhActive {
-                                        border-color: #CCCCCC;
-                                        border-bottom-color: #F2F2F2;
-                                        background-color: #F2F2F2;
-                                    }
-                                    .gsc-tabsArea {
-                                        border-bottom: 0;
-                                    }
-                                    a.gs-label, img.gs-image {
-                                        margin-left: 5px;
-                                    }
-                                '''
-                            }
-                            hr(class: 'divider')
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/security.groovy b/site/src/site/pages/security.groovy
deleted file mode 100644
index 67815e5..0000000
--- a/site/src/site/pages/security.groovy
+++ /dev/null
@@ -1,150 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Security",
-        mainContent: contents {
-
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class: 'active') {
-                                    a(href: '#security', "Security updates")
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            a(name: 'security') {}
-                            h1('Security updates')
-                            p '''Here you can find information about security patches or updates released for Apache Groovy. Note that unless specified otherwise,
-no binary or source patches are available. To obtain a security fix, you need to upgrade to the latest maintained version of Apache Groovy.'''
-                            p '''Releases prior to 2.4.4 were not released under Apache so no official patches for security updates are available for older versions.'''
-                            ul {
-                                li {
-                                    h2 "Groovy 2.4.x vulnerabilities"
-                                    h3 'CVE-2015-3253 Apache Groovy Information Disclosure'
-                                    asciidoc '''
-Severity: Important
-
-Vendor: The Apache Software Foundation
-
-Versions Affected:
-
-* Unsupported Codehaus versions of Groovy from 1.7.0 to 2.4.3
-* Fixed in version 2.4.4
-
-Impact:
-
-Remote execution of untrusted code, DoS
-
-Description:
-
-When an application has Groovy on the classpath and uses standard Java serialization mechanisms to communicate between servers, or to store local data, it is possible for an attacker to bake a special serialized object that will execute code directly when deserialized. All applications which rely on serialization and do not isolate the code which deserializes objects are subject to this vulnerability.
-
-Mitigation:
-
-Apache Groovy 2.4.4 is the first supported release under the Apache Software Foundation. It is strongly recommended that all users using serialization upgrade to this version.
-If you cannot upgrade or rely on an older, unsupported version of Groovy, you can apply the following patch on the `MethodClosure` class (`src/main/org/codehaus/groovy/runtime/MethodClosure.java`):
-
-```
- public class MethodClosure extends Closure {
-+    private Object readResolve() {
-+        throw new UnsupportedOperationException();
-+    }
-```
-
-Alternatively, you should make sure to use a custom security policy file (using the standard Java security manager) or make sure that you do not rely on serialization to communicate remotely.
-
-Credit:
-
-This vulnerability was discovered by:
-
-* cpnrodzc7 working with HP's Zero Day Initiative
-
-References:
-
-* http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3253[CVE-2015-3253: Remote execution of untrusted code]
-* http://groovy-lang.org/security.html
-
-'''
-                                    h3 'CVE-2016-6814 Apache Groovy Information Disclosure'
-                                    asciidoc '''
-Severity: Important
-
-Vendor: The Apache Software Foundation
-
-Versions Affected:
-
-* Unsupported Codehaus versions of Groovy from 1.7.0 to 2.4.3
-* Apache Groovy 2.4.4 to 2.4.7
-* Fixed in version 2.4.8
-
-Impact:
-
-Remote execution of untrusted code, DoS
-
-Description:
-
-When an application with Groovy on classpath uses standard
-Java serialization mechanisms, e.g. to communicate between servers
-or to store local data, it is possible for an attacker to bake a special
-serialized object that will execute code directly when deserialized.
-All applications which rely on serialization and do not isolate the
-code which deserializes objects are subject to this vulnerability.
-This is similar to CVE-2015-3253 but this exploit involves extra
-wrapping of objects and catching of exceptions which are now safe
-guarded against.
-
-Mitigation:
-
-Users of Groovy relying on (de)serialization with the affected versions
-should apply one of the following mitigations:
-
-* Isolate the code doing the (de)serialization
-* Upgrade to Apache Groovy 2.4.8 or later
-* Users of older versions of Groovy can apply the following patch to the
-`MethodClosure` class (`src/main/org/codehaus/groovy/runtime/MethodClosure.java`):
-
-```
-public class MethodClosure extends Closure {
-+    private void readObject(java.io.ObjectInputStream stream) throws
-IOException, ClassNotFoundException {
-+        if (ALLOW_RESOLVE) {
-+            stream.defaultReadObject();
-+        }
-+        throw new UnsupportedOperationException();
-+    }
-```
-
-Credit:
-
-This vulnerability was discovered by:
-
-* Sam Thomas of Pentest Limited working with Trend Micro's Zero Day Initiative
-
-History:
-
-* 2016-09-20 Original advisory
-* 2017-01-12 Updated information on affected versions
-
-References:
-
-* http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6814[CVE-2016-6814: Remote execution of untrusted code]
-* http://groovy-lang.org/security.html
-
-'''
-                                }
-                                li {
-                                    h2 "Reporting problems"
-                                    p """The Apache Software Foundation takes a very active stance in eliminating security problems in its software products.
-If you have questions about how to configure or use Groovy securely, you should send them to the users ${$a(href: 'mailing-lists.html', 'mailing list')}.
-If you find any security problems due to bugs in Groovy software, you should raise issues in the ${$a(href: 'contribute.html#reporting-issues', 'bug tracker')}.
-The Apache Software Foundation has a dedicated ${$a(href: 'http://www.apache.org/security/', 'security team')} which you may contact should the need arise.
-"""
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/singlepagedocumentation.groovy b/site/src/site/pages/singlepagedocumentation.groovy
deleted file mode 100644
index 5443050..0000000
--- a/site/src/site/pages/singlepagedocumentation.groovy
+++ /dev/null
@@ -1,2 +0,0 @@
-layout 'layouts/iframedoc.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Groovy reference documentation"
diff --git a/site/src/site/pages/support.groovy b/site/src/site/pages/support.groovy
deleted file mode 100644
index 58c9097..0000000
--- a/site/src/site/pages/support.groovy
+++ /dev/null
@@ -1,51 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Support',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/support-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-users') {}
-                                yield ' Support'
-                            }
-                            article {
-                                p 'There are numerous ways to get help with Groovy: '
-                                ul {
-                                    li "discuss language usage or direction with other Groovy users and developers through the ${$a(href: 'mailing-lists.html', 'mailing-lists')} - this is the place for all official discussions"
-                                    li "discuss matters on ${$a(href: 'https://groovycommunity.com/', 'Slack')}; it's run by Groovy enthusiasts in the community for casual conversations and Q&A"
-                                    li "ask a question on ${$a(href: 'https://stackoverflow.com/questions/tagged/groovy', 'Stack Overflow')}; these are answered by Groovy enthusiasts in the community"
-                                    li "find known issues (or create new ones) in our ${$a(href: 'reporting-issues.html', 'bug tracker')}"
-                                    li "attend upcoming ${$a(href: 'events.html', 'events and conferences')} to learn more about Groovy and to share your experience with others"
-                                    li "visit a local ${$a(href: 'usergroups.html', 'user group')} to meet other Groovy enthusiasts"
-                                }
-                                p '''
-                                    If you click on the socialize link in the menu, you will also find other ways to interact
-                                    with the Groovy community, and follow the news around the ecosystem:
-                                '''
-                                ul {
-                                    li {
-                                        a(href: 'groovy-weekly.html', 'Groovy newsletter')
-                                        yieldUnescaped ' &mdash; links to articles, presentations, tweets, podcasts, etc.'
-                                    }
-                                    li {
-                                        a(href: 'https://google.com/+groovy', 'Google+ Groovy page')
-                                        yieldUnescaped ' &mdash; for sharing news and articles'
-                                    }
-                                    li {
-                                        a(href: 'http://bit.ly/g-community', 'Google+ Groovy community')
-                                        yieldUnescaped ' &mdash; for discussing and exchanging with other Groovy users'
-                                    }
-                                }
-                            }
-                            hr(class: 'divider')
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/thanks.groovy b/site/src/site/pages/thanks.groovy
deleted file mode 100644
index 0618e7f..0000000
--- a/site/src/site/pages/thanks.groovy
+++ /dev/null
@@ -1,59 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Thanks',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/support-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-building-o') {}
-                                yield ' Thanks'
-                            }
-                            article {
-                                p {
-                                    yield '''
-                                        Groovy would not be the successful Open Source project it is today,
-                                        without the help of its users, forming the base of a wider Groovy
-                                        community and '''
-                                    a(href: 'ecosystem.html', 'ecosystem')
-                                    yield ' of projects using Groovy.'
-                                }
-                                p "The Apache Groovy team would like to thank:"
-                                ul {
-                                    li """
-                                        ${$a(href: 'http://www.apache.org', 'The Apache Software Foundation')} which owns
-                                        the project. We want to ${$a(href: 'http://www.apache.org/foundation/thanks.html', 'thank')} the Apache
-                                        Software Foundation and its sponsors for providing support for the Apache Community of open-source software projects.
-                                     """
-                                    li """
-                                        ${$a(href: 'http://www.jetbrains.com/', 'JetBrains')} cover the cost of our server
-                                        which runs our continuous integration server, hosts our documentation and website,
-                                        and they are also offering free licenses for
-                                        the ${$a(href: 'http://www.jetbrains.com/teamcity/', 'TeamCity')} integration server and
-                                        the ${$a(href: 'http://www.jetbrains.com/idea/', 'IntelliJ IDEA')} development environment.
-                                    """
-                                    li """
-                                        ${$a(href: 'http://www.jfrog.com/', 'JFrog')} provide the infrastructure
-                                        for deploying and hosting our snapshots and releases,
-                                        thanks to the ${$a(href: 'https://bintray.com/', 'Bintray')} social platform for distribution,
-                                        and the OSS ${$a(href: 'http://www.jfrog.com/home/v_artifactory_opensource_overview', 'Artifactory')} repository.
-                                    """
-                                }
-                                p """
-                                    Sponsors are a key ingredient of the success of the Apache projects.
-                                    If you consider helping the project in any way,
-                                    please don't hesitate to contact the Groovy development team.
-                                    Your help will be most appreciated.
-                                """
-                            }
-                            hr(class: 'divider')
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/usergroups.groovy b/site/src/site/pages/usergroups.groovy
deleted file mode 100644
index 9dd32b1..0000000
--- a/site/src/site/pages/usergroups.groovy
+++ /dev/null
@@ -1,66 +0,0 @@
-import model.UserGroup
-
-/**
- * Ths template is generating the user groups page.
- * If you want to add a user group, please edit the "usergroups" section in src/site/sitemap-user.groovy
- */
-
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - User groups',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/support-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-users') {}
-                                yield ' User groups'
-                            }
-                            article {
-                                p '''
-                                    We're living in a virtual world, but it's great from time to time to be able to meet in real life,
-                                    chat with other Groovy users, discover new aspects of the language or platform,
-                                    attend presentations about special features or ecosystem projects, and more.
-                                    Groovy user groups are there for you to exchange with others about your favorite language.
-                                '''
-
-                                Map groups = userGroups.groupBy { UserGroup g -> g.locationParts[0] }.sort { it.key }
-                                def groupAnchor = { groupName -> groupName.toLowerCase().replaceAll('[^a-zA-Z]', '') }
-
-                                // anchors for continents
-                                ul {
-                                    groups.keySet().each { group ->
-                                        li { a(href: "#${groupAnchor(group)}", group) }
-                                    }
-                                }
-
-                                // iterate on each top region
-                                groups.each { name, list ->
-                                    hr(class: 'divider')
-                                    a(name: groupAnchor(name)) {}
-                                    h2(name)
-                                    Map split = list.groupBy { UserGroup g -> g.locationParts[1] }.sort { it.key }
-                                    split.each { subregion, items ->
-                                        h3(subregion)
-                                        ul {
-                                            items.each { g ->
-                                                if (g.url) {
-                                                    li { a(href: g.url, g.name) }
-                                                } else {
-                                                    li(g.name)
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/versioning.groovy b/site/src/site/pages/versioning.groovy
deleted file mode 100644
index bf56da3..0000000
--- a/site/src/site/pages/versioning.groovy
+++ /dev/null
@@ -1,69 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Versioning',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li {
-                                    a(href: 'download.html', 'Download Groovy')
-                                }
-                                li {
-                                    a(href: 'download.html#distro', class: 'anchor-link', 'Distributions')
-                                }
-                                li {
-                                    a(href: 'download.html#sdkman', class: 'anchor-link', 'Through SDKMAN!')
-                                }
-                                li {
-                                    a(href: 'download.html#buildtools', class: 'anchor-link', 'From your build tools')
-                                }
-                                li {
-                                    a(href: 'download.html#otherways', class: 'anchor-link', 'Other ways to get Groovy')
-                                }
-                                li(class: 'active') {
-                                    a(href: 'versioning.html') {
-                                        strong 'Groovy version scheme'
-                                    }
-                                }
-                                li {
-                                    a(href: 'indy.html', 'Invoke dynamic support')
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-copy') {}
-                                yield ' Groovy version scheme'
-                            }
-                            article {
-                                h2 'Since Groovy 2.0.0'
-                                p "Since Groovy 2.0.0 we follow the ${$a(href: "http://semver.org/", 'semantic version scheme')}. This means the next minor version after 2.0.0 is 2.1.0, the first bugfix version after 2.0 is 2.0.1 and the next major version will be 3.0.0."
-
-                                h2 'Before Groovy 2.0.0'
-                                p 'Before Groovy 2.0.0 we followed a version scheme where we had X.Y.Z, where X.Y was the major version, and Z the minor version.\n' +
-                                        'Bugfix versions were not really done, you had to upgrade to the next minor version for that.\n' +
-                                        'Since Groovy 1.0 we incremented only the Y for a new major version.\n' +
-                                        'The increment of X we wanted to leave for a very big breaking change, like a new Meta-Object Protocol.\n' +
-                                        'The last major version in these scheme is 1.8(.0), 1.8.1 is the first minor and bugfix version.\n' +
-                                        'The major versions in the past using this scheme are: 1.8, 1.7, 1.6, 1.5, 1.0. Each of them having around 10 minor/bugfix versions.'
-
-                                h2 'Official Major Version'
-                                p 'The official major version is the current major version that should/can be used by the developers if they are not bound to a specific major version.'
-
-                                h2 'Maintenance Release Branch'
-                                p 'Here we indicate a former major version\'s bugfix release.'
-
-                                h2 'How long is a major version maintained?'
-                                p 'That depends on the users. Let\'s say we have X in maintenance and Y is the official major version, ' +
-                                        'then if a new major version Z is released, Y goes into maintenance. Usually we make one or two more bugfix releases for X and then we discontinue it, ' +
-                                        'unless there are strong requests to have certain things fixed for users that can absolutely not upgrade.'
-                            }
-                            hr(class: 'divider')
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/pages/wiki.groovy b/site/src/site/pages/wiki.groovy
deleted file mode 100644
index 4de64ee..0000000
--- a/site/src/site/pages/wiki.groovy
+++ /dev/null
@@ -1,68 +0,0 @@
-import generator.DocUtils
-import org.asciidoctor.ast.DocumentHeader
-
-modelTypes = {
-    DocumentHeader header
-    String title
-    String notes
-}
-
-title = header.documentTitle.main
-
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Developer docs - $title",
-        extraStyles: ['https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css'],
-        extraFooter: contents {
-            script(src:'https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.js') { }
-            script { yieldUnescaped "document.addEventListener('DOMContentLoaded',prettyPrint)" }
-        },
-        mainContent: contents {
-            Map options = [attributes:[DOCS_BASEURL:DocUtils.DOCS_BASEURL]]
-            def notesAsHTML = asciidocText(notes,options)
-            def matcher = notesAsHTML =~ /<h2 id="(.+?)">(.+?)<\/h2>/
-            def sections = [:]
-            while (matcher.find()) {
-                sections[matcher.group(1)] = matcher.group(2)
-            }
-
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class:'active') {
-                                    a(href: '#doc', title)
-                                }
-                                sections.each { k,v ->
-                                    li {
-                                        a(href:"#$k", class: 'anchor-link', v)
-                                    }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            a(name:"doc"){}
-                            h1(title)
-                            if (header.author) {
-                                p {
-                                    yield 'Author: '
-                                    i(header.author.fullName)
-                                }
-                            } else if (header.authors) {
-                                p {
-                                    yield 'Authors: '
-                                    i(header.authors*.fullName.join(', '))
-                                }
-
-                            }
-                            if (header.revisionInfo?.date) {
-                                p("Last update: ${header.revisionInfo.date} (${header.revisionInfo.remark?:'no comment'})")
-                            }
-                            hr()
-                            yieldUnescaped notesAsHTML
-                        }
-                    }
-                }
-            }
-        }
diff --git a/site/src/site/releasenotes/groovy-1.5.adoc b/site/src/site/releasenotes/groovy-1.5.adoc
deleted file mode 100644
index 0cf419f..0000000
--- a/site/src/site/releasenotes/groovy-1.5.adoc
+++ /dev/null
@@ -1,858 +0,0 @@
-Groovy, the Java-like dynamic language for
-the JVM, matures over time like good wines. After the successful release
-of Groovy 1.0 in January 2007, the next major milestone with the 1.5
-label already hits the shelves. With it, come several interesting
-novelties that we will examine in this article. The major addition to
-the language is the support of Java 5 features with annotations,
-generics and enums, making Groovy *the sole alternative dynamic language
-for the JVM fully supporting frameworks like Spring, Hibernate, JPA*,
-Google Guice, or TestNG. Apart from the new Java 5 features, a few
-syntax enhancements find their way in the language, as well as a more
-powerful dynamic behavior customization, a Swing UI builder on steroids,
-and improved tooling support.
-
-[[Groovy15releasenotes-AgroovierGroovyandwhyitmatters]]
-== A groovier Groovy and why it matters
-
-Groovy's key selling point has always been its *seamless integration
-with Java*. You can mix and match Groovy and Java classes together in
-very easy ways: You may have a Groovy class extending a Java class
-implementing a Groovy interface, and vice versa. Most of the other
-alternative JVM languages unfortunately won't let you seamlessly
-interchange classes of two different languages. So if you want to use
-the best language for the job without compromising your nice class
-hierarchy, you won't have many options to choose from, and Groovy gives
-you all the freedom for integrating both languages in the most
-transparent way.
-
-Groovy shares the same libraries, the same object model, the same
-threading model, and the same security model as Java. In a way, you can
-consider Groovy as an implementation detail of your Java
-project, *without having to bear problematic impedance mismatch issues*.
-
-Groovy is Java, and Groovy makes Java groovier. Compared with other
-languages, Groovy is certainly the language that provides the *flattest
-learning curve to Java developers*, thanks to a very similar syntax.
-
-This is even more important to keep in mind that Groovy generates normal
-Java bytecode and uses the usual JDK libraries, so you won't need to
-learn whole new APIs or have complex integration mechanisms: out of the
-box, Groovy and Java are interchangeable. The added benefit is that you
-can *protect the investment*you made in Java *skills for your
-developers*, or in *costly application servers*, or third party
-or *home-grown libraries*, as you can reuse all of them without a
-problem from Groovy.
-
-Speaking of calling into JDK, third party, or in-house libraries,
-alternative languages which don't support strong typing, can't always
-call all Java methods because of the fact they can't choose a certain
-polymorphic variation of the same method. When choosing an alternative
-language to improve your productivity or make your code more readable,
-if you need to call other Java classes, you will have to be very careful
-to the choice of language you will make, as you may encounter some road
-blocks along the way.
-
-These days, all major Enterprise frameworks require the use of features
-like annotations, enums or generics, to be leveraged at their fullest
-extent. Fortunately, with Groovy 1.5, developers can benefit from the
-support of all these Java 5 features in their projects. Let's see how
-annotations, enums and generics can be used from Groovy.
-
-[[Groovy15releasenotes-Java5additions]]
-== Java 5 additions
-
-The Groovy compiler always generates Java bytecode which is compatible
-with older Java VMs, but relies on JDK 1.4 for the core libraries it is
-using. However, for certain of these Java 5 additions, using Java 5
-bytecode was required, so that, for example, the generated classes may
-contain the bytecode information representing annotations with runtime
-retention policy. So although Groovy 1.5 can run on JDK 1.4, certain of
-these features will only be usable on JDK 5 - when this is the case, it
-will be mentioned in this article.
-
-[[Groovy15releasenotes-Variablearguments]]
-=== Variable arguments
-
-In Java 5, the ellipsis notation was created to denote methods with
-variable length arguments. With those little triple dots, Java lets
-users put as many parameters of the same type at the end of a method -
-actually, the vararg parameter is just an array of elements of that
-type. Varargs were already present in Groovy 1.0 - and still work with a
-JDK 1.4 runtime, but it is good to show how you can use them. Basically,
-whenever the last argument of a method is an array of objects, or a
-parameter declaration with a triple dot, you can pass multiple
-parameters to this method.
-
-A first example will show the usage of varargs in Groovy with the
-ellipsis:
-
-[source,groovy]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-int sum(int... someInts) {
-    def total = 0
-    for (int i = 0; i < someInts.size(); i++) total += someInts[i]
-    return total
-}
-assert sum(1) == 1
-assert sum(1, 2) == 3
-assert sum(1, 2, 3) == 6
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-The assertions used in this example show how we can pass as many ints as
-desired. It is also interesting to see that, for more syntax
-compatibility with Java, the classical for loop has been added into
-Groovy - despite the presence of the groovier version with the in
-keyword that can also transparently iterate over various array or
-collection types.
-
-Note that it is possible to have varargs support even with an array as
-last parameter by declaring the method as follows:
-
-[source,groovy]
----------------------------------
-int sum(int[] someInts) { /* */ }
----------------------------------
-
-This snippet is really trivial, and there are obviously more expressive
-ways of calculating a sum. For instance, if you have a list of numbers,
-you can sum all of them in a single line of code:
-
-[source,groovy]
----------------------------
-assert [1, 2, 3].sum() == 6
----------------------------
-
-Varargs in Groovy don't require JDK 5 as the underlying Java runtime,
-unlike annotations that we are now going to look at in the following
-section.
-
-[[Groovy15releasenotes-Annotations]]
-=== Annotations
-
-As shown in
-the http://docs.jboss.com/seam/1.3.0.ALPHA/reference/en/html/ch10.html[documentation
-of JBoss Seam] which supports Groovy for writing its entities,
-controllers and components, annotations like *@Entity, @Id,
-@Override* and others can be used to decorate your beans:
-
-[source,groovy]
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-@Entity
-@Name("hotel")
-class Hotel implements Serializable {
-   @Id @GeneratedValue Long id
-   @Length(max=50) @NotNull String name
-   @Length(max=100) @NotNull String address
-   @Length(max=40) @NotNull String city
-   @Length(min=2, max=10) @NotNull String state
-   @Length(min=4, max=6) @NotNull String zip
-   @Length(min=2, max=40) @NotNull String country
-   @Column(precision=6, scale=2) BigDecimal price
-   @Override
-   String toString() {
-      return "Hotel(${name}, ${address}, ${city}, ${zip})"
-   }
-}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-The Hotel entity is marked with the @Entity annotation, and it's given a
-name through @Name. Different parameters can be passed to your
-annotations like in the @Length annotation constraint where different
-upper and lower bound can be set for validation purpose. You can also
-notice *Groovy properties* in action: Where are all the getters and
-setters? Where are the public or private modifiers? You don't have to
-wait for Java 7 or 8 to get properties! By convention, defining a
-property is as simple as String country: a private country field will be
-auto-generated, as well as a public getter and setter. *Your code
-becomes naturally more concise and readable*.
-
-Annotations can be used on classes, fields, methods and method
-parameters, like in Java. There are, however, two gotchas to be aware
-of. Firstly, you can use annotations in Groovy, but you cannot yet
-define them - however, it will be possible in an upcoming version of
-Groovy. Secondly, although the syntax is almost 100% the same as in
-Java, there is a little difference when an array of values is passed in
-parameter of the annotation: instead of curly braces to surround the
-elements, Groovy requires the use of square brackets to offer a more
-homogeneous syntax - since Groovy lists and arrays use square brackets
-to surround their elements as well.
-
-With annotations in Groovy 1.5, you can easily define your JPA or
-Hibernate annotated beans
-in Groovy, add an `@Transactional` annotation on your Spring services,
-test your Swing UI with TestNG and Fest
-(https://web.archive.org/web/20150504160556/http://jroller.com/aalmiray/entry/testing_groovy_uis_with_fest[http://jroller.com/aalmiray/entry/testing_groovy_uis_with_fest]).
-All the useful and powerful enterprise frameworks leveraging annotations
-can be used from your Groovy-powered projects.
-
-[[Groovy15releasenotes-Enums]]
-=== Enums
-
-Whenever you need a fixed set of constants of a same type, Enums come in
-handy. Say you need a clean way to define constants for days without
-resorting to using integer constants? Then Enums are your friend. The
-following snippet shows how to define the days of the week:
-
-[source,groovy]
-----------------------------------------------------------------------------------
-enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
-----------------------------------------------------------------------------------
-
-Once you have defined your enum, you can use it as in Java with the
-usual notation *Day.MONDAY* and you can spice up your switch / case
-statements with it as well:
-
-[source,groovy]
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-def today = Day.SATURDAY
-switch (today) {
-     // Saturday or Sunday
-     case [Day.SATURDAY, Day.SUNDAY]: println "Weekends are cool"
-              break
-     // a day between Monday and Friday
-     case Day.MONDAY..Day.FRIDAY: println "Boring work day"
-              break
-     default: println "Are you sure this is a valid day?"
-}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-Notice that Groovy's switch is a bit more powerful than C-like languages
-switches in that it is possible to use any kind of object in the switch
-and case. Instead of stacking up seven different case block with each
-enumerated value, you can regroup them in lists or ranges: whenever the
-value is in the list or the range, the case will be true and its
-associated instructions will be executed.
-
-A more complex example inspired by the Java tutorial takes a more
-astronomical perspective on enums, and shows how your enums can have
-properties, constructors and methods:
-
-[source,groovy]
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-enum Planet {
-   MERCURY (3.303e+23, 2.4397e6),
-   VENUS   (4.869e+24, 6.0518e6),
-   EARTH   (5.976e+24, 6.37814e6),
-   MARS    (6.421e+23, 3.3972e6),
-   JUPITER (1.9e+27,   7.1492e7),
-   SATURN  (5.688e+26, 6.0268e7),
-   URANUS  (8.686e+25, 2.5559e7),
-   NEPTUNE (1.024e+26, 2.4746e7)
-   double mass
-   double radius
-   Planet(double mass, double radius) {
-      this.mass = mass;
-      this.radius = radius;
-   }
-   void printMe() {
-      println "${name()} has a mass of ${mass} " +
-              "and a radius of ${radius}"
-   }
-}
-Planet.EARTH.printMe()
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-Like annotations, enums in Groovy require a JDK 5+ to run on, as Java 5
-bytecode is generated.
-
-[[Groovy15releasenotes-Staticimports]]
-=== Static imports
-
-In our previous examples of enums, we always had to prefix the
-enumerated value with its parent enum class, but thanks to static
-imports (which work even on a JDK 1.4 runtime) we can save some
-characters by dropping the Planet prefix:
-
-[source,groovy]
---------------------------------------
-import static Planet.*SATURN.printMe()
---------------------------------------
-
-No more Planet prefix. But of course, static imports aren't only
-available for enums, but also work for other classes and static fields.
-What about doing some math?
-
-[source,groovy]
--------------------------------------------------------------------
-import static java.lang.Math.*assert sin(PI / 6) + cos(PI / 3) == 1
--------------------------------------------------------------------
-
-Both the static methods of *java.lang.Math* and its static constants
-were statically imported to make the expression more concise. But if the
-abbreviations of sine and cosine are not readable for you, you can use
-aliasing in Groovy with the as keyword:
-
-[source,groovy]
-----------------------------------------------------------------------------------------------------------------------------------------------------------
-import static java.lang.Math.PI
-import static java.lang.Math.sin as sine
-import static java.lang.Math.cos as cosine
-assert sine(PI / 6) + cosine(PI / 3) == 1
-----------------------------------------------------------------------------------------------------------------------------------------------------------
-
-Aliasing also works with normal imports too, not just static imports,
-and it can be pretty handy for adding some shortcut notation to very
-long class names as found in many frameworks, or for renaming methods or
-constants with non-obvious names, or not following your naming
-convention standards.
-
-[[Groovy15releasenotes-Generics]]
-=== Generics
-
-A somewhat more controversial feature of Java 5 also finds its way in
-the latest release of Groovy 1.5 with Generics. Initially, it may feel
-odd to add even more typing information to a dynamic language, after
-all. Java developers usually believe that because of type erasure (for
-backward compatibility reasons with older versions of Java) no
-information is left in the class bytecode to represent the generic type.
-However, this is wrong, since through the reflection API, you are able
-to introspect a class to discover the types of its fields or of its
-methods arguments with the generics details.
-
-So for instance, when you declare of field of type *List<String>*,
-somewhere in the bytecode, this information is kept in the form of some
-meta-information, although this field is really just of type *List*.
-This kind of reflexive information is used by enterprise frameworks like
-JPA or Hibernate to be able to relate a collection of elements from an
-entity to the entity representing the type of these elements.
-
-To put this into practice, let us check if the generics information is
-kept on class fields:
-
-[source,groovy]
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-class Talk { String title }
-class Speaker {
-   String name
-   List<Talk> talks = []
-}
-def me = new Speaker(name: 'Guillaume Laforge',
-   talks: [new Talk(title: 'Groovy'),new Talk(title: 'Grails')])
-def talksField =  me.class.getDeclaredField('talks')
-assert talksField.genericType.toString() ==    'java.util.List<Talk>'
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-We defined two classes: a Speaker class giving Talks at conferences. In
-the Speaker class, the talks property is of type *List<Talk>*. Then, we
-create a Speaker instance with two nice shortcuts for initializing the
-name and talks properties, and for creating a list of Talk instances.
-Once this setup code is ready, we retrieve the field representing the
-talks, and we check that the generic type information is correct:
-yes, *talks* is a *List*, but a *List* of *Talks*.
-
-[[Groovy15releasenotes-Covariantreturntypes]]
-=== Covariant return types
-
-In Java 5, if you have a method in a subclass with the same name and
-parameter types as in a parent class, but with a return type derived
-from the parent method's return type, then we can override the parent
-method. In Groovy 1.0, covariant return types were not supported. But in
-Groovy 1.5, you can use them. Additionally, if you are trying to
-override a method with a return type not deriving from the parent class
-method's return type, a compilation error will be thrown. Covariant
-return types also work with parameterized types.
-
-Beyond the support of Java 5 features which brought a few additions to
-the language, a few other syntax enhancements have been introduced in
-Groovy 1.5, and we are going to discover them in the following section.
-
-[[Groovy15releasenotes-Syntaxadditions]]
-== Syntax additions
-
-[[Groovy15releasenotes-Elvisoperator]]
-=== Elvis operator
-
-Apart from the Java 5 features that brought annotations, generics and
-enums into Groovy, a new operator finds its way into the language: ?:
-the Elvis operator. When you see the operator in question, you will
-easily guessed why it was nicknamed that way - if not, think in terms of
-Smiley. This new operator is, in fact, a shortcut notation for the
-ternary operator. How many times are you using the ternary operator to
-change the value of a variable if its content is null to assign it some
-default value? The typical case in Java is as follows:
-
-[source,groovy]
--------------------------------------------------------------------------------
-String name = "Guillaume";
-String displayName = name != null ? name : "Unknown";
--------------------------------------------------------------------------------
-
-In Groovy, since the language is able to ``coerce'' types to boolean
-values as needed (for instance where conditional expressions are
-required like in if or while constructs), in this statement, we can omit
-the comparison to null, because when a String is null, it is coerced to
-false, so in Groovy, the statement would become:
-
-[source,groovy]
----------------------------------------------------------------------
-String name = "Guillaume"
-String displayName = name ? name : "Unknown"
----------------------------------------------------------------------
-
-However, you will still notice the repetition of the name variable,
-which would violate the DRY principle (Don't Repeat Yourself). As this
-construct is pretty common, the Elvis operator was introduced to
-simplify such recurring cases, and the statements become:
-
-[source,groovy]
-----------------------------------------------------------------
-String name = "Guillaume"
-String displayName = name ?: "Unknown"
-----------------------------------------------------------------
-
-The second occurrence of the name variable is simply omitted and the
-ternary operator is no more ternary and is shortened to this more
-concise form.
-
-It is also worth noticing that there are no side effects to this new
-construct, since the first element (here the name) is not evaluated
-twice as it would be the case with the ternary operator, so there's no
-need to introduce some intermediate temporary value to hold the result
-of the first evaluation of the first element of the ternary operator.
-
-[[Groovy15releasenotes-Classicalforloop]]
-=== Classical for loop
-
-Although Groovy is not strictly speaking a 100% superset of Java, the
-Groovy syntax comes closer to the Java syntax after each release, and
-more and more Java code is also valid Groovy. The net benefit of this is
-that when you begin with Groovy, you can copy and paste Java code in
-your Groovy classes, and this should just work as expected. Then, over
-time, as you learn the language, you start throwing away the semi-colons
-which are not mandatory in Groovy, using GStrings (interpolated
-strings), or closures, etc. Groovy offers a rather flat learning curve
-to Java developers.
-
-However, there was one omission to this Java-syntax compatibility in the
-fact the classical for loop inherited from Java's C background wasn't
-allowed in Groovy. Initially, the Groovy developers thought it was not
-the nicest syntax of all and preferred using the for / in construct
-which was more readable. But as the Groovy users regularly asked for
-this old construct to be also part of Groovy, the team decided to bring
-it back to Groovy.
-
-With Groovy 1.5, you can either chose the Groovy for / in, or prefer the
-classical for loop:
-
-[source,groovy]
------------------------------------------------------------------------
-for (i in 0..9) println i
-for (int i = 0; i < 10; i++) println i
------------------------------------------------------------------------
-
-At the end of the day, it is probably more a matter of taste, and long
-time Groovy users usually prefer the most concise syntax with the for /
-in loop instead.
-
-[[Groovy15releasenotes-Namedparameterswithoutparenthesis]]
-=== Named parameters without parenthesis
-
-With its malleable and concise syntax, and its advanced dynamic
-capabilities, *Groovy is an ideal choice for implementing internal
-Domain-Specific Languages*. When you want to share a common metaphor
-between subject matter experts and developers, you can leverage Groovy
-to create a dedicated business language which models the key concept and
-business rules of your application. An important aspect of these DSLs is
-to make the code very readable, and also easier to write by
-non-technical persons. To achieve this goal even further, the grammar of
-the language was tweaked to allow us to use named parameters without the
-surrounding parenthesis.
-
-First of all, in Groovy, named parameters look like this:
-
-[source,groovy]
--------------------------------------------------------------------------------------------
-fund.compare(to: benchmarkFund, in: euros)
-compare(fund: someFund, to: benchmark, in: euros)
--------------------------------------------------------------------------------------------
-
-By adding new properties to numbers - which is possible in Groovy but
-beyond the scope of this article - we can also write code like this:
-
-[source,groovy]
----------------------------------------
-monster.move(left: 3.meters, at: 5.mph)
----------------------------------------
-
-Now by omitting parenthesis, the code can become a little clearer as
-shown below:
-
-[source,groovy]
--------------------------------------------------------------------------------------------------------------------------------
-fund.compare to: benchmarkFund, in: euros
-compare fund: someFund, to: benchmark, in: euros
-monster.move left: 3.meters, at: 5.mph
--------------------------------------------------------------------------------------------------------------------------------
-
-Obviously, this is not a big difference, but each statement becomes
-closer to real plain English sentences, and removes the usual
-boiler-plate technical code of the host language. This little
-enhancement of the grammar of the Groovy language gives more options to
-the designers of the business DSL.
-
-[[Groovy15releasenotes-Improvedtoolingsupport]]
-== Improved tooling support
-
-A common show-stopper when Groovy was a young language, was the lack of
-good tooling support: both the tool chain and the IDE support weren't up
-to the task. Fortunately, with the maturity and success of Groovy and
-the Grails web framework, this situation has changed.
-
-[[Groovy15releasenotes-Introductionofthejointcompiler]]
-== Introduction of the joint compiler
-
-Groovy is well-known for its transparent and seamless integration with
-Java. But this is not just about being able to call Java methods from
-Groovy scripts, no, the integration between both languages goes well
-beyond that. For instance, it is totally possible to have a Groovy class
-extending a Java class which in turns implements a Groovy interface, or
-vice versa. This is something other alternative languages don't always
-support, unfortunately. However, when mixing Groovy and Java classes
-together, so far, you had to be careful when compiling both type of
-classes by cleverly choosing the order of compilation, and when cyclic
-dependencies were spanning both languages, you may have hit a ``chicken
-and egg'' problem. Fortunately with Groovy 1.5, this is not the case
-anymore, and thanks to a contribution from JetBrains, the makers of the
-award winning http://www.jetbrains.com/idea/[Java IDE IntelliJ IDEA], a
-``joint'' compiler is available with which you can compile both Groovy
-and Java sources together in one go without having to think about
-dependencies between classes.
-
-If you want to use the joint compiler from the command-line, you can
-call the groovyc command as usual, but specify the -j flag which will
-enable the joint compilation:
-
-----------------------------------------------------
-groovyc *.groovy *.java -j -Jsource=1.4 -Jtarget=1.4
-----------------------------------------------------
-
-For passing parameters to the underlying javac command, you can prefix
-the flags with the J prefix. You can also use the joint compiler through
-its Ant task from you Ant or Maven build files:
-
-[source,xml]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-<taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpathref="my.classpath"/>
-<groovyc srcdir="${mainSourceDirectory}"
-         destdir="${mainClassesDirectory}"
-         classpathref="my.classpath"
-         jointCompilationOptions="-j -Jsource=1.4 -Jtarget=1.4" />
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-[[Groovy15releasenotes-MavenpluginforGroovy]]
-=== Maven plugin for Groovy
-
-For the Maven users, there is also a fully featured Maven plugin hosted
-at Codehaus which allows you to build your Java / Groovy applications:
-compile your Groovy and Java code, generate documentation from the
-JavaDoc tags, or it even lets you write your own Maven plugins in
-Groovy. There is also a Maven archetype to bootstrap your Groovy project
-more rapidly.
-
-[[Groovy15releasenotes-TheGroovyDocdocumentationtool]]
-=== The GroovyDoc documentation tool
-
-As a Java developer, you are used to documenting your code through
-JavaDoc tags in the comments of your classes, interfaces, fields, or
-methods. In Groovy, you can also use such tags in your comments, and
-have them being used by a tool called GroovyDoc to generate the
-equivalent JavaDoc documentation for all your Groovy classes.
-
-There's an Ant task you can define then use to generate the
-documentation as follows:
-
-[source,xml]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-<taskdef name="groovydoc"
-         classname="org.codehaus.groovy.ant.Groovydoc">
-   <classpath>
-      <path path="${mainClassesDirectory}"/>
-      <path refid="compilePath"/>
-   </classpath>
-</taskdef>
-
-<groovydoc destdir="${docsDirectory}/gapi"
-     sourcepath="${mainSourceDirectory}"
-     packagenames="**.*" use="true"
-     windowtitle="Groovydoc"
-     private="false"/>
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-[[Groovy15releasenotes-NewinteractiveshellandtheSwingconsole]]
-== New interactive shell and the Swing console
-
-Groovy distributions always contained two different shells: a
-command-line shell as well as a Swing console. Groovysh, the
-command-line shell, has never been very friendly in terms of
-interactions with its user: whenever you wanted to execute a statement,
-you had to type `go' or `execute' after each one, so that it got
-executed. For quick prototyping or playing with some new API, typing
-`go' each time was very cumbersome. The situation has changed in Groovy
-1.5, since a new interactive shell is born. No need to type `go'
-anymore.
-
-This new shell features several enhancements, such as the use of the
-JLine library which provides ANSI coloring, tab completion for commands,
-line editing capabilities. You can work with different script buffers,
-remember already imported classes, load existing scripts, save the
-current script to a file, browse the history, etc. For detailed
-explanations of the supported features, please have a look at
-the http://www.groovy-lang.org/groovysh.html[documentation].
-
-The command-line shell isn't the only one that received some care, the
-Swing console has also been improved, with a new toolbar, with advanced
-undo capabilities, the possibility to increase or decrease the font
-size, syntax highlighting. A lot of polishing has been applied to the
-console.
-
-[[Groovy15releasenotes-IntelliJIDEAJetGroovyplugin]]
-=== IntelliJ IDEA JetGroovy plugin
-
-I will save the best of tooling support till the end of this section by
-mentioning the JetGroovy plugin: a free and Open Source IntelliJ IDEA
-plugin dedicated to the support of both Groovy and Grails. This plugin
-has been developed by JetBrains themselves, and provides unmatched
-support for both the language and the web framework.
-
-To list a few of the available features of the Groovy support:
-
-* *Syntax highlighting* for all the syntax, plus different warnings for
-types not recognized, or when static type information is not known to
-help spot potential errors.
-* Ability to *run Groovy classes, scripts and JUnit test cases written
-in Groovy*.
-* *Debugger*: You can debug step by step across your Java and Groovy
-code, set breakpoints, show variables, the current stack, etc.
-* Joint compiler: the compiler *compiles both Groovy and Java* classes
-together and is able to resolve dependencies between both languages.
-* *Code completion* for packages, classes, properties, fields,
-variables, methods, keywords, and even specific support for the Swing UI
-builder.
-* Advanced class search and find usage.
-* *Refactorings*: most of the usual refactorings you've come to love in
-Java are available as well and work across Java and Groovy, like
-``surround with'', introduce, inline or rename a variable, renaming for
-packages, classes, methods, and fields.
-* *Imports optimizations and code formatting*.
-* Structure view: to have a bird's eye view of your classes.
-
-At the end of the day, you won't even notice whether you're developing a
-class in Groovy or in Java, considering the level of interplay and
-support offered inside IntelliJ IDEA. This is definitely a plugin to
-install if you're considering adding some dose of Groovy in your Java
-project, or if you plan to develop Grails applications.
-
-More information can be found
-on http://www.jetbrains.net/confluence/display/GRVY/Groovy+Home[JetBrains
-website].
-
-Although I'm only mentioning the plugin for IntelliJ IDEA, for your
-Groovy developments, you don't have to change your habits. You can also
-use the Eclipse plugin which is regularly improved by the IBM Project
-Zero developers, or Sun's brand new support of Groovy and Grails in
-NetBeans.
-
-[[Groovy15releasenotes-Performanceimprovements]]
-== Performance improvements
-
-Along with new features, this new release of Groovy brings noticeable
-performance improvements as well as lower memory consumption, compared
-to previous versions. In our informal benchmarks measuring the duration
-of all our test suites, we noticed speed improvements between 15% to 45%
-compared with our beta versions of Groovy 1.5 - and certainly higher
-figures can be expected by comparing with the now old Groovy 1.0. More
-formal benchmarks have yet to be developed, but those figures have also
-been confirmed by developers from an insurance company that is using
-Groovy to write the business rules of their policy risk calculation
-engine, and from another company who ran several tests on highly
-parallel machines. Overall, Groovy 1.5 should be faster and leaner in
-most situations. Your mileage may vary depending on your own context of
-usage of Groovy.
-
-[[Groovy15releasenotes-Enhanceddynamiccapabilities]]
-== Enhanced dynamic capabilities
-
-Through the symbiotic relationships between the Groovy and Grails
-projects, new dynamic capabilities have been introduced in Groovy, after
-having matured in the heart of Grails.
-
-Groovy is a dynamic language: put simply, it means that certain things
-like method dispatch happens at runtime, instead of at compile-time as
-it is the case of Java and other languages. There is a specific runtime
-system, called the MOP (stands for Meta-Object Protocol) that is
-responsible for the dispatching logic. Fortunately, this runtime system
-is open enough so that people can hook into the system and change its
-usual behavior. For each Java class and for each Groovy instance, there
-is an associated meta-class which represents this runtime behavior of
-your objects. Groovy offered various ways to interact with the MOP by
-defining custom meta-classes by extending some base class, but thanks to
-the contribution from the Grails project, a groovier kind of meta-class
-is available: the expando meta-class.
-
-Again,code samples are easier to help us understand the concept. In the
-following example, the msg String instance has got a meta-class that we
-can access through the metaClass property. Then we change the meta-class
-of the *String* class to add a new method called up to the String class,
-to have a shortcut notation for the *toUpperCase()* method. To do so, we
-assign a closure to the up property of the meta-class which is created
-as we assign it the closure. This closure takes no argument (hence why
-it starts with an arrow), and we call the *toUpperCase()* method on the
-delegate of the closure, which is a special closure variable which
-represents the real object (here the String instance).
-
-[source,groovy]
-----------------------------------------------------------------------------------------------------------------------
-def msg = "Hello!"
-println msg.metaClass
-String.metaClass.up = { -> delegate.toUpperCase() }
-assert "HELLO!" == msg.up()
-----------------------------------------------------------------------------------------------------------------------
-
-Through this meta-class, you can query the methods and/or properties
-which are available:
-
-[source,groovy]
---------------------------------------------------------------------------------------------------------------------------------------------------
-// print all the methods
-obj.metaClass.methods.each { println it.name }
-
-// print all the properties
-obj.metaClass.properties.each { println it.name }
---------------------------------------------------------------------------------------------------------------------------------------------------
-
-You can even check that a certain method or property is available, with
-a finer granularity than through any instanceof check:
-
-[source,groovy]
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-def msg = 'Hello!'
-if (msg.metaClass.respondsTo(msg, 'toUpperCase')) {
-   println msg.toUpperCase()
-}
-if (msg.metaClass.hasProperty(msg, 'bytes')) {
-   println  foo.bytes.encodeBase64()
-}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-These mechanisms are extensively used in the Grails web framework for
-instance to create dynamic finders: no need for DAOs in most
-circumstances, as you are able to call a *findByTitle()* dynamic method
-on a Book domain class. Through meta-classes, Grails automatically
-decorates the domain classes with such methods. Furthermore, if the
-method doesn't exist yet, it will be created and cached on first use.
-This can be accomplished by other advanced hooks as explained below.
-
-Beyond those examples we've seen so far, expando meta-classes also
-provide some complementary hooks. Four other kind of methods can be
-added to an expando meta-class:
-
-* *invokeMethod()* lets you intercept all methods calls,
-* while *methodMissing()* will be called on last resort only of no other
-method is found.
-* *get/setProperty()* intercepts access to all properties,
-* whereas *propertyMissing()* is called when no property can be found.
-
-With expando meta-classes, customizing the behavior of the types of your
-application becomes easier and can save precious time of development
-compared with the previous version of Groovy. Obviously, not everybody
-needs to use those techniques, but they can be handy in a number of
-situations where you want to apply some AOP (Aspect Oriented Techniques)
-to decorate your classes, and when you want to simplify and make more
-readable the business code of your application, by removing some
-unnecessary boiler-plate code.
-
-[[Groovy15releasenotes-Swingonsteroids]]
-== Swing on steroids
-
-The Groovy project has the chance to have a team of talented Swing
-developers who worked hard to enhance the capabilities of Groovy to
-build user interfaces in Swing. The basic brick for building Swing UIs
-in Groovy is the SwingBuilder class: at a syntactical level in your
-source, you can visually see how Swing components are nested within each
-other. A simplistic example from the Groovy website shows how to simply
-create a little GUI:
-
-[source,groovy]
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-import groovy.swing.SwingBuilder
-import java.awt.BorderLayout
-import groovy.swing.SwingBuilder
-import java.awt.BorderLayout as BL
-
-def swing = new SwingBuilder()
-count = 0
-def textlabel
-def frame = swing.frame(title:'Frame', size:[300,300]) {
-   borderLayout()
-   textlabel = label(text:"Clicked ${count} time(s).", constraints: BL.NORTH)
-   button(text:'Click Me', actionPerformed: { count++; textlabel.text = "Clicked ${count} time(s)."; println "clicked"},
-      constraints:BorderLayout.SOUTH)
-}
-frame.pack()
-frame.show()
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-In the novelties, the Swing builder concept has been extend to provide
-custom component factories. There are additional modules, not bundled
-with Groovy by default, which integrates the Swing components from JIDE
-or from the SwingX project into the usual Swing builder code.
-
-Although this topic would deserve a full article, I'm only going to list
-some of the other improvements in this release, for instance, the bind()
-method. Inspired by the beans binding JSR (JSR-295), you can easily bind
-components or beans together to have them react upon changes made on
-each other. In the following example, the size of the insets of the
-button will be changed according to the value of the slider component:
-
-[source,groovy]
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-import groovy.swing.SwingBuilder
-import java.awt.Insets
-
-swing = new SwingBuilder()
-frame = swing.frame {
-   vbox {
-      slider(id: 'slider', value:5)
-      button('Big Button?!', margin: bind(source: slider, sourceProperty:'value', converter: { [it, it, it, it] as Insets }))
-   }
-}
-frame.pack()
-frame.size = [frame.width + 200, frame.height + 200]
-frame.show()
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-Binding components together is such a common task when building user
-interfaces, that this task has been simplified through this binding
-mechanism. There are also some other automatic binding options that can
-be used, but again, a dedicated article would probably be better.
-
-In other new and noteworthy features, a few handy new methods have been
-added which leverage closures to call the infamous SwingUtilities class,
-and to start new threads: edt() will call _invokeAndWait()_,
-while *doLater()* will call *invokeLater()*, and *doOutside()* will just
-launch a closure in a new thread. No more ugly anonymous inner classes:
-just use closures through those shortcut methods!
-
-Last but not least, separating the description of the view and its
-associated behavior logic has never been easier, thanks to the build()
-method on SwingBuilder. You can create a separate script which only
-contains the view, while the interactions or bindings between components
-are in the main class, making a clearer separation in the MVC model.
-
-[[Groovy15releasenotes-Summary]]
-== Summary
-
-In this article, the new and noteworthy features have been outlined, but
-we have barely scratched the surface of this new version of Groovy. The
-big highlights are mainly around the new Java 5 features, such as
-annotations, enums or generics: it makes Groovy perfectly capable of
-being integrated nicely and seamlessly with Enterprise frameworks such
-as Spring, Hibernate, or JPA. With the improvements in the syntax and
-with the enhanced dynamic capabilities, Groovy will let you customize
-your business logic by creating embedded Domain-Specific Languages, that
-you can easily integrate at the extension points of your application.
-The developer experience has progressed significantly through the work
-poured in the tooling support, this is no more a show stopper to the
-adoption of Groovy. Overall, with Groovy 1.5, the goal of simplifying
-the life of developers has never been so well fulfilled, and Groovy
-should definitely be part of all the Java developers' toolbox.
\ No newline at end of file
diff --git a/site/src/site/releasenotes/groovy-1.6.adoc b/site/src/site/releasenotes/groovy-1.6.adoc
deleted file mode 100644
index 5c49954..0000000
--- a/site/src/site/releasenotes/groovy-1.6.adoc
+++ /dev/null
@@ -1,1363 +0,0 @@
-== Overview of Groovy 1.6
-
-As we shall see in this article, the main highlights of this Groovy 1.6
-release are:
-
-* *Greater compile-time and runtime performance improvements*
-* Multiple assignments
-* Optional return in `if`/`else` and `try`/`catch` blocks
-* Java 5 annotation definition
-* *AST transformations* and all the provided transformation annotations
-like`@Singleton`, `@Lazy`, `@Immutable`, `@Delegate` and friends
-* The Grape module and dependency system and its `@Grab` transformation
-* Various Swing builder improvements, thanks to the Swing
-/ link:http://griffon-framework.org/[Griffon] team, as well as several Swing
-console improvements
-* The integration of *JMX builder*
-* Various *metaprogramming improvements*, like the EMC DSL, per-instance
-metaclasses even for POJOs, and runtime mixins
-* *JSR-223* scripting engine built-in
-* Out-of-the-box *OSGi readiness*
-
-All those improvements and new features serve one goal: *helping
-developers be more productive and more agile*, by:
-
-* Focusing more on the task at hand than on boiler-plate technical code
-* Leveraging existing Enterprise APIs rather than reinventing the wheel
-* Improving the overall performance and quality of the language
-* Enabling developers to customize the language at will to derive their
-own Domain-Specific Languages
-
-But beyond all these important aspects, *Groovy is not just a language,
-it's a whole ecosystem*.
-
-The improvements in Groovy's generated bytecode information helps
-capable tools coverage
-like link:http://cobertura.github.io/cobertura/[Cobertura] and
-its Groovy support, or pave the way for new utilities
-like link:http://codenarc.sourceforge.net/[CodeNarc] for static code analysis
-for Groovy.
-
-The malleability of the syntax of the language and its metaprogramming
-capabilities give birth to advanced testing tools such as
-the link:http://easyb.org/[Easyb] Behavior-Driven-Development project,
-the link:http://code.google.com/p/gmock/[GMock] mocking library or
-the link:http://code.google.com/p/spock/[Spock] testing and specification
-framework.
-
-Again, Groovy's flexibility and expressiveness and its scripting
-capabilities open the doors to advanced build scripting or
-infrastructure systems for your continuous integration practices and
-project build solutions, such
-as link:https://gant.github.io/[Gant] and link:http://www.gradle.org/[Gradle].
-
-At the tooling level, Groovy also progresses, for instance with
-its `groovydoc` Ant task to let you generate proper JavaDoc covering,
-documenting and interlinking both your Groovy and Java source files for
-your Groovy/Java mixed projects.
-
-And at the same time, IDE makers improve their support for Groovy, by
-giving users powerful weapons such as cross-language code refactoring,
-profound understanding of dynamic language idioms, code completion, and
-more, to make developers productive when using Groovy in their projects.
-
-Now, armed with this knowledge of the Groovy world, it's time to dive
-into the novelties of Groovy 1.6!
-
-[[Groovy16releasenotes-Performanceimprovements]]
-== Performance improvements
-
-A lot of care has been taken to improve both the compile-time and
-runtime performance of Groovy, compared to previous releases.
-
-The *compiler is 3 to 5 times faster* than in previous releases. This
-improvement has also been back-ported in the 1.5.x branch, so that both
-the old maintenance branch and the current stable branch benefit from
-this work. Thanks to class lookup caches, the bigger the project, the
-faster the compilation will be.
-
-However, the most noticeable changes will be in the general runtime
-performance improvements of Groovy. We used several benchmarks from
-the link:http://shootout.alioth.debian.org/[Great Language Shootout] to
-measure our progress. On those we selected, compared to the old Groovy
-1.5.x line, the*performance improvements ranged from 150% to 460%*.
-Micro-benchmarks obviously rarely reflect the kind of code you have in
-your own projects, but the overall performance of your projects should
-improve significantly.
-
-[[Groovy16releasenotes-Multipleassignments]]
-== Multiple assignments
-
-In Groovy 1.6, there is only one syntax addition for being able to
-define and assign several variables at once:
-
-[source,groovy]
--------------------
-def (a, b) = [1, 2]
-
-assert a == 1
-assert b == 2
--------------------
-
-A more meaningful example may be methods returning longitude and latitude
-coordinates. If these coordinates are represented as a list of two
-elements, you can easily get back to each element as follows:
-
-[source,groovy]
----------------------------------------------------------------------
-def geocode(String location) {
-    // implementation returns [48.824068, 2.531733] for Paris, France
-}
-
-def (lat, long) = geocode("Paris, France")
-
-assert lat == 48.824068
-assert long == 2.531733
----------------------------------------------------------------------
-
-And you can also define the types of the variables in one shot as
-follows:
-
-[source,groovy]
--------------------------------------
-def (int i, String s) = [1, 'Groovy']
-
-assert i == 1
-assert s == 'Groovy'
--------------------------------------
-
-For the assignment (with prior definition of the variables), just omit
-the `def` keyword:
-
-[source,groovy]
-------------------------------------------------------
-def firstname, lastname
-
-(firstname, lastname) = "Guillaume Laforge".tokenize()
-
-assert firstname == "Guillaume"
-assert lastname == "Laforge"
-------------------------------------------------------
-
-If the list on the right-hand side contains more elements than the
-number of variables on the left-hand side, only the first elements will
-be assigned in order into the variables. Also, when there are less
-elements than variables, the extra variables will be assigned null.
-
-So for the case with more variables than list elements, here, `c` will
-be `null`:
-
-[source,groovy]
-------------------------
-def elements = [1, 2]
-def (a, b, c) = elements
-
-assert a == 1
-assert b == 2
-assert c == null
-------------------------
-
-Whereas in the case where there are more list elements than variables,
-we'll get the following expectations:
-
-[source,groovy]
----------------------------
-def elements = [1, 2, 3, 4]
-def (a, b, c) = elements
-
-assert a == 1
-assert b == 2
-assert c == 3
----------------------------
-
-For the curious minds, supporting multiple assignments also means we can
-do the standard school swap case in one line:
-
-[source,groovy]
------------------------------
-// given those two variables
-def a = 1, b = 2
-
-// swap variables with a list
-(a, b) = [b, a]
-
-assert a == 2
-assert b == 1
------------------------------
-
-[[Groovy16releasenotes-Annotationdefinition]]
-== Annotation definition
-
-Actually, when I said that multiple assignments were the sole syntax
-addition, it's not entirely true. Groovy supported the syntax for
-annotation definition even in Groovy 1.5, but we had not implemented the
-feature completely. Fortunately, this is now fixed, and it wraps up all
-the Java 5 features supported by Groovy, such as *static
-imports*, *generics*, *annotations*, and *enums*, making Groovy
-the *sole alternative dynamic language for the JVM supporting all those
-Java 5 features*, which is critical for a seamless Java integration
-story, and for the usage in Enterprise frameworks relying on
-annotations, generics and more, like JPA, EJB3, Spring, TestNG, etc.
-
-[[Groovy16releasenotes-Optionalreturnforifelseandtrycatchfinallyblocks]]
-== Optional return for if/else and try/catch/finally blocks
-
-It is now possible for `if/else` and `try/catch/finally` blocks to
-return a value when they are the last expression in a method or a
-closure. No need to explicitly use the `return` keyword inside these
-constructs, as long as they are the latest expression in the block of
-code.
-
-As an example, the following method will return `1`, although
-the `return` keyword was omitted.
-
-[source,groovy]
-----------------------
-def method() {
-    if (true) 1 else 0
-}
-
-assert method() == 1
-----------------------
-
-For `try/catch/finally` blocks, the last expression evaluated is the one
-being returned. If an exception is thrown in the `try` block, the last
-expression in the `catch` block is returned instead. Note
-that `finally` blocks don't return any value.
-
-[source,groovy]
---------------------------------------------
-def method(bool) {
-    try {
-        if (bool) throw new Exception("foo")
-        1
-    } catch(e) {
-        2
-    } finally {
-        3
-    }
-}
-
-assert method(false) == 1
-assert method(true) == 2
---------------------------------------------
-
-[[Groovy16releasenotes-ASTTransformations]]
-== AST Transformations
-
-Although at times, it may sound like a good idea to extend the syntax of
-Groovy to implement new features (like this is the case for instance for
-multiple assignments), most of the time, we can't just add a new keyword
-to the grammar, or create some new syntax construct to represent a new
-concept. However, with the idea of AST (Abstract Syntax Tree)
-Transformations, we are able to tackle new and innovative ideas without
-necessary grammar changes.
-
-When the Groovy compiler compiles Groovy scripts and classes, at some
-point in the process, the source code will end up being represented in
-memory in the form of a Concrete Syntax Tree, then transformed into an
-Abstract Syntax Tree. The purpose of AST Transformations is to let
-developers hook into the compilation process to be able to modify the
-AST before it is turned into bytecode that will be run by the JVM.
-
-*AST Transformations provides Groovy with improved compile-time
-metaprogramming capabilities* allowing powerful flexibility at the
-language level, without a runtime performance penalty.
-
-There are two kinds of transformations: global and local
-transformations.
-
-* Global transformations are applied to by the compiler on the code
-being compiled, wherever the transformation apply. A JAR added to the
-classpath of the compiler should contain a service locator file
-at `META-INF/services/org.codehaus.groovy.transform.ASTTransformation` with
-a line with the name of the transformation class. The transformation
-class must have a no-args constructor and implement
-the `org.codehaus.groovy.transform.ASTTransformation`interface. It will
-be run against every source in the compilation, so be sure to not create
-transformations which scan all the AST in an expansive and
-time-consuming manner, to keep the compiler fast.
-* Local transformations are transformations applied locally by
-annotating code elements you want to transform. For this, we reuse the
-annotation notation, and those annotations should
-implement `org.codehaus.groovy.transform.ASTTransformation`. The
-compiler will discover them and apply the transformation on these code
-elements.
-
-Groovy 1.6 provides several local transformation annotations, in the
-Groovy Swing Builder for data binding (`@Bindable` and `@Vetoable`), in
-the Grape module system for adding script library dependencies
-(`@Grab`), or as general language features without requiring any syntax
-change to support them
-(`@Singleton`, `@Immutable`, `@Delegate`, `@Lazy`, `@Newify`, `@Category`, `@Mixin` and `@PackageScope`).
-Let's have a look at some of these transformations
-(`@Bindable` and `@Vetoable` will be covered in the section related to
-the Swing enhancements, and `@Grab` in the section about Grape).
-
-[[Groovy16releasenotes-Singleton]]
-=== @Singleton
-
-Whether the singleton is pattern or an anti-pattern, there are still
-some cases where we need to create singletons. We're used to create a
-private constructor, a `getInstance()` method for a static field or even
-an initialized `public static final` field. So instead of writing code
-like this in Java:
-
-[source,groovy]
----------------------------------------------
-public class T {
-    public static final T instance = new T();
-    private T() {}
-}
----------------------------------------------
-
-You just need to annotate your type with the `@Singleton` annotation:
-
-[source,groovy]
----------------------
-@Singleton class T {}
----------------------
-
-The singleton instance can then simply be accessed
-with `T.instance` (direct public field access).
-
-You can also have the lazy loading approach with an additional
-annotation parameter:
-
-[source,groovy]
-----------------------------------
-@Singleton(lazy = true) class T {}
-----------------------------------
-
-Would become more or less equivalent to this Groovy class:
-
-[source,groovy]
----------------------------------------
-class T {
-    private static volatile T instance
-    private T() {}
-    static T getInstance () {
-        if (instance) {
-            instance
-        } else {
-            synchronized(T) {
-                if (instance) {
-                    instance
-                } else {
-                    instance = new T ()
-                }
-            }
-        }
-    }
-}
----------------------------------------
-
-Lazy or not, once again, to access the instance, simply
-do `T.instance` (property access, shortcut for `T.getInstance()`).
-
-[[Groovy16releasenotes-Immutable]]
-=== @Immutable
-
-Immutable objects are ones which don't change after initial creation.
-Such objects are frequently desirable because they are simple and can be
-safely shared even in multi-threading contexts. This makes them great
-for functional and concurrent scenarios. The rules for creating such
-objects are well-known:
-
-* No mutators (methods that modify internal state)
-* Class must be final
-* Fields must be private and final
-* Defensive copying of mutable components
-* `equals()`, `hashCode()` and `toString()` must be implemented in terms
-of the fields if you want to compare your objects or use them as keys in
-e.g. maps
-
-Instead of writing a very long Java or Groovy class mimicking this
-immutability behavior, Groovy lets you just write an immutable class as
-follow:
- 
-[source,groovy]
-------------------------------------------------------------------
-@Immutable final class Coordinates {
-    Double latitude, longitude
-}
-
-def c1 = new Coordinates(latitude: 48.824068, longitude: 2.531733)
-def c2 = new Coordinates(48.824068, 2.531733)
-
-assert c1 == c2
-------------------------------------------------------------------
-
-All the boiler-plate code is generated at compile-time for you! The
-example shows that to instantiate such immutable coordinates, you can
-use one of the two constructors created by the transformation, one
-taking a map whose keys are the properties to set to the values
-associated with those keys, and the other taking the values of the
-properties as parameters. The `assert` also shows that `equals()` was
-implemented and allows us to properly compare such immutable objects.
-
-You can have a look at
-the link:http://docs.groovy-lang.org/latest/html/gapi/groovy/transform/Immutable.html[details of the implementation] of this transformation. For the record, the Groovy
-example above using the`@Immutable` transformation is over 50 lines of
-equivalent Java code.
-
-[[Groovy16releasenotes-Lazy]]
-=== @Lazy
-
-Another transformation is `@Lazy`. Sometimes, you want to handle the
-initialization of a field of your class lazily, so that its value is
-computed only on first use, often because it may be time-consuming or
-memory-expensive to create. The usual approach is to customize the
-getter of said field, so that it takes care of the initialization when
-the getter is called the first time. But in Groovy 1.6, you can now use
-the `@Lazy` annotation for that purpose:
-
-[source,groovy]
----------------------------------------
-class Person {
-    @Lazy pets = ['Cat', 'Dog', 'Bird']
-}
-
-def p = new Person()
-assert !(p.dump().contains('Cat'))
-
-assert p.pets.size() == 3
-assert p.dump().contains('Cat')
----------------------------------------
-
-In the case of complex computation for initializing the field, you may
-need to call some method for doing the work, instead of a value like our
-pets list. This is then possible to have the lazy evaluation being done
-by a closure call, as the following example shows:
-
-[source,groovy]
-----------------------------------------------------------
-class Person {
-    @Lazy List pets = { /* complex computation here */ }()
-}
-----------------------------------------------------------
-
-There is also an option for leveraging Soft references for garbage
-collection friendliness for expensive data structures that may be
-contained by such lazy fields:
-
-[source,groovy]
----------------------------------------------------------
-class Person {
-    @Lazy(soft = true) List pets = ['Cat', 'Dog', 'Bird']
-}
-
-def p = new Person()
-assert p.pets.contains('Cat')
----------------------------------------------------------
-
-The internal field created by the compiler for `pets` will actually be a
-Soft reference, but accessing `p.pets` directly will return the value
-(ie. the list of pets) held by that reference, making the use of the
-soft reference transparent to the user of that class.
-
-[[Groovy16releasenotes-Delegate]]
-=== @Delegate
-
-Java doesn't provide any built-in delegation mechanism, and so far
-Groovy didn't either. But with the `@Delegate` transformation, a class
-field or property can be annotated and become an object to which method
-calls are delegated. In the following example, an `Event` class has a
-date delegate, and the compiler will delegate all of `Date`'s methods
-invoked on the `Event` class to the `Date` delegate. As shown in the
-latest `assert`, the `Event` class has got a `before(Date)` method, and
-all of `Date`'s methods.
-
-[source,groovy]
---------------------------------------------------------------
-import java.text.SimpleDateFormat
-
-class Event {
-    @Delegate Date when
-    String title, url
-}
-
-def df = new SimpleDateFormat("yyyy/MM/dd")
-
-def gr8conf = new Event(title: "GR8 Conference",
-                          url: "http://www.gr8conf.org",
-                         when: df.parse("2009/05/18"))
-def javaOne = new Event(title: "JavaOne",
-                          url: "http://java.sun.com/javaone/",
-                         when: df.parse("2009/06/02"))
-
-assert gr8conf.before(javaOne.when)
---------------------------------------------------------------
-
-The Groovy compiler adds all of `Date`'s methods to the `Event` class,
-and those methods simply delegate the call to the `Date` field. If the
-delegate is not a final class, it is even possible to make
-the `Event` class a subclass of `Date` simply by extending `Date`, as
-shown below. No need to implement the delegation ourselves by adding
-each and every `Date` methods to our `Event` class, since the compiler
-is friendly-enough with us to do the job itself.
-
-[source,groovy]
---------------------------
-class Event extends Date {
-    @Delegate Date when
-    String title, url
-}
---------------------------
-
-In the case you are delegating to an interface, however, you don't even
-need to explicitly say you implement the interface of the delegate.
-The `@Delegate` transformation will take care of this and implement that
-interface. So the instances of your class will automatically
-be `instanceof` the delegate's interface.
-
-[source,groovy]
------------------------------------------------------
-import java.util.concurrent.locks.*
-
-class LockableList {
-    @Delegate private List list = []
-    @Delegate private Lock lock = new ReentrantLock()
-}
-
-def list = new LockableList()
-
-list.lock()
-try {
-    list << 'Groovy'
-    list << 'Grails'
-    list << 'Griffon'
-} finally {
-    list.unlock()
-}
-
-assert list.size() == 3
-assert list instanceof Lock
-assert list instanceof List
------------------------------------------------------
-
-In this example, our `LockableList` is now a composite of a list and a
-lock and is `instanceof` of `List` and `Lock`. However, if you didn't
-intend your class to be implementing these interfaces, you would still
-be able to do so by specifying a parameter on the annotation:
-
-[source,groovy]
-----------------------------------------------------
-@Delegate(interfaces = false) private List list = []
-----------------------------------------------------
-
-[[Groovy16releasenotes-Newify]]
-=== @Newify
-
-The `@Newify` transformation proposes two new ways of instantiating
-classes. The first one is providing Ruby like approach to creating
-instances with a `new()` class method:
-
-[source,groovy]
---------------------------------
-@Newify rubyLikeNew() {
-    assert Integer.new(42) == 42
-}
-
-rubyLikeNew()
---------------------------------
-
-But it is also possible to follow the Python approach with omitting
-the `new` keyword. Imagine the following tree creation:
-
-[source,groovy]
------------------------------------------------------------------
-class Tree {
-    def elements
-    Tree(Object... elements) { this.elements = elements as List }
-}
-
-class Leaf {
-    def value
-    Leaf(value) { this.value = value }
-}
-
-def buildTree() {
-    new Tree(new Tree(new Leaf(1), new Leaf(2)), new Leaf(3))
-}
-
-buildTree()
------------------------------------------------------------------
-
-The creation of the tree is not very readable because of all
-those `new` keywords spread across the line. The Ruby approach wouldn't
-be more readable, since a `new()` method call for creating each element
-is needed. But by using `@Newify`, we can improve our tree building
-slightly to make it easier on the eye:
-
-[source,groovy]
------------------------------------------
-@Newify([Tree, Leaf]) buildTree() {
-    Tree(Tree(Leaf(1), Leaf(2)), Leaf(3))
-}
------------------------------------------
-
-You'll also notice that we just allowed `Tree` and `Leaf` to
-be _newified_. By default, under the scope which is annotated, all
-instantiations are_newified_, but you can limit the reach by specifying
-the classes you're interested in. Also, note that for our example,
-perhaps a Groovy builder may have been more appropriate, since its
-purpose is to indeed create any kind of hierarchical / tree structure.
-
-If we take another look at our coordinates example from a few sections
-earlier, using both `@Immutable` and `@Newify` can be interesting for
-creating a path with a concise but type-safe manner:
-
-[source,groovy]
------------------------------------------
-@Immutable final class Coordinates {
-    Double latitude, longitude
-}
-
-@Immutable final class Path {
-    Coordinates[] coordinates
-}
-
-@Newify([Coordinates, Path])
-def build() {
-    Path(
-        Coordinates(48.824068, 2.531733),
-        Coordinates(48.857840, 2.347212),
-        Coordinates(48.858429, 2.342622)
-    )
-}
-
-assert build().coordinates.size() == 3
------------------------------------------
-
-A closing remark here: since a `Path(Coordinates[] coordinates)` was
-generated, we can use that constructor in a _varargs way_ in Groovy,
-just as if it had been defined as `Path(Coordinates... coordinates)`.
-
-[[Groovy16releasenotes-CategoryandMixin]]
-=== @Category and @Mixin
-
-If you've been using Groovy for a while, you're certainly familiar with
-the concept of Categories. It's a mechanism to extend existing types
-(even final classes from the JDK or third-party libraries), to add new
-methods to them. This is also a technique which can be used when writing
-Domain-Specific Languages. Let's consider the example below:
-
-[source,groovy]
---------------------------------------------
-final class Distance {
-    def number
-    String toString() { "${number}m" }
-}
-
-class NumberCategory {
-    static Distance getMeters(Number self) {
-        new Distance(number: self)
-    }
-}
-
-use(NumberCategory) {
-    def dist = 300.meters
-
-    assert dist instanceof Distance
-    assert dist.toString() == "300m"
-}
---------------------------------------------
-
-We have a simplistic and fictive `Distance` class which may have been
-provided by a third-party, who had the bad idea of making the
-class`final` so that nobody could ever extend it in any way. But thanks
-to a Groovy Category, we are able to decorate the `Distance` type with
-additional methods. Here, we're going to add a `getMeters()` method to
-numbers, by actually decorating the `Number` type. By adding a getter to
-a number, you're able to reference it using the nice property syntax of
-Groovy. So instead of writing `300.getMeters()`, you're able to
-write `300.meters`.
-
-The downside of this category system and notation is that to add
-instance methods to other types, you have to create `static` methods,
-and furthermore, there's a first argument which represents the instance
-of the type we're working on. The other arguments are the normal
-arguments the method will take as parameters. So it may be a bit less
-intuitive than a normal method definition we would have added
-to `Distance`, should we have had access to its source code for
-enhancing it. Here comes the `@Category` annotation, which transforms a
-class with instance methods into a Groovy category:
-
-[source,groovy]
-----------------------------------
-@Category(Number)
-class NumberCategory {
-    Distance getMeters() {
-        new Distance(number: this)
-    }
-}
-----------------------------------
-
-No need for declaring the methods `static`, and the `this` you use here
-is actually the number on which the category will apply, it's not the
-real `this` of the category instance should we create one. Then to use
-the category, you can continue to use the `use(Category) {}`construct.
-What you'll notice however is that these kind of categories only apply
-to one single type at a time, unlike classical categories which can be
-applied to any number of types.
-
-Now, pair `@Category` extensions to the `@Mixin` transformation, and you
-can mix in various behavior in a class, with an approach similar to
-multiple inheritance:
-
-[source,groovy]
--------------------------------------------------
-@Category(Vehicle) class FlyingAbility {
-    def fly() { "I'm the ${name} and I fly!" }
-}
-
-@Category(Vehicle) class DivingAbility {
-    def dive() { "I'm the ${name} and I dive!" }
-}
-
-interface Vehicle {
-    String getName()
-}
-
-@Mixin(DivingAbility)
-class Submarine implements Vehicle {
-    String getName() { "Yellow Submarine" }
-}
-
-@Mixin(FlyingAbility)
-class Plane implements Vehicle {
-    String getName() { "Concorde" }
-}
-
-@Mixin([DivingAbility, FlyingAbility])
-class JamesBondVehicle implements Vehicle {
-    String getName() { "James Bond's vehicle" }
-}
-
-assert new Plane().fly() ==
-       "I'm the Concorde and I fly!"
-assert new Submarine().dive() ==
-       "I'm the Yellow Submarine and I dive!"
-
-assert new JamesBondVehicle().fly() ==
-       "I'm the James Bond's vehicle and I fly!"
-assert new JamesBondVehicle().dive() ==
-       "I'm the James Bond's vehicle and I dive!"
--------------------------------------------------
-
-You don't inherit from various interfaces and inject the same behavior
-in each subclass, instead you mixin the categories into your class.
-Here, our marvelous James Bond vehicle gets the flying and diving
-capabilities through mixins.
-
-An important point to make here is that unlike `@Delegate` which
-can _inject_ interfaces into the class in which the delegate is
-declared,`@Mixin` just does runtime mixing — as we shall see in the
-metaprogramming enhancements further down in this article.
-
-[[Groovy16releasenotes-PackageScope]]
-=== @PackageScope
-
-Groovy's convention for properties is that any _field_ without any
-visibility modifier is exposed as a property, with a getter and a setter
-transparently generated for you. For instance, this `Person` class
-exposes a getter `getName()` and a setter `setName()` for a
-private `name` field:
-
-[source,groovy]
----------------
-class Person {
-    String name
-}
----------------
-
-Which is equivalent to this Java class:
-
-[source,groovy]
----------------------------------------------------
-public class Person {
-    private String name;
-    public String getName() { return name; }
-    public void setName(name) { this.name = name; }
-}
----------------------------------------------------
-
-That said, this approach has one drawback in that you don't have the
-possibility to define a field with package-scope visibility. To be able
-to expose a field with package-scope visibility, you can now annotate
-your field with the `@PackageScope` annotation.
-
-[[Groovy16releasenotes-GrapetheGroovyAdaptableAdvancedPackagingEngine]]
-== Grape, the Groovy Adaptable / Advanced Packaging Engine
-
-To continue our overview of the AST transformations, we'll now learn
-more about Grape, a mechanism to add and leverage dependencies in your
-Groovy scripts. Groovy scripts can require certain libraries: by
-explicitly saying so in your script with the *@Grab* transformation or
-with the *Grape.grab()* method call, the runtime will find the needed
-JARs for you. With Grape, you can easily distribute scripts without
-their dependencies, and have them downloaded on first use of your script
-and cached. Under the hood, Grape uses Ivy and Maven repositories
-containing the libraries you may need in your scripts.
-
-Imagine you want to get the links of all the PDF documents referenced by
-the Java 5 documentation. You want to parse the HTML page as if it were
-an XML-compliant document (which it is not) with the Groovy `XmlParser`,
-so you can use the TagSoup SAX-compliant parser which transforms HTML
-into well-formed valid XML. You don't even have to mess up with your
-classpath when running your script, just_grab_ the TagSoup library
-through Grape:
-
-[source,groovy]
-------------------------------------------------------------------------
-import org.ccil.cowan.tagsoup.Parser
-
-// find the PDF links in the Java 1.5.0 documentation
-@Grab(group='org.ccil.cowan.tagsoup', module='tagsoup', version='0.9.7')
-def getHtml() {
-    def tagsoupParser = new Parser()
-    def parser = new XmlParser(tagsoupParser)
-    parser.parse("http://java.sun.com/j2se/1.5.0/download-pdf.html")
-}
-
-html.body.'**'.a.@href.grep(~/.*\.pdf/).each{ println it }
-------------------------------------------------------------------------
-
-For the pleasure of giving another example: let's use
-the link:http://eclipse.org/jetty/[Jetty servlet container] to
-expose link:{DOCS_BASEURL}/html/documentation/template-engines.html[Groovy templates] in
-a few lines of code:
-
-[source,groovy]
---------------------------------------------------------------------------------
-import org.mortbay.jetty.Server
-import org.mortbay.jetty.servlet.*
-import groovy.servlet.*
-
-@Grab(group = 'org.mortbay.jetty', module = 'jetty-embedded', version = '6.1.0')
-def runServer(duration) {
-    def server = new Server(8080)
-    def context = new Context(server, "/", Context.SESSIONS);
-    context.resourceBase = "."
-    context.addServlet(TemplateServlet, "*.gsp")
-    server.start()
-    sleep duration
-    server.stop()
-}
-
-runServer(10000)
---------------------------------------------------------------------------------
-
-Grape will download Jetty and its dependencies on first launch of this
-script, and cache them. We're creating a new Jetty `Server` on port
-8080, then expose Groovy's `TemplateServlet` at the root of the context
-— Groovy comes with its own powerful template engine mechanism. We start
-the server and let it run for a certain duration. Each time someone will
-hit +http://localhost:8080/somepage.gsp+, it will display
-the `somepage.gsp` template to the user — those template pages should be
-situated in the same directory as this server script.
-
-Grape can also be used as a method call instead of as an annotation. You
-can also install, list, resolve dependencies from the command-line using
-the `grape` command. For link:../grape.html[more information on Grape], please refer to the documentation.
-
-[[Groovy16releasenotes-Swingbuilderimprovements]]
-== Swing builder improvements
-
-To wrap up our overview of AST transformations, let's finish by speaking
-about two transformations very useful to Swing
-developers:`@Bindable` and `@Vetoable`. When creating Swing UIs, you're
-often interested in monitoring the changes of value of certain UI
-elements. For this purpose, the usual approach is to use
-JavaBeans `PropertyChangeListener`s to be notified when the value of a
-class field changes. You then end up writing this very common
-boiler-plate code in your Java beans:
-
-[source,groovy]
-------------------------------------------------------------------------
-import com.googlecode.openbeans.PropertyChangeSupport;
-import com.googlecode.openbeans.PropertyChangeListener;
-
-public class MyBean {
-    private String prop;
-
-    PropertyChangeSupport pcs = new PropertyChangeSupport(this);
-
-    public void addPropertyChangeListener(PropertyChangeListener l) {
-        pcs.add(l);
-    }
-
-    public void removePropertyChangeListener(PropertyChangeListener l) {
-        pcs.remove(l);
-    }
-
-    public String getProp() {
-        return prop;
-    }
-
-    public void setProp(String prop) {
-        pcs.firePropertyChanged("prop", this.prop, this.prop = prop);
-    }
-
-}
-------------------------------------------------------------------------
-
-Fortunately, with Groovy and the `@Bindable` annotation, this code can
-be greatly simplified:
-
-[source,groovy]
--------------------------
-class MyBean {
-    @Bindable String prop
-}
--------------------------
-
-Now pair that with Groovy's Swing builder new `bind()` method, define a
-text field and bind its value to a property of your data model:
-
-[source,groovy]
---------------------------------------------------------------------
-textField text: bind(source: myBeanInstance, sourceProperty: 'prop')
---------------------------------------------------------------------
-
-Or even:
-
-[source,groovy]
---------------------------------------------
-textField text: bind { myBeanInstance.prop }
---------------------------------------------
-
-The binding also works with simple expressions in the closure, for
-instance something like this is possible too:
-
-[source,groovy]
---------------------------------------------
-bean location: bind { pos.x + ', ' + pos.y }
---------------------------------------------
-
-You may also be interested in having a look
-at link:{DOCS_BASEURL}/html/api/groovy/util/ObservableMap.html[ObservableMap] and link:{DOCS_BASEURL}/html/api/groovy/util/ObservableList.html[ObservableList],
-for a similar mechanism on maps and lists.
-
-Along with `@Bindable`, there's also a `@Vetoable` transformation for
-when you need to be able to veto some property change. Let's consider
-a `Trumpetist` class, where the performer's name is not allowed to
-contain the letter `z':
-
-[source,groovy]
----------------------------------------------------------------------------------------
-import com.googlecode.openbeans.*
-import groovy.beans.Vetoable
-
-class Trumpetist {
-    @Vetoable String name
-}
-
-def me = new Trumpetist()
-me.vetoableChange = { PropertyChangeEvent pce ->
-    if (pce.newValue.contains('z'))
-        throw new PropertyVetoException("The letter 'z' is not allowed in a name", pce)
-}
-
-me.name = "Louis Armstrong"
-
-try {
-    me.name = "Dizzy Gillespie"
-    assert false: "You should not be able to set a name with letter 'z' in it."
-} catch (PropertyVetoException pve) {
-    assert true
-}
----------------------------------------------------------------------------------------
-
-Looking at a more thorough Swing builder example with binding:
-
-[source,groovy]
-----------------------------------------------------------------------------
-import groovy.swing.SwingBuilder
-import groovy.beans.Bindable
-import static javax.swing.JFrame.EXIT_ON_CLOSE
-
-class TextModel {
-    @Bindable String text
-}
-
-def textModel = new TextModel()
-
-SwingBuilder.build {
-    frame( title: 'Binding Example (Groovy)', size: [240,100], show: true,
-          locationRelativeTo: null, defaultCloseOperation: EXIT_ON_CLOSE ) {
-        gridLayout cols: 1, rows: 2
-        textField id: 'textField'
-        bean textModel, text: bind{ textField.text }
-        label text: bind{ textModel.text }
-    }
-}
-----------------------------------------------------------------------------
-
-Running this script shows up the frame below with a text field and a
-label below, and the label's text is bound on the text field's content.
-
-image:https://web.archive.org/web/20160102200636/http://www.infoq.com/resource/articles/groovy-1-6/en/resources/bindable-example.png[image]
-
-SwingBuilder has evolved so nicely in the past year that the Groovy
-Swing team decided to launch a new project based on it, and on the
-Grails foundations: project link:http://griffon-framework.org/[Griffon] was
-born. Griffon proposes to bring the _Convention over
-Configuration_ paradigm of Grails, as well as all its project structure,
-plugin system, gant scripting capabilities, etc.
-
-If you are developing Swing rich clients, make sure to have a look
-at link:http://griffon-framework.org/[Griffon].
-
-[[Groovy16releasenotes-Swingconsoleimprovements]]
-== Swing console improvements
-
-Swinging along the topic of UIs, the Swing console has also evolved:
-
-* The console can be run as an Applet (`groovy.ui.ConsoleApplet`).
-* Beyond syntax highlighting, the editor also supports code indentation.
-* Drag'n'dropping a Groovy script over the text area will open the file.
-* You can modify the classpath with which the script in the console is
-being run, by adding a new JAR or a directory to the classpath as shown
-in the screenshot below.
-+
-image:https://web.archive.org/web/20160102200636/http://www.infoq.com/resource/articles/groovy-1-6/en/resources/sc-add-jar.png[image]
-
-* A couple options have been added to the view menu item: for showing
-the script being run in the output area, and for visualizing the
-execution results.
-+
-image:https://web.archive.org/web/20160102200636/http://www.infoq.com/resource/articles/groovy-1-6/en/resources/sc-options.png[image]
-
-* When an exception is thrown in your script, the lines of the
-stacktrace relative to your script are clickable, for easy navigation to
-the point where the error occurred.
-+
-image:https://web.archive.org/web/20160102200636/http://www.infoq.com/resource/articles/groovy-1-6/en/resources/sc-click-stack.png[image]
-
-* Also, when your script contains compilation errors, the error messages are clickable too.
-+
-image:https://web.archive.org/web/20160102200636/http://www.infoq.com/resource/articles/groovy-1-6/en/resources/sc-click-comp-error.png[image]
-
-Back on the visualization of the results in the script output area, a
-fun system was added to let you customize how certain results are
-rendered. When you execute a script returning a map of Jazz musicians,
-you may see something like this in your console:
-
-image:https://web.archive.org/web/20160102200636/http://www.infoq.com/resource/articles/groovy-1-6/en/resources/sc-without-visu.png[image]
-
-What you see here is the usual textual representation of a `Map`. But,
-what if we enabled custom visualization of certain results? The Swing
-console allows you to do just that. First of all, you have to ensure
-that the visualization option is
-ticked: `View -> Visualize Script Results` — for the record, all
-settings of the Groovy Console are stored and remembered thanks to the
-Preference API. There are a few result visualizations built-in: if the
-script returns a `java.awt.Image`, a `javax.swing.Icon`, or
-a `java.awt.Component` with no parent, the object is displayed instead
-of its `toString()` representation. Otherwise, everything else is still
-just represented as text. Now, create the following Groovy script
-in `~/.groovy/OutputTransforms.groovy`:
-
-[source,groovy]
----------------------------------------------------------
-import javax.swing.*
-
-transforms << { result ->
-    if (result instanceof Map) {
-        def table = new JTable(
-            result.collect{ k, v -<
-                [k, v?.inspect()] as Object[]
-            } as Object[][],
-            ['Key', 'Value'] as Object[])
-        table.preferredViewportSize = table.preferredSize
-        return new JScrollPane(table)
-    }
-}
----------------------------------------------------------
-
-The Groovy Swing console will execute that script on startup, injecting
-a `transforms` list in the binding of the script, so that you can add
-your own script results representations. In our case, we transform
-the `Map` into a nice-looking Swing `JTable`. And we're now able to
-visualize maps in a friendly and attractive fashion, as the screenshot
-below shows:
-
-image:https://web.archive.org/web/20160102200636/http://www.infoq.com/resource/articles/groovy-1-6/en/resources/sc-with-visu.png[image]
-
-The Swing console is obviously not to be confused with a real full-blown
-IDE, but for daily scripting tasks, the console is a handy tool in your
-toolbox.
-
-[[Groovy16releasenotes-Metaprogrammingenhancements]]
-== Metaprogramming enhancements
-
-What makes Groovy a dynamic language is its Meta-Object Protocol and its
-concept of metaclasses which represent the runtime behavior of your
-classes and instances. In Groovy 1.6, we continue improving this dynamic
-runtime system, bringing several new capabilities into the mix.
-
-[[Groovy16releasenotes-PerinstancemetaclassevenforPOJOs]]
-=== Per instance metaclass even for POJOs
-
-So far, Groovy POGOs (Plain Old Groovy Objects) could have a
-per-instance metaclass, but POJOs could only have one metaclass for all
-instances (ie. a per-class metaclass). This is now not the case anymore,
-as POJOs can have a per-instance metaclass too. Also, setting the
-metaclass property to null will restore the default metaclass.
-
-[[Groovy16releasenotes-ExpandoMetaClassDSL]]
-=== ExpandoMetaClass DSL
-
-Initially developed under the link:http://grails.org/[Grails] umbrella and
-integrated back into Groovy 1.5, ExpandoMetaClass is a very handy way
-for changing the runtime behavior of your objects and classes, instead
-of writing full-blow `MetaClass` classes. Each time, we want to add /
-change several properties or methods of an existing type, there is too
-much of a repetition of `Type.metaClass.xxx`. Take for example this
-extract of
-a link:http://groovy.dzone.com/news/domain-specific-language-unit-[Unit
-manipulation DSL] dealing with operator overloading:
-
-[source,groovy]
----------------------------------------------------------------------------------
-Number.metaClass.multiply = { Amount amount -> amount.times(delegate) }
-Number.metaClass.div =      { Amount amount -> amount.inverse().times(delegate) }
-
-Amount.metaClass.div =      { Number factor -> delegate.divide(factor) }
-Amount.metaClass.div =      { Amount factor -> delegate.divide(factor) }
-Amount.metaClass.multiply = { Number factor -> delegate.times(factor) }
-Amount.metaClass.power =    { Number factor -> delegate.pow(factor) }
-Amount.metaClass.negative = { -> delegate.opposite() }
----------------------------------------------------------------------------------
-
-The repetition, here, looks obvious. But with the ExpandoMetaClass DSL,
-we can streamline the code by regrouping the operators per type:
-
-[source,groovy]
-------------------------------------------------------------------
-Number.metaClass {
-    multiply { Amount amount -> amount.times(delegate) }
-    div      { Amount amount -> amount.inverse().times(delegate) }
-}
-
-Amount.metaClass {
-    div <<   { Number factor -> delegate.divide(factor) }
-    div <<   { Amount factor -> delegate.divide(factor) }
-    multiply { Number factor -> delegate.times(factor) }
-    power    { Number factor -> delegate.pow(factor) }
-    negative { -> delegate.opposite() }
-}
-------------------------------------------------------------------
-
-A `metaClass()` method takes a closure as single argument, containing
-the various definitions of the methods and properties, instead of
-repeating the `Type.metaClass` on each line. When there is just one
-method of a given name, use the pattern `methodName { /* closure */ }`,
-but when there are several, you should use the append operator and
-follow the patten `methodName << { /* closure */ }`. Static methods can
-also be added through this mechanism, so instead of the classical
-approach:
-
-[source,groovy]
----------------------------------------------------------
-// add a fqn() method to Class to get the fully
-// qualified name of the class (ie. simply Class#getName)
-Class.metaClass.static.fqn = { delegate.name }
-
-assert String.fqn() == "java.lang.String"
----------------------------------------------------------
-
-You can now do:
-
-[source,groovy]
------------------------------
-Class.metaClass {
-    'static' {
-        fqn { delegate.name }
-    }
-}
------------------------------
-
-Note here that you have to quote the `static` keyword, to avoid this
-construct to look like a static initializer. For one off method
-addition, the classical approach is obviously more concise, but when you
-have several methods to add, the EMC DSL makes sense.
-
-The usual approach for adding properties to existing classes through
-ExpandoMetaClass is to add a getter and a setter as methods. For
-instance, say you want to add a method that counts the number of words
-in a text file, you could try this:
-
-[source,groovy]
-------------------------------------
-File.metaClass.getWordCount = {
-    delegate.text.split(/\w/).size()
-}
-
-new File('myFile.txt').wordCount
-------------------------------------
-
-When there is some logic inside the getter, this is certainly the best
-approach, but when you just want to have new properties holding simple
-values, through the ExpandoMetaClass DSL, it is possible to define them.
-In the following example, a `lastAccessed` property is added to
-a `Car` class — each instance will have its property. Whenever a method
-is called on that car, this property is updated with a newer timestamp.
-
-[source,groovy]
-------------------------------------------------------------------------
-class Car {
-    void turnOn() {}
-    void drive() {}
-    void turnOff() {}
-}
-
-Car.metaClass {
-    lastAccessed = null
-    invokeMethod = { String name, args ->
-        def metaMethod = delegate.metaClass.getMetaMethod(name, args)
-        if (metaMethod) {
-            delegate.lastAccessed = new Date()
-            metaMethod.doMethodInvoke(delegate, args)
-        } else {
-            throw new MissingMethodException(name, delegate.class, args)
-        }
-    }
-}
-
-def car = new Car()
-println "Last accessed: ${car.lastAccessed ?: 'Never'}"
-
-car.turnOn()
-println "Last accessed: ${car.lastAccessed ?: 'Never'}"
-
-car.drive()
-sleep 1000
-println "Last accessed: ${car.lastAccessed ?: 'Never'}"
-
-sleep 1000
-car.turnOff()
-println "Last accessed: ${car.lastAccessed ?: 'Never'}"
-------------------------------------------------------------------------
-
-In our example, in the DSL, we access that property through
-the `delegate` of the closure,
-with `delegate.lastAccessed = new Date()`. And we intercept any method
-call thanks to `invokeMethod()`, delegating to the original method for
-the call, and throwing an exception in case the method doesn't exist.
-Later on, you can see by executing this script that `lastAccessed` is
-updated as soon as we call a method on our instance.
-
-[[Groovy16releasenotes-Runtimemixins]]
-=== Runtime mixins
-
-Last metaprogramming feature we'll cover today: runtime
-mixins. `@Mixin` allowed you to mixin new behavior to classes you owned
-and were designing. But you could not mixin anything to types you didn't
-own. Runtime mixins propose to fill that gap by letting you add a mixin
-on any type at runtime. If we think again about our example of vehicles
-with some mixed-in capabilities, if we didn't _own_ James Bond's vehicle
-and give it some diving ability, we could use this mechanism:
-
-[source,groovy]
----------------------------------------------------
-// provided by a third-party
-interface Vehicle {
-    String getName()
-}
-
-// provided by a third-party
-class JamesBondVehicle implements Vehicle {
-    String getName() { "James Bond's vehicle" }
-}
-
-JamesBondVehicle.mixin DivingAbility, FlyingAbility
-
-assert new JamesBondVehicle().fly() ==
-       "I'm the James Bond's vehicle and I fly!"
-assert new JamesBondVehicle().dive() ==
-       "I'm the James Bond's vehicle and I dive!"
----------------------------------------------------
-
-One or more mixins can be passed as argument to the
-static `mixin()` method added by Groovy on `Class`.
-
-[[Groovy16releasenotes-JSR-223GroovyScriptingEngine]]
-== JSR-223 Groovy Scripting Engine
-
-Before Groovy 1.6, if you wanted to integrate Groovy in your Java
-projects through JSR-223 / `javax.script.*`, you had to download a
-Groovy script engine implementation from java.net, and put the JAR in
-your classpath. This additional step wasn't very developer friendly,
-requiring some additional work — the JAR wasn't even provided in the
-Groovy distribution. Thankfully, 1.6 comes with an implementation of
-the `javax.script.*` APIs.
-
-Below, you'll find an example evaluating Groovy expressions (the code is
-in Groovy, but it's straightforward to convert it back to Java):
-
-[source,groovy]
-----------------------------------------------
-import javax.script.*
-
-def manager = new ScriptEngineManager()
-def engine = manager.getEngineByName("groovy")
-
-assert engine.evaluate("2 + 3") == 5
-----------------------------------------------
-
-Please note that the `javax.script.*` APIs are available only on Java 6.
-
-[[Groovy16releasenotes-JMXBuilder]]
-== JMX Builder
-
-Originating as an link:http://code.google.com/p/groovy-jmx-builder/[external
-Open-Source project] hosted on Google Code, JMX Builder has been
-integrated in Groovy 1.6, to simplify the life of developers needing to
-interact or expose JMX services. JMX Builder features:
-
-* Domain Specific Language (DSL) for JMX API using Builder pattern
-* Simplified JMX API's programmability
-* Declaratively expose Java/Groovy objects as JMX managed MBeans
-* Support class-embedded or explicit descriptors
-* Inherent support for JMX's event model
-* Seamlessly create JMX event broadcasters
-* Attach event listeners as inline closures
-* Use Groovy's dynamic nature to easily react to JMX events
-notifications
-* Provides a flexible registration policy for MBean
-* No special interfaces or class path restrictions
-* Shields developer from complexity of JMX API
-* Exposes attribute, constructors, operations, parameters, and
-notifications
-* Simplifies the creation of connector servers and connector clients
-* Support for exporting JMX timers
-
-You can find link:../jmx.html[more information on JMX Builder] and its very extensive coverage of the JMX
-system. Lots of examples will show you how to create a JMX connector
-server or client, how to easily export POGOs as JMX managed beans, how
-to listen to JMX events, and much more.
-
-[[Groovy16releasenotes-ImprovedOSGisupport]]
-== Improved OSGi support
-
-The Groovy jar files are released with correct OSGi metadata, so they
-can be loaded as a bundle into any OSGi compliant container, such as
-Eclipse Equinox or Apache Felix.
-
-[[Groovy16releasenotes-Summary]]
-== Summary
-
-Groovy continues its march towards the goal of *simplifying the life of
-developers*, providing various new features and improvements in this new
-release: AST transformations reducing dramatically the number of lines
-of code to express certain concerns and patterns and opening the
-language to developers for further extension, several *metaprogramming
-enhancements to streamline your code* and let you write *more expressive
-business rules*, and *support for common enterprise APIs* such as Java
-6's scripting APIs, JMX management system, or OSGi's programming model.
-All of this is done obviously *without compromising on the seamless
-integration with Java*, and furthermore, with a *level of performance
-way higher than previous releases*.
\ No newline at end of file
diff --git a/site/src/site/releasenotes/groovy-1.7.adoc b/site/src/site/releasenotes/groovy-1.7.adoc
deleted file mode 100644
index 16cfe63..0000000
--- a/site/src/site/releasenotes/groovy-1.7.adoc
+++ /dev/null
@@ -1,433 +0,0 @@
-[[Groovy17releasenotes-IDESupport]]
-== IDE Support
-
-Before diving directly into the new features in Groovy 1.7, please let
-me mention the great progress made in terms of IDE support for Groovy
-(and also for http://griffon-framework.org/[Griffon],
-http://gradle.org/[Gradle], https://gant.github.io/[Gant] or
-http://grails.org/[Grails]). All the major IDEs (Eclipse,
-http://www.jetbrains.com/idea/features/groovy_grails.html[IntelliJ
-IDEA], http://wiki.netbeans.org/Groovy[NetBeans]) provide an excellent
-level of support for the language. Initially, the Eclipse support was
-the one lacking the most, but thanks to the hard work of the
-SpringSource Eclipse team, we now have a great environment for
-developing mixed Java / Groovy applications with features like
-cross-language refactoring, Groovy-specific code completion, and more.
-
-New and Improved Eclipse pluginFor more information on the Eclipse
-support, please have a look at the Groovy Eclipse plugin home page, as
-well as the notes for the M1 release and M2 release.
-
-[[Groovy17releasenotes-Newfeatures]]
-== New features
-
-[[Groovy17releasenotes-AnonymousInnerClassesandNestedClasses]]
-=== Anonymous Inner Classes and Nested Classes
-
-Although oftentimes closures and maps coercion suffice, there are still
-areas where the lack of Anonymous Inner Classes (AIC) and Nested Classes
-(NC) can be problematic. That’s why we decided to eventually implement
-AIC and NC in Groovy 1.7.
-
-Be CarefulThe implementation of AIC and NC follows the Java lead, but
-you should not take out the Java Language Spec and keep shaking the head
-about things that are different. The implementation done looks much like
-what we do for groovy.lang.Closure, with some benefits and some
-differences. Accessing private fields and methods for example can become
-a problem, but on the other hand local variables don’t have to be final.
-
-[[Groovy17releasenotes-NestedStaticClasses]]
-==== Nested Static Classes
-
-Here’s an example of Nested Static Classes:
-
-[source,groovy]
----------------------
-class A {
-    static class B {}
-}
-
-new A.B()
----------------------
-
-The usage of static nested classes is the best supported one. If you
-absolutely need an inner class, you should make it a static one.
-
-[[Groovy17releasenotes-AnonymousInnerClasses]]
-==== Anonymous Inner Classes
-
-Some other examples, this time for Anonymous Inner Classes:
-
-[source,groovy]
---------------------------------
-boolean called = false
-
-Timer timer = new Timer()
-timer.schedule(new TimerTask() {
-    void run() {
-        called = true
-    }
-}, 0)
-sleep 100
-
-assert called
---------------------------------
-
-More informationIf you want to learn a bit more about the cases which
-are currently supported in 1.7, you can have a look at one of our unit
-tests covering this new feature.
-
-[[Groovy17releasenotes-AccessingtheOuterContextfromaNestedClass]]
-==== Accessing the Outer Context from a Nested Class
-
-If you are in a nested class Y and the surrounding class is X, then you
-can access the variable v of X in Java by X.this.v. Groovy does not
-support this syntax.
-
-[[Groovy17releasenotes-CreatingInstancesofNon-StaticInnerClasses]]
-==== Creating Instances of Non-Static Inner Classes
-
-In Java you can do this:
-
-[source,java]
-----------------------------------
-public class Y {
-    public class X {}
-    public X foo() {
-        return new X();
-    }
-    public static X createX(Y y) {
-        return y.new X();
-    }
-}
-----------------------------------
-
-It should be noted that the nested class X needs a reference to the
-outer class instance of Y. For this Java will create a constructor that
-takes Y as first parameter in X. This constructor is synthetic, so it
-won’t appear in any code completion. +
- In case of new X(), like you have it in method foo(), then compiler
-will then create new X(this) instead. In case of createX the compiler
-will create new X(y). Groovy does not support this.
-
-Instead Groovy supports giving the instance in like the compiler would
-do it. That means the code above has to be rewritten as
-
-[source,groovy]
-----------------------------------
-public class Y {
-    public class X {}
-    public X foo() {
-        return new X(this);
-    }
-    public static X createX(Y y) {
-        return new X(y);
-    }
-}
-----------------------------------
-
-CautionCaution though, Groovy supports calling methods with one
-parameter without giving an argument. The parameter will then have the
-value null. Basically the same rules apply to calling a constructor.
-There is a danger that you will write new X() instead of new X(this) for
-example. Since this might also be the regular way we have not yet found
-a good way to prevent this problem.
-
-[[Groovy17releasenotes-Annotations]]
-=== Annotations
-
-Groovy’s support of annotations is identical to Java 5 annotations, but
-we felt that in some cases it would be interesting to be able to add
-annotations in other places than the usual places (types, fields,
-methods, parameters, etc.). For instance, in Java, it is impossible to
-add annotations on imports or packages. Groovy does go beyond and adds
-support for annotation on imports, packages and variable declarations.
-We’ll take a look at the usage of those extended annotations on Grape.
-
-[[Groovy17releasenotes-Grape]]
-==== Grape
-
-The Grape dependency system lets you request dependencies in your
-scripts, without having to deal with downloading, packaging, or
-specifying the classpath yourself. To use Grape, we had to use the @Grab
-annotation to ``grab'' a dependency from a repository (Maven’s central
-repository, for example). The problem was that annotation had to be
-attached to some allowed elements, ie. the places where annotations can
-be put in Java. Now, we can put annotations on imports:
-
-[source,groovy]
-------------------------------------------------------------------------------------
-@Grab(group='net.sf.json-lib', module='json-lib', version='2.3', classifier='jdk15')
-import net.sf.json.groovy.*
-
-assert new JsonSlurper().parseText(
-    new JsonGroovyBuilder().json {
-        book(title: "Groovy in Action", author:"Dierk König et al")
-    }.toString()
-).book.title == 'Groovy in Action'
-------------------------------------------------------------------------------------
-
-Another example with @Grab on variable declarations:
-
-[source,groovy]
---------------------------------------------------------------------------------------------------------
-@Grab('net.sf.json-lib:json-lib:2.3:jdk15')
-def builder = new net.sf.json.groovy.JsonGroovyBuilder()
-
-def books = builder.books {
-    book(title: "Groovy in Action", author: "Dierk Koenig")
-}
-
-assert books.toString() == '''{"books":{"book":{"title":"Groovy in Action","author":"Dierk Koenig"}}}'''
---------------------------------------------------------------------------------------------------------
-
-RemarkPlease note on this one an improvement in the @Grab annotation: we
-provide a shorter version taking just a String as value parameter
-representing the dependency, in addition to the more verbose example in
-the previous example. You simply append the group, module, version and
-classifier together, joined by colons.
-
-A Grape *resolver* was added, so you can specify a remote location where
-grapes are downloaded from:
-
-[source,groovy]
-------------------------------------------------------------------
-@GrabResolver(name='restlet.org', root='http://maven.restlet.org')
-@Grab(group='org.restlet', module='org.restlet', version='1.1.6')
-import org.restlet.Restlet
-// ...
-------------------------------------------------------------------
-
-[[Groovy17releasenotes-PowerAsserts]]
-=== Power Asserts
-
-Groovy’s ``assert'' keyword has sometimes been criticized as it’s, in a
-way, limited, as it just checks that the expression it’s being passed is
-true or false. Unlike with testing frameworks such as JUnit/TestNG and
-the various additional assertion utilities, where you get nicer and more
-descriptive messages, Groovy’s assert would just tell you the expression
-was false, and would give the value of variables used in the expression,
-but nothing more. With Power Asserts, initially developed in the
-http://spockframework.org/[Spock Framework], the output of the assert is
-now much nicer and provides a visual representation of the value of each
-sub-expressions of the expression being asserted. For example:
-
-[source,groovy]
------------------------------------------------------
-assert new File('foo.bar') == new File('example.txt')
------------------------------------------------------
-
-Will yield:
-
-[source,groovy]
------------------------------------------------------
-Caught: Assertion failed:
-
-assert new File('foo.bar') == new File('example.txt')
-       |                   |  |
-       foo.bar             |  example.txt
-                           false
------------------------------------------------------
-
-[[Groovy17releasenotes-AST]]
-=== AST
-
-With Groovy 1.6, we introduced AST Transformations, for letting
-developers do compile-time metaprogramming, by modifying the Abstract
-Syntax Tree before it is transformed into bytecode. In Groovy 1.6,
-several such transformations were added, especially ``local''
-transformations triggered by annotations (such as @Delegate, @Singleton,
-@Bindable and friends). However powerful this feature is, writing AST
-transformation has always been a bit tedious. Groovy 1.7 features two
-new features which should help simplify the work of AST transformation
-writers: an AST viewer and an AST builder.
-
-[[Groovy17releasenotes-ASTViewer]]
-==== AST Viewer
-
-The following screenshot shows a new window that can be launched from
-the Groovy Swing Console. You can visualize the AST of a script you’re
-working on in the console: for instance, writing the code you’d like to
-create in your AST transformation. The AST viewer greatly help with
-figuring out how Groovy builds its AST when compiling your Groovy
-code. +
-image:img/AstBrowser.png[image]
-
-[[Groovy17releasenotes-ASTBuilder]]
-==== AST Builder
-
-Visualizing the AST is one thing, but we also need a mechanism to create
-and modify ASTs more easily. The introduction of the AST builder
-simplifies the authoring of AST transformations, by giving you three
-different approaches for working on the AST:
-
-* building from string
-* building from code
-* building from specification
-
-Before the AST builder, one had to create and instantiate manually all
-the various AST nodes. Let’s see how those three forms help with this,
-for instance for creating a node representing a constant string.
-
-[[Groovy17releasenotes-Buildingfromstring]]
-===== Building from string
-
-[source,groovy]
------------------------------------------------------------------------
-List<ASTNode> nodes = new AstBuilder().buildFromString(''' "Hello" ''')
------------------------------------------------------------------------
-
-[[Groovy17releasenotes-Buildingfromcode]]
-===== Building from code
-
-[source,groovy]
-----------------------------------------------------------------
-List<ASTNode> nodes = new AstBuilder().buildFromCode { "Hello" }
-----------------------------------------------------------------
-
-[[Groovy17releasenotes-Buildingfromspecification]]
-====== Building from specification
-
-[source,groovy]
-------------------------------------------------------
-List<ASTNode> nodes = new AstBuilder().buildFromSpec {
-    block {
-        returnStatement {
-            constant "Hello"
-        }
-    }
-}
-------------------------------------------------------
-
-For more informationPlease have a look at the documentation on the AST
-Builder. You’ll discover the advantages and inconveniences of the
-various forms, and why all three are needed depending on what you want
-to achieve with the AST.
-
-[[Groovy17releasenotes-Otherminorenhancements]]
-Other minor enhancements
-------------------------
-
-[[Groovy17releasenotes-AbilitytocustomizetheGroovyTruth]]
-=== Ability to customize the Groovy Truth
-
-In Groovy, booleans aren’t the sole things which can be evaluated to
-true or false, but for instance, null, empty strings or collections are
-evaluated to false or true if of length > 0 or non-empty. This notion of
-'truth' was coined 'Groovy Truth' in the
-http://www.manning.com/koenig/[Groovy in Action] book. With Groovy
-Truth, instead of doing frequent null checks, you could simply write:
-
-[source,groovy]
---------------------------------------------------------------
-def string = "more than one character"
-if (string) { println "the String is neither null nor empty" }
---------------------------------------------------------------
-
-Up until Groovy 1.7, only a small set of classes had a certain meaning
-with regards to how they were coerced to a boolean value, but now it is
-possible to provide a method for coercion to boolean in your own
-classes. For example, the following Predicate class offers the ability
-to coerce Predicate instances to true or false, thanks to the
-implementation of the boolean asBoolean() method:
-
-[source,groovy]
------------------------------------
-class Predicate {
-    boolean value
-    boolean asBoolean() { value }
-}
-
-assert new Predicate(value: true)
-assert !new Predicate(value: false)
------------------------------------
-
-Is is also possible to use categories or ExpandoMetaClass to inject an
-asBoolean() method, or to override an existing one (even one on the
-small set of classes with special Groovy truth behavior).
-
-[[Groovy17releasenotes-Dependencyupgrades]]
-=== Dependency upgrades
-
-Some of the dependencies of Groovy have been upgraded to newer versions.
-
-For instance, Groovy now uses the latest ASM version, which is
-``invokedynamic''-ready. So as we progress towards the inclusion of
-JSR-292 / invokedynamic, we’ll be ready and be using the latest version
-of ASM. We also use the latest version of Ivy which is used by the Grape
-dependency module.
-
-[[Groovy17releasenotes-RewriteoftheGroovyScriptEngine]]
-=== Rewrite of the GroovyScriptEngine
-
-The GroovyScriptEngine (which is also used by Groovlets) has been
-rewritten to solve various dependency issues it was suffering from, and
-the outcome of this is that it should also now be much faster overall.
-
-The new logic uses additional phase operations to track dependencies. As
-a result the error-prone class loader technique to track them is gone
-now. These operations ensure that every script file will be tracked, its
-dependencies recorded during compilation and all transitive dependencies
-will be calculated. And only scripts will be recorded as dependency, no
-classes. The new GroovyScriptEngine also uses only one compilation
-``process'' for script compilation which solves the problem of circular
-or mutual dependencies, that caused stack overflows in the past. As a
-result the new engine can reliably handle dependencies and should be
-much faster. 
-
-[[Groovy17releasenotes-Groovyconsolepreferences]]
-=== Groovy console preferences
-
-A small annoyance, especially for developers using big LCD screens: the
-Groovy Console didn’t remember preferences of position of the separator
-between the coding area and output view, or the font size being used.
-This is now fixed, as the console remembers such settings. You won’t
-need anymore to adjust the console to your liking each time you run it,
-it should now have some more brain cells to remember your preferences.
-
-[[Groovy17releasenotes-NewoutputwindowfortheGroovyconsole]]
-=== New output window for the Groovy console
-
-There is a new visualization option for the results of the execution of
-your scripts in your Groovy Console. Instead of displaying the results
-in the bottom output pane, it’s now possible to use an external window
-for viewing those results. Run your script with CTRL-R or CMD-R, you
-will see something like the following screenshot. You can then dismiss
-the window by hitting Escape, CTRL-W (CMD-W on Macs) or Enter.
-image:img/newoutputwindow.png[image] +
- You will also notice the addition of line numbers in the gutter of the
-editor area.
-
-[[Groovy17releasenotes-SQLbatchupdatesandtransactions]]
-=== SQL batch updates and transactions
-
-[[Groovy17releasenotes-Batchupdates]]
-==== Batch updates
-
-The Groovy Sql class now features batch updates, thanks to its new
-withBatch() method, taking a closure and a statement instance:
-
-[source,groovy]
-----------------------------------------------------------------
-sql.withBatch { stmt ->
-    ["Paul", "Jochen", "Guillaume"].each { name ->
-        stmt.addBatch "insert into PERSON (name) values ($name)"
-    }
-}
-----------------------------------------------------------------
-
-[[Groovy17releasenotes-Transactions]]
-==== Transactions
-
-Similarly, there’s a withTransaction() method added to Sql, which works
-also with datasets:
-
-[source,groovy]
------------------------------------
-def persons = sql.dataSet("person")
-sql.withTransaction {
-    persons.add name: "Paul"
-    persons.add name: "Jochen"
-    persons.add name: "Guillaume"
-}
------------------------------------
diff --git a/site/src/site/releasenotes/groovy-1.8.adoc b/site/src/site/releasenotes/groovy-1.8.adoc
deleted file mode 100644
index b20e3ee..0000000
--- a/site/src/site/releasenotes/groovy-1.8.adoc
+++ /dev/null
@@ -1,1554 +0,0 @@
-The 1.8 release of Groovy comes with many new features that greatly
-enhance
-
-* the dynamic expressiveness of Groovy, specifically for defining DSLs
-* runtime performance
-* concurrent and parallel execution
-* design by contract
-* functional programming style
-* first-class JSON support
-* compile-time meta programming
-* and more helpers and library additions
-
-These features have undergone the Groovy developer process with formal
-descriptions, discussion, and voting (GEP - Groovy Enhancement Proposal)
-for core parts and less formal developer discussions and JIRA voting for
-additional parts.
-
-Our goal has stayed the same, though: to give the Java developer a tool
-that makes him more productive, allows him to achieve his goals faster
-and with a smaller margin of error, and extend the scalability of the
-Java platform from full-blown enterprise projects to everyday "getting
-things done" tasks.
-
-[[Groovy18releasenotes-CommandchainsfornicerDomain-SpecificLanguages]]
-== Command chains for nicer Domain-Specific Languages
-
-Thanks to its flexible syntax and its compile-time and runtime
-metaprogramming capabilities, Groovy is well known for its
-Domain-Specific Language capabilities. However, we felt that we could
-improve upon the syntax further by removing additional punctuation
-symbols when users chain method calls. This allows DSL implementors to
-develop command descriptions that read almost like natural sentences.
-
-Before Groovy 1.8, we could omit parentheses around the arguments of a
-method call for top-level statements. But we couldn’t chain method
-calls. The new `command chain` feature allows us to chain such
-parentheses-free method calls, requiring neither parentheses around
-arguments, nor dots between the chained calls. The general idea is that
-a call like `a b c d` will actually be equivalent to `a(b).c(d)`. This
-also works with multiple arguments, closure arguments, and even named
-arguments. Furthermore, such command chains can also appear on the
-right-hand side of assignments. Let’s have a look at some examples
-supported by this new syntax:
-
-[source,groovy]
----------------------------------------------------------------------------------------------------------------
-turn left then right                           // equivalent to: turn(left).then(right)
-take 2.pills of chloroquinine after 6.hours    // equivalent to: take(2.pills).of(chloroquinine).after(6.hours)
-paint wall with red, green and yellow          // equivalent to: paint(wall).with(red, green).and(yellow)
-
-// with named parameters too
-check that: margarita tastes good             // equivalent to: check(that: margarita).tastes(good)
-
-// with closures as parameters
-given { } when { } then { }                    // equivalent to: given({}).when({}).then({})
----------------------------------------------------------------------------------------------------------------
-
-It is also possible to use methods in the chain which take no arguments,
-but in that case, the parentheses are needed:
-
-[source,groovy]
--------------------------------------------------------------------------------------------------
-select all unique() from names                 // equivalent to: select(all).unique().from(names)
--------------------------------------------------------------------------------------------------
-
-If your command chain contains an odd number of elements, the chain will
-be composed of method / arguments, and will finish by a final property
-access:
-
-[source,groovy]
--------------------------------------------------------------------------------------
-take 3 cookies                                 // equivalent to: take(3).cookies
-                                               // and also this: take(3).getCookies()
--------------------------------------------------------------------------------------
-
-This new command chain approach opens up interesting possibilities in
-terms of the much wider range of DSLs which can now be written in
-Groovy. This new feature has been developed thanks to the Google Summer
-of Code program, where our student, Lidia, helped us modify the Groovy
-Antlr grammar to extend top-level statements to accept that command
-chain syntax.
-
-The above examples illustrate using a command chain based DSL but not
-how to create one. You will be able to find some
-http://groovyconsole.appspot.com/tag/gep3[further examples] of `command chains`
-on the Groovy Web Console but to illustrate creating such a
-DSL, we will show just a couple of examples - first using maps and
-Closures:
-
-[source,groovy]
-------------------------------------------------------------------------------------------------------
-show = { println it }
-square_root = { Math.sqrt(it) }
-
-def please(action) {
-  [the: { what ->
-    [of: { n -> action(what(n)) }]
-  }]
-}
-
-please show the square_root of 100             // equivalent to: please(show).the(square_root).of(100)
-// ==> 10.0
-------------------------------------------------------------------------------------------------------
-
-Or if you prefer Japanese and a metaprogramming style (see
-http://d.hatena.ne.jp/uehaj/20100919/1284906117[here] for more details):
-
-[source,groovy]
-----------------------------------------------------------
-// Japanese DSL using GEP3 rules
-Object.metaClass.を =
-Object.metaClass.の = { clos -> clos(delegate) }
-
-まず = { it }
-表示する = { println it }
-平方根 = { Math.sqrt(it) }
-
-まず 100 の 平方根 を 表示する  // First, show the square root of 100
-// => 10.0
-----------------------------------------------------------
-
-As a second example, consider how you might write a DSL for simplifying
-one of your existing APIs. Maybe you need to put this code in front of
-customers, business analysts or testers who might be not hard-core Java
-developers. We’ll use the `Splitter` from the Google
-http://code.google.com/p/guava-libraries/[Guava libraries] project as it
-already has a nice Fluent API. Here is how we might use it out of the
-box:
-
-[source,groovy]
-----------------------------------------------------------------------------------------------------------------
-@Grab('com.google.guava:guava:r09')
-import com.google.common.base.*
-def result = Splitter.on(',').trimResults(CharMatcher.is('_' as char)).split("_a ,_b_ ,c__").iterator().toList()
-assert result == ['a ', 'b_ ', 'c']
-----------------------------------------------------------------------------------------------------------------
-
-It reads fairly well for a Java developer but if that is not your target
-audience or you have many such statements to write, it could be
-considered a little verbose. Again, there are many options for writing a
-DSL. We’ll keep it simple with Maps and Closures. We’ll first write a
-helper method:
-
-[source,groovy]
-------------------------------------------------------------------------------------------------------
-def split(string) {
-  [on: { sep ->
-    [trimming: { trimChar ->
-      Splitter.on(sep).trimResults(CharMatcher.is(trimChar as char)).split(string).iterator().toList()
-    }]
-  }]
-}
-------------------------------------------------------------------------------------------------------
-
-now instead of this line from our original example:
-
-[source,groovy]
-----------------------------------------------------------------------------------------------------------------
-def result = Splitter.on(',').trimResults(CharMatcher.is('_' as char)).split("_a ,_b_ ,c__").iterator().toList()
-----------------------------------------------------------------------------------------------------------------
-
-we can write this:
-
-[source,groovy]
------------------------------------------------------
-def result = split "_a ,_b_ ,c__" on ',' trimming '_'
------------------------------------------------------
-
-[[Groovy18releasenotes-Performanceimprovements]]
-== Performance improvements
-
-Groovy’s flexible metaprogramming model involves numerous decision
-points when making method calls or accessing properties to determine
-whether any metaprogamming hooks are being utilized. During complex
-expression calculations, such decision points involved identical checks
-being executed numerous times. Recent performance improvements allow
-some of these checks to be bypassed during an expression calculation
-once certain initial assumptions have been checked. Basically if certain
-preconditions hold, some streamlining can take place.
-
-Groovy 1.8.0 contains two main streams of optimization work:
-
-* There are several optimizations for basic operations on integers like
-plus, minus, multiply, increment, decrement and comparisons. This
-version doesn’t support the mixed usage of different types. If an
-expression contains different types, then it falls back to the classical
-way of performing the operation, i.e. no streamlining occurs.
-* There is also an optimization for direct method calls. Such a method
-call is done directly if it is done on `this` and if the argument
-types are a direct match with the parameter types of the method we may
-call. Since this is an operation that does not behave too well with a
-method call logic based on runtime types we select only methods where
-the primitive types match, the parameter types are final or for methods
-that take no arguments. Currently methods with a variable parameter list
-are not matched in general, unless a fitting array is used for the
-method call.
-
-Those two areas of optimization are only the beginning of further
-similar improvements. Upcoming versions of the Groovy 1.8.x branch will
-see more optimizations coming. In particular, primitive types other than
-integers should be expected to be supported shortly.
-
-[[Groovy18releasenotes-GParsbundledwithintheGroovydistribution]]
-== GPars bundled within the Groovy distribution
-
-The http://www.gpars.org/[GPars] project offers developers new
-intuitive and safe ways to handle Java or Groovy tasks concurrently,
-asynchronously, and distributed by utilizing the power of the Java
-platform and the flexibility of the Groovy language. Groovy 1.8 now
-bundles GPars 0.11 in the libraries of the Groovy installation, so that
-you can leverage all the features of the library for +
- Fork/Join, Map/Filter/Reduce, DataFlow, Actors, Agents, and more with
-all the Groovy goodness.
-
-To learn more about GPars, head over to the
-http://www.gpars.org/[GPars website], read the
-http://gpars.org/guide/index.html[detailed online user guide], or check
-out chapter 17 of http://www.manning.com/koenig2[Groovy in Action, 2nd
-Edition].
-
-[[Groovy18releasenotes-Closureenhancements]]
-== Closure enhancements
-
-Closures are a central and essential piece of the Groovy programming
-language and are used in various ways throughout the Groovy APIs. In
-Groovy 1.8, we introduce the ability to use closures as annotation
-parameters. Closures are also a key part of what gives Groovy its
-functional flavor.
-
-[[Groovy18releasenotes-Closureannotationparameters]]
-=== Closure annotation parameters
-
-In Java, there’s a limited set of types you can use as annotation
-parameters (String, primitives, annotations, classes, and arrays of
-these). But in Groovy 1.8, we’re going further and let you use closures
-as annotation parameters – which are actually transformed into a class
-parameter for compatibility reasons.
-
-[source,groovy]
-------------------------------------------------
-import java.lang.annotation.*
-
-@Retention(RetentionPolicy.RUNTIME)
-@interface Invariant {
-    Class value() // will hold a closure class
-}
-
-@Invariant({ number >= 0 })
-class Distance {
-    float number
-    String unit
-}
-
-def d = new Distance(number: 10, unit: "meters")
-
-def anno = Distance.getAnnotation(Invariant)
-def check = anno.value().newInstance(d, d)
-
-assert check(d)
-------------------------------------------------
-
-Closure annotation parameters open up some interesting possibilities for
-framework authors! As an example, the
-https://github.com/andresteingress/gcontracts/wiki/[GContracts] project,
-which brings the `Design by Contract` paradigm to Groovy makes heavy
-use of annotation parameters to allow preconditions, postconditions and
-invariants to be declared.
-
-[[Groovy18releasenotes-Closurefunctionalflavors]]
-=== Closure functional flavors
-
-[[Groovy18releasenotes-Closurecomposition]]
-==== Closure composition
-
-If you recall your math lessons, function composition may be a concept
-you’re familiar with. And in turn, *Closure composition* is about that:
-the ability to compose Closures together to form a new Closure which
-chains the call of those Closures. Here’s an example of composition in
-action:
-
-[source,groovy]
----------------------------------------------
-def plus2  = { it + 2 }
-def times3 = { it * 3 }
-
-def times3plus2 = plus2 << times3
-assert times3plus2(3) == 11
-assert times3plus2(4) == plus2(times3(4))
-
-def plus2times3 = times3 << plus2
-assert plus2times3(3) == 15
-assert plus2times3(5) == times3(plus2(5))
-
-// reverse composition
-assert times3plus2(3) == (times3 >> plus2)(3)
----------------------------------------------
-
-To see more examples of Closure composition and reverse composition,
-please have a look at our
-https://github.com/apache/groovy/blob/master/src/test/groovy/ClosureComposeTest.groovy[test
-case].
-
-[[Groovy18releasenotes-Closuretrampoline]]
-==== Closure trampoline
-
-When writing recursive algorithms, you may be getting the infamous stack
-overflow exceptions, as the stack starts to have a too high depth of
-recursive calls. An approach that helps in those situations is by using
-Closures and their new
-http://en.wikipedia.org/wiki/Tail_call#Through_trampolining[trampoline]
-capability.
-
-Closures are wrapped in a `TrampolineClosure`. Upon calling, a
-trampolined Closure will call the original Closure waiting for its
-result. If the outcome of the call is another instance of a
-`TrampolineClosure`, created perhaps as a result to a call to the
-`trampoline()` method, the Closure will again be invoked. This
-repetitive invocation of returned trampolined Closures instances will
-continue until a value other than a trampolined Closure is returned.
-That value will become the final result of the trampoline. That way,
-calls are made serially, rather than filling the stack.
-
-Here’s an example of the use of `trampoline()` to implement the
-factorial function:
-
-[source,groovy]
-------------------------------------------------------------------
-def factorial
-factorial = { int n, def accu = 1G ->
-    if (n < 2) return accu
-    factorial.trampoline(n - 1, n * accu)
-}
-factorial = factorial.trampoline()
-
-assert factorial(1)    == 1
-assert factorial(3)    == 1 * 2 * 3
-assert factorial(1000) == 402387260... // plus another 2560 digits
-------------------------------------------------------------------
-
-[[Groovy18releasenotes-Closurememoization]]
-==== Closure memoization
-
-Another improvement to Closures is the ability to
-http://en.wikipedia.org/wiki/Memoization[memoize] the outcome of
-previous (ideally side-effect free) invocations of your Closures. The
-return values for a given set of Closure parameter values are kept in a
-cache, for those memoized Closures. That way, if you have an expensive
-computation to make that takes seconds, you can put the return value in
-cache, so that the next execution with the same parameter will return
-the same result – again, we assume results of an invocation are the same
-given the same set of parameter values.
-
-There are three forms of memoize functions:
-
-* the standard `memoize()` which caches all the invocations
-* `memoizeAtMost(max)` call which caches a maximum number of invocations
-* `memoizeAtLeast(min)` call which keeps at least a certain number of
-invocation results
-* and `memoizeBetween(min, max)` which keeps a range results (between a
-minimum and a maximum)
-
-Let’s illustrate that:
-
-[source,groovy]
---------------------------------------------------
-def plus = { a, b -> sleep 1000; a + b }.memoize()
-assert plus(1, 2) == 3 // after 1000ms
-assert plus(1, 2) == 3 // return immediately
-assert plus(2, 2) == 4 // after 1000ms
-assert plus(2, 2) == 4 // return immediately
- 
-// other forms:
-
-// at least 10 invocations cached
-def plusAtLeast = { ... }.memoizeAtLeast(10)
-
-// at most 10 invocations cached
-def plusAtMost = { ... }.memoizeAtMost(10)
-
-// between 10 and 20 invocations cached
-def plusAtLeast = { ... }.memoizeBetween(10, 20)
---------------------------------------------------
-
-[[Groovy18releasenotes-Curryingimprovements]]
-=== Currying improvements
-
-Currying improvements have also been backported to recent releases of
-Groovy 1.7, but it’s worth outlining here for reference. Currying used
-to be done only from left to right, but it’s also possible to do it from
-right to left, or from a given index, as the following examples
-demonstrate:
-
-[source,groovy]
-------------------------------------------
-// right currying
-def divide = { a, b -> a / b }
-def halver = divide.rcurry(2)
-assert halver(8) == 4
- 
-// currying n-th parameter
-def joinWithSeparator = { one, sep, two ->
-    one + sep + two
-}
-def joinWithComma =
-    joinWithSeparator.ncurry(1, ', ')
-assert joinWithComma('a', 'b') == 'a, b'
-------------------------------------------
-
-[[Groovy18releasenotes-NativeJSONsupport]]
-== Native JSON support
-
-With the ubiquity of JSON as an interchange format for our applications,
-it is natural that Groovy added support for JSON, in a similar fashion
-as the support Groovy’s always had with XML. So Groovy 1.8 introduces a
-JSON builder and parser.
-
-[[Groovy18releasenotes-ReadingJSON]]
-=== Reading JSON
-
-A `JsonSlurper` class allows you to parse JSON payloads, and access the
-nested Map and List data structures representing that content. JSON
-objects and arrays are indeed simply represented as Maps and Lists,
-giving you access to all the GPath expression benefits
-(subscript/property notation, find/findAll/each/inject/groupBy/etc.).
-Here’s an example showing how to find all the recent commit messages on
-the Grails project:
-
-[source,groovy]
---------------------------------------------------------------------------------------------------
-import groovy.json.*
-
-def payload = new URL("http://github.com/api/v2/json/commits/list/grails/grails-core/master").text
-
-def slurper = new JsonSlurper()
-def doc = slurper.parseText(payload)
-
-doc.commits.message.each { println it }
---------------------------------------------------------------------------------------------------
-
-If you want to see some more examples of the usage of the JSON parser,
-you can have a look at the
-https://github.com/apache/groovy/blob/master/subprojects/groovy-json/src/test/groovy/groovy/json/JsonSlurperTest.groovy[JsonSlurper
-tests] in our code base.
-
-[[Groovy18releasenotes-JSONbuilder]]
-=== JSON builder
-
-Parsing JSON data structures is one thing, but we should also be able to
-produce JSON content just like we create markup with the
-`MarkupBuilder`. The following example:
-
-[source,groovy]
-----------------------------
-import groovy.json.*
-
-def json = new JsonBuilder()
-
-json.person {
-    name "Guillaume"
-    age 33
-    pets "Hector", "Felix"
-}
-
-println json.toString()
-----------------------------
-
-Will create the JSON output:
-
-[source,groovy]
-------------------------------------------------------------------
-{"person":{"name":"Guillaume","age":33,"pets":["Hector","Felix"]}}
-------------------------------------------------------------------
-
-You can find some more usages of the JSON builder in our
-https://github.com/apache/groovy/blob/master/subprojects/groovy-json/src/test/groovy/groovy/json/JsonBuilderTest.groovy[JsonBuilder
-tests].
-
-[[Groovy18releasenotes-PrettyprintingJSONcontent]]
-=== Pretty printing JSON content
-
-When given a JSON data structure, you may wish to pretty-print it, so
-that you can more easily inspect it, with a more friendly layout. So for
-instance, if you want to pretty print the result of the previous
-example, you could do:
-
-[source,groovy]
---------------------------------------------------------------------------------------------------------------------
-import groovy.json.*
-
-println JsonOutput.prettyPrint('''{"person":{"name":"Guillaume","age":33,"pets":["Hector","Felix"]}}''')​​​​​​​​​​​​
---------------------------------------------------------------------------------------------------------------------
-
-Which would result in the following pretty-printed output:
-
-[source,groovy]
-----------------------------
-{
-    "person": {
-        "name": "Guillaume",
-        "age": 33,
-        "pets": [
-            "Hector",
-            "Felix"
-        ]
-    }
-}
-----------------------------
-
-[[Groovy18releasenotes-NewASTTransformations]]
-== New AST Transformations
-
-The Groovy compiler reads the source code, builds an Abstract Syntax
-Tree (AST) from it, and then puts the AST into bytecode. With AST
-transformations, the programmer can hook into this process. A general
-description of this process, an exhaustive description of all available
-transformations, and a guide of how to write you own ones can be found
-for example in http://www.manning.com/koenig2[Groovy in Action, 2nd
-Edition (MEAP)], chapter 9.
-
-Below is a list of all new transformations that come with Groovy 1.8.
-They save you from writing repetitive code and help avoiding common
-errors.
-
-[[Groovy18releasenotes-Log]]
-=== @Log
-
-You can annotate your classes with the @Log transformation to
-automatically inject a logger in your Groovy classes, under the `log`
-property. Four kind of loggers are actually available:
-
-* `@Log` for java.util.logging
-* `@Commons` for Commons-Logging
-* `@Log4j` for Log4J
-* `@Slf4j` for SLF4J
-
-Here’s a sample usage of the @Log transformation:
-
-[source,groovy]
-----------------------------------
-import groovy.util.logging.*
-
-@Log
-class Car {
-    Car() {
-        log.info 'Car constructed'
-    }
-}
-
-def c = new Car()
-----------------------------------
-
-You can change the name of the logger by specifying a different name,
-for instance with `@Log('myLoggerName')`.
-
-Another particularity of these logger AST transformations is that they
-take care of wrapping and safe-guarding logger calls with the usual
-`isSomeLevelEnabled()` calls. So when you write
-`log.info 'Car constructed'`, the generated code is actually equivalent
-to:
-
-[source,groovy]
----------------------------------
-if (log.isLoggable(Level.INFO)) {
-    log.info 'Car constructed'
-}
----------------------------------
-
-[[Groovy18releasenotes-Field]]
-=== @Field
-
-When defining variables in a script, those variables are actually local
-to the script’s run method, so they are not accessible from other
-methods of the script. A usual approach to that problem has been to
-store variables in the binding, by not def’ining those variables and by
-just assigning them a value. Fortunately, the `@Field` transformation
-provides a better alternative: by annotating your variables in your
-script with this annotation, the annotated variable will become a
-private field of the script class.
-
-More concretely, you’ll be able to do as follows:
-
-[source,groovy]
----------------------------
-@Field List awe = [1, 2, 3]
-def awesum() { awe.sum() }
-assert awesum() == 6
----------------------------
-
-[[Groovy18releasenotes-PackageScopeenhancements]]
-=== @PackageScope enhancements
-
-The @PackageScope annotation can be placed on classes, methods or fields
-and is used for turning off Groovy’s visibility conventions and
-reverting back to Java conventions. This ability is usually only needed
-when using 3rd party libraries which rely on the package scope
-visibility. When adding the `@PackageScope` annotation to a field,
-Groovy will assign package scope access to the field rather than
-automatically treating it as a property (and adding setters/getters).
-Annotating a class or method with `@PackageScope` will cause Groovy to
-revert to Java’s convention of leaving the class/method as package
-scoped rather than automatically promoting it to public scope. The class
-variant can also take one or more parameters to allow nested setting of
-visibility of attributes within the class - see the Javadoc for more
-details. Recent releases of Groovy 1.7 have had a more limited version
-of this annotation.
-
-[[Groovy18releasenotes-AutoClone]]
-=== @AutoClone
-
-The `@AutoClone` annotation is placed on classes which you want to be
-`Cloneable`. The annotation instructs the compiler to execute an AST
-transformation which adds a public `clone()` method and adds `Cloneable`
-to the classes implements list of interfaces. Because the JVM doesn’t
-have a one-size-fits-all cloning strategy, several customizations exist
-for the cloning implementation:
-
-* By default, the `clone()` method will call `super.clone()` before
-calling `clone()` on each `Cloneable` property of the class. Example
-usage:
-
-[source,groovy]
----------------------------------
-import groovy.transform.AutoClone
-
-@AutoClone
-class Person {
-    String first, last
-    List favItems
-    Date since
-}
----------------------------------
-
-Which will create a class of the following form:
-
-[source,groovy]
--------------------------------------------------------------
-class Person implements Cloneable {
-    ...
-    public Object clone() throws CloneNotSupportedException {
-        Object result = super.clone()
-        result.favItems = favItems.clone()
-        result.since = since.clone()
-        return result
-    }
-    ...
-}
--------------------------------------------------------------
-
-
-* Another popular cloning strategy is known as the copy constructor
-pattern. If any of your fields are `final` and `Cloneable` you should
-set `style=COPY_CONSTRUCTOR` which will then use the copy constructor
-pattern.
-* As a final alternative, if your class already implements the
-`Serializable` or `Externalizable` interface, you might like to set
-`style=SERIALIZATION` which will then use serialization to do the
-cloning.
-
-See the Javadoc for `AutoClone` for further details.
-
-[[Groovy18releasenotes-AutoExternalizable]]
-=== @AutoExternalizable
-
-The `@AutoExternalizable` class annotation is used to assist in the
-creation of `Externalizable` classes. The annotation instructs the
-compiler to execute an AST transformation which adds `writeExternal()`
-and `readExternal()` methods to a class and adds `Externalizable` to the
-interfaces which the class implements. The `writeExternal()` method
-writes each property (or field) for the class while the `readExternal()`
-method will read each one back in the same order. Properties or fields
-marked as `transient` are ignored. Example usage:
-
-[source,groovy]
--------------------------
-import groovy.transform.*
-
-@AutoExternalize
-class Person {
-    String first, last
-    List favItems
-    Date since
-}
--------------------------
-
-Which will create a class of the following form:
-
-[source,groovy]
--------------------------------------------------------------
-class Person implements Externalizable {
-    ...
-    void writeExternal(ObjectOutput out) throws IOException {
-        out.writeObject(first)
-        out.writeObject(last)
-        out.writeObject(favItems)
-        out.writeObject(since)
-    }
-
-    void readExternal(ObjectInput oin) {
-        first = oin.readObject()
-        last = oin.readObject()
-        favItems = oin.readObject()
-        since = oin.readObject()
-    }
-    ...
-}
--------------------------------------------------------------
-
-[[Groovy18releasenotes-Controllingtheexecutionofyourcode]]
-=== Controlling the execution of your code
-
-When integrating user-provided Groovy scripts and classes in your Java
-application, you may be worried about code that would eat all your CPU
-with infinite loops, or that call methods like `System.exit(0)` (for the
-latter, check the section on compiler customizers, and particularly the
-`SecureASTCustomizer`). It would be interesting to have a wait to
-control the execution of that Groovy code, to be able to interrupt its
-execution when the thread is interrupted, when a certain duration has
-elapsed, or when a certain condition is met (lack of resources, etc).
-
-Groovy 1.8 introduces three transformations for those purposes, as we
-shall see in the following sections. By default, the three
-transformations add some checks in at the beginning of each method body,
-and each closure body, to check whether a condition of interruption is
-met or not.
-
-Note that those transformations are local (triggered by an annotation).
-If you want to apply them transparently, so that the annotation doesn’t
-show up, I encourage you to have a look at the
-`ASTTransformationCustomizer` explained at the end of this article.
-
-Cédric Champeau, our most recent Groovy committer, who implemented those
-features, has a
-http://melix.github.io/blog/2010/11/30/upcoming_groovy_goodness_automatic_thread.html[nice blog post]
-covering those code interruption transformations.
-
-[[Groovy18releasenotes-ThreadInterrupt]]
-==== @ThreadInterrupt
-
-You don’t need to write checks in your scripts for whether the current
-thread of execution has been interrupted or not, by default, the
-transformation will add those checks for you for scripts and classes, at
-the beginning of each method body and closure body:
-
-[source,groovy]
----------------------------------------
-@ThreadInterrupt
-import groovy.transform.ThreadInterrupt
-
-while (true) {
-    // eat lots of CPU
-}
----------------------------------------
-
-You can specify a `checkOnMethodStart` annotation parameter (defaults to
-true) to customize where checks are added by the transformation (adds an
-interrupt check by default as the first statement of a method body). And
-you can also specify the `applyToAllClasses` annotation parameter
-(default to true) if you want to specify whether only the current class
-or script should have this interruption logic applied or not.
-
-[[Groovy18releasenotes-TimedInterrupt]]
-==== @TimedInterrupt
-
-With `@TimedInterrupt`, you can interrupt the script after a certain
-amount of time:
-
-[source,groovy]
---------------------------------------
-@TimedInterrupt(10)
-import groovy.transform.TimedInterrupt
-
-while (true) {
-    // eat lots of CPU
-}
---------------------------------------
-
-In addition to the previous annotation parameters we mentioned for
-`@ThreadInterrupt`, you should specify `value`, the amount of time to
-wait, and `unit` (defaulting to `TimeUnit.SECONDS`) to specify the unit
-of time to be used.
-
-[[Groovy18releasenotes-ConditionalInterrupt]]
-==== @ConditionalInterrupt
-
-An example of `@ConditionalInterrupt` which leverages the closure
-annotation parameter feature, and the `@Field` transformation as well:
-
-[source,groovy]
---------------------------------------------
-@ConditionalInterrupt({ counter++ > 2 })
-import groovy.transform.ConditionalInterrupt
-import groovy.transform.Field
-
-@Field int counter = 0
-
-100.times {
-    println 'executing script method...'
-}
---------------------------------------------
-
-You can imagine defining any kind of condition: on counters, on resource
-availability, on resource usage, and more.
-
-[[Groovy18releasenotes-ToString]]
-=== @ToString
-
-Provides your classes with a default `toString()` method which prints
-out the values of the class’ properties (and optionally the property
-names and optionally fields). A basic example is here:
-
-[source,groovy]
------------------------------------------
-import groovy.transform.ToString
-
-@ToString
-class Person {
-    String name
-    int age
-}
-
-println new Person(name: 'Pete', age: 15)
-// => Person(Pete, 15)
------------------------------------------
-
-And here’s another example using a few more options:
-
-[source,groovy]
-----------------------------------------------------
-@ToString(includeNames = true, includeFields = true)
-class Coord {
-    int x, y
-    private z = 0
-}
-println new Coord(x:20, y:5)
-// => Coord(x:20, y:5, z:0)
-----------------------------------------------------
-
-[[Groovy18releasenotes-EqualsAndHashCode]]
-=== @EqualsAndHashCode
-
-Provides your classes with `equals()` and `hashCode()` methods based on
-the values of the class’ properties (and optionally fields and
-optionally super class values for `equals()` and `hashCode()`).
-
-[source,groovy]
------------------------------------------
-import groovy.transform.EqualsAndHashCode
-
-@EqualsAndHashCode
-class Coord {
-    int x, y
-}
-
-def c1 = new Coord(x:20, y:5)
-def c2 = new Coord(x:20, y:5)
-
-assert c1 == c2
-assert c1.hashCode() == c2.hashCode()
------------------------------------------
-
-[[Groovy18releasenotes-TupleConstructor]]
-=== @TupleConstructor
-
-Provides a tuple (ordered) constructor. For POGOs (plain old Groovy
-objects), this will be in addition to Groovy’s default `named-arg`
-constructor.
-
-[source,groovy]
----------------------------------------------------------
-import groovy.transform.TupleConstructor
-
-@TupleConstructor
-class Person {
-    String name
-    int age
-}
-
-def p1 = new Person(name: 'Pete', age: 15) // map-based
-def p2 = new Person('Pete', 15)            // tuple-based
-
-assert p1.name == p2.name
-assert p1.age == p2.age
----------------------------------------------------------
-
-[[Groovy18releasenotes-Canonical]]
-=== @Canonical
-
-Allows you to combine `@ToString`, `@EqualsAndHashCode` and
-`@TupleConstructor`. For those familiar with Groovy’s `@Immutable`
-transform, this provides similar features but for mutable objects.
-
-[source,groovy]
---------------------------------------------
-import groovy.transform.Canonical
-
-@Canonical
-class Person {
-    String name
-    int age
-}
-
-def p1 = new Person(name: 'Pete', age: 15)
-def p2 = new Person('Paul', 15)
-
-p2.name = 'Pete'
-println "${p1.equals(p2)} $p1 $p2"
-// => true Person(Pete, 15) Person(Pete, 15)
---------------------------------------------
-
-By default, `@Canonical` gives you vanilla versions for each of the
-combined annotations. If you want to use any of the special features
-that the individual annotations give you, simply include the individual
-annotation as well.
-
-[source,groovy]
------------------------------------------
-import groovy.transform.*
-
-@Canonical
-@ToString(includeNames = true)
-class Person {
-    String name
-    int age
-}
-
-def p = new Person(name: 'Pete', age: 15)
-println p
-// => Person(name:Pete, age:15)
------------------------------------------
-
-You will find a great
-http://prystash.blogspot.com/2011/04/groovy-18-playing-with-new-canonical.html[write-up
-on @Canonical, @ToString, @EqualsAndHashCode and @TupleConstructor] on
-John Prystash’s weblog.
-
-[[Groovy18releasenotes-InheritConstructors]]
-=== @InheritConstructors
-
-Sometimes, when you want to subclass certain classes, you also need to
-override all the constructors of the parent, even if only to call the
-super constructor. Such a case happens for instance when you define your
-own exceptions, you want your exceptions to also have the constructors
-taking messages and throwable as parameters. But instead of writing this
-kind of boilerplate code each time for your exceptions:
-
-[source,groovy]
---------------------------------------------------------------
-class CustomException extends Exception {
-    CustomException() { super() }
-    CustomException(String msg) { super(msg) }
-    CustomException(String msg, Throwable t) { super(msg, t) }
-    CustomException(Throwable t) { super(t) }
-}
---------------------------------------------------------------
-
-Simply use the @InheritConstructors transformation which takes care of
-overriding the base constructors for you:
-
-[source,groovy]
-------------------------------------------
-import groovy.transform.*
-
-@InheritConstructors
-class CustomException extends Exception {}
-------------------------------------------
-
-[[Groovy18releasenotes-WithReadLockandWithWriteLock]]
-=== @WithReadLock and @WithWriteLock
-
-Those two transformations, combined together, simplify the usage of
-`java.util.concurrent.locks.ReentrantReadWriteLock`, are safer to use
-than the `synchronized` keyword, and improve upon the `@Synchronized`
-transformation with a more granular locking.
-
-More concretely, with an example, the following:
-
-[source,groovy]
-------------------------------------------------------------
-import groovy.transform.*
-
-class ResourceProvider {
-    private final Map<String, String> data = new HashMap<>()
-
-    @WithReadLock
-    String getResource(String key) {
-        return data.get(key)
-    }
-
-    @WithWriteLock
-    void refresh() {
-        //reload the resources into memory
-    }
-}
-------------------------------------------------------------
-
-Will generate code as follows:
-
-[source,groovy]
------------------------------------------------------------------------------
-import java.util.concurrent.locks.ReentrantReadWriteLock
-import java.util.concurrent.locks.ReadWriteLock
-
-class ResourceProvider {
-    private final ReadWriteLock $reentrantlock = new ReentrantReadWriteLock()
-    private final Map<String, String> data = new HashMap<String, String>()
-
-    String getResource(String key) {
-        $reentrantlock.readLock().lock()
-        try {
-            return data.get(key)
-        } finally {
-            $reentrantlock.readLock().unlock()
-        }
-    }
-
-    void refresh() throws Exception {
-        $reentrantlock.writeLock().lock()
-        try {
-            //reload the resources into memory
-        } finally {
-            $reentrantlock.writeLock().unlock()
-        }
-    }
-}
------------------------------------------------------------------------------
-
-[[Groovy18releasenotes-ListenerList]]
-=== @ListenerList
-
-If you annotate a Collection type field with @ListenerList, it generates
-everything that is needed to follow the bean event pattern. This is kind
-of an EventType independent version of what @Bindable is for
-PropertyChangeEvents.
-
-This example shows the most basic usage of the @ListenerList annotation.
-The easiest way to use this annotation is to annotate a field of type
-List and give the List a generic type. In this example we use a List of
-type MyListener. MyListener is a one method interface that takes a
-MyEvent as a parameter. The following code is some sample source code
-showing the simplest scenario.
-
-[source,groovy]
------------------------------------------
-interface MyListener {
-    void eventOccurred(MyEvent event)
-}
-
-class MyEvent {
-    def source
-    String message
-
-    MyEvent(def source, String message) {
-        this.source = source
-        this.message = message
-    }
-}
-class MyBeanClass {
-    @ListenerList
-    List<MyListener> listeners
-}
------------------------------------------
-
-* + addMyListener(MyListener) : void - This method is created based on
-the generic type of your annotated List field. The name and parameter
-type is are based on the List field’s generic parameter.
-* + removeMyListener(MyListener) : void- This method is created based on
-the generic type of your annotated List field. The name and parameter
-type is are based on the List field’s generic parameter.
-* + getMyListeners() : MyListener[] - This method is created based on
-the generic type of your annotated List field.The name is the plural
-form of the List field’s generic parameter, and the return type is an
-array of the generic parameter.
-* + fireEventOccurred(MyEvent) : void - This method is created based on
-the type that the List’s generic type points to. In this case,
-MyListener is a one method interface with an eventOccurred(MyEvent)
-method. The method name is fire[MethodName of the interface] and the
-parameter is the parameter list from the interface. A fireX method will
-be generated for each public method in the target class, including
-overloaded methods. 
-
-[[Groovy18releasenotes-AlignmentswithJDK7]]
-== Alignments with JDK 7
-
-Groovy 1.9 will be the version which will align as much as possible with
-the upcoming JDK 7, so beyond those aspects already covered in Groovy
-(like strings in switch and others), most of those `Project Coin`
-proposals will be in 1.9, except the `diamond operator` which was
-added in 1.8, as explained in the following paragraph.
-
-[[Groovy18releasenotes-Diamondoperator]]
-=== Diamond operator
-
-Java 7 will introduce the `diamond` operator in generics type
-information, so that you can avoid the usual repetition of the
-parameterized types. Groovy decided to adopt the notation before JDK 7
-is actually released. So instead of writing:
-
-[source,groovy]
---------------------------------------------------------
-List<List<String>> list1 = new ArrayList<List<String>>()
---------------------------------------------------------
-
-You can _omit_ the parameterized types and just use the pointy
-brackets, which now look like a diamond:
-
-[source,groovy]
---------------------------------------------
-List<List<String>> list1 = new ArrayList<>()
---------------------------------------------
-
-[[Groovy18releasenotes-NewDGMmethods]]
-== New DGM methods
-
-* count Closure variants
-
-[source,groovy]
----------------------------------------------
-def isEven = { it % 2 == 0 }
-assert [2,4,2,1,3,5,2,4,3].count(isEven) == 5
----------------------------------------------
-
-* countBy
-
-[source,groovy]
-----------------------------------------------------------------------
-assert [0:2, 1:3] == [1,2,3,4,5].countBy{ it % 2 }
-assert [(true):2, (false):4] == 'Groovy'.toList().countBy{ it == 'o' }
-----------------------------------------------------------------------
-
-* plus variants specifying a starting index
-
-[source,groovy]
--------------------------------------------------------
-assert [10, 20].plus(1, 'a', 'b') == [10, 'a', 'b', 20]
--------------------------------------------------------
-
-* equals for Sets and Maps now do flexible numeric comparisons (on
-values for Maps)
-
-[source,groovy]
-----------------------------------------
-assert [1L, 2.0] as Set == [1, 2] as Set
-assert [a:2, b:3] == [a:2L, b:3.0]
-----------------------------------------
-
-* toSet for primitive arrays, Strings and Collections
-
-[source,groovy]
------------------------------------------------------------
-assert [1, 2, 2, 2, 3].toSet() == [1, 2, 3] as Set
-assert 'groovy'.toSet() == ['v', 'g', 'r', 'o', 'y'] as Set
------------------------------------------------------------
-
-* min / max methods for maps taking closures +
- (also available in Groovy 1.7)
-
-[source,groovy]
-----------------------------------------------
-def map = [a: 1, bbb: 4, cc: 5, dddd: 2]
-
-assert map.max { it.key.size() }.key == 'dddd'
-assert map.min { it.value }.value == 1
-----------------------------------------------
-
-* map withDefault\{} +
- Oftentimes, when using a map, for example for counting the frequency of
-words in a document, you need to check that a certain key exists, before
-doing something with the associating value (like incrementing it).
-Nothing really complex, but we could improve upon that with a new
-method, called `withDefault`. So instead of writing code like below:
-
-[source,groovy]
----------------------------------------------------
-def words = "one two two three three three".split()
-def freq = [:]
-words.each {
-    if (it in freq)
-        freq[it] += 1
-    else
-        freq[it] = 1
-}
----------------------------------------------------
-
-Thanks to the new method (also backported to 1.7), you can write the
-example as follows:
-
-[source,groovy]
----------------------------------------------------
-def words = "one two two three three three".split()
-def freq = [:].withDefault { k -> 0 }
-words.each {
-        freq[it] += 1
-}
----------------------------------------------------
-
-[[Groovy18releasenotes-Miscellaneous]]
-== Miscellaneous
-
-[[Groovy18releasenotes-Slashystrings]]
-=== Slashy strings
-
-Slashy strings are now multi-line:
-
-[source,groovy]
------------------------------------
-def poem = /
-to be
-or
-not to be
-/
-
-assert poem.readLines().size() == 4
------------------------------------
-
-This is particularly useful for multi-line regexs when using the regex
-free-spacing comment style (though you would still need to escape
-slashes):
-
-[source,groovy]
--------------------------------------------------------------------------------------------
-// match yyyy-mm-dd from this or previous century
-def dateRegex = /(?x)     # enable whitespace and comments
-((?:19|20)\d\d)           # year (group 1) (non-capture alternation for century)
--                         # seperator
-(0[1-9]|1[012])           # month (group 2)
--                         # seperator
-(0[1-9]|[12][0-9]|3[01])  # day (group 3)
-/
-
-assert '04/04/1988' == '1988-04-04'.find(dateRegex) { all, y, m, d -> [d, m, y].join('/') }
--------------------------------------------------------------------------------------------
-
-[[Groovy18releasenotes-Dollarslashystrings]]
-=== Dollar slashy strings
-
-A new string notation has been introduced: the `dollar slashy` string.
-This is a multi-line GString similar to the slashy string, but with
-slightly different escaping rules. You are no longer required to escape
-slash (with a preceding backslash) but you can use `$$' to escape a `$'
-or `$/' to escape a slash if needed. Here’s an example of its usage:
-
-[source,groovy]
-------------------------
-def name = "Guillaume"
-def date = "April, 21st"
-
-def dollarSlashy = $/
-    Hello $name,
-    today we're ${date}
-    $ dollar-sign
-    $$ dollar-sign
-    \ backslash
-    / slash
-    $/ slash
-/$
-
-println dollarSlashy
-------------------------
-
-This form of string is typically used when you wish to embed content
-that may naturally contains slashes or backslashes and you don’t want to
-have to rework the content to include all of the necessary escaping.
-Some examples are shown below:
-
-* Embedded XML fragments with backslashes:
-
-[source,groovy]
--------------------------------------------
-def tic = 'tic'
-
-def xml = $/
-  <xml>
-  $tic\tac
-  </xml>
-/$
-
-assert "\n<xml>\ntic\\tac\n</xml>\n" == xml
--------------------------------------------
-
-Better than a normal (now multi-line) slashy string where you would have
-to escape the slashes or a triple quote (``'''``) GString where you would
-have to escape the backslashes.
-
-* Or windows pathnames containing a slash at the end:
-
-[source,groovy]
-----------------------
-def dir = $/C:\temp\/$
-----------------------
-
-Previously, triple quote (`'''`) GString required extra escaping, and
-the above sequence was illegal for a normal slashy string. Now, ugly
-workarounds are not needed.
-
-* Embedding multi-line regexs when using the regex free-spacing comment
-style (particularly ones which contain slashes):
-
-[source,groovy]
--------------------------------------------------------------------------------------------
-// match yyyy-mm-dd from current or previous century
-def dateRegex = $/(?x)    # enable whitespace and comments
-((?:19|20)\d\d)           # year (group 1) (non-capture alternation for century)
-[- /.]                    # seperator
-(0[1-9]|1[012])           # month (group 2)
-[- /.]                    # seperator
-(0[1-9]|[12][0-9]|3[01])  # day (group 3)
-/$
-
-assert '04/04/1988' == '1988-04-04'.find(dateRegex) { all, y, m, d -> [d, m, y].join('/') }
-assert '10-08-1989' == '1989/08/10'.find(dateRegex) { all, y, m, d -> [d, m, y].join('-') }
--------------------------------------------------------------------------------------------
-
-So, you can cut and paste most PERL regex examples without further
-escaping.
-
-* Or Strings which are themselves Groovy code fragments containing
-slashes:
-
-[source,groovy]
------------------------------------
-def alphabet = ('a'..'z').join('')
-def code = $/
-    def normal = '\b\t\n\r'
-    def slashy = /\b\t\n\r/
-    assert '$alphabet'.size() == 26
-    assert normal.size() == 4
-    assert slashy.size() == 8
-/$
-println code
-Eval.me(code)
------------------------------------
-
-Again allowing you to cut and paste many slashy string Groovy examples
-and have them embedded within dollar slashy strings without further
-escaping.
-
-[[Groovy18releasenotes-Compilationcustomizers]]
-=== Compilation customizers
-
-The compilation of Groovy code can be configured through the
-`CompilerConfiguration` class, for example for setting the encoding of
-your sources, the base script class, the recompilation parameters, etc).
-`CompilerConfiguration` now has a new option for setting _compilation
-customizers_ (belonging to the `org.codehaus.groovy.control.customizers`
-package). Those customizers allow to customize the compilation process
-in three ways:
-
-* adding default imports with the `ImportCustomizer`: so you don’t have
-to always add the same imports all over again
-* securing your scripts and classes with the `SecureASTCustomizer`: by
-allowing/disallowing certain classes, or special AST nodes (Abstract
-Syntax Tree), filtering imports, you can secure your scripts to avoid
-malicious code or code that would go beyond the limits of what the code
-should be allowed to do.
-* applying AST transformations with the `ASTTransformationCustomizer`:
-lets you apply transformations to all the class nodes of your
-compilation unit.
-
-For example, if you want to apply the @Log transformation to all the
-classes and scripts, you could do:
-
-[source,groovy]
------------------------------------------------------------------------------
-import org.codehaus.groovy.control.CompilerConfiguration
-import org.codehaus.groovy.control.customizers.*
-import groovy.util.logging.Log
-
-def configuration = new CompilerConfiguration()
-configuration.addCompilationCustomizers(new ASTTransformationCustomizer(Log))
-
-def shell = new GroovyShell(configuration)
-shell.evaluate("""
-    class Car {
-        Car() {
-            log.info 'Car constructed'
-        }
-    }
-
-    log.info 'Constructing a car'
-    def c = new Car()
-""")
------------------------------------------------------------------------------
-
-This will log the two messages, the one from the script, and the one
-from the Car class constructor, through java.util.logging. No need to
-apply the @Log transformation manually to both the script and the class:
-the transformation is applied to all class nodes transparently. This
-mechanism can also be used for adding global transformations, just for
-the classes and scripts that you compile, instead of those global
-transformations being applied to all scripts and classes globally.
-
-If you want to add some default imports (single import, static import,
-star import, star static imports, and also aliased imports and static
-imports), you can use the import customizer as follows:
-
-[source,groovy]
---------------------------------------------------------
-import org.codehaus.groovy.control.CompilerConfiguration
-import org.codehaus.groovy.control.customizers.*
-
-def configuration = new CompilerConfiguration()
-def custo = new ImportCustomizer()
-custo.addStaticStar(Math.name)
-configuration.addCompilationCustomizers(custo)
-
-def shell = new GroovyShell(configuration)
-shell.evaluate("""
-    cos PI/3
-""")
---------------------------------------------------------
-
-When you want to evaluate Math expressions, you don’t need anymore to
-use the `import static java.lang.Math.*` star static import to import
-all the Math constants and static functions.
-
-[[Groovy18releasenotes-GStringtoEnumcoercion]]
-=== (G)String to Enum coercion
-
-Given a String or a GString, you can coerce it to Enum values bearing
-the same name, as the sample below presents:
-
-[source,groovy]
------------------------------
-enum Color {
-    red, green, blue
-}
-
-// coercion with as
-def r = "red" as Color
-
-// implicit coercion
-Color b = "blue"
-
-// with GStrings too
-def g = "${'green'}" as Color
------------------------------
-
-[[Groovy18releasenotes-MapssupportisCase]]
-=== Maps support isCase()
-
-Maps now support `isCase()`, so you can use maps in your switch/case
-statements, for instance:
-
-[source,groovy]
-----------------------------------------------
-def m = [a: 1, b: 2]
-def val = 'a'
-
-switch (val) {
-    case m: "key in map"; break
-    // equivalent to // case { val in m }: ...
-    default: "not in map"
-}
-----------------------------------------------
-
-[[Groovy18releasenotes-GrapeGrabImprovements]]
-=== Grape/Grab Improvements
-
-[[Groovy18releasenotes-ShorternotationforGrabResolver]]
-==== Shorter notation for @GrabResolver
-
-When you need to specify a special grab resolver, for when the artifacts
-you need are not stored in Maven central, you could use:
-
-[source,groovy]
-----------------------------------------------------------------------
-@GrabResolver(name = 'restlet.org', root = 'http://maven.restlet.org')
-@Grab('org.restlet:org.restlet:2.0.6')
-import org.restlet.Restlet
-----------------------------------------------------------------------
-
-Groovy 1.8 adds a shorter syntax as well:
-
-[source,groovy]
------------------------------------------
-@GrabResolver('http://maven.restlet.org')
-@Grab('org.restlet:org.restlet:2.0.6')
-import org.restlet.Restlet
------------------------------------------
-
-[[Groovy18releasenotes-CompactformforoptionalGrabattributes]]
-==== Compact form for optional Grab attributes
-
-The `@Grab` annotation has numerous options. For example, to download
-the Apache commons-io library (where you wanted to set the `transitive`
-and `force` attributes - not strictly needed for this example but see
-the Grab or Ivy documentation for details on what those attributes do)
-you could use a grab statement similar to below:
-
-[source,groovy]
----------------------------------------------------------------------------------------------
-@Grab(group='commons-io', module='commons-io', version='2.0.1', transitive=false, force=true)
----------------------------------------------------------------------------------------------
-
-The compact form for grab which allows the artifact information to be
-represented as a string now supports specifying additional attributes.
-As an example, the following script will download the commons-io jar and
-the corresponding javadoc jar before using one of the commons-io
-methods.
-
-[source,groovy]
-----------------------------------------------------------------
-@Grab('commons-io:commons-io:2.0.1;transitive=false;force=true')
-@Grab('commons-io:commons-io:2.0.1;classifier=javadoc')
-import static org.apache.commons.io.FileSystemUtils.*
-assert freeSpaceKb() > 0
-----------------------------------------------------------------
-
-[[Groovy18releasenotes-Sqlimprovements]]
-=== Sql improvements
-
-The `eachRow` and `rows` methods in the `groovy.sql.Sql` class now
-support paging. Here’s an example:
-
-[source,groovy]
----------------------------------------------------
-sql.eachRow('select * from PROJECT', 2, 2) { row ->
-  println "${row.name.padRight(10)} ($row.url)"
-}
----------------------------------------------------
-
-Which will start at the second row and return a maximum of 2 rows.
-Here’s an example result from a database containing numerous projects
-with their URLs:
-
-----------------------------------------
-Grails     (http://grails.org)
-Griffon    (http://griffon-framework.org)
-----------------------------------------
-
-[[Groovy18releasenotes-StoringASTnodemetadata]]
-=== Storing AST node metadata
-
-When developing AST transformations, and particularly when using a
-visitor to navigate the AST nodes, it is sometimes tricky to keep track
-of information as you visit the tree, or if a combination of transforms
-need to be sharing some context. The `ASTNode` base class features 4
-methods to store node metadata:
-
-* `public Object getNodeMetaData(Object key)`
-* `public void copyNodeMetaData(ASTNode other)`
-* `public void setNodeMetaData(Object key, Object value)`
-* `public void removeNodeMetaData(Object key)`
-
-[[Groovy18releasenotes-AbilitytocustomizetheGroovyDoctemplates]]
-=== Ability to customize the GroovyDoc templates
-
-GroovyDoc uses hard-coded templates to create the JavaDoc for your
-Groovy classes. Three templates are used: top-level templates, a
-package-level template, a class template. If you want to customize these
-templates, you can subclass the `Groovydoc` Ant task and override the
-`getDocTemplates()`, `getPackageTemplates()`, and `getClassTemplates()`
-methods pointing at your own templates. Then you can use your custom
-GroovyDoc Ant task in lieu of Groovy’s original one.
diff --git a/site/src/site/releasenotes/groovy-2.0.adoc b/site/src/site/releasenotes/groovy-2.0.adoc
deleted file mode 100644
index 0cbf311..0000000
--- a/site/src/site/releasenotes/groovy-2.0.adoc
+++ /dev/null
@@ -1,886 +0,0 @@
-The newly released Groovy 2.0 brings key static features to the language
-with static type checking and static compilation, adopts JDK 7 related
-improvements with Project Coin syntax enhancements and the support of
-the new `invokedynamic` JVM instruction, and becomes more modular
-than before. In this article, we’re going to look into those new
-features in more detail.
-
-[[Groovy20releasenotes-Astaticthemeforadynamiclanguage]]
-== A static theme for a dynamic language
-
-[[Groovy20releasenotes-Statictypechecking]]
-=== Static type checking
-
-Groovy, by nature, is and will always be a dynamic language. However,
-Groovy is often used as a "Java scripting language", or as a "better
-Java" (ie. a Java with less boilerplate and more power features). A lot
-of Java developers actually use and embed Groovy in their Java
-applications as an extension language, to author more expressive
-business rules, to further customize the application for different
-customers, etc. For such Java-oriented use cases, developers don’t need
-all the dynamic capabilities offered by the language, and they usually
-expect the same kind of feedback from the Groovy compiler as the one
-given by javac. In particular, they want to get compilation errors
-(rather than runtime errors) for things like typos on variable or method
-names, incorrect type assignments and the like. That’s why Groovy 2
-features static type checking support.** +
-**
-
-[[Groovy20releasenotes-Spottingobvioustypos]]
-==== Spotting obvious typos
-
-The static type checker is built using Groovy’s existing powerful AST
-(Abstract Syntax Tree) transformation mechanisms but for those not
-familiar with these mechanisms you can think of it as an optional
-compiler plugin triggered through an annotation. Being an optional
-feature, you are not forced to use it if you don’t need it. To trigger
-static type checking, just use the @TypeChecked annotation on a method
-or on a class to turn on checking at your desired level of granularity.
-Let’s see that in action with a first example:
-
-[source,groovy]
--------------------------------------------------
-import groovy.transform.TypeChecked
-
-void someMethod() {}
-
-@TypeChecked
-void test() {
-    // compilation error:
-    // cannot find matching method sommeeMethod()
-    sommeeMethod()
-
-    def name = "Marion"
-    // compilation error:
-    // the variable naaammme is undeclared
-    println naaammme
-}
--------------------------------------------------
-
-We annotated the test() method with the @TypeChecked annotation, which
-instructs the Groovy compiler to run the static type checking for that
-particular method at compilation time. We’re trying to call someMethod()
-with some obvious typos, and to print the name variable again with
-another typo, and the compiler will throw two compilation errors because
-respectively, the method and variable are not found or declared.** +
-**
-
-[[Groovy20releasenotes-Checkyourassignmentsandreturnvalues]]
-==== Check your assignments and return values
-
-The static type checker also verifies that the return types and values
-of your assignments are coherent:
-
-[source,groovy]
------------------------------------------
-import groovy.transform.TypeChecked
-
-@TypeChecked
-Date test() {
-    // compilation error:
-    // cannot assign value of Date
-    // to variable of type int
-    int object = new Date()
-
-    String[] letters = ['a', 'b', 'c']
-
-    // compilation error:
-    // cannot assign value of type String
-    // to variable of type Date
-    Date aDateVariable = letters[0]
-
-    // compilation error:
-    // cannot return value of type String
-    // on method returning type Date
-    return "today"
-}
------------------------------------------
-
-In this example, the compiler will complain about the fact you cannot
-assign a Date in an int variable, nor can you return a String instead of
-a Date value specified in the method signature. The compilation error
-from the middle of the script is also interesting, as not only does it
-complain of the wrong assignment, but also because it shows type
-inference at play, because the type checker, of course, knows that
-letters[0] is of type String, because we’re dealing with an array of
-Strings.** +
-**
-
-[[Groovy20releasenotes-Moreontypeinference]]
-==== More on type inference
-
-Since we’re mentioning type inference, let’s have a look at some other
-occurrences of it. We mentioned the type checker tracks the return types
-and values:
-
-[source,groovy]
---------------------------------------------
-import groovy.transform.TypeChecked
-
-@TypeChecked
-int method() {
-   if (true) {
-       // compilation error:
-       // cannot return value of type String
-       // on method returning type int
-       'String'
-   } else {
-       42
-   }
-} 
---------------------------------------------
-
-Given a method returning  a value of primitive type int, the type
-checker is able to also check the values returned from different
-constructs like if / else branches, try / catch blocks or switch / case
-blocks. Here, in our example, one branch of the if / else blocks tries
-to return a String value instead of a primitive int, and the compiler
-complains about it.** +
-**
-
-[[Groovy20releasenotes-Commontypeconversionsstillallowed]]
-==== Common type conversions still allowed
-
-The static type checker, however, won’t complain for certain automatic
-type conversions that Groovy supports. For instance, for method
-signatures returning String, boolean or Class, Groovy converts return
-values to these types automatically:
-
-[source,groovy]
-----------------------------------------------------------
-import groovy.transform.TypeChecked
-
-@TypeChecked
-boolean booleanMethod() {
-   "non empty strings are evaluated to true"
-}
-
-assert booleanMethod() == true
-
-@TypeChecked
-String stringMethod() {
-   // StringBuilder converted to String calling toString()
-   new StringBuilder() << "non empty string"
-}
-
-assert stringMethod() instanceof String
-
-@TypeChecked
-Class classMethod() {
-   // the java.util.List class will be returned
-   "java.util.List"
-}
-
-assert classMethod() == List 
-----------------------------------------------------------
-
-The static type checker is also clever enough to do type inference:
-
-[source,groovy]
-------------------------------------------------
-import groovy.transform.TypeChecked
-
-@TypeChecked
-void method() {
-   def name = "  Guillaume  "
-
-   // String type inferred (even inside GString)
-   println "NAME = ${name.toUpperCase()}"
-
-   // Groovy GDK method support
-   // (GDK operator overloading too)
-   println name.trim()
-
-   int[] numbers = [1, 2, 3]
-   // Element n is an int
-   for (int n in numbers) {
-       println n
-   }
-}
-------------------------------------------------
-
-Although the name variable was defined with def, the type checker
-understands it is of type String. Then, when this variable is used in
-the interpolated string, it knows it can call String’s toUpperCase()
-method, or the trim() method later one, which is a method added by the
-Groovy Development Kit decorating the String class. Last, when iterating
-over the elements of an array of primitive ints, it also understands
-that an element of that array is obviously an int.** +
-**
-
-[[Groovy20releasenotes-Mixingdynamicfeaturesandstaticallytypedmethods]]
-==== Mixing dynamic features and statically typed methods
-
-An important aspect to have in mind is that using the static type
-checking facility restricts what you are allowed to use in Groovy. Most
-runtime dynamic features are not allowed, as they can’t be statically
-type checked at compilation time. So adding a new method at runtime
-through the type’s metaclasses is not allowed. But when you need to use
-some particular dynamic feature, like Groovy’s builders, you can opt out
-of static type checking should you wish to.  +
-  +
-The @TypeChecked annotation can be put at the class level or at the
-method level. So if you want to have a whole class type checked, put the
-annotation on the class, and if you want only a few methods type
-checked, put the annotation on just those methods. Also, if you want to
-have everything type checked, except a specific method, you can annotate
-the latter with @TypeChecked(TypeCheckingMode.SKIP) — or
-@TypeChecked(SKIP) for short, if you statically import the associated
-enum. Let’s illustrate the situation with the following script, where
-the greeting() method is type checked, whereas the generateMarkup()
-method is not:
-
-[source,groovy]
------------------------------------------------------------
-import groovy.transform.TypeChecked
-import groovy.xml.MarkupBuilder
-
-// this method and its code are type checked
-@TypeChecked
-String greeting(String name) {
-   generateMarkup(name.toUpperCase())
-}
-
-// this method isn't type checked
-// and you can use dynamic features like the markup builder
-String generateMarkup(String name) {
-   def sw = new StringWriter()
-   new MarkupBuilder(sw).html {
-       body {
-           div name
-       }
-   }
-   sw.toString()
-}
-
-assert greeting("Cédric").contains("CÉDRIC")
------------------------------------------------------------
-
-[[Groovy20releasenotes-Typeinferenceandinstanceofchecks]]
-==== Type inference and instanceof checks
-
-Current production releases of Java don’t support general type
-inference; hence we find today many places where code is often quite
-verbose and cluttered with boilerplate constructs. This obscures the
-intent of the code and without the support of powerful IDEs is also
-harder to write. This is the case with instanceof checks: You often
-check the class of a value with instanceof inside an if condition, and
-afterwards in the if block, you must still use casts to be able to use
-methods of the value at hand. In plain Groovy, as well as in the new
-static type checking mode, you can completely get rid of those casts.
-
-[source,groovy]
------------------------------------------------------
-import groovy.transform.TypeChecked
-import groovy.xml.MarkupBuilder
-
-@TypeChecked
-String test(Object val) {
-   if (val instanceof String) {
-       // unlike Java:
-       // return ((String)val).toUpperCase()
-       val.toUpperCase()
-   } else if (val instanceof Number) {
-       // unlike Java:
-       // return ((Number)val).intValue().multiply(2)
-       val.intValue() * 2
-   }
-}
-
-assert test('abc') == 'ABC'
-assert test(123)   == '246'
------------------------------------------------------
-
-In the above example, the static type checker knows that the val
-parameter is of type String inside the if block, and of type Number in
-the else if block, without requiring any cast.** +
-**
-
-[[Groovy20releasenotes-LowestUpperBound]]
-==== Lowest Upper Bound
-
-The static type checker goes a bit further in terms of type inference in
-the sense that it has a more granular understanding of the type of your
-objects. Consider the following code:
-
-[source,groovy]
-----------------------------------------------------------
-import groovy.transform.TypeChecked
-
-// inferred return type:
-// a list of numbers which are comparable and serializable
-@TypeChecked test() {
-   // an integer and a BigDecimal
-   return [1234, 3.14]
-} 
-----------------------------------------------------------
-
-In this example, we return, intuitively, a list of numbers: an Integer
-and a BigDecimal. But the static type checker computes what we call a
-"lowest upper bound", which is actually a list of numbers which are
-also serializable and comparable. It’s not possible to denote that type
-with the standard Java type notation, but if we had some kind of
-intersection operator like an ampersand, it could look like List<Number
-& Serializable & Comparable>.** +
-**
-
-[[Groovy20releasenotes-Flowtyping]]
-==== Flow typing
-
-Although this is not really recommended as a good practice, sometimes
-developers use the same untyped variable to store values of different
-types. Look at this method body:
-
-[source,groovy]
------------------------------------------------------------
-import groovy.transform.TypeChecked
-
-@TypeChecked test() {
-   def var = 123             // inferred type is int
-   var = "123"               // assign var with a String
-
-   println var.toInteger()   // no problem, no need to cast
-
-   var = 123
-   println var.toUpperCase() // error, var is int!
-} 
------------------------------------------------------------
-
-The var variable is initialized with an int. Then, a String is assigned.
-The "flow typing" algorithm follows the flow of assignment and
-understands that the variable now holds a String, so the static type
-checker will be happy with the toInteger() method added by Groovy on top
-of String. Next, a number is put back in the var variable, but then,
-when calling toUpperCase(), the type checker will throw a compilation
-error, as there’s no toUpperCase() method on Integer. +
-  +
-There are some special cases for the flow typing algorithm when a
-variable is shared with a closure which are interesting. What happens
-when a local variable is referenced in a closure inside a method where
-that variable is defined? Let’s have a look at this example:
-
-[source,groovy]
--------------------------------------------------------
-import groovy.transform.TypeChecked
-
-@TypeChecked test() {
-   def var = "abc"
-   def cl = {
-       if (new Random().nextBoolean()) var = new Date()
-   }
-   cl()
-   var.toUpperCase() // compilation error!
-} 
--------------------------------------------------------
-
-The var local variable is assigned a String, but then, var might be
-assigned a Date if some random value is true. Typically, it’s only at
-runtime that we really know if the condition in the if statement of the
-closure is made or not. Hence, at compile-time, there’s no chance the
-compiler can know if var now contains a String or a Date. That’s why the
-compiler will actually complain about the toUpperCase() call, as it is
-not able to infer that the variable contains a String or not. This
-example is certainly a bit contrived, but there are some more
-interesting cases:
-
-[source,groovy]
---------------------------------------------
-import groovy.transform.TypeChecked
-
-class A           { void foo() {} }
-class B extends A { void bar() {} }
-
-@TypeChecked test() {
-   def var = new A()
-   def cl = { var = new B() }
-   cl()
-   // var is at least an instance of A
-   // so we are allowed to call method foo()
-   var.foo()
-} 
---------------------------------------------
-
-In the test() method above, var is assigned an instance of A, and then
-an instance of B in the closure which is call afterwards, so we can at
-least infer that var is of type A. +
-  +
-All those checks added to the Groovy compiler are done at compile-time,
-but the generated bytecode is still the same dynamic code as usual — no
-changes in behavior at all.  +
-  +
-Since the compiler now knows a lot more about your program in terms of
-types, it opens up some interesting possibilities: what about compiling
-that type checked code statically? The obvious advantage will be that
-the generated bytecode will more closely resemble the bytecode created
-by the javac compiler itself, making statically compiled Groovy code as
-fast as plain Java, among other advantages. In the next section, we’ll
-learn more about Groovy’s static compilation.** +
-**
-
-[[Groovy20releasenotes-Staticcompilation]]
-=== Static compilation
-
-As we shall see in the following chapter about the JDK 7 alignments,
-Groovy 2.0 supports the new `invokedynamic` instruction of the JVM
-and its related APIs, facilitating the development of dynamic languages
-on the Java platform and bringing some additional performance to
-Groovy’s dynamic calls. However, unfortunately shall I say, JDK 7 is not
-widely deployed in production at the time of this writing, so not
-everybody has the chance to run on the latest version. So developers
-looking for performance improvements would not see much changes in
-Groovy 2.0, if they aren’t able to run on JDK 7. Luckily, the Groovy
-development team thought those developers could get interesting
-performance boost, among other advantages, by allowing type checked code
-to be compiled statically. +
-  +
-Without further ado, let’s dive in and use the new @CompileStatic
-transform:
-
-[source,groovy]
--------------------------------------
-import groovy.transform.CompileStatic
-
-@CompileStatic
-int squarePlusOne(int num) {
-   num * num + 1
-}
-
-assert squarePlusOne(3) == 10 
--------------------------------------
-
-This time, instead of using @TypeChecked, use @CompileStatic, and your
-code will be statically compiled, and the bytecode generated here will
-look like javac’s bytecode, running just as fast. Like the @TypeChecked
-annotation, @CompileStatic can annotate classes and methods, and
-@CompileStatic(SKIP) can bypass static compilation for a specific
-method, when its class is marked with @CompileStatic. +
-  +
-Another advantage of the javac-like bytecode generation is that the size
-of the bytecode for those annotated methods will be smaller than the
-usual bytecode generated by Groovy for dynamic methods, since to support
-Groovy’s dynamic features, the bytecode in the dynamic case contains
-additional instructions to call into Groovy’s runtime system. +
-  +
-Last but not least, static compilation can be used by framework or
-library code writers to help avoid adverse interactions when dynamic
-metaprogramming is in use in several parts of the codebase. The dynamic
-features available in languages like Groovy are what give developers
-incredible power and flexibility but if care is not taken, different
-assumptions can exist in different parts of the system with regards to
-what metaprogramming features are in play and this can have unintended
-consequences. As a slightly contrived example, consider what happens if
-you are using two different libraries, both of which add a similarly
-named but differently implemented method to one of your core classes.
-What behaviour is expected? Experienced users of dynamic languages will
-have seen this problem before and probably heard it referred to as
-"monkey patching". Being able to statically compile parts of your code
-base — those parts that don’t need dynamic features — shields you from
-the effects of monkey patching, as the statically compiled code doesn’t
-go through Groovy’s dynamic runtime system. Although dynamic runtime
-aspects of the language are not allowed in a static compilation context,
-all the usual AST transformation mechanisms work just as well as before,
-since most AST transforms perform their magic at compilation time. +
-  +
-In terms of performance, Groovy’s statically compiled code is usually
-more or less as fast as javac’s. In the few micro-benchmarks the
-development team used, performance is identical in several cases, and
-sometimes it’s slightly slower. +
-  +
-Historically, thanks to the transparent and seamless integration of Java
-and Groovy, we used to advise developers to optimize some hotspot
-routines in Java for further performance gains, but now, with this
-static compilation option, this is no longer the case, and people
-wishing to develop their projects in full Groovy can do so.** +
-**
-
-[[Groovy20releasenotes-TheJava7andJDK7theme]]
-== The Java 7 and JDK 7 theme
-
-The grammar of the Groovy programming language actually derives from the
-Java grammar itself, but obviously, Groovy provides additional nice
-shortcuts to make developers more productive. This familiarity of syntax
-for Java developers has always been a key selling point for the project
-and its wide adoption, thanks to a flat learning curve. And of course,
-we expect Groovy users and newcomers to also want to benefit from the
-few syntax refinements offered by Java 7 with its "Project Coin"
-additions. +
-  +
-Beyond the syntax aspects, JDK 7 also brings interesting novelties to
-its APIs, and for a first time in a long time, even a new bytecode
-instruction called `invoke dynamic`, which is geared towards helping
-implementors develop their dynamic languages more easily and benefit
-from more performance.** +
-**
-
-[[Groovy20releasenotes-ProjectCoinsyntaxenhancements]]
-=== Project Coin syntax enhancements
-
-Since day 1 (that was back in 2003 already!) Groovy has had several
-syntax enhancements and features on top of Java. One can think of
-closures, for example, but also the ability to put more than just
-discrete values in switch / case statements, where Java 7 only allows
-Strings in addition. So some of the Project Coin syntax enhancements,
-like Strings in switch, were already present in Groovy. However, some of
-the enhancements are new, such as binary literals, underscore in number
-literals, or the multi catch block, and Groovy 2 supports them. The sole
-omission from the Project Coin enhancements is the "try with
-resources" construct, for which Groovy already provides various
-alternatives through the rich API of the Groovy Development Kit.
-
-[[Groovy20releasenotes-Binaryliterals]]
-==== Binary literals
-
-In Java 6 and before, as well as in Groovy, numbers could be represented
-in decimal, octal and hexadecimal bases, and with Java 7 and Groovy 2,
-you can use a binary notation with the `0b` prefix:
-
-[source,groovy]
-------------------------------
-int x = 0b10101111
-assert x == 175
-
-byte aByte = 0b00100001
-assert aByte == 33
-
-int anInt = 0b1010000101000101
-assert anInt == 41285
-------------------------------
-
-[[Groovy20releasenotes-Underscoreinnumberliterals]]
-==== Underscore in number literals
-
-When writing long literal numbers, it’s harder on the eye to figure out
-how some numbers are grouped together, for example with groups of
-thousands, of words, etc. By allowing you to place underscore in number
-literals, it’s easier to spot those groups:
-
-[source,groovy]
---------------------------------------------------
-long creditCardNumber = 1234_5678_9012_3456L
-long socialSecurityNumbers = 999_99_9999L
-double monetaryAmount = 12_345_132.12
-long hexBytes = 0xFF_EC_DE_5E
-long hexWords = 0xFFEC_DE5E
-long maxLong = 0x7fff_ffff_ffff_ffffL
-long alsoMaxLong = 9_223_372_036_854_775_807L
-long bytes = 0b11010010_01101001_10010100_10010010
---------------------------------------------------
-
-[[Groovy20releasenotes-Multicatchblock]]
-==== Multicatch block
-
-When catching exceptions, we often replicate the catch block for two or
-more exceptions as we want to handle them in the same way. A workaround
-is either to factor out the commonalities in its own method, or in a
-more ugly fashion to have a catch-all approach by catching Exception, or
-worse, Throwable. With the multi catch block, we’re able to define
-several exceptions to be catch and treated by the same catch block:
-
-[source,groovy]
------------------------------------------------
-try {
-   /* ... */
-} catch(IOException | NullPointerException e) {
-   /* one block to handle 2 exceptions */
-}
------------------------------------------------
-
-[[Groovy20releasenotes-InvokeDynamicsupport]]
-=== Invoke Dynamic support
-
-As we mentioned earlier in this article, JDK 7 came with a new bytecode
-instruction called `invokedynamic`, as well as with its associated
-APIs. Their goal is to help dynamic language implementors in their job
-of crafting their languages on top of the Java platform, by simplifying
-the wiring of dynamic method calls, by defining "call sites" where
-dynamic method call section can be cached, "method handles" as method
-pointers, "class values" to store any kind of metadata along class
-objects, and a few other things. One caveat though, despite promising
-performance improvements, `invokedynamic` hasn’t yet fully been
-optimized inside the JVM, and doesn’t yet always deliver the best
-performance possible, but update after update, the optimizations are
-coming. +
-  +
-Groovy brought its own implementation techniques, to speed up method
-selection and invocation with "call site caching", to store
-metaclasses (the dynamic runtime equivalent of classes) with its
-metaclass registry, to perform native primitive calculations as fast as
-Java, and much more. But with the advent of `invokedynamic`, we can
-rebase the implementation of Groovy on top of these APIs and this JVM
-bytecode instruction, to gain performance improvements and to simplify
-our code base. +
-  +
-If you’re lucky to run on JDK 7, you’ll be able to use a new version of
-the Groovy JARs which has been compiled with the `invokedynamic`
-support. Those JARs are easily recognizable as they use the `-indy`
-classifier in their names.**  +
-**
-
-[[Groovy20releasenotes-Enablinginvokedynamicsupport]]
-==== Enabling invoke dynamic support
-
-Using the `indy` JARs is not enough, however, to compile your Groovy
-code so that it leverages the `invokedynamic` support. For that,
-you’ll have to use the –indy flag when using the `groovyc` compiler or
-the `groovy` command. This also means that even if you’re using the
-indy JARs, you can still target JDK 5 or 6 for compilation.  +
-  +
-Similarly, if you’re using the groovyc Ant task for compiling your
-projects, you can also specify the indy attribute:
-
-[source,xml]
--------------------------------------------------------------
-...
-<taskdef name="groovyc"
-        classname="org.codehaus.groovy.ant.Groovyc"
-        classpathref="cp"/>
-...
-<groovyc srcdir="${srcDir}" destdir="${destDir}" indy="true">
-   <classpath>
-...
-   </classpath>
-</groovyc>
-... 
--------------------------------------------------------------
-
-The Groovy Eclipse Maven compiler plugin hasn’t yet been updated with
-the support of Groovy 2.0 but this will be the case shortly. For GMaven
-plugin users, although it’s possible to configure the plugin to use
-Groovy 2.0 already, there’s currently no flag to enable the invoke
-dynamic support. Again, GMaven will also be updated soon in that
-regard. +
-  +
-When integrating Groovy in your Java applications, with GroovyShell, for
-example, you can also enable the invoke dynamic support by passing a
-CompilerConfiguration instance to the GroovyShell constructor on which
-you access and set the optimization options:
-
-[source,groovy]
------------------------------------------------------------
-CompilerConfiguration config = new CompilerConfiguration();
-config.getOptimizationOptions().put("indy", true);
-config.getOptimizationOptions().put("int", false);
-GroovyShell shell = new GroovyShell(config); 
------------------------------------------------------------
-
-As invokedynamic is supposed to be a full replacement to dynamic method
-dispatch, it is also necessary to disable the primitive optimizations
-which generate extra bytecode that is here to optimize edge cases. Even
-if it is in some cases slower than with primitive optimizations
-activated, future versions of the JVM will feature an improved JIT which
-will be capable of inlining most of the calls and remove unnecessary
-boxings.
-
-[[Groovy20releasenotes-Promisingperformanceimprovements]]
-==== Promising performance improvements
-
-In our testing, we noticed some interesting performance gains in some
-areas, whereas other programs could run slower than when not using the
-invoke dynamic support. The Groovy team has further performance
-improvements in the pipeline for Groovy 2.1 however, but we noticed the
-JVM isn’t yet finely tuned and still has a long way to go to be fully
-optimized. But fortunately, upcoming JDK 7 updates (in particular update
-8) should already contain such improvements, so the situation can only
-improve. Furthermore, as invoke dynamic is used for the implementation
-of JDK 8 Lambdas, we can be sure more improvements are forthcoming.** +
-**
-
-[[Groovy20releasenotes-AmoremodularGroovy]]
-== A more modular Groovy
-
-We’ll finish our journey through the new features of Groovy 2.0 by
-speaking about modularity. Just like Java, Groovy is not just a
-language, but it’s also a set of APIs serving various purposes:
-templating, Swing UI building, Ant scripting, JMX integration, SQL
-access, servlet serving, and more. The Groovy deliverables were bundling
-all these features and APIs inside a single big JAR. However, not
-everybody needs everything at all times in their own applications: you
-might be interested in the template engine and the servlets if you’re
-writing some web application, but you might only need the Swing builder
-when working on a rich desktop client program.**  +
-**
-
-[[Groovy20releasenotes-Groovymodules]]
-=== Groovy modules
-
-So the first goal of the modularity aspect of this release is to
-actually split the original Groovy JAR into smaller modules, smaller
-JARs. The core Groovy JAR is now twice as small, and we have the
-following feature modules available:** +
-  +
-**
-
-* Ant: for scripting Ant tasks for automating administration tasks
-* BSF: for integrating Groovy in your Java applications with the old
-Apache Bean Scripting Framework
-* Console: module containing the Groovy Swing console
-* GroovyDoc: for documenting your Groovy and Java classes
-* Groovysh: module corresponding to the Groovysh command-line shell
-* JMX: for exposing and consuming JMX beans
-* JSON: for producing and consuming JSON payloads
-* JSR-223: for integrating Groovy in your Java applications with the JDK
-6+ javax.scripting APIs
-* Servlet: for writing and serving Groovy script servlets and templates
-* SQL: for querying relational databases
-* Swing: for building Swing UIs
-* Templates: for using the template engine
-* Test: for some test support, like the GroovyTestCase, mocking, and
-more
-* TestNG: for writing TestNG tests in Groovy
-* XML: for producing and consuming XML documents
-
-With Groovy 2, you’re now able to just pick up the modules you’re
-interested in, rather than bringing everything on your classpath.
-However, we still provide the `all` JAR which contains everything, if
-you don’t want to complicate your dependencies for just a few megabytes
-of saved space. We also provide those JARs compiled with the `invokedynamic`
-support as well, for those running on JDK 7.
-
-[[Groovy20releasenotes-Extensionmodules]]
-=== Extension modules
-
-The work on making Groovy more modular also yielded an interesting new
-feature: extension modules. By splitting Groovy into smaller modules, a
-mechanism for modules to contribute extension methods has been created.
-That way, extension modules can provide instance and static methods to
-other classes, including the ones from the JDK or third-party libraries.
-Groovy uses this mechanism to decorate classes from the JDK, to add new
-useful methods to classes like String, File, streams, and many more —
-for example, a getText() method on URL allows you to retrieve the
-content of a remote URL through an HTTP get. Notice also that those
-extension methods in your modules are also understood by the static type
-checker and compiler. But let’s now have a look at how you can add new
-methods to existing types.** +
-**
-
-[[Groovy20releasenotes-Contributinganinstancemethod]]
-==== Contributing an instance method
-
-To add new methods to an existing type, you’ll have to create a helper
-class that will contain those methods. Inside that helper class, all the
-extension methods will actually be public (the default for Groovy but
-required if implementing in Java) and static (although they will be
-available on instances of that class). They will always take a first
-parameter which is actually the instance on which this method will be
-called. And then following parameters will be the parameters passed when
-calling the method. This is the same convention use for Groovy
-categories. +
-  +
-Say we want to add a greets() method on String, that would greet the
-name of the person passed in parameters, so that you could that method
-as follow:
-
-[source,groovy]
--------------------------------------------------------------
-assert "Guillaume".greets("Paul") == "Hi Paul, I'm Guillaume"
--------------------------------------------------------------
-
-To accomplish that, you will create a helper class with an extension
-method like so:
-
-[source,groovy]
----------------------------------------------------
- 
-package com.acme
-
-class MyExtension {
-   static String greets(String self, String name) {
-       "Hi ${name}, I'm ${self}"
-   }
-}
----------------------------------------------------
-
-[[Groovy20releasenotes-Contributingastaticmethod]]
-==== Contributing a static method
-
-Static extension methods are defined using the same mechanism, but have
-to be declared in a separate class. The extension module descriptor then
-determines whether the class provides instance or static methods. Let’s
-add a new static method to Random to get a random integer between two
-values, you could proceed as in this class:
-
-[source,groovy]
----------------------------------------------------------------
-package com.acme
-
-class MyStaticExtension {
-   static String between(Random selfType, int start, int end) {
-       new Random().nextInt(end - start + 1) + start
-   }
-} 
----------------------------------------------------------------
-
-That way, you are able to use that extension method as follows:
-
-[source,groovy]
---------------------
-Random.between(3, 4)
---------------------
-
-[[Groovy20releasenotes-Extensionmoduledescriptor]]
-==== Extension module descriptor
-
-Once you’ve coded your helper classes (in Groovy or even in Java)
-containing the extension methods, you need to create a descriptor for
-your module. You must create a file called
-org.codehaus.groovy.runtime.ExtensionModule in the META-INF/services
-directory of your module archive. Four essential fields can be defined,
-to tell the Groovy runtime about the name and version of your module, as
-well as to point at your helper classes for extension methods with a
-comma-separated list of class names. Here is what our final module
-descriptor looks like:
-
----------------------------------------------------
-moduleName = MyExtension
-moduleVersion = 1.0
-extensionClasses = com.acme.MyExtension
-staticExtensionClasses = com.acme.MyStaticExtension
----------------------------------------------------
-
-With this extension module descriptor on the classpath, you are now able
-to use those extension methods in your code, without needing an import
-or anything else, as those extension methods are automatically
-registered.** +
-**
-
-[[Groovy20releasenotes-Grabbinganextension]]
-==== Grabbing an extension
-
-With the @Grab annotation in your scripts, you can fetch dependencies
-from Maven repositories like Maven Central. With the addition of the
-@GrabResolver annotation, you can specify your own location for your
-dependencies as well. If you are "grabbing" an extension module
-dependency through this mechanism, the extension method will also be
-installed automatically. Ideally, for consistency, your module name and
-version should be coherent with the artifact id and version of your
-artifact.** +
-**
-
-[[Groovy20releasenotes-Summary]]
-== Summary
-
-Groovy is very popular among Java developers and offers them a mature
-platform and ecosystem for their application needs. But without resting
-still, the Groovy development team continues to further improve the
-language and its APIs to help its users increase their productivity on
-the Java platform.  +
-  +
-Groovy 2.0 responds to three key themes:** +
-**
-
-* More performance: with the support of JDK 7 Invoke Dynamic to speed up
-Groovy for those lucky to have JDK 7 already in production, but also
-with static compilation for JDK 5 and beyond for everyone, and
-particularly those ready to abandon some aspects of dynamicity to shield
-themselves from the reach of "monkey patching" and to gain the same
-speed as Java.
-* More Java friendliness: with the support of the Java 7 Project Coin
-enhancements to keep Groovy and Java as close syntax cousins as ever,
-and with the static type checker to have the same level of  feedback and
-type safety as provided by the javac compiler for developers using
-Groovy as a Java scripting language
-* More modularity: with a new level of modularity, Groovy opens the
-doors for smaller deliverables, for example for integration in mobile
-applications on Android, and allowing the Groovy APIs to grow and evolve
-with newer versions and newer extension modules, as well as allowing
-users to contribute extension methods to existing types.
diff --git a/site/src/site/releasenotes/groovy-2.1.adoc b/site/src/site/releasenotes/groovy-2.1.adoc
deleted file mode 100644
index 187eb20..0000000
--- a/site/src/site/releasenotes/groovy-2.1.adoc
+++ /dev/null
@@ -1,963 +0,0 @@
-With this new 2.1 release, Groovy:
-
-* has *full support for the JDK 7 `invoke dynamic`* instruction and
-API,
-* goes beyond conventional static type checking capabilities with a
-*special annotation for closure delegate based Domain-Specific
-Languages* and *static type checker extensions*,
-* provides *additional compilation customization* options,
-* and features a *meta-annotation facility* for combining annotations
-elegantly.
-
-[[Groovy21releasenotes-Fullinvokedynamicsupport]]
-== Full invoke dynamic support
-
-With Groovy 2.0, we introduced support for JDK 7’s `invoke dynamic`
-bytecode instruction and API to benefit from the dedicated support and
-performance improvements for dynamic languages starting with JDK
-7. Groovy 2.1 brings *full support for `invokedynamic`* (aka
-`indy`), completing the work introduced in 2.0. 
-
-In Groovy 2.0, most method calls were using the `invokedynamic`
-instruction, but there have been exceptions: constructor calls
-or "spread calls" (where you pass arguments with the "spread
-operator"). Groovy 2.1 completes the implementation started in 2.0.
-Now, code compiled with the `invokedynamic` JAR on JDK 7 will not be
-using the old "call site caching" code which served us well for
-getting good performance for Groovy prior to JDK 7. If you are lucky
-enough to be using JDK 7 in production, be sure to use the Groovy 2.1
-`indy` JAR to benefit from the full `invokedynamic` support. The
-`indy` version is bundled with the binary download package and can be
-obtained via Maven (all JARs with `invokedynamic` support are
-postfixed with `-indy`).
-
-You can link:../indy.html[learn more about the invoke dynamic support].
-
-[[Groovy21releasenotes-GPars10]]
-== GPars 1.0
-
-Groovy 2.1’s distribution *bundles the recently released GPars 1.0*, the
-one-stop shop for all your concurrency needs. This new version comes
-with various enhancements in the asynchronous
-functions, link:http://www.jroller.com/vaclav/entry/broken_promises[promises],
-parallel collections, actors, dataflow
-support, link:http://www.jroller.com/vaclav/entry/gpars_actors_and_dataflow_for[Google App Engine support], etc.
-
-Be sure to check
-the link:http://www.jroller.com/vaclav/entry/i_like_the_smell_of[release announcement] and read the “what’s new section”
-of the GPars user guide.
-You can also have a look at the
-detailed link:https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123&version=17007[JIRA release notes].
-
-[[Groovy21releasenotes-DelegatesToannotation]]
-== @DelegatesTo annotation
-
-Authoring Domain-Specific Languages (DSLs) has always been a sweet spot
-for Groovy, and the availability of closures and the malleable syntax of
-the language has allowed DSL implementors to build nice mini-languages
-like "builders", to represent configuration or hierarchical data.
-
-Thanks to the various delegation strategies of
-the `groovy.lang.Closure` class, a range of very powerful techniques can
-be used when building DSLs. Due to different implementation techniques,
-inferring type information within the DSL has not been straightforward.
-This is especially an issue when DSLs should have proper IDE support
-(e.g. code completion).
-
-The very popular and powerful link:http://www.gradle.org[Gradle] build
-automation system uses its own DSL for build script specifications. On
-the DSL implementation layer are various methods taking closures as
-arguments, and with special delegation strategies delegating to some
-other parameter passed to them. Providing good IDE support for Groovy
-DSLs — like the one in Gradle — has presented a few challenges. Hence
-the need for the `@DelegatesTo` annotation.
-
-Groovy 2.1 introduces the *`@groovy.lang.DelegatesTo` annotation* as
-a *documentation mechanism* for DSL users and maintainers, as an *IDE
-hint for providing better coding assistance*, and as additional
-information that can be *taken into account by the static type checker
-and static compilation* introduced in Groovy 2.0. Let’s see that in
-action with some examples.
-
-A closure delegate based method usage might look like the following:
-
-[source,groovy]
-------------
-exec {
-    launch()
-}
-------------
-
-The `exec()` method takes a closure as parameter, and the
-actual `launch()` call inside that closure is delegated to some
-particular object (the closure delegate), instead of being dispatched to
-the enclosing class. The above code would only fail at runtime (not at
-compile-time!), as the `launch()` method can not be found in the closure
-context. In order to delegate method calls within the closure’s code
-block to another object instance, we need to set the closure delegate.
-
-Setting a closure delegate is as easy as
-invoking `Closure#setDelegate(Object)`: 
-
-[source,groovy]
--------------------------------
-void exec(Closure c) {
-    c.delegate = new Executor()
-    c()
-}
--------------------------------
-
-The delegate can be set to an arbitrary object instance (here, an
-instance of an `Executor` class that has a `launch()` method). When the
-delegate is set accordingly, we can execute the closure code.
-
-Note that usually, to avoid odd behavior if the closure is used in
-multiple threads, we tend to clone that closure.
-
-The problem with delegate objects are IDEs not knowing about them. Given
-our example, most IDEs will underline the `launch()` method as being an
-unknown method in this context.
-
-This is where `@DelegatesTo` comes into play. By adding
-the `@DelegatesTo` annotation to DSL methods like `exec(Closure)`, IDEs
-get the actual delegate type and other meta-data.
-
-A future update might let GroovyDoc show the details about the
-annotation usage to help users know what methods they can call, what
-properties they can access, etc.
-
-Here’s what your `exec()` method will look like with the annotation:
-
-[source,groovy]
----------------------------------------------
-void exec(@DelegatesTo(Executor) Closure c) {
-    c.delegate = new Executor()
-    c()
-}
----------------------------------------------
-
-Besides specifying the actual delegate type, `@DelegatesTo`  can be used
-to hint at the actual resolve strategy. The resolve strategy determines
-the order in which non-closure method / property calls are looked up. In
-our example, `Closure.DELEGATE_FIRST` will be used. This indicates the
-closure will attempt to resolve against the given delegate object in
-first place, followed by the owner object:
-
-[source,groovy]
---------------------------------------------------------------------------------
-import static groovy.lang.Closure.*
-// ...
-void exec(@DelegatesTo(strategy = DELEGATE_FIRST, value = Executor) Closure c) {
-    c.delegate = new Executor()
-    c.resolveStrategy = DELEGATE_FIRST
-    c()
-}
---------------------------------------------------------------------------------
-
-IDE support is not the only reason to use `@DelegatesTo`. The *static
-type checker and static compiler take the additional meta-data specified
-by the @DelegatesTo annotation into account*. If there is a typo in the
-closure code block, the type checker will complain. And if you use the
-static compilation capability introduced in Groovy 2.0, the calls will
-be compiled statically.
-
-Let’s say we wouldn’t call `launch()` but `launchr()` in the closure
-code block, we would get a message like:
-
-----------------------------------------------------------------------------------
-[Static type checking] - Cannot find matching method DelegatesToSamples#launchr().
-Please check if the declared type is right and if the method exists.
-----------------------------------------------------------------------------------
-
-*Static type checks for custom Domain-Specific Languages* is a very
-convenient feature in Groovy 2.1!
-
-In addition, Groovy 2.1 features other abilities for even further type
-checking your DSLs, as you shall see in the following section.
-
-Before moving on, let’s mention a few closing details
-about `@DelegatesTo`.
-
-`@DelegatesTo` allows to specify the receiver calls are delegated to.
-For instance, when a delegate calls a method or property on another
-method parameter. Imagine our `exec()` method taking
-the `Executor` argument instance as delegate:
-
-[source,groovy]
-----------------------------------------------------------
-void exec(Executor ex, @DelegatesTo(Executor) Closure c) {
-    c.delegate = ex
-    c()
-}
-----------------------------------------------------------
-
-In this example, the information is lost that the call is delegated to
-the `ex` parameter. Thanks to the `@DelegatesTo.Target` annotation we
-can specify ex as target for being the delegate object:
-
-[source,groovy]
---------------------------------------------------------------------
-void exec(@DelegatesTo.Target Executor ex, @DelegatesTo Closure c) {
-    c.delegate = ex
-    c()
-}
---------------------------------------------------------------------
-
-What if we had several `Executor` parameters, how would we differentiate
-which one we’re targeting?
-
-[source,groovy]
-------------------------------------------------------
-void exec(
-    @DelegatesTo.Target('param1') Executor ex,
-    @DelegatesTo(target = 'param1') Closure c) { ... }
-------------------------------------------------------
-
-The delegation "target" can be specified with an arbitrary id. In the
-example above it is `param1`.
-
-One last very nice little feature: if you are using static type
-checking, you can omit the type of the parameter
-and `@DelegatesTo` combined with "flow typing" (the ability of
-following the current type of an untyped variable) would still know if
-method calls are valid:
-
-[source,groovy]
------------------------------------------------------------
-void exec(@DelegatesTo.Target ex, @DelegatesTo Closure c) {
-    c.delegate = ex
-    c()
-}
-
-class Executor {
-    void launch() {}
-}
-
-def ex = new Executor()
-
-exec(ex) {
-    launch()
-}
------------------------------------------------------------
-
-We’ve seen that the `@DelegatesTo` helps documenting, tooling, and
-checking Domain-Specific Languages in the specific context of closure
-delegate based methods, but we hinted at the fact we can go beyond, in
-terms of static type checking for your DSLs.
-
-For more details take a look at
-the link:{DOCS_BASEURL}/html/documentation/#__code_delegatesto_code[@DelegatesTo documentation].
-
-[[Groovy21releasenotes-Typecheckerextensions]]
-== Type checker extensions
-
-Static type checking was introduced in Groovy 2.0, but Groovy 2.1 goes
-beyond built-in type checks and offers a way to *create type checker
-extensions*. This is great news for Groovy scripts, configuration files,
-or Domain-Specific Languages implementations as they can can be "type
-checked" with more advanced, domain-specific rules. As an example, it
-would be possible to create a custom DSL type checker that throws
-compilation errors when certain verbs of the DSL are not recognized, or
-tells this other noun is allowed even if it’s a dynamic name bound at
-runtime, or type checks literal strings containing SQL code to see if
-the syntax is correct, and more.
-
-Imagine a script, where we define a small robot class and instantiate
-it:
-
-[source,groovy]
-----------------------------------------------------
-class Robot {
-    void move(String dist) { println "Moved $dist" }
-}
-
-robot = new Robot()
-----------------------------------------------------
-
-And we want to operate our robot in the `operate()` method, but we want
-this method to be type checked:
-
-[source,groovy]
------------------------------
-@groovy.transform.TypeChecked
-void operate() {
-    robot.move "left"
-}
-
-operate()
------------------------------
-
-The static type checker will complain as it doesn’t understand where the
-`robot` variable is coming from, as it’s going through the binding of
-the script — note that we could teach the type checker to figure out
-binding-bound variables. It will throw an error telling us that
-the robot variable was undeclared.
-
-But by utilizing type checker extensions, we can hook into the type
-checking process to teach it how to handle unresolved variables! In
-order to do that, we’ll specify an extension script through the newly
-introduced `extensions` annotation parameter of
-the `@TypeChecked` annotation:
-
-[source,groovy]
----------------------------------------------
-@TypeChecked(extensions = 'RobotMove.groovy')
-void operate() {
-    robot.move "left"
-}
----------------------------------------------
-
-Now it’s time to define the type checker extension script
-called `RobotMove.groovy`. The type checker extension script is written
-by applying a new DSL — the "type checking DSL". The DSL provides
-various hooks for type checker extensions to register to. Going back to
-the example above, we register for unresolved variables using
-the `unresolvedVariable` hook:
-
-[source,groovy]
--------------------------------------------------------------------------------
-unresolvedVariable { VariableExpression var ->
-    if ('robot' == var.name) {
-        def robotClass = context.source.AST.classes.find { it.name == 'Robot' }
-        storeType(var, robotClass)
-        handled = true
-    }
-}
--------------------------------------------------------------------------------
-
-The type checker extension script needs to be on the classpath. If this
-is the case, the script gets notified during compile-time when the
-static type checker encounters an unresolved variable. The unresolved
-variable closure is handed over a `VariableExpression`.
-
-The `VariableExpression` is an object directly from Groovy’s AST
-(Abstract Syntax Tree). It is a representation of the unresolved
-variable expression. The script checks if the variable is named `robot`,
-if this is the case, we lookup a `ClassNode` representing
-the `Robot` class, and store the type of that variable back in the AST.
-At the end, the `handled` property is set to true, to indicate the type
-checker already managed that variable. As a consequence, you won’t get
-the compilation error about that undeclared variable.
-
-To continue the journey, let’s consider the case where the user enters a
-wrong direction string. We could of course use an enum or some other
-class containing direction constants, but for the sake of the example,
-we’ll have a look at how we can teach the type checker to inspect
-strings and how you can actually throw your own compilation errors.
-
-For that purpose, let’s say a robot can only move left, right, forward
-and backward. And now, let’s change our robot move instruction to:
-
-[source,groovy]
----------------------
-robot.move "sideways"
----------------------
-
-The robot is not allowed to move sideways, so we should instruct the
-type checker to throw a compilation error if it encounters a direction
-the robot will not be able to understand. Here’s how we can achieve our
-goal, by adding a new event handler to our `RobotMove.groovy` script:
-
-[source,groovy]
----------------------------------------------------------------------------------------
-afterMethodCall { MethodCall mc ->
-    def method = getTargetMethod(mc)
-    if (mc.objectExpression.name == 'robot' && method.name == 'move') {
-        def args = getArguments(mc)
-        if (args && isConstantExpression(args[0]) && args[0].value instanceof String) {
-            def content = args[0].text
-            if (!(content in ['left', 'right', 'backward', 'forward'])) {
-                addStaticTypeError("'${content}' is not a valid direction", args[0])
-            }
-        }
-    }
-}
----------------------------------------------------------------------------------------
-
-This handler receives a `MethodCall` expression. We are using
-the `getTargetMethod()` utility method to retrieve the
-corresponding `MethodNode`. We check that the method call is a call to
-our `robot`, and that the name of the method corresponds to
-themove method. Then, we fetch the arguments passed to that method call,
-and if we’re passed a direction in the form of a string constant, we are
-checking that the direction is an actual allowed direction. If this is
-not the case, we are adding a new static typing compilation error into
-the mix, so that the compiler will yell at the poor user because he used
-a direction which is forbidden and not understood by our robot.
-
-This second example is also interesting in a way that it shows how you
-can even add compilation checks on things like literal strings on a
-domain-specific level, paving the way for possible checks on sprintf
-strings, on SQL or HQL code in strings, etc, allowing you to go even
-further that what the Java compiler actually checks.
-
-The extension script can make use of various event oriented extension
-points and utility methods coming from the `TypeCheckingExtension` class
-from Groovy, such as:
-
-* unresolvedVariable
-* unresolvedProperty
-* unresolvedAttribute
-* methodNotFound
-* incompatibleAssignment
-* beforeVisitMethod
-* afterVisitMethod
-* beforeVisitClass
-* afterVisitClass
-* beforeMethodCall
-* afterMethodCall
-* onMethodSelection
-* setup
-* finish
-
-The two examples are just the tip of the iceberg, but we will work out
-more complete documentation of the various extension points and utility
-methods going forward.
-
-For more details take a look at
-the link:http://docs.groovy-lang.org/latest/html/documentation/type-checking-extensions.html[type checking extensions documentation].
-
-[[Groovy21releasenotes-Compile-time-Meta-annotations]]
-== Compile-time Meta-annotations
-
-Annotations are a great way to add supplementary meta-data to classes,
-methods, fields, and other source code elements, thus frameworks,
-libraries, and even Groovy’s homegrown AST transformations can take
-advantage of them to do some special treatments to the corresponding AST
-nodes. Every now and then the use case arises to reuse a combination of
-annotations, potentially at the expense of a galore of at-signs that
-obscure the general intent of that particular combination.
-
-To group annotations together, to make the intent clearer or to
-streamline your code, Groovy 2.1 offers a *meta-annotation system, which
-allows to combine other annotations into one "alias" annotation*.
-
-Imagine we are using some annotations defining constraints on properties
-of your class, like `@NotNull`, `@Length`, or `@Pattern`, which could be
-defined as follows:
-
-[source,groovy]
--------------------------------
-@interface NotNull {}
-
-@interface Length {
-    int value() default 0
-}
-
-@interface Pattern {
-    String value() default ".*"
-}
--------------------------------
-
-An example of how to annotate an `ISBN` property with those annotations
-could look like this:
-
-[source,groovy]
----------------------------
-class Book {
-    @NotNull
-    @Length(10)
-    @Pattern(/\d{9}(\d|X)/)
-    String isbn10
-}
----------------------------
-
-For a single property, that’s quite a bit of annotation overload! And it
-could be the case of other domain classes with properties having the
-same validation rules as the ISBN property, where we would need to
-duplicate that pattern.
-
-As of Groovy 2.1, `@groovy.transform.AnnotationCollector` can be used to
-solve code duplication for this use case. `@AnnotationCollector` can be
-specified on annotation types and acts as meta-annotation. Whenever an
-annotation marked with it is found, it is replaced with its own
-annotations. Let’s illustrate this with our ISBN example.
-
-We will create a new annotation combination for the 13-digit ISBN
-standard, but this time, using
-the `@AnnotationCollector` meta-annotation:
-
-[source,groovy]
--------------------------------------
-@NotNull
-@Length(13)
-@Pattern(/\d{12}(\d|X)/)
-@groovy.transform.AnnotationCollector
-@interface ISBN13 {}
--------------------------------------
-
-`@ISBN13` as a single annotation can now be applied on code elements,
-instead of applying the entire annotation gang::
-
-[source,groovy]
------------------
-class Book {
-    // ...
-    @ISBN13
-    String isbn13
-}
------------------
-
-What is particularly interesting with such *meta-annotations* is that
-they are actually *replaced at compilation time with
-the _real_ annotations*. So if you counted the number of annotations on
-the `isbn13` property, you would count 3
-(`@NotNull`, `@Length` and `@Pattern`). Thus, your underlying framework
-doesn’t need to know about that meta-annotation solution and act
-accordingly.
-
-[[Groovy21releasenotes-Alternatenotation]]
-=== Alternate notation
-
-In our example above, we annotated our meta-annotation with the
-annotations that are then combined together. But for annotations for
-which you don’t need to specify arguments, you could have also passed
-the names of the annotations to combine as parameters to the annotation
-collector:
-
-[source,groovy]
-------------------------------------------------------------
-import groovy.transform.*
-@groovy.transform.AnnotationCollector([ToString, Singleton])
-@interface ChattySingleton {}
-------------------------------------------------------------
-
-In the above case, we combine
-the `@Singleton` and `@ToString` transformation into a meta-annotation
-called `@ChattySingleton`.
-
-[[Groovy21releasenotes-Passingparameters]]
-=== Passing parameters
-
-If you need to pass some specific parameter to one of the underlying
-annotations which are combined, you can still do so by passing the
-parameter to the meta-annotation.
-
-Let’s assume we need to combine the following annotations:
-
-[source,groovy]
--------------------------------------------
-@interface Service {}
-
-@interface Transactional {
-    String propagation() default "required"
-}
--------------------------------------------
-
-We define the meta-annotation combining both the above annotations:
-
-[source,groovy]
----------------------------------------------------------------
-@groovy.transform.AnnotationCollector([Service, Transactional])
-@interface TransactionalService {}
----------------------------------------------------------------
-
-But we want to change the propagation strategy for the
-underlying `@Transactional` annotation, we do so by passing the
-parameter to the meta-annotation:
-
-[source,groovy]
-------------------------------------------------
-@TransactionalService(propagation = "mandatory")
-class BankingService { }
-------------------------------------------------
-
-Note that if two combined annotations share the same parameter name, the
-last annotation declared wins and gets the parameter passed to the
-meta-annotation.
-
-[[Groovy21releasenotes-Customprocessor]]
-=== Custom processor
-
-If you need even more flexibility, meta-annotations allow you to define
-custom processors. The role of the custom processor is to go beyond the
-simple exchange of the meta-annotation with the combined annotations, to
-further customize the logic of that transformation.
-
-Custom processors must be precompiled to take action, so we’ll create
-our processor, and then evaluate our final example with `GroovyShell`,
-but first, let’s talk about the use case.
-
-We have two validation annotations for defining a minimum and maximum
-value for an integer property:
-
-[source,groovy]
----------------------------
-@interface Min {
-    int value() default 0
-}
-
-@interface Max {
-    int value() default 100
-}
----------------------------
-
-If we want to define a range of values, with a lower and an upper bound,
-we could define a new annotation and implement the associated validation
-logic, or we could use custom meta-annotation processors to replace a
-range annotation with a minimum and a maximum one.
-
-So instead of writing:
-
-[source,groovy]
------------------------
-class Room {
-    @Min(1)
-    @Max(4)
-    int numberOfPersons
-}
------------------------
-
-We could write:
-
-[source,groovy]
-----------------------------
-class Room {
-    @Range(from = 1, to = 4)
-    int numberOfPersons
-}
-----------------------------
-
-With the normal replacement logic, there’s no way we can map the lower
-and upper bound values to the minimum and maximum annotation element
-default values. That is where custom processors come into play.
-
-Our meta-annotation definition will look like this:
-
-[source,groovy]
-------------------------------------------------------------
-@Min @Max
-@AnnotationCollector(processor = 'RangeAnnotationProcessor')
-@interface Range {}
-------------------------------------------------------------
-
-Notice how we specify that the `@Range` annotation is a combination
-of `@Min` and `@Max`, and more importantly, how we pass a processor
-parameter to the `@AnnotationCollector` to instruct it about our custom
-meta-annotation processing logic.
-
-In order to create a custom processor, you have to extend
-the `AnnotationCollectorTransform` class and override
-the `visit()` method:
-
-[source,groovy]
--------------------------------------------------------------------------------
-import org.codehaus.groovy.transform.AnnotationCollectorTransform
-import org.codehaus.groovy.ast.*
-import org.codehaus.groovy.control.SourceUnit
-
-class RangeAnnotationProcessor extends AnnotationCollectorTransform {
-    List<AnnotationNode> visit(AnnotationNode collector,
-                               AnnotationNode usage,
-                               AnnotatedNode annotated,
-                               SourceUnit src) {
-
-        def minExpr = usage.getMember('from')
-        def maxExpr = usage.getMember('to')
-
-        def (minAnno, maxAnno) = getTargetAnnotationList(collector, usage, src)
-
-        minAnno.addMember('value', minExpr)
-        maxAnno.addMember('value', maxExpr)
-
-        usage.members.remove('from')
-        usage.members.remove('to')
-
-        return [minAnno, maxAnno]
-    }
-}
--------------------------------------------------------------------------------
-
-A few words about the parameters : the `collector` corresponds to
-the `@Range` annotation definition, `usage` to the actual usage of
-the `@Range` annotation, `annotated` is the annotated class,
-and `src` is script being compiled.
-
-We start our implementation of the processor by retrieving the numeric
-expressions of the bounds defined as the from and to annotation
-parameters, because we’ll pass those values back to the
-underlying `@Min` and `@Max` combined annotations. In order to do that,
-we retrieve the `@Min` and `@Max` combined annotations thanks to
-the `getTargetAnnotationList()` method. We then set the values of
-the `@Min` and `@Max` annotations to the expressions we’ve retrieved
-before. We remove the from and to bounds from
-the `@Range` meta-annotation since those parameters
-aren’t really defined on a real annotation but on a meta-annotation. And
-last, we return the two `@Min` and `@Max` annotations. If you wanted the
-Groovy compiler to do its usual replacement logic, you could have also
-called `super.visit(...)`, but in our case it wasn’t needed.
-
-The full example can be found in this Gist on
-Github: https://gist.github.com/4563430
-
-Additional details can be found in the
-link:http://www.groovy-lang.org/objectorientation.html#_meta_annotations[meta-annotations documentation].
-
-[[Groovy21releasenotes-Compilationcustomization]]
-== Compilation customization
-
-[[Groovy21releasenotes-Custombasescriptclassflag]]
-=== Custom base script class flag
-
-When integrating and evaluating Groovy scripts in an application for
-business rules or Domain-Specific Languages, it is often valuable to
-define a base script class, in order to add various utility methods,
-properties, or interception mechanisms for missing methods or
-properties.
-
-The `CompilerConfiguration` object, that you can pass
-to `GroovyShell` and other integration mechanisms, allows you to specify
-a base script class with the `setScriptBaseClass()` method.
-
-As of Groovy 2.1, we introduce the ability to define a base script class
-reference for your scripts via an additional command-line option `-b` /
- `--basescript` for the `groovyc` command, as well as for
-the `groovy` command.
-
-Here’s an example using a script called `businessRule.groovy`:
-
-[source,groovy]
------------------------------------
-assert lookupRate(EUR, USD) == 1.33
------------------------------------
-
-In the above script, we notice two things: the usage of
-a `lookupRate()` method, and two undeclared variables: `EUR` and `USD`.
-Neither the method, nor the variables have been defined in our script.
-Instead, they are provided by a base script class, which can look like
-the following `ExchangeRateBaseScript.groovy` class:
-
-[source,groovy]
---------------------------------------------------------
-abstract class ExchangeRateBaseScript extends Script {
-    def lookupRate(String currency1, String currency2) {
-        if (currency1 == 'EUR' && currency2 == 'USD')
-            return 1.33
-        else return 1
-    }
-
-    def getProperty(String name) { name }
-}
---------------------------------------------------------
-
-The `lookupRate()` method used in our script is declared in the the base
-class, and the two currencies are retrieved via
-the `getProperty()` method.
-
-Now it’s time to wire them together, by instructing the groovyc compiler
-or the `groovy` command line launcher to use our base script class for
-all `groovy.lang.Script` descendants:
-
----------------------------------------------------------------------
-groovy --basescript ExchangeRateBaseScript.groovy businessRule.groovy
----------------------------------------------------------------------
-
-[[Groovy21releasenotes-Compilerconfigurationscript]]
-=== Compiler configuration script
-
-Similarly to the `--basescript` flag, there’s another new option for
-the `groovy` and `groovyc` commands: the `--configscript` flag. Its
-purpose is to let you further configure the compiler, in a configuration
-script, by parameterizing the `CompilerConfiguration` object used for
-the compilation.
-
-With a `CompilerConfiguration`, you can customize the various aspects of
-the Groovy compilation process. For example, you can specify various
-compilation customizers introduced in Groovy 1.8. Imagine you want to
-add a new default import to your classes, like importing
-all `java.lang.Math` functions and constants, so that your scripts and
-classes don’t have to prefix those functions and constants all the time,
-and to avoid having to do that import wherever needed. Here’s how you
-can proceed.
-
-At first, your script, `mathFormula.groovy`, contains the following
-lines:
-
-[source,groovy]
-------------------------------
-import static java.lang.Math.*
-
-assert sin(PI/2) == 1
-------------------------------
-
-For evaluating such math expressions, you wish to make the static import
-implicit, so that the final script will actually look like this:
-
-[source,groovy]
----------------------
-assert sin(PI/2) == 1
----------------------
-
-If you’d run it as is, you’d get an error message saying:
-
--------------------------------------------
-No such property: PI for class: mathFormula
--------------------------------------------
-
-We need to use `CompilerConfiguration` to do add an `ImportCustomizer`.
-We’ll create ai `mportConfigurer.groovy` script with the content below:
-
-[source,groovy]
----------------------------------------------------------------
-import org.codehaus.groovy.control.customizers.ImportCustomizer
-
-def importCustomizer = new ImportCustomizer()
-importCustomizer.addStaticStar('java.lang.Math')
-
-configuration.addCompilationCustomizers(importCustomizer)
----------------------------------------------------------------
-
-We import and then instantiate an `ImportCustomizer`, on which we ask
-for a static star import of the methods and constants of
-the `java.lang.Math` class. Eventually, we pass that customizer to
-the `configuration` variable, which is an instance
-of `CompilerConfiguration` that will be used for the compilation of your
-math formula.
-
-Now, we are able to execute your formula with the following
-command-line:
-
-----------------------------------------------------------------
-groovy --configscript importConfigurer.groovy mathFormula.groovy
-----------------------------------------------------------------
-
-[[Groovy21releasenotes-Source-awarecustomizer]]
-=== Source-aware customizer
-
-If you use the groovy compiler to compile all your classes, one drawback
-of the approach above is that the customization applies globally to all
-classes that are going to be compiled. You may want to add certain
-default imports only in certain classes (ie. scripts containing math),
-but you might want to do something different for other classes, like
-adding a `@ToString` transformation to all the domain classes of your
-application. For that purpose, a new customizer was created,
-the `SourceAwareCustomizer`, to let you filter which classes should be
-impacted by particular compilation customizations, such as filtering by
-class name, by file extension, or by a custom logic.
-
-Coming back to our previous example, let’s add the default import to
-our `mathFormula.groovy` script, but add a `@ToString` transformation to
-the `MyDomain.groovy` class:
-
-[source,groovy]
---------------------------------------------------------------------------
-import org.codehaus.groovy.control.customizers.*
-import groovy.transform.ToString
-
-def importCustomizer = new ImportCustomizer()
-importCustomizer.addStaticStar('java.lang.Math')
-
-configuration.addCompilationCustomizers(
-    new SourceAwareCustomizer(new ASTTransformationCustomizer(ToString)) {
-        boolean acceptBaseName(baseName) { baseName ==~ 'MyDomain' }
-    },
-    new SourceAwareCustomizer(importCustomizer) {
-        boolean acceptBaseName(baseName) { baseName ==~ 'mathFormula' }
-    })
---------------------------------------------------------------------------
-
-[[Groovy21releasenotes-Compilercustomizationbuilder]]
-=== Compiler customization builder
-
-The more complex the customization becomes, the more cumbersome the
-above configuration becomes to write too, that’s why Groovy 2.1 also
-provides a builder for building these types of configurations.
-
-The builder allows you to use a familiar declarative syntax and saves
-you from adding manually various imports. Let’s adapt our example above
-with the builder:
-
-[source,groovy]
----------------------------------------------------------------
-withConfig(configuration) {
-    source(basenameValidator: { it.endsWith('MyDomain') }) {
-        ast(ToString)
-    }
-    source(basenameValidator: { it.endsWith('mathFormula') }) {
-        imports {
-            staticStar 'java.lang.Math'
-        }
-    }
-}
----------------------------------------------------------------
-
-The configuration code is easier to read and maintain, thanks to the
-clarity brought by the builder approach. But we’ve only seen a couple
-examples of customization, and you should have a look at the other
-customizations available in the
-org.codehaus.groovy.control.customizers.builder package to learn more
-about them.
-
-More details can be found in the
-link:http://www.groovy-lang.org/dsls.html#compilation-customizers[compilation customizers documentation].
-
-[[Groovy21releasenotes-OtherMinorEnhancements]]
-== Other Minor Enhancements
-
-[[Groovy21releasenotes-AdditionalDGMmethods]]
-=== Additional DGM methods
-
-There are now `leftShift` and `withFormatter` methods for `Appendable`
-objects. +
-There are now methods for creating temporary directories and determining
-the total size of all files in a directory. +
-There is now a `collectMany` for maps (has been backported to earlier
-versions of Groovy too). +
-There is now a `closeStreams()` method for `Process` objects.
-
-[[Groovy21releasenotes-GroovyDoc]]
-=== GroovyDoc
-
-You can now explicitly set a file encoding.
-
-[[Groovy21releasenotes-Command-line]]
-=== Command-line
-
-There is support for using a `jar:` prefix when running a script from
-a URL, in addition to the `file:` and `http:`.
-
-[[Groovy21releasenotes-XMLProcessing]]
-=== XML Processing
-
-There is a method for escaping / encoding XML entities in Strings. +
-There is a convenience method for serializing `Elements` objects.  +
-You can now clone `Node` and `NodeList` objects.  +
-The name() method now works for all `Node` objects, not just `Element`
-objects. 
-
-[[Groovy21releasenotes-ConfigSlurper]]
-=== ConfigSlurper
-
-Multiple environments blocks are now supported and merged.
-
-[[Groovy21releasenotes-Delegate]]
-=== @Delegate
-
-Can now carry over annotations if desired for methods and method
-parameters.
-
-[[Groovy21releasenotes-ToString]]
-=== @ToString
-
-You can now cache the `toString` value. This is useful for immutable
-objects.
-
-[[Groovy21releasenotes-EqualsAndHashCode]]
-=== @EqualsAndHashCode
-
-You can now cache the calculated hashCode value. This is useful for
-immutable objects.
-
-[[Groovy21releasenotes-Immutable]]
-=== @Immutable
-
-You can now specify `knownImmutables`. This is useful when you know you
-are using an immutable object, but its type isn’t one of the known
-immutable types.
-
-[[Groovy21releasenotes-AutoClone]]
-=== @AutoClone
-
-There is now a `SIMPLE` `AutoCloneStyle` which avoids some annoyances
-with Java’s cloning behavior from `Object`. Those who need to clone
-Grails domain objects might find this useful.
diff --git a/site/src/site/releasenotes/groovy-2.2.adoc b/site/src/site/releasenotes/groovy-2.2.adoc
deleted file mode 100644
index 8afed88..0000000
--- a/site/src/site/releasenotes/groovy-2.2.adoc
+++ /dev/null
@@ -1,256 +0,0 @@
-[[Groovy2.2releasenotes-Implicitclosurecoercion]]
-== Implicit closure coercion
-
-Java 8 will feature lambdas, which are similar to Groovy’s closures. One
-particular aspect which is interesting with lambdas is how they are
-converted transparently by Java to interface types that contain one
-single abstract method. With Groovy closures, except for a few cases, we
-have to explicitly use the as operator to do the coercion. In Groovy
-2.2, we are allowing the
-same link:http://docs.groovy-lang.org/latest/html/documentation/core-semantics.html#closure-coercion[transparent closure coercion] 
-to happen, but without the explicit as type coercion,
-and furthermore, we make it possible to work as well with abstract
-classes as well.
-
-
-[source,groovy]
-----
-interface Predicate {
-   boolean test(obj)
-} 
-
-List filter(List list,Predicate pred) {
-   list.findAll { pred.test(it) }
-} 
-def input = [1, 2, 3, 4, 5] 
-def odd = filter(input) { it % 2 == 1 }
-assert odd == [1, 3, 5]
-----
-
-
-Notice how the closure is coerced into a Predicate instance. Without
-that new capabilities, we would have had to write the following instead:
-
-[source,groovy]
-----
-def odd = filter(input, { it % 2 == 1} as Predicate)
-----
-
-
-That way, Groovy closure coercion to SAM types is as concise as Java 8
-lambda closure conversion.
-
-Here’s another example using abstract classes, which are not supported
-by Java 8 lambda conversion:
-
-[[Groovy2.2releasenotes-MemoizedASTtransformationformethods]]
-== @Memoized AST transformation for methods
-
-Similarly to our Closure memoization capability, you can now annotate
-your methods with the
-new link:https://issues.apache.org/jira/browse/GROOVY-4993[@Memoized annotation].
-It will use the same underlying cache solution used for closures, and
-will cache the result of previous executions of the annotated method
-with the same entry parameters.
-
-[source,groovy]
-----
-import groovy.transform.Memoized 
-
-@Memoized
-int expensiveOp(int a, int b) {
-   sleep 1000    
-   return a + b
-}
-
-expensiveOp(1, 2) // one second to return
-expensiveOp(1, 2) // immediate result returned expensiveOp(1, 2)
-----
-
-
-[[Groovy2.2releasenotes-Bintray]]
-== Bintray’s JCenter repository 
-
-The default Grab configuration now use Bintray’s JCenter repository as
-the first in the chain of resolvers, as Bintray’s JCenter repository is
-noticeably faster and more responsive than Maven Central, offers
-dependencies always with their checksums, and stores and caches
-dependencies it wouldn’t have for faster delivery the next time a
-dependency is required. This should make your scripts relying on @Grab
-faster when downloading dependencies for the first time.
-
-[[Groovy2.2releasenotes-Definebasescriptclasseswithanannotation]]
-== Define base script classes with an annotation
-
-All scripts usually extend
-the link:http://docs.groovy-lang.org/latest/html/api/groovy/lang/Script.html[groovy.lang.Script] abstract
-class, but it’s possible to set up our own base script class extending
-Script
-through link:http://docs.groovy-lang.org/latest/html/api/org/codehaus/groovy/control/CompilerConfiguration.html[CompilerConfiguration].
-A new AST transformation is introduced in Groovy 2.2 which allows you to
-define the base script class as follows:
-
-[source,groovy]
-----
-import groovy.transform.BaseScript 
-
-abstract class DeclaredBaseScript extends Script {
-   int meaningOfLife = 42
-}
-
-@BaseScript DeclaredBaseScript baseScript 
-
-assert meaningOfLife == 42
-----
-
-[[Groovy2.2releasenotes-NewDelegatingScriptbaseclassforscripts]]
-== New DelegatingScript base class for scripts
-
-With the CompilerConfiguration class that you pass to GroovyShell (as
-well as GroovyClassLoader and others), you can define a base script
-class for the scripts that will be compiled with that shell. It’s handy
-to share common methods to all scripts.
-
-For DSL purposes, it’s interesting to actually delegate the method calls
-and unbound variable assignments to a different object than the script
-itself, thanks to the
-new link:https://issues.apache.org/jira/browse/GROOVY-6076[DelegatingScript].
-
-To make it more concrete, let’s have a look at the following
-configuration script:
-
-[source,groovy]
-----
-// import the CompilerConfiguration class// to configure the base script class
-import org.codehaus.groovy.control.CompilerConfiguration 
-
-// the script we want to compile
-def scriptContent = '''
-name = 'Guillaume'
-sayHi()'''
-
-// the class definition of the delegate
-class Person {
-   String name
-   void sayHi() {
-      println "Hi $name"
-   }
-} 
-
-// configure the base script class
-def cc = new CompilerConfiguration()
-cc.scriptBaseClass = DelegatingScript.class.name 
-
-// parse script with GroovyShell// and the
-configurationdef sh = new GroovyShell(cc)
-def script = sh.parse(scriptContent) 
-
-// set the delegate and run the script
-def p = new Person()
-script.setDelegate(p)
-script.run() // the name is set correctly
-
-// and the output will display "Hi Guillaume"
-assert p.name == 'Guillaume'
-----
-
-[[Groovy2.2releasenotes-NewLogvariantfortheLog4j2loggingframework]]
-== New @Log variant for the Log4j2 logging framework
-
-A new @Log variant has been added to support Log4j2, with the @Log4j2
-AST transformation:
-
-[source,groovy]
-----
-import groovy.util.logging.Log4j2
-
-@Log4j2
-class MyClass {
-   void doSomething() {
-      log.info 'did something groovy today!'
-   }
-}
-----
-
-[[Groovy2.2releasenotes-DelegatesTowithgenericstypetokens]]
-== @DelegatesTo with generics type tokens
-
-The @DelegatesTo annotation, introduced in Groovy 2.1 that helps the
-type checker, IDEs, tools, to provide better support for DSLs using
-closure delegation
-strategies, link:https://issues.apache.org/jira/browse/GROOVY-6134[works with generics token types] as well.
-You can tell Groovy that the delegatee is
-of the type of the generics component:
-
-[source,groovy]
-----
-import groovy.transform.*
-
-@InheritConstructors
-class MyList extends LinkedList<String> {} 
-
-public <T> Object map(
-    @DelegatesTo.Target List<T> target,
-    @DelegatesTo(genericTypeIndex = 0) Closure arg) {
-    arg.delegate = target.join('')
-    arg()
-}
-
-@TypeChecked
-def test() {
-   map(new MyList([’f', `o', `o'])) {
-      assert toUpperCase() == 'FOO'
-   }
-} 
-----
-
-Note the genericTypeIndex attribute of @DelegatesTo that points at the
-index of the generic component. Unfortunately, as the generic
-placeholders are not kept at the bytecode level, it’s impossible to just
-reference T, and we had to use an index to point at the right type.
-
-[[Groovy2.2releasenotes-Precompiledtypecheckingextensions]]
-== Precompiled type checking extensions
-
-The static type checking extensions introduced in Groovy 2.1 were
-working solely with non-compiled scripts. But with this beta, you can
-also specify a fully-qualified name of
-the link:https://issues.apache.org/jira/browse/GROOVY-6043[precompiled class implementing your extension]:
-
-[source,groovy]
-----
-@TypeChecked(extensions = 'com.enterprise.MyDslExtension') 
-----
-
-Type checking extensions now also support two more
-events: link:https://issues.apache.org/jira/browse/GROOVY-6039[ambiguousMethods] and link:https://issues.apache.org/jira/browse/GROOVY-6044[incompatibleReturnType]. 
-
-[[Groovy2.2releasenotes-Groovyshenhancements]]
-== Groovysh enhancements
-
-Groovysh has been expanded with various enhancements:
-
-* support for link:https://issues.apache.org/jira/browse/GROOVY-6073[code completion] in various places, like imports, package names, class names,
-variable names, parameter names, keywords, etc.
-* a link:https://issues.apache.org/jira/browse/GROOVY-6150[doc command] allows you
-to open the relevant JavaDoc and Groovy GDK web pages to have more
-information for a given class, for example try in Groovysh: +
-----
-doc java.util.List
-----
-
-* you can link:https://issues.apache.org/jira/browse/GROOVY-6145[complete file names] inside strings, particularly handy for your scripting tasks where
-you want to open a file with `new File('data.|')` (where the pipe
-character is the position of your cursor), and then hit the TAB key to
-have the completion of the file name
-
-[[Groovy2.2releasenotes-OSGimanifestsfortheindyjar]]
-== OSGi manifests for the `invokedynamic` JARs
-
-If you’re using Groovy in the context of an OSGi container, the Groovy
-JARs contained the right OSGi metadata information in its manifest.
-However, it wasn’t the case for the `invokedynamic` JARs, as the
-underlying library used by the Gradle OSGi plugin wasn’t supporting JDK
-7 bytecode. Fortunately, this deficiency has been fixed, the Gradle OSGi
-plugin updated, and we’re now able to have our `indy` JARs work fine
-under OSGi has well.
\ No newline at end of file
diff --git a/site/src/site/releasenotes/groovy-2.3.adoc b/site/src/site/releasenotes/groovy-2.3.adoc
deleted file mode 100644
index ce0e923..0000000
--- a/site/src/site/releasenotes/groovy-2.3.adoc
+++ /dev/null
@@ -1,834 +0,0 @@
-Groovy 2.3 is the new major release of Groovy, featuring
-official *support for running Groovy on JDK 8*, *traits*, new and improved
-AST transformations like `@TailRecursive`, `@Builder` and `@Sortable`, a
-new _NIO2 module_ with `Path` support, *lightening fast JSON* parsing and
-building,*closure parameter type inference*, a new *markup template engine*,
-Groovysh and GroovyConsole ease of use improvements, a
-new `GroovyAssert` test utility, more `@BaseScript` class capabilities,
-and more.
-
-[[Groovy2.3releasenotes-OfficialsupportforrunningGroovyonJDK8]]
-== Official support for running Groovy on JDK 8
-
-This is the first version of Groovy to be officially compatible with JDK
-8.
-
-JDK 8 and its interface default methods introduced some
-incompatibilities with a few methods of the Groovy Development Kit, so
-we had to adapt to the situation, introducing minor breaking changes for
-the affected methods and their outcome.
-
-Note that we’re not planning to backport the changes to older versions
-of Groovy, so if you want to run Groovy on JDK 8, you’ll have to upgrade
-to the shiniest version of Groovy!
-
-Groovy 2.3 doesn’t support the new syntax constructs offered by Java 8
-(such as lambdas, method references, default methods in interfaces,
-etc), but you can very well already *use the new APIs offered by JDK
-8*, and even *use Groovy closures in lieu of Java 8 lambdas*.
-
-For reference, here are a couple of examples which use Java 8 streams,
-for iterating over a stream of ints, or over the lines of a file:
-
-[source,groovy]
-----
-IntStream.range(1, 100).forEach { println it }
-
-Files.lines(Paths.get('README.adoc'))
-     .map { it.toUpperCase() }
-     .forEach { println it }
-----
-
-
-In particular, in the two statements above, notice that we replaced Java
-8 lambdas with Groovy closures, as Groovy provides a closure coercion
-mechanism which transforms a Groovy closure into a functional interface
-— unlike Java, Groovy also provides that coercion mechanism for abstract
-classes containing a single abstract method.
-
-In future versions of Groovy, certain Java 8 syntax constructs, or
-particular Groovy methods decorating JDK 8 APIs might be added.
-
-[[Groovy2.3releasenotes-Traits]]
-== Traits
-
-A major highlight for Groovy 2.3 is the introduction of the *concept of traits*.
-
-link:{DOCS_BASEURL}/html/documentation/core-traits.html[Traits]
-are reusable components of behavior that your classes can implement, and
-are an additional Object-Oriented concept alongside classes and
-interfaces.
-
-Below, we create a trait with a concrete method `fly()` which returns a
-`String`.
-
-[source,groovy]
-----
-trait FlyingAbility {
-    String fly() { "I'm flying!" }
-}
-----
-
-Then we create a class, `Bird`, that implements that trait, and
-instantiate it:
-
-[source,groovy]
-----
-class Bird implements FlyingAbility {}
-def b = new Bird()
-----
-
-We can check that the Bird instance does have the new `fly()` method
-mixed-in:
-
-[source,groovy]
-----
-assert b.fly() == "I'm flying!"
-----
-
-Groovy traits are stateful (unlike Java 8 interface default methods).
-A trait can have Groovy properties like plain classes:
-
-[source,groovy]
-----
-trait Named {
-    String name
-}
-----
-
-This time, the `Bird` class implements that `Named` trait:
-
-[source,groovy]
-----
-class Bird implements Named {}
-----
-
-We can instantiate the Bird with the named-argument constructor shortcut
-provided by Groovy:
-
-[source,groovy]
-----
-def b = new Bird(name: 'Colibri')
-----
-
-We assert that the instantiated Bird does have the name property added
-to it:
-
-[source,groovy]
-----
-assert b.name == 'Colibri'
-----
-
-They allow the composition of behavior without going into the "diamond
-inheritance" problem allowing you to decide which behavior prevails
-upon conflict, either by convention (last trait declared wins) or by
-explicitly overriding the conflicting method:
-
-[source,groovy]
-----
-trait KiteSurfer { String surf() { 'kite' } }
-
-trait WebSurfer  { String surf() {  'web' } }
-
-class Person { String name }
-
-class Hipster extends Person
-           implements KiteSurfer, WebSurfer {}
-
-def h = new Hipster()
-assert h.surf() == 'web'
-----
-
-Above, the `surf()` method from `WebSurfer` wins, as it’s the last declared
-trait, but you can reverse the trait implementation order if you want
-kite to be returned. If you want to be more explicit, your `Hipster` class
-can override the `surf()` method itself, and call `WebSurfer.super.foo()` or
-`KiteSurfer.super.foo()` or do something entirely different.
-
-Traits support inheritance, thus a trait can extend another trait or
-implement an interface, as shown below:
-
-[source,groovy]
-----
-trait Named { String name }
-
-trait FlyingAbility extends Named {
-    String fly() { "I'm a flying ${name}!" }
-}
-
-class Bird implements FlyingAbility {}
-def b = new Bird(name: 'Colibri')
-
-assert b.name == 'Colibri'
-assert b.fly() == "I'm a flying Colibri!"
-----
-
-Traits are compatible with static type checking and compilation, as well
-as our usual dynamic behavior. Trait mixed-in methods are actually
-"real" methods (ie. visible from Java as well) and not just dynamic.
-Note however, that not all existing AST transformations are compatible
-with traits.
-
-Traits can also be implemented at runtime with `as` or with
-`withTraits` if you just want to add behavior of a trait to an object
-you’re instantiating, without having to create an intermediary
-artificial class just for that purpose (also called per-instance
-traits):
-
-[source,groovy]
-----
-trait Named { String name }
-
-trait Quacks {
-    String quack() { 'Quack!' }
-}
-
-class Animal {}
-
-def na = new Animal().withTraits Named, Quacks
-na.name = 'Daffy'
-assert na.name == 'Daffy'
-assert na.quack() == 'Quack!'
-----
-
-You can find more information on traits in the
-exhaustive link:{DOCS_BASEURL}/html/documentation/core-traits.html[traits documentation].
-
-[[Groovy2.3releasenotes-NewandupdatedASTtransformations]]
-== New and updated AST transformations
-
-[[Groovy2.3releasenotes-Newtransformations]]
-=== New transformations
-
-[[Groovy2.3releasenotes-TailRecursive]]
-==== @TailRecursive
-
-`@TailRecursive` on methods adds tail recursion to methods which are
-recursive and call themselves at the last operation of the method body,
-which helps avoid blowing up the stack with the recursive calls
-(link:https://issues.apache.org/jira/browse/GROOVY-6570[GROOVY-6570]).
-
-Here’s a slightly rewritten factorial implementation, that is friendly
-to tail-call transformation:
-
-[source,groovy]
-----
-import groovy.transform.TailRecursive
-
-@TailRecursive
-def fact(BigInteger n, accu = 1G) {
-    if (n < 2) accu
-    else fact(n - 1, n * accu)
-}
-
-assert fact(1000) > 10e2566
-----
-
-[[Groovy2.3releasenotes-Builder]]
-==== @Builder
-
-Recent Java APIs have adopted the builder pattern (not to be confused
-with Groovy’s builders) to instantiate complex objects, without
-requiring to multiply the number of constructors with variants taking
-various combination of parameters. Groovy 2.3 introduces a `@Builder`
-transformation to automate the creation of such builder APIs
-(link:https://issues.apache.org/jira/browse/GROOVY-6484[GROOVY-6484]).
-
-The `@Builder` transformation offers different implementation strategies
-that you can choose from:
-
-* a simple strategy for creating chained setters
-* an external strategy where you annotate an explicit builder class
-while leaving some buildee class being built untouched
-* a default strategy which creates a nested helper class for instance
-creation
-* and an initializer strategy which creates a nested helper class for
-instance creation which when used with `@CompileStatic` allows type-safe
-object creation
-
-Here’s an example with the default strategy:
-
-[source,groovy]
------
-import groovy.transform.builder.Builder
-
-@Builder
-class Person {
-    String firstName
-    String lastName
-    int age
-}
-
-def person = Person.builder()
-                   .firstName("Robert")
-                   .lastName("Lewandowski")
-                   .age(21)
-                   .build()
-
-assert person.firstName == "Robert"
-assert person.lastName == "Lewandowski"
-assert person.age == 21
------
-
-You can have a look at
-the link:{DOCS_BASEURL}/html/documentation/core-metaprogramming.html#xform-Builder[@Builder documentation]
-for the other builder variants.
-
-[[Groovy2.3releasenotes-Sortable]]
-==== @Sortable
-
-`@Sortable` on classes implements comparison methods for you (through
-implementing the `Comparable` interface), according to the declaration
-order of your properties
-(link:https://issues.apache.org/jira/browse/GROOVY-6649[GROOVY-6649]).
-
-For the following `Person` class, its instances will be sorted by last
-name, then by first name, and by age, in that order:
-
-[source,groovy]
-----
-import groovy.transform.*
-
-@Sortable
-@Canonical
-class Person {
-    String last
-    String first
-    int age
-}
-
-def folks = [
-    new Person('Simpson', 'Bart', 12),
-    new Person('Simpson', 'Homer', 40),
-    new Person('Kent', 'Clark', 36)
-]
-
-assert folks.sort()*.first == ['Clark', 'Bart', 'Homer']
-----
-
-Additionally, you can define included / excluded fields, access
-individual field comparators with methods like `comparatorByFirst()`.
-
-More details on
-the {DOCS_BASEURL}/html/documentation/core-metaprogramming.html#xform-Sortable[@Sortable documentation] page.
-
-[[Groovy2.3releasenotes-SourceURI]]
-==== @SourceURI
-
-With `@SourceURI`, you can annotate a `java.net.URI` or even a
-`java.lang.String` script variable or class field so that the variable or
-field are injected the URI of the Groovy file.
-
-If you evaluate or compile a Groovy script or class, the variable or
-field will contain a data URI, for example, for the following example:
-
-[source,groovy]
-----
-import groovy.transform.SourceURI
-
-@SourceURI String src
-
-println src
-----
-
-The `src` variable will contain the following data URI:
-
-----
-data:,import%20groovy.transform.SourceURI%0A%0A@SourceURI%20String%20src%0A%0Aprintln%20src
-----
-
-If you save the script in a file called `sourceuri.groovy` in `/tmp`, and
-run that script with the `groovy` command, you’ll see an absolute `File`
-path printed:
-
-----
-file:/tmp/sourceuri.groovy
-----
-
-As we mentioned above, you can also write `@SourceURI URI src`, if you want
-to have a `URI` instead of a `String`.
-
-[[Groovy2.3releasenotes-Updatedtransformations]]
-=== Updated transformations
-
-[[Groovy2.3releasenotes-Delegateimprovements]]
-==== @Delegate improvements
-
-`@Delegate` supports `includeTypes` and `excludeTypes` attributes to give you
-fine-grained control over which methods to include or exclude from
-delegation. Rather than just matching on name, this option matches on
-the name and parameter types expressed in an interface type
-(link:https://issues.apache.org/jira/browse/GROOVY-6329[GROOVY-6329]).
-
-[[Groovy2.3releasenotes-BaseScriptclassimprovements]]
-==== @BaseScript class improvements
-
-{DOCS_BASEURL}/html/gapi/groovy/transform/BaseScript.html[@BaseScript]
-is a fairly recent addition in Groovy, and it allowed to annotate a
-variable in your script to instruct the compiler to use a particular
-base script class for this script. Now we have another notation which is
-nicer as you can annotate an import or a package
-(link:https://issues.apache.org/jira/browse/GROOVY-6592[GROOVY-6592]) to indicate
-that base script class:
-
-[source,groovy]
-----
-@BaseScript(MyScript)
-import groovy.transform.BaseScript
-----
-
-Additionally, base script classes can now use any abstract method for
-the script body. This means that you can implement the `run()` method to
-implement specific behavior like setup and tear down in tests
-(link:https://issues.apache.org/jira/browse/GROOVY-6585[GROOVY-6585]
-and link:https://issues.apache.org/jira/browse/GROOVY-6615[GROOVY-6615]).
-
-Given the following custom base script class, where we implement the
-default `run()` method, we also create a new abstract method called
-`internalRun()`:
-
-[source,groovy]
-----
-abstract class CustomBase extends Script {
-    def run() {
-        before()
-        internalRun()
-        after()
-    }
-
-    abstract internalRun()
-
-    def before() { println 'before' }
-    def after()  { println 'after'  }
-}
-----
-
-We can then have the script below transparently implement the
-`internalRun()` method instead of the usual `run()` one:
-
-[source,groovy]
-----
-import groovy.transform.BaseScript
-@BaseScript CustomBase script
-
-println 'Hello'
-----
-
-[[Groovy2.3releasenotes-NewNIOmoduleforJava7]]
-== New NIO module for Java 7+
-
-On JDK 7 and beyond, you can benefit from the same methods as the ones
-of File but for the new NIO2 class `Path`.
-
-See link:https://issues.apache.org/jira/browse/GROOVY-6377[GROOVY-6377] and
-the link:https://github.com/groovy/groovy-core/pull/260/files[pull request]
-for some further hints of the new methods.
-
-You’ll find familiar methods of the Groovy GDK on `File` also available on
-`Path` like these ones:
-
-[source,groovy]
-----
-path.withReader { Reader r -> ... }
-path.eachLine { String line -> ... }
-path.eachFileRecurse { Path p -> ... }
-path << 'some content'
-path << bytes
-path.readLines()
-----
-
-[[Groovy2.3releasenotes-Performanceimprovements]]
-== Performance improvements
-
-[[Groovy2.3releasenotes-Miscellanousimprovements]]
-=== Miscellanous improvements
-
-Various minor *performance improvements across the board*, for static
-compilation, the `invokedynamic` backend, as well as "normal"
-dynamic Groovy, have been worked on.
-
-[[Groovy2.3releasenotes-DrasticJSONparsingandserializationperformanceimprovements]]
-=== Drastic JSON parsing and serialization performance improvements
-
-Groovy JSON support has been refactored and tailored towards
-performance, making Groovy 2.3’s JSON support usually
-*faster than all the JSON libraries* available in the Java ecosystem.
-
-Rick Hightower and Andrey Bleschestov covered the performance gains,
-both in parsing and seralization, in
-a link:http://rick-hightower.blogspot.fr/2014/04/groovy-and-boon-provide-fastest-json.html[benchmarks on Rick’s blog]
-and on link:https://github.com/bura/json-benchmarks[Andrey’s JSON benchmark project on Github].
-The results are impressive, as the *parsing is generally roughly 2x to 4x faster* with Groovy’s new
-parsers compared to existing libraries, and *~21x faster than pre-Groovy 2.3 parsing*.
-On the serialization front, Groovy’s
-new *serialization is also ~17x faster than before*, and at the same
-level as competing libraries.
-
-[[Groovy2.3releasenotes-JSONslurperandbuilderenhancements]]
-== JSON slurper and builder enhancements
-
-Beside the performance improvements of the JSON module, other updates
-have taken place.
-
-With link:{DOCS_BASEURL}/html/gapi/groovy/json/JsonSlurper.html[JsonSlurper],
-you’ll be able to set
-different link:{DOCS_BASEURL}/html/gapi/groovy/json/JsonParserType.html[parser types]
-depending on the kind of input you wish to parse, particularly if
-you know the size of the payload you expect to parse, or whether you
-want a more tolerant parser which accepts elements like comments which
-are not normally supported by the JSON specification.
-
-Here’s an example showing how to parse a non-conformant JSON payload:
-
-[source,groovy]
-----
-import groovy.json.*
-import static groovy.json.JsonParserType.*
-
-def parser = new JsonSlurper().setType(LAX)
-
-def conf = parser.parseText '''
-    // configuration file
-    {
-        // no quote for key, single quoted value
-        environment: 'production'
-        # pound-style comment
-        'server': 5
-    }
-'''
-
-assert conf.environment == 'production'
-assert conf.server == 5
-----
-
-[[Groovy2.3releasenotes-Closureparametertypeinference]]
-== Closure parameter type inference
-
-We closed a gap which forced you to type your closure parameters to get
-correct type inference with static type checking or static compilation
-enabled. In situations like the following, you would have to explicitly
-give the type of the parameter, but it’s no longer required:
-
-[source,groovy]
-----
-['a','b'].each { it.toUpperCase() }
-----
-
-In the signature of your methods taking closures as arguments, you’ll
-also be able to annotate the closure parameter
-with link:{DOCS_BASEURL}/html/gapi/groovy/transform/stc/ClosureParams.html[@ClosureParams]
-to give additional hints to the type checker to infer the type of the
-parameters passed to your closure.
-
-You can also find more about this in Cédric’s blog post
-on link:http://melix.github.io/blog/2014/01/closure_param_inference.html[closure parameter type inference].
-
-[[Groovy2.3releasenotes-Newmarkuptemplateengine]]
-== New markup template engine
-
-Groovy now has an additional template engine, in the form of the Markup
-template engine, which gives you a very fast template engine (thanks to
-static compilation), based on the familiar Markup builder approach and
-notation, but also offering formatting options (indentation, escaping),
-internationalization, includes, as well as proposing type checked
-templates and models.
-
-More details about the
-new link:{DOCS_BASEURL}/html/documentation/markup-template-engine.html[Markup template engine]
-in the documentation, as well as in Cédric’s link:http://melix.github.io/blog/[blog], if you want to learn more
-about the "behind the scenes" stories!
-
-To illustrate the basic usage, consider you have the following template:
-
-[source,groovy]
-----
-def tpl = '''
-    cars {
-        cars.each {
-            car(make: it.make, name: it.name)
-        }
-    }
-'''
-----
-
-And have the following model:
-
-[source,groovy]
-----
-model = [cars: [
-    new Car(make: 'Peugeot', name: '508'),
-    new Car(make: 'Toyota',  name: 'Prius')
-]]
-----
-
-You would generate the following XML (or HTML) output:
-
-[source,xml]
-----
-<cars>
-    <car make='Peugeot' name='508'/>
-    <car make='Toyota'  name='Prius'/>
-</cars>
-----
-
-By doing the following:
-
-[source,groovy]
-----
-import groovy.text.markup.*
-
-def config = new TemplateConfiguration()
-def engine = new MarkupTemplateEngine(config)
-def tmpl = engine.createTemplate(tpl)
-System.out << tmpl.make(model)
-----
-
-You have useful methods available to your templates, like for including
-other templates:
-
-[source,groovy]
-----
-// include another template
-include template: 'foo.tpl'
-
-// include raw content
-include unescaped: 'raw.txt'
-
-// escape & include
-include escaped: 'to_escape.txt'
-----
-
-And if you want to have your model be type checked, you can either
-define the model types inside the template like so:
-
-[source,groovy]
-----
-modelTypes = {
-    List<Car> cars
-}
-----
-
-Or by using the dedicated template creation method:
-
-[source,groovy]
-----
-def modelTypes = [cars: "List<Car>"]
-
-def tmpl = engine.createTypeCheckedModelTemplate(tpl, modelTypes)
-----
-
-Note that this template engine is super fast as it’s statically
-compiled.
-
-[[Groovy2.3releasenotes-JUnit4GroovyAssertclass]]
-== JUnit 4 GroovyAssert class
-
-The
-venerable link:{DOCS_BASEURL}/html/gapi/groovy/util/GroovyTestCase.html[GroovyTestCase]
-(JUnit 3 based approach) has often been used as a base class for your
-test classes — unless you’ve been using
-the link:http://www.spockframework.org/[Spock testing framework], of course.
-One of the drawback of this class is that your test classes can’t extend
-your own classes, but must derive from `GroovyTestCase` to benefit from
-the additional assertion methods.
-
-In earlier versions of Groovy we introduced the JUnit
-4-friendly link:{DOCS_BASEURL}/html/gapi/groovy/util/GroovyAssert.html[GroovyAssert],
-which is a convenient class offering the usual assertion methods of
-`GroovyTestCase`, but in the form of static methods that you can static
-import in your test class. In Groovy 2.3 we’ve enriched `GroovyAssert`
-with additional features. There should be no reason to move on from
-JUnit 3 if you haven’t already done so. We didn’t include all of the
-myriad of `assertEquals` methods from `GroovyTestCase` as they are typically
-less useful than Groovy’s built-in power assert, but it provides some
-handy `shouldFail()` and `assertScript()` methods
-(link:https://issues.apache.org/jira/browse/GROOVY-6588[GROOVY-6588]).
-
-For instance, if you want to leverage the `shouldFail(String)` and
-`assertScript(String)` methods, you can do so as follows:
-
-[source,groovy]
-----
-import static groovy.test.GroovyAssert.shouldFail
-
-
-import org.junit.Test
-
-class AssertTest {
-    @Test void checkBadAddition() {
-        shouldFail '''
-            groovy.test.GroovyAssert.assertScript 'assert 1 + 1 == 3'
-        '''
-    }
-}
-----
-
-[[Groovy2.3releasenotes-ConfigSlurper]]
-== ConfigSlurper
-
-ConfigSlurper has previously supported a single "environments"
-non-configurational conditional block, but you couldn’t define your own.
-With Groovy 2.3 you can also create your own such blocks. For instance
-if you wanted to support "flavors" like OS variants
-(link:https://issues.apache.org/jira/browse/GROOVY-6383[GROOVY-6383]).
-
-Concretely, instead of the familiar environments / production blocks in
-Grails, let’s register a flavors / prod pair: 
-
-[source,groovy]
-----
-def conf = '''
-    a.b.c = 1
-    flavors {
-        prod {
-            a.b.c = 2
-        }
-    }
-'''
-
-def slurper = new ConfigSlurper('prod')
-slurper.registerConditionalBlock('flavors', 'prod')
-
-def config = slurper.parse(conf)
-
-assert config.a.b.c == 2
-----
-
-In addition, the `isSet()` / `hasSet()` combo methods
-(link:https://issues.apache.org/jira/browse/GROOVY-4639[GROOVY-4639]) have been
-added so you can double check if a given node of your configuration has
-been defined. Before, whether the node wasn’t defined or containing
-`null`, you couldn’t differentiate either case easily.
-
-[[Groovy2.3releasenotes-Toolsenhancements]]
-== Tools enhancements
-
-[[Groovy2.3releasenotes-Groovysh]]
-=== Groovysh
-
-Along with a slightly reduced startup time, Groovysh has seen new
-improvements in its code-completion capabilities:
-
-* completion for keywords
-(link:https://issues.apache.org/jira/browse/GROOVY-6399[GROOVY-6399])
-* completion for properties
-(link:https://issues.apache.org/jira/browse/GROOVY-6395[GROOVY-6395])
-
-Commands are now prefixed with ``:''
-(link:https://issues.apache.org/jira/browse/GROOVY-6397).
-
-[[Groovy2.3releasenotes-GroovyConsole]]
-=== GroovyConsole
-
-It is now possible to configure the font used by the console
-(link:https://issues.apache.org/jira/browse/GROOVY-6303[GROOVY-6303], although
-without a UI dialog yet), and also to be able to run a selected snippet
-of code reusing the imports defined in your script making it easier to
-just run quick snippets of your script. The ability to comment or
-uncomment selected code by pressing `Ctrl +` was added
-with link:https://issues.apache.org/jira/browse/GROOVY-6459[GROOVY-6459].
-
-
-[[Groovy2.3releasenotes-Documentation]]
-== Documentation
-
-[[Groovy2.3releasenotes-Newdocumentation]]
-=== New documentation
-
-We are still working on the
-brand link:{DOCS_BASEURL}/html/documentation/[new documentation] for Groovy
-(in Asciidoc(tor) format), so you can already
-have a glimpse at what’s already covered or not.
-
-We’re looking forward to your help for fleshing out the various TBD ("To
-Be Done") sections of the documentation, as it’s a gigantic task to
-re-document each and every aspect of the language and its libraries! So
-please shout if you want to *contribute to the new documentation*! All
-help is warmly welcome!
-
-[[Groovy2.3releasenotes-RefreshedGroovyDocdocumentationstyle]]
-=== Refreshed GroovyDoc documentation style
-
-GroovyDoc has been updated with a new fresh and modern skin that will be
-part of the future visual identity of the Groovy website. Those style
-updates are also available by default for your own usage of GroovyDoc,
-making your own documentation nicer on the eye.
-
-You can have a look at
-the link:http://docs.groovy-lang.org/2.3.0/html/gapi/[GroovyDoc
-documentation for Groovy 2.3.0].
-
-[[Groovy2.3releasenotes-RefreshedGroovyGDKdocumentationstyle]]
-=== Refreshed Groovy GDK documentation style
-
-We also took the opportunity to apply the same stylesheet to our
-`DocGenerator` tool which is responsible for the generation of the GDK
-documentation, showing the methods the Groovy library adds on top of the
-JDK classes.
-
-Please also have a look at the
-new link:{DOCS_BASEURL}/html/groovy-jdk/[restyled GDK documentation].
-
-[[Groovy2.3releasenotes-Dependencyupgrades]]
-== Dependency upgrades
-
-The following dependencies have been upgraded:
-
-* *GPars 1.2* for all your concurrency, asynchronous or parallelism needs:
-** improvements in the dataflow area, such as lazy tasks and easy
-fork-and-join on Promises
-** actors and dataflow operators now use the Groovy `@DelegatesTo`
-annotation to allow for statically compiled bodies
-** GPars timers and thread-locals have been made more friendly towards
-managed environments and the GParsConfig class now allows GPars to be
-completely shutdown
-* *Gradle 1.10* for building Groovy
-* *ASM 5.0.1* library for generating our bytecode (also needed for our JDK 8 support)
-* *JLine 2.11* and *JANSI 1.11* library for Groovysh
-* *Ant 1.9.3* for the Ant builder
-* *TestNG 6.8.8* for the TestNG module
-
-[[Groovy2.3releasenotes-Breakingchanges]]
-== Breaking changes
-
-Groovy 2.3.0 introduces a limited list of breaking changes.
-
-First of all,*Groovy 2.3.0 now requires JDK 6* as its minimal JDK
-requirement. Some parts of Groovy 2.3.0 might still run under JDK 5 but
-no testing has been done on that platform and some parts are known not
-to work. We encourage everyone to move to at least JDK 6.
-
-In Groovy 2.3.0, we *reworked our implementation of generics handling*.
-Although we don’t know of any particular breakage so far, the static
-type checker might report new errors as it can be stricter than before.
-If ever you encounter such new errors in this area, please report them
-as soon as you encounter them.
-
-With the introduction of "traits" in Groovy 2.3, the `trait` keyword
-is an addition to the list of keyword of the languages, with the
-consequence that *variables or fields that would use `trait` as name
-with yield a compilation error*. So you would have to change the name of
-your variable and recompile your code.
-
-A few updates have been made to the *XML support around whitespace
-handling, and text node handling*:
-
-* https://issues.apache.org/jira/browse/GROOVY-6685[GROOVY-6685]
-* https://issues.apache.org/jira/browse/GROOVY-6683[GROOVY-6683]
-* https://issues.apache.org/jira/browse/GROOVY-6682[GROOVY-6682]
-* https://issues.apache.org/jira/browse/GROOVY-6678[GROOVY-6678]
-* https://issues.apache.org/jira/browse/GROOVY-6621[GROOVY-6621]
-
-With the new default methods on interfaces in JDK 8, there was
-particularly one,
-a link:https://issues.apache.org/jira/browse/GROOVY-6465[List#sort(Comparable) method], which *conflicted with one of the GDK*,
-so we had to remove ours to stay compliant with JDK 8.
-
-We fixed a link:https://issues.apache.org/jira/browse/GROOVY-6456[race condition in AbstractHttpServler#applyResourceNameMatcher]
-which incurred a small change in behavior. This feature is seldomly used and doesn’t seem to
-have impacted users of the Groovy servlet machinery so far.
-
-You can look at the list of
-the link:https://issues.apache.org/jira/browse/GROOVY-6685?jql=project%20%3D%20GROOVY%20AND%20fixVersion%20in%20%28%222.3.0-rc-3%22%2C%20%222.3.0-beta-1%22%2C%20%222.3.0-beta-2%22%2C%20%222.3.0-rc-1%22%2C%20%222.3.0-rc-2%22%29%20AND%20labels%20%3D%20breaking%20AND%20status%20in%20%28Resolved%2C%20Closed%29[breaking changes from our JIRA]
-issue tracker.
-
diff --git a/site/src/site/releasenotes/groovy-2.4.adoc b/site/src/site/releasenotes/groovy-2.4.adoc
deleted file mode 100644
index caaee43..0000000
--- a/site/src/site/releasenotes/groovy-2.4.adoc
+++ /dev/null
@@ -1,220 +0,0 @@
-[[Android]]
-== Android Support
-With Groovy 2.4, you can write Android applications in Groovy!
-
-A quick link:{DOCS_BASEURL}/html/documentation/tools-groovyc.html#section-android[getting
-started guide] is available on the Groovy website.
-
-To build your Android applications with the Groovy support, you’ll be
-able to use
-the link:https://github.com/groovy/groovy-android-gradle-plugin[Gradle Groovy Android plugin].
-
-The link:https://github.com/Arasthel/SwissKnife[SwissKnife] library builds
-upon the Groovy support to offer very useful AST transformations that
-kill the usual Android boilerplate code, for instance for dealing with
-UI events, with logic to be run in background threads, or make objects
-easily "parcelables", etc.
-
-To further understand the new Android support, you can read the
-following articles by Cédric Champeau:
-
-* Introduction: link:http://melix.github.io/blog/2014/06/grooid.html[http://melix.github.io/blog/2014/06/grooid.html]
-* Technical details: link:http://melix.github.io/blog/2014/06/grooid2.html[http://melix.github.io/blog/2014/06/grooid2.html]
-
-And discover presentations on the Android support:
-
-* link:https://speakerdeck.com/melix/groovy-and-android-a-winning-pair-1[Groovy and Android, a winning pair] by Cédric Champeau
-* link:https://speakerdeck.com/glaforge/groovy-on-android-groovy-grails-exchange-2014[Groovy on Android] by Guillaume Laforge
-
-The work on the Android support also lead to various optimizations in
-terms of bytecode generation, as explained further down, as well as, for
-instance, improving the handling of overloaded setters
-(link:https://issues.apache.org/jira/browse/GROOVY-2049[GROOVY-2049],link:https://issues.apache.org/jira/browse/GROOVY-6084[GROOVY-6084],
-link:https://issues.apache.org/jira/browse/GROOVY-2500[GROOVY-2500])
-which are frequent in the Android SDK.
-
-[[Groovy2.4releasenotes-Performanceimprovementsandreducedbytecode]]
-== Performance improvements and reduced bytecode
-
-This new major release of Groovy has seen various improvements across
-the board to reduce the quantity of bytecode produced, to lower memory
-consumption of internal data structures, fine tune bytecode for better
-performance.
-
-Here are some of the tickets related to the topic:
-
-* Cheaper comparison operations
-(link:https://issues.apache.org/jira/browse/GROOVY-7194[GROOVY-7194])
-* Reduced memory consumption for `respondsTo()`
-(link:https://issues.apache.org/jira/browse/GROOVY-7178[GROOVY-7178])
-* For fully statically compiled classes, MOP related generated methods
-are not needed
-(link:https://issues.apache.org/jira/browse/GROOVY-6990[GROOVY-6990])
-* Remove unneeded inner class distributor methods when no inner classes
-are present (link:https://issues.apache.org/jira/browse/GROOVY-6993[GROOVY-6993])
-* Removal of the timestamp in Groovy classes
-(link:https://issues.apache.org/jira/browse/GROOVY-6308[GROOVY-6308])
-* Optimization of primitive type conversions with the as operator
-(link:https://issues.apache.org/jira/browse/GROOVY-7140[GROOVY-7140])
-
-[[Groovy2.4releasenotes-TraitsSelfTypeannotation]]
-== Traits @SelfType annotation
-
-Sometimes, it’s desired to be able to restrict a trait’s application so
-that it can only be applied to subclasses of a certain type. That’s what
-the `@SelfType` annotation is for
-(link:https://issues.apache.org/jira/browse/GROOVY-7134[GROOVY-7134]).
-
-Here’s a concrete example of `@SelfType` in action.
-
-[source,groovy]
-----
-import groovy.transform.*
-
-class Component {
-   void doSomething() {
-       println "Done!"
-   }
-}
-
-@SelfType(Component)
-@TypeChecked
-trait ComponentDecorator {
-   void logAndDoSomething() {
-       println "Going to do something"
-       doSomething()
-   }
-}
-
-class ConcreteComponent
-   extends Component
-   implements ComponentDecorator {}
-
-def c = new ConcreteComponent()
-c.logAndDoSomething()
-----
-
-The `ComponentDecorator` trait is calling the `doSomething()` method from
-the `Component` sub-class to which it will be applied. If you don’t
-specify the `@SelfType(Component)` annotation, when using static type
-checking or static compilation, the compiler will throw a compilation
-error as it wouldn’t know where the `doSomething()` method would be coming
-from. With the annotation, you instruct the compiler to figure out that
-this trait will only be applied to child of Component that will have
-that method available. `@SelfType` is interesting in the context of static
-type checking or compilation, but is not needed if your code is dynamic
-as the resolution will take place at runtime as usual.
-
-[[Groovy2.4releasenotes-GDKimprovements]]
-== GDK improvements
-
-* `System.currentTimeSeconds()` to get the current time in seconds
-(link:https://issues.apache.org/jira/browse/GROOVY-6294[GROOVY-6294])
-* `List#getIndices()` to get a range representing the indices of the
-elements of the list
-(link:https://issues.apache.org/jira/browse/GROOVY-7171[GROOVY-7171])
-* More collection related methods are moved to iterator-based variants
-to apply to all iterable collection types
-(link:https://issues.apache.org/jira/browse/GROOVY-6863[GROOVY-6863]) and missing
-methods have been added like `init()`, `dropRight()`, `takeRight()`
-(link:https://issues.apache.org/jira/browse/GROOVY-6867[GROOVY-6867])
-* `Iterable` gets `disjoin()`, `minus()` and `toSpreadMap()` methods
-(link:https://issues.apache.org/jira/browse/GROOVY-6920[GROOVY-6920])
-* Refinements and concistency for existing collection methods,
-leveraging iterable approaches for stream-like traversals, consistency
-for mutation in place vs  new collection creation, minor optimizations,
-etc. (link:https://issues.apache.org/jira/browse/GROOVY-6945[GROOVY-6945])
-* New `List#removeAt(index)` and `Collection#removeElement(Object)` methods
-(link:https://issues.apache.org/jira/browse/GROOVY-6952[GROOVY-6952])
-* `Iterable` gets a `size()` method like iterators
-(link:https://issues.apache.org/jira/browse/GROOVY-7085[GROOVY-7085])
-
-[[Groovy2.4releasenotes-ASTtransformations]]
-== AST transformations
-
-* The `@ToString` transformation offers an `includeSuperProperties`
-parameter so properties from the super class are also present in the
-string representation
-(link:https://issues.apache.org/jira/browse/GROOVY-7161[GROOVY-7161])
-* You can define the compilation phase for the `@ASTTest` transformation
-for testing your AST transformations
-(link:https://issues.apache.org/jira/browse/GROOVY-6968[GROOVY-6968])
-* `@Synchronized` supports explicit static locks to be used by instance
-methods if needed
-(link:https://issues.apache.org/jira/browse/GROOVY-7030[GROOVY-7030])
-* Clean up generated code for `@AutoExternalizable`
-(link:https://issues.apache.org/jira/browse/GROOVY-6889[GROOVY-6889]) and
-`@EqualsAndHashCode`
-(link:https://issues.apache.org/jira/browse/GROOVY-6893[GROOVY-6893]) the when
-using `@CompileStatic`
-* `@Builder`’s default and initializer strategies improved Java
-integration (link:https://issues.apache.org/jira/browse/GROOVY-6875[GROOVY-6875])
-* `@PackageScope` allowed on constructors too
-(link:https://issues.apache.org/jira/browse/GROOVY-6839[GROOVY-6839])
-
-[[Groovy2.4releasenotes-Groovyshimprovements]]
-== Groovysh improvements
-
-The venerable Groovysh shell continues seeing some useful improvements:
-
-* Groovysh supports custom .rc and .profile scripts to be loaded on
-startup (link:https://issues.apache.org/jira/browse/GROOVY-6943[GROOVY-6943])
-* completion of instanceof statements
-(link:https://issues.apache.org/jira/browse/GROOVY-7200[GROOVY-7200])
-* completion of static members only displayed in a static context
-(link:https://issues.apache.org/jira/browse/GROOVY-6622[GROOVY-6622])
-* completion candidates in color
-(link:https://issues.apache.org/jira/browse/GROOVY-6563[GROOVY-6563])
-* with :set interpreterMode true, you can let Groovysh to let you see
-and use locally-defined variables after further line executions
-(link:https://issues.apache.org/jira/browse/GROOVY-6623[GROOVY-6623])
-* the :load command supports file names containing spaces
-(link:https://issues.apache.org/jira/browse/GROOVY-6942[GROOVY-6942])
-* make arguments and flags consistent with the groovy command and allow
-the launch of a script on startup passed as argument and continue
-execution of Groovysh
-(link:https://issues.apache.org/jira/browse/GROOVY-6754[GROOVY-6754])
-* make it easier to subclass Groovysh for reuse as an embedded shell
-(link:https://issues.apache.org/jira/browse/GROOVY-6752[GROOVY-6752])
-
-[[Groovy2.4releasenotes-Miscellaneous]]
-== Miscellaneous
-
-* Allow Ant targets declaration by AntBuilder without immediate
-execution (link:https://issues.apache.org/jira/browse/GROOVY-2900[GROOVY-2900])
-* Make `NamespaceBuilder` automatically detect namespace declarations
-(link:https://issues.apache.org/jira/browse/GROOVY-6890[GROOVY-6890])
-* Implement and register type checking extensions as subclasses of
-`TypeCheckingExtension`
-(link:https://issues.apache.org/jira/browse/GROOVY-6739[GROOVY-6739])
-* `ConfigObject` overrides `toString()` and offers a `prettyPrint()` method
-(link:https://issues.apache.org/jira/browse/GROOVY-7183[GROOVY-7183])
-* Improved type checking for certain GDK methods
-(link:https://issues.apache.org/jira/browse/GROOVY-6966[GROOVY-6966])
-* Grape is using JCenter through HTTP first for resolving dependencies,
-and now HTTPS is used for better security
-(link:https://issues.apache.org/jira/browse/GROOVY-7152[GROOVY-7152])
-* Parameters of `@DelegatesTo` and `@ClosureParams` are better aligned
-(link:https://issues.apache.org/jira/browse/GROOVY-6956[GROOVY-6956])
-* Multiple labels are supported on the same statement
-(link:https://issues.apache.org/jira/browse/GROOVY-3298[GROOVY-3298])
-
-[[Groovy2.4releasenotes-Breakingchanges]]
-== Breaking changes
-
-A few issues fixed might also be considered breaking changes in some
-situations:
-
-* Malformed class names for closures in inner classes
-(link:https://issues.apache.org/jira/browse/GROOVY-5351[GROOVY-5351])
-* Avoid creation of MOP methods in static compilation
-(link:https://issues.apache.org/jira/browse/GROOVY-6990[GROOVY-6990])
-* Reduce memory consumption for respondsTo()
-(link:https://issues.apache.org/jira/browse/GROOVY-7178[GROOVY-7178])
-* Making Groovysh more easily extendable and embeddable
-(link:https://issues.apache.org/jira/browse/GROOVY-6752[GROOVY-6752])
-
-[[Groovy2.4releasenotes-Moreinformation]]
-== More information
-
-You can browse all the link:../changelogs/changelog-2.4.0.html[tickets closed for Groovy 2.4 in JIRA].
diff --git a/site/src/site/releasenotes/groovy-2.5.adoc b/site/src/site/releasenotes/groovy-2.5.adoc
deleted file mode 100644
index db253d7..0000000
--- a/site/src/site/releasenotes/groovy-2.5.adoc
+++ /dev/null
@@ -1,721 +0,0 @@
-Groovy 2.5 comes with a host of new features and capabilities.
-
-[[Groovy2.5releasenotes-Packaging]]
-
-== Jar packaging and JDK9 support
-
-Groovy versions prior to 2.5 included a core groovy jar and
-numerous "module" jars, e.g. groovy-xml.jar. Note: Groovy's
-existing "modules" aren't (currently) the same as Java9+ modules (more on that later).
-
-We also provided a convenience "all" jar by jarjar'ing the core and
-"module" jars. As part of moving to better JDK9+ support,
-the "all" jar is no longer available but we do provide an
-"all" pom which brings in the equivalent component jars.
-
-For most users referencing Groovy's "all" dependency, simply
-bumping the version number should be sufficient for you to
-get all the same class files and transitive dependencies as before
-but there are some slight differences discussed below.
-For users with complex builds, which might (perhaps implicitly)
-reference the actual "all" jar itself, perhaps more remediation
-work might be required.
-
-There are some caveats:
-
-* the groovy-all jar used to have all the transitive dependencies
-(e.g. bsf.jar, testng.jar, ant.jar) listed as optional when referenced
-via the all dependency but included when referenced by the module
-dependencies (e.g. groovy-bsf, groovy-testng, groovy-ant). Now with the
-groovy-all pom since it references the module dependencies, those transitive
-dependencies are all now automatically added. This means that you might
-be able to delete explicit references to those dependencies if you are
-actually using them, and conversely, you might wish to explicitly exclude
-the respective groovy-module (or transitive dependency) for those modules
-you aren't in fact using.
-* please read the breaking changes section for unrelated changes
-to the included classes referenced by the "all" pom
-* also note that since the current jars don't comply fully
-yet with JDK9+ requirements (e.g. split package requirements)
-you may not be able to place the Groovy jars on your module path.
-Instead, place them on the classpath. On-going work for
-Groovy 3.0 will address split package issues (see https://issues.apache.org/jira/browse/GROOVY-8647). If the
-Groovy "modules" you want to use aren't in the list being rectified for Groovy 3.0, then
-you can probably use them on the module path. The Groovy build currently
-doesn't test such usage.
-
-[[Groovy2.5releasenotes-Macros]]
-
-== Macro support
-
-Groovy is well known for its extensible compilation process.
-The compiler supports a compile-time metaprogramming extension mechanism
-which allows the compilation process to be enhanced with new functionality.
-The mechanism allows the definition and execution of AST transformations at
-various stages of the compilation process.
-
-Groovy comes with a number of built-in AST transformations and, importantly,
-you can write your own. To write such transformations until now, you have
-had to become familiar with the compiler's internal representation of
-Groovy syntactic structures. But that has now changed.
-
-Groovy 2.5+ supports macros. Macros let you use Groovy syntax directly
-rather than using the internal compiler representations when creating
-compile-time metaprogramming extensions. This puts the creation of transformations
-in the hands of all Groovy programmers not just Groovy compiler gurus.
-
-=== Expressions and statements
-
-Suppose we want to create an `@Info` transform which when placed on a class
-creates a `getInfo()` method. Calling the `getInfo()` method will display some
-information about the class. The traditional way to write the transformation
-code might be something like:
-[source,groovy]
-----
-...
-def clazz = new MethodCallExpression(new VariableExpression("this"), "getClass", EMPTY_ARGUMENTS)
-def body = new ExpressionStatement(new MethodCallExpression(clazz, "getName", EMPTY_ARGUMENTS))
-classNode.addMethod('getInfo', ACC_PUBLIC, STRING_TYPE, EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, body)
-...
-----
-
-This will print out the class name when the `getInfo()` method is called.
-
-With macros, the first two lines become:
-
-[source,groovy]
-----
-def body = macro(true) { getClass().name }
-----
-
-Creation of both expressions and statements are supported. The `true` parameter
-to the `macro` method ensures we get a statement here which is what `addMethod` needs.
-
-Frequently you will want to receive parameters or resolve surrounding variables.
-This is supported using a special `$v` notation. Suppose we want to augment the `getInfo`
-method to additionally output the time the class was compiled and the Groovy version used.
-Our code might look like this:
-
-[source,groovy]
-----
-def date = new ConstantExpression(new Date().toString())
-def version = new ConstantExpression(GroovySystem.version)
-def body = macro(true) {
-    """\
-    Name: ${getClass().name}
-    Compiled: ${$v{ date }}
-    Using Groovy version: ${$v{ version }}""".stripIndent()
-}
-----
-
-What the macro does is convert any Groovy code inside the closure
-argument into its internal representation. When it gets to the
-`$v` placeholders it does no conversion and just inserts
-those sections directly. This is exactly what we want here since
-we wrote those parts old-school style using the internal
-AST data structures.
-
-=== Macro classes
-
-In addition to the ability to create statements and expressions, as supported by `macro`,
-you might want to create whole classes. The `MacroClass` capability allows you to do that.
-You supply the class you are wanting to create in a similar fashion to creating an anonymous
-inner class in Java. The following example shows the approach for a scenario where you
-might want to extract the information collected in previous examples in a class of its own:
-
-[source,groovy]
-----
-ClassNode buildInfoClass(ClassNode reference) {
-    def date = new ConstantExpression(new Date().toString())
-    def vers = new ConstantExpression(GroovySystem.version)
-    def name = new ClassExpression(reference)
-    ClassNode infoClass = new MacroClass() {
-        class DummyName {
-            java.lang.String getName() { $v{ name }.name }
-            java.lang.String getVersion() { $v{ vers } }
-            java.lang.String getCompiled() { $v{ date } }
-        }
-    }
-    infoClass.name = reference.name + 'Info'
-    return infoClass
-}
-----
-
-NOTE: Types inside the `MacroClass` implementation should be resolved inside, that's why we had to write
-`java.lang.String` instead of simply writing `String`. See the documentation for further details.
-
-The result of all this is that if we annotate a `Foo` class with `@Info`,
-then it is as if we also typed the following source code in as well:
-
-[source,groovy]
-----
-class FooInfo {
-    String getName() { 'Foo' }
-    String getVersion() { '2.5.0' }
-    String getCompiled() { 'Mon May 28 02:09:35 AEST 2018' }
-}
-----
-
-=== AST matching
-
-AST transforms typically add additional ASTNodes into the AST tree
-or change some existing subtrees of nodes with a transformed subtree.
-Macros are great for allowing us to succinctly describe the added or
-transformed subtree of nodes but don't offer us anything for identifying
-the subtree which might be the candidate to be replaced.
-This is where `ASTMatcher` comes to the rescue. `ASTMatcher` compares
-two expressions and each expression can be created with or without macros.
-
-Here's a trivial example of a transformer that looks for binary expressions
-of the form `1 + 1` in our code and if it finds it, replaces it with the constant `2`:
-
-[source,groovy]
-----
-Expression transform(Expression exp) {
-    Expression pattern = macro { 1 + 1 }
-    if (ASTMatcher.matches(exp, pattern)) {
-        return macro { 2 }
-    }
-    return super.transform(exp)
-}
-----
-
-This happens at compile time, so speeds up our code at runtime.
-
-We can generalise this a bit more since `ASTMatcher` supports constraints:
-
-[source,groovy]
-----
-Expression pattern = macro { a + b }.withConstraints {
-    placeholder a
-    placeholder b
-    anyToken()
-}
-----
-
-The `placeholder` constraint allows any term to appear
-and the `anyToken` allows `'-'`, `'*'`, `'/'`, `'<'` and other tokens to replace the `'+'`.
-
-We can make our transform a bit smarter too as follows:
-
-[source,groovy]
-----
-Expression transform(Expression exp) {
-    if (ASTMatcher.matches(exp, pattern)) {
-        BinaryExpression be = exp
-        Expression lhs = be.leftExpression
-        Expression rhs = be.rightExpression
-        if (lhs instanceof ConstantExpression && rhs instanceof ConstantExpression) {
-            def left = lhs.value
-            def right = rhs.value
-            if ((left instanceof String && right instanceof String)||
-                    (left instanceof Integer && right instanceof Integer)) {
-                def op = be.operation.text
-                left = left instanceof String ? "'" + left + "'" : left
-                right = right instanceof String ? "'" + right + "'" : right
-                def result = new GroovyShell().evaluate "$left $op $right"
-                return constX(result)
-            }
-        }
-    }
-    return exp.transformExpression(this)
-}
-----
-
-Now we can use our transform, e.g.:
-
-[source,groovy]
-----
-@SmartOps
-class Foo {
-    int theAnswer = 40 + 2
-    int eight = 4 * 2
-    def foobar = 'foo' + 'bar'
-    def test() {
-        assert 3 < 4
-        assert foobar.size() == 6
-        assert theAnswer + eight == 25 + 25
-    }
-}
-----
-
-If we look at this class at the end of the SEMANTIC_ANALYSIS phase in the AST
-browser, we'll indeed see that the initial value expression for `theAnswer`, `eight` and `foobar`
-are binary expressions as is the expression for the first assert and the right-hand side of the `==`
-expression for the third assert`. If we move forward to the end of the CANONICALIZATION phase
-we'll see that all 5 of those binary expressions are now constant expressions. It is as if we had typed
-our source code in as:
-
-[source,groovy]
-----
-class Foo {
-    int theAnswer = 42
-    int eight = 8
-    def foobar = 'foobar'
-    def test() {
-        assert true
-        assert foobar.size() == 6
-        assert theAnswer + eight == 50
-    }
-}
-----
-
-=== Macro methods
-
-The compiler capability to _expand_ macros with their replacements can also be enhanced by your own methods.
-Consider the following definition:
-
-[source,groovy]
-----
-class StringMacroMethods {
-    @Macro
-    static Expression upper(MacroContext macroContext, ConstantExpression constX) {
-        if (constX.value instanceof String) {
-            return new ConstantExpression(constX.value.toUpperCase())
-        }
-        macroContext.sourceUnit.addError(new SyntaxException("Can't use upper with non-String", constX))
-    }
-}
-----
-
-If you register the method in the same way as you would with extension methods (by creating
-a reference to the class in a `META-INF/groovy/org.codehaus.groovy.runtime.ExtensionMethods` file).
-
-Now, assuming the META-INF file and class are on your classpath, you can use the `upper` method in
-your code such as shown in the following test code:
-
-[source,groovy]
-----
-assertScript '''
-    def foo = upper('Foo')
-    assert foo == 'FOO'
-'''
-def msg = shouldFail '''
-    def foo = upper(42)
-'''
-assert msg.contains("Can't use upper with non-String")
-----
-
-It's important to realise that use of `upper` doesn't cause a call to `toUpperCase`
-to be embedded in the bytecode but rather causes `toUpperCase` to be called at compile time.
-
-[[Groovy2.5releasenotes-NewAstTransforms]]
-== New AST Transformations
-
-* `@AutoFinal` automatically applies the "final"-keyword to every parameter/field
-of an annotated class/method/closure/ctor.
-(link:https://issues.apache.org/jira/browse/GROOVY-8300[GROOVY-8300]).
-* `@AutoImplement` allows you to provide dummy implementations of any abstract
-methods that might be inherited from super classes or interfaces
-(link:https://issues.apache.org/jira/browse/GROOVY-7860[GROOVY-7860]).
-* `@ImmutableBase` checks the validity of an immutable class and makes some preliminary changes
-to the class to support immutability.
-Normally not used directly but brought in automatically by the `@Immutable` meta annotation.
-* `@ImmutableOptions` allows known immutable properties/classes to be declared.
-Normally not used directly but brought in automatically by the `@Immutable` meta annotation.
-* `@KnownImmutable` is a marker interface used to designate a class as being immutable.
-Not usually used explicitly but rather implicitly added via the `@Immutable` meta annotation.
-If you create your own Java or Groovy immutable class manually, you can add this annotation
-to save you having to list your class as one of the known immutable classes.
-* `@MapConstructor` adds a `Map`-based constructor to a class. This allows a usage
-style similar to Groovy's named parameters but doesn't use the no-arg constructor
-and then call setters. This is useful if you have final properties in your class or you
-need the class file to have the `Map` constructor for polyglot integration purposes
-(link:https://issues.apache.org/jira/browse/GROOVY-7353[GROOVY-7353]).
-* `@NamedDelegate` is a marker interface used to indicate that the property names of the annotated
-parameter represent valid key names when using named arguments and that the property types are
-applicable for type checking purposes
-* `@NamedParam` is a marker interface used to indicate that the name of the annotated parameter
-(or specified optional name) is a valid key name when using named arguments
-and that the parameter type is applicable for type checking purposes
-* `@NamedParams` is the collector annotation for `@NamedParam`
-* `@NamedVariant` allows construction of a named-arg equivalent of a method or constructor.
-This allows the creation of methods or constructors which can be used with Groovy's named-argument
-syntax yet still retain good type checking capabilities.
-Combining `@NamedDelegate` and `@NamedParam` when using `@NamedVariant` can be quite powerful.
-For example, given these class definitions:
-[source,groovy]
-----
-class Animal {
-    String type, name
-}
-
-@ToString(includeNames=true)
-class Color {
-    Integer r, g, b
-}
-
-@NamedVariant
-String foo(String s1, @NamedParam String s2,
-           @NamedDelegate Color shade,
-           @NamedDelegate Animal pet) {
-    "$s1 $s2 ${pet.type?.toUpperCase()}:$pet.name $shade"
-}
-----
-the constructed foo method will look like:
-[source,groovy]
-----
-String foo(@NamedParam(value = 's2', type = String)
-           @NamedParam(value = 'r', type = Integer)
-           @NamedParam(value = 'g', type = Integer)
-           @NamedParam(value = 'b', type = Integer)
-           @NamedParam(value = 'type', type = String)
-           @NamedParam(value = 'name', type = String)
-           Map __namedArgs, String s1) {
-    // some key validation code ...
-    return this.foo(s1, __namedArgs.s2,
-            ['r': __namedArgs.r, 'g': __namedArgs.g, 'b': __namedArgs.b] as Color,
-            ['type': __namedArgs.type, 'name': __namedArgs.name] as Animal)
-}
-----
-* `@PropertyOptions` a marker annotation used to indicate that special property handling code will be generated for this class.
-It can be used to override how properties are set within the constructor or accessed via getters. This lets you customize
-for instance how `@Immutable` classes are generated.
-* `@VisibilityOptions` is a marker annotation used in the context of AST transformations to provide a custom visibility.
-One example of its use would be when you want to create a private constructor
-that might perhaps be called only from within a static factory method of the class:
-[source,groovy]
-----
-import groovy.transform.*
-import static groovy.transform.options.Visibility.PRIVATE
-
-@TupleConstructor
-@VisibilityOptions(PRIVATE)
-class Person {
-    String name
-    static makePerson(String first, String last) {
-        new Person("$first $last")
-    }
-}
-----
-Here using `@TupleConstructor` saves us the effort of writing the typical
-boiler-plate code within the constructor but we don't need to make it public
-but instead use it within our hand-written factory method which can focus
-on our particular business logic relevant to that factory method.
-
-[[Groovy2.5releasenotes-AstTransformImprovements]]
-== AST Transformation improvements
-
-* `@Canonical` is now a meta-annotation (link:https://issues.apache.org/jira/browse/GROOVY-6319[GROOVY-6319])
-allowing more flexible usage of the annotation attributes from its constituent annotations and allowing
-you to define an alternative custom meta-annotation.
-`@Canonical` expands into the `@TupleConstructor`, `@EqualsAndHashCode` and `@ToString` annotations.
-Any annotation attributes are automatically distributed to the component annotations that support them
-as shown in the following example:
-[source,groovy]
-----
-@Canonical(cache = true, useSetters = true, includeNames = true)
-class Point {
-  int x, y
-}
-----
-is expanded into:
-[source,groovy]
-----
-@ToString(cache = true, includeNames = true)
-@TupleConstructor(useSetters = true)
-@EqualsAndHashCode(cache = true)
-class Point {
-  int x, y
-}
-----
-* `@Immutable` is now a meta-annotation (link:https://issues.apache.org/jira/browse/GROOVY-8440[GROOVY-8440])
-with the same advantages as described for `@Canonical`. It expands into numerous other annotations as shown
-in the following example:
-[source,groovy]
-----
-@Immutable
-class Point {
-  int x, y
-}
-----
-is equivalent to:
-[source,groovy]
-----
-@ToString(includeSuperProperties = true, cache = true)
-@EqualsAndHashCode(cache = true)
-@ImmutableBase
-@ImmutableOptions
-@PropertyOptions(propertyHandler = groovy.transform.options.ImmutablePropertyHandler)
-@TupleConstructor(defaults = false)
-@MapConstructor(noArg = true, includeSuperProperties = true, includeFields = true)
-@KnownImmutable
-class Point {
-  int x, y
-}
-----
-This might seem like quite a few component annotations but you rarely see
-the expanded list and having these annotations gives you fine-grained control
-when combing the bits you want, for example you can create a dependency injection
-(one constructor only) friendly immutable class by using this combination:
-[source,groovy]
-----
-@ImmutableBase
-@PropertyOptions(propertyHandler = ImmutablePropertyHandler)
-@Canonical(defaults=false)
-class Shopper {
-  String first, last
-  Date born
-  List items
-}
-----
-* `@Immutable` now supports Java's `Optional` container class
-(link:https://issues.apache.org/jira/browse/GROOVY-7600[GROOVY-7600]).
-* `@Immutable` handles inheritance hierarchies
-(link:https://issues.apache.org/jira/browse/GROOVY-7162[GROOVY-7162]).
-* `@Immutable` handles JSR-310 `java.time` classes
-(link:https://issues.apache.org/jira/browse/GROOVY-7599[GROOVY-7599]).
-* `@Delegate` can now be used on getters
-(link:https://issues.apache.org/jira/browse/GROOVY-7769[GROOVY-7769]).
-* `@TupleConstructor` now supports `pre` and `post` closure conditions to match the functionality provided by `@MapConstructor`
-(link:https://issues.apache.org/jira/browse/GROOVY-7769[GROOVY-7769]).
-* `@TupleConstructor` and `@Builder` should be able to use defined setters rather than the field directly
-(link:https://issues.apache.org/jira/browse/GROOVY-7087[GROOVY-7087]).
-* `@Newify` supports an additional attribute that allows selecting the classes whose constructors
-can be invoked without the `new` keyword using a regex pattern for the class name:
-[source,groovy]
-----
-@Newify(pattern="[A-Z].*")}
-class MyTreeProcessor {
-    final myTree = Tree(Tree(Leaf("A"), Leaf("B")), Leaf("C"))
-    ...
-}
-----
-* Most annotations check property and field names provided to annotation attributes
-(link:https://issues.apache.org/jira/browse/GROOVY-7087[GROOVY-7087]).
-
-[[Groovy2.5releasenotes-Toolimprovements]]
-== Tool improvements
-
-Some improvements were made to various tools:
-
-* `groovy` and `groovyConsole` now let you run JUnit 5 tests directly:
-[source,groovy]
-----
-import org.junit.jupiter.api.*
-// other imports not shown ...
-
-class MyTest {
-  @Test
-  void streamSum() {
-    assert Stream.of(1, 2, 3).mapToInt{ i -> i }.sum() > 5
-  }
-
-  @RepeatedTest(value=2, name = "{displayName} {currentRepetition}/{totalRepetitions}")
-  void streamSumRepeated() {
-    assert Stream.of(1, 2, 3).mapToInt{i -> i}.sum() == 6
-  }
-
-  private boolean isPalindrome(s) { s == s.reverse()  }
-
-  @ParameterizedTest // requires org.junit.jupiter:junit-jupiter-params
-  @ValueSource(strings = [ "racecar", "radar", "able was I ere I saw elba" ])
-  void palindromes(String candidate) {
-    assert isPalindrome(candidate)
-  }
-
-  @TestFactory
-  def dynamicTestCollection() {[
-    dynamicTest("Add test") { -> assert 1 + 1 == 2 },
-    dynamicTest("Multiply Test") { -> assert 2 * 3 == 6 }
-  ]}
-}
-----
-which when run will show:
-[source]
-----
-JUnit5 launcher: passed=8, failed=0, skipped=0, time=246ms
-----
-with additional information available via logging if needed.
-* `groovysh` offers easier access to grapes
-(link:https://issues.apache.org/jira/browse/GROOVY-6514[GROOVY-6514]).
-[source,groovy]
-----
-groovy:000> :grab 'com.google.guava:guava:24.1-jre'
-groovy:000> import com.google.common.collect.ImmutableBiMap
-===> com.google.common.collect.ImmutableBiMap
-groovy:000> m = ImmutableBiMap.of('foo', 'bar')
-===> [foo:bar]
-groovy:000> m.inverse()
-===> [bar:foo]
-groovy:000>
-----
-* `groovyConsole` now provides an ASMifier tab within the AstBrowser
-(link:https://issues.apache.org/jira/browse/GROOVY-8091[GROOVY-8091]).
-
-[[Groovy2.5releasenotes-clibuilder]]
-== CliBuilder changes
-
-* Groovy's CliBuilder now supports annotation style definitions
-(link:https://issues.apache.org/jira/browse/GROOVY-7825[GROOVY-7825]).
-* Revamped versions of CliBuilder now exist supporting Commons CLI and Picocli backed implementations. See
-this https://blogs.apache.org/logging/entry/groovy-2-5-clibuilder-renewal[blog post] for more details.
-
-[[Groovy2.5releasenotes-OtherImprovements]]
-== Other improvements
-
-* Repeated annotation support has been added
-* Alternative to `with` called `tap` that has an implicit `return delegate`
-(link:https://issues.apache.org/jira/browse/GROOVY-3976[GROOVY-3976]).
-* Various JSON customization options are now supported
-(link:https://issues.apache.org/jira/browse/GROOVY-6975[GROOVY-6975] and
-link:https://issues.apache.org/jira/browse/GROOVY-6854[GROOVY-6854]).
-* Method parameter names are now accessible at runtime
-(link:https://issues.apache.org/jira/browse/GROOVY-7423[GROOVY-7423]).
-
-[[Groovy2.5releasenotes-Breakingchanges]]
-== Breaking changes
-
-A few issues fixed might also be considered breaking changes in some
-situations:
-
-* The extension methods for the `java.util.Date` class are now in a separate
-`groovy-dateutil` module which isn't included by default when using the `groovy-all`
-pom dependency. Add the additional module as a dependency if you need it or consider
-migrating to the java.time JSR-310 classes (similar Groovy extension methods exist
-for those classes and they are included by default when using the `groovy-all` pom dependency).
-* @TupleConstructor could use the order of properties listed in 'includes' when that option is used
-(link:https://issues.apache.org/jira/browse/GROOVY-8016[GROOVY-8016])
-* @ToString could output properties in a predefined order when 'includes' is used
-(link:https://issues.apache.org/jira/browse/GROOVY-8014[GROOVY-8014])
-* AstNodeToScriptAdapter should output source using the recommended modifier order
-(link:https://issues.apache.org/jira/browse/GROOVY-7967[GROOVY-7967])
-* ObjectRange iterator returns null instead of NoSuchElementException
-(link:https://issues.apache.org/jira/browse/GROOVY-7961[GROOVY-7961])
-* IntRange iterator returns null instead of NoSuchElementException
-(link:https://issues.apache.org/jira/browse/GROOVY-7960[GROOVY-7960])
-(link:https://issues.apache.org/jira/browse/GROOVY-7937[GROOVY-7937])
-* o.c.g.r.t.DefaultTypeTransformation does not apply the right toString on primitive arrays when transforming to String
-(link:https://issues.apache.org/jira/browse/GROOVY-7853[GROOVY-7853])
-* Remove synchronized methods of groovy.sql.Sql and document it as not thread-safe
-(link:https://issues.apache.org/jira/browse/GROOVY-7673[GROOVY-7673])
-* InvokerHelper formatting methods have inconsistent API
-(link:https://issues.apache.org/jira/browse/GROOVY-7563[GROOVY-7563])
-* Fix up transforms (apart from TupleConstructor) which are affected by empty includes default
-(link:https://issues.apache.org/jira/browse/GROOVY-7529[GROOVY-7529])
-* TupleConstructor with empty includes includes all
-(link:https://issues.apache.org/jira/browse/GROOVY-7523[GROOVY-7523])
-* TupleConstructor overwrites empty default constructors
-(link:https://issues.apache.org/jira/browse/GROOVY-7522[GROOVY-7522])
-* ResourceGroovyMethods/NioGroovyMethods BOM behavior is inconsistent
-(link:https://issues.apache.org/jira/browse/GROOVY-7465[GROOVY-7465])
-* API inconsistency between takeWhile, dropWhile and collectReplacements for CharSequences
-(link:https://issues.apache.org/jira/browse/GROOVY-7433[GROOVY-7433])
-* @ToString could support non-field properties
-(link:https://issues.apache.org/jira/browse/GROOVY-7394[GROOVY-7394])
-* same linkedlist code different behavior between groovy and java
-(link:https://issues.apache.org/jira/browse/GROOVY-6396[GROOVY-6396])
-* CLONE - same linkedlist code different behavior between groovy and java (fix priority of DGM methods vs actual methods on an object)
-* Accessing private methods from public ones using categories and inheritance causes MissingMethodException
-(link:https://issues.apache.org/jira/browse/GROOVY-6263[GROOVY-6263])
-* Have the elvis operator (?:) support the Optional type in Java 8
-(link:https://issues.apache.org/jira/browse/GROOVY-6744[GROOVY-6744])
-* java.util.Optional should evaluate to false if empty
-(link:https://issues.apache.org/jira/browse/GROOVY-7611[GROOVY-7611])
-* If you use the FileSystemCompiler class programmatically (rather than via the groovyc commandline) and you use the
-part of it for handling commandline processing, then you might notice that it has been converted to picocli and usage
-of a handful of methods will throw a DeprecationException which mentions the alternative approach you should use.
-
-[[Groovy2.5releasenotes-Knownissues]]
-== Known issues
-
-* The GDK documentation for the java.time extensions wasn't included in the 2.5.0 release (please see 2.5.1+).
-* Users of `groovy.util.CliBuilder` need to also include the `org.codehaus.groovy:groovy-cli-commons`
-dependency on their compile classpath in addition to `groovy` or `groovy-all`. This won't be required
-after the next maintenance release but users should migrate away from that class in any case as it
-will be removed from the next major version of Groovy.
-* Users of Spock 1.1-groovy-2.4 may find strange ClassCastException errors with some tests, e.g. with `cleanup:`
-clauses. Using Spock 1.2-groovy-2.4-SNAPSHOT from the https://oss.sonatype.org/content/repositories/snapshots/
-repo may help but work is on-going to improve Spock support.
-* Users combining `final` and `@CompileStatic` or `final` and Spock may see errors from
-the final variable analyzer. Work is underway to resolve those error messages.
-You may need to temporarily remove the `final` modifier in the meantime.
-* Users needing the groovy-xml module and running on JDK9 and above may need to use
-the `--add-modules java.xml.bind` command-line option to fix the break in backwards
-compatibility caused by JDK9+.
-* JDK9+ produces warnings with many libraries including Groovy due to some planned
-future restrictions in the JDK. Work is underway to re-engineer parts of Groovy
-to reduce/remove those warnings. Users wanting to hush the warnings as an interim
-measure may consider using the `--add-opens` escape clause offered by JDK9+.
-See commit `92bd96f` (currently reverted) on the Groovy master branch for a potential
-list to add.
-* Users of the Spring Boot Gradle plugin wanting to upgrade to Groovy 2.5.0
-might like to re-check the plugin doco if you have any troubles. More comments here:
-https://github.com/spring-projects/spring-boot/issues/13444
-* proper OSGi operation was inadvertently broken due to split package
-issues. This should be fixed in 2.5.1. You can only use combinations of
-Groovy classes/modules which avoid the split package problem in the meantime.
-See https://issues.apache.org/jira/browse/GROOVY-8647 for the list of work being
-done on split packages to identify the affected modules/classes.
-
-[[Groovy2.5releasenotes-JDKrequirements]]
-== JDK requirements changes
-
-Groovy 2.5 requires JDK8+ to build and JDK7 is the minimum version of the JRE that we support.
-
-[[Groovy2.5releasenotes-Moreinformation]]
-== More information
-
-You can browse all the link:../changelogs/changelog-2.5.0.html[tickets closed for Groovy 2.5.0 in JIRA].
-
-[[Groovy2.5releasenotes-Addendum251]]
-== Addendum for 2.5.1
-
-We normally try very hard not to have breaking changes in minor releases, and that remains
-the case for the APIs within 2.5.1, but due to some bugs that slipped through 2.5.0 release
-candidate shakedown and also some usability feedback, we have made the following breaking
-packaging changes in 2.5.1:
-
-* `groovy-bsf` is now an optional module and isn't referenced by default when using the
-`groovy-all` pom dependency (this helps with an OSGi issue)
-* Groovy's extension methods for JAXB are now in the optional `groovy-jaxb` module.
-This means that you aren't using JAXB, you don't need to worry about the
-JDK JAXB changes even if you are using the `groovy-all` pom, you should have nothing to do. +
-If you do need the JAXB extension methods, please add that module to your dependency list,
-and depending on your JDK version (see table below), you may have some further steps, e.g.
-add additional dependencies or command-line switches,
-or set one of the JAVA_OPTS or JDK_JAVA_OPTIONS environment variables.
-[cols="2a,2a"]
-|===
-|JDK Version |Options
-| JDK8 | Do nothing
-| JDK9/10 | Command-line switch/environment variable value: +
-{nbsp}{nbsp}{nbsp}{nbsp}--add-modules java.xml.bind +
-when starting the JDK that Groovy will use or see solution for JDK11.
-For a gradle build that needs to work across JDK versions, you might need something like:
-
-`if (JavaVersion.current().isJava9Compatible()) {` +
-{nbsp}{nbsp} `def jaxbJvmArg = '--add-modules java.xml.bind'` +
-{nbsp}{nbsp} `tasks.withType(GroovyCompile) {` +
-{nbsp}{nbsp}{nbsp}{nbsp} `groovyOptions.fork = true` +
-{nbsp}{nbsp}{nbsp}{nbsp} `groovyOptions.forkOptions.jvmArgs.add(jaxbJvmArg)` +
-{nbsp}{nbsp} `}` +
-{nbsp}{nbsp} `tasks.withType(Test) {` +
-{nbsp}{nbsp}{nbsp}{nbsp} `jvmArgs jaxbJvmArg` +
-{nbsp}{nbsp} `}` +
-`}`
-
-The command-line switch approach is automatically done for the Groovy command-line tools, e.g. `groovyc`, `groovy`, `groovyConsole`, etc.
-since `groovy-jaxb` is currently bundled in the Groovy install.
-| JDK11 | Add these dependencies: +
-{nbsp}{nbsp}{nbsp}{nbsp}javax.xml.bind:jaxb-api:2.3.0 +
-{nbsp}{nbsp}{nbsp}{nbsp}com.sun.xml.bind:jaxb-core:2.3.0.1 +
-{nbsp}{nbsp}{nbsp}{nbsp}com.sun.xml.bind:jaxb-impl:2.3.0.1 +
-{nbsp}{nbsp}{nbsp}{nbsp}javax.activation:activation:1.1.1 +
-The first is required at compile time, the last three at runtime, the last only required for JDK11.
-For an example Gradle build that works JDK8 through 11, see
-link:https://github.com/apache/groovy/blob/master/subprojects/groovy-jaxb/build.gradle[build.gradle]
-in the groovy-jaxb subproject.
-|===
-Note: The above above steps aren't our final plan in this space. For 2.5.1, we focused just on making
-life better for non-JAXB users using Groovy via Gradle or Maven. For 2.5.2, we hope to make much
-of the above details as hidden as possible and certainly hidden for users of the groovy command-line
-tools for JDK9+.
-
-If you are using JDK9+ and the command-line tools (e.g. groovy, groovyc, groovyConsole)
-and want to make your life easier on 2.5.1 in the meantime,
-please consider doing one of the following:
-
-* remove groovy-jaxb jar from your Groovy distribution's lib directory
-* copy the startGroovy or startGroovy.bat script files from master
-* copy the four jars mentioned in the above JDK11 table entry into your lib directory
diff --git a/site/src/site/releasenotes/groovy-2.6.adoc b/site/src/site/releasenotes/groovy-2.6.adoc
deleted file mode 100644
index 32b7d0f..0000000
--- a/site/src/site/releasenotes/groovy-2.6.adoc
+++ /dev/null
@@ -1,49 +0,0 @@
-:source-highlighter: pygments
-:pygments-style: emacs
-:icons: font
-
-[width="80%",align="center"]
-|===
-a| NOTE: _WARNING:_
-The Groovy 2.6 version of Groovy has been retired to focus on faster delivery of Groovy 3.0.
-|===
-
-Groovy 2.6 was intended to be a back-port of Groovy 3.0 for JDK7 but with
-features requiring JDK 8 removed. Alpha versions have been released which support
-the new Parrot parser (when enabled) but these versions are not feature complete wrt Groovy 3.0 functionality.
-We have left the alpha versions available to help people wanting to port towards Groovy 3.0
-but who are stuck on JDK7. However, we strongly encourage all users on JDK8 or above
-to move directly to Groovy 3.0.
-You should consult the link:../groovy-3.0.html[Groovy 3.0 release notes] for a list of supported language changes.
-Only differences with 3.0 due to the different JVM requirements are reported here.
-
-[[Groovy2.6releasenotes-Parrot]]
-== Parrot Parser
-
-Groovy 2.6 defaults to using the old parser but you can enable the Parrot parser which supports additional syntax options and language features.
-
-=== Enabling the parser
-
-For Groovy 3.0, the new parser is enabled by default.
-However, for Groovy 2.6, you enable the new parser using a system property.
-Use `-Dgroovy.antlr4=true` (set via `JAVA_OPTS` if needed).
-
-If building from source, you need to provide Gradle with `-PuseAntlr4`
-in order to include the classes which support the new parser.
-
-== Feature differences with Groovy 3.0
-
-Groovy 2.6 doesn't support native lambdas.
-
-== Bundled dependencies
-
-Groovy 2.6 optionally uses an earlier version of Ant (vs a later version in Groovy 3.0 which requires JDK8).
-
-== JDK requirements
-
-Groovy 2.6 requires JDK8+ to build and JDK7 (vs JDK8 for Groovy 3.0) is the minimum version of the JRE that we support.
-
-[[Groovy2.6releasenotes-Moreinformation]]
-== More information
-
-You can browse all the link:../changelogs/changelog-2.6.0-alpha-1.html[tickets closed for Groovy 2.6 in JIRA].
diff --git a/site/src/site/releasenotes/groovy-3.0.adoc b/site/src/site/releasenotes/groovy-3.0.adoc
deleted file mode 100644
index 372c833..0000000
--- a/site/src/site/releasenotes/groovy-3.0.adoc
+++ /dev/null
@@ -1,494 +0,0 @@
-:source-highlighter: pygments
-:pygments-style: emacs
-:icons: font
-
-[width="80%",align="center"]
-|===
-a| NOTE: _WARNING:_
-Material on this page is still under development! We are currently creating alpha versions of Groovy 3.0 with a goal of gathering feedback on the language changes from our community. In addition, the alpha versions assist other projects and tool vendors within the Groovy ecosystem to begin assessing the impact of moving to/supporting Groovy 3.0. Caution should be exercised if using new features as the details may change before final release.)
-|===
-
-[[Groovy3.0releasenotes-Parrot]]
-== Parrot Parser
-
-Groovy 3.0, has a new parser that is far more flexible and maintainable than the parser in previous versions of Groovy. It's called the Parrot parser because in the early days of creating the parser, the goal was for the new parser's output to be an exact echo of what the old parser produced. The new parser has since been extended to support additional syntax options and language features.
-
-=== Disabling the parser
-
-The new parser is enabled by default in Groovy 3.0.
-You can disable the new parser by using a system property.
-Use `-Dgroovy.antlr4=false` (set via `JAVA_OPTS` if needed).
-It is not envisaged that this property would be needed in normal
-use. However, at least initially, if you have a problematic source
-file that doesn't seem to work with the new parser, you may be
-able to revert to the old parser to compile just that file.
-You won't be able to use any of the new language features with the
-old parser. The old parser will be deprecated and eventually removed
-in future Groovy versions.
-
-=== do/while loop
-
-Java's class do/while loop is now supported. Example:
-
-[source,groovy]
---------------------------------------
-// classic Java-style do..while loop
-def count = 5
-def fact = 1
-do {
-    fact *= count--
-} while(count > 1)
-assert fact == 120
---------------------------------------
-
-=== Enhanced classic Java-style for loop
-
-The more elaborate form of Java's classic for loop with comma-separate expressions
-is now supported. Example:
-
-[source,groovy]
---------------------------------------
-def facts = []
-def count = 5
-for (int fact = 1, i = 1; i <= count; i++, fact *= i) {
-    facts << fact
-}
-assert facts == [1, 2, 6, 24, 120]
---------------------------------------
-
-=== Multi-assignment in combination with for loop
-
-Groovy has supported multi-assignment statements since Groovy 1.6:
-
-[source,groovy]
---------------------------------------
-// multi-assignment with types
-def (String x, int y) = ['foo', 42]
-assert "$x $y" == 'foo 42'
---------------------------------------
-
-These can now appear in for loops:
-
-[source,groovy]
---------------------------------------
-// multi-assignment goes loopy
-def baNums = []
-for (def (String u, int v) = ['bar', 42]; v < 45; u++, v++) {
-    baNums << "$u $v"
-}
-assert baNums == ['bar 42', 'bas 43', 'bat 44']
---------------------------------------
-
-=== Java-style array initialization
-
-Groovy has always supported literal list/array definitions using square brackets
-and has avoided Java-style curly braces so as not to conflict with closure definitions.
-In the case where the curly braces come immediately after an array type declaration however,
-there is no ambiguity with closure definitions, so the Java style is now also supported.
-
-Examples:
-
-[source,groovy]
---------------------------------------
-def primes = new int[] {2, 3, 5, 7, 11}
-assert primes.size() == 5 && primes.sum() == 28
-assert primes.class.name == '[I'
-
-def pets = new String[] {'cat', 'dog'}
-assert pets.size() == 2 && pets.sum() == 'catdog'
-assert pets.class.name == '[Ljava.lang.String;'
-
-// traditional Groovy alternative still supported
-String[] groovyBooks = [ 'Groovy in Action', 'Making Java Groovy' ]
-assert groovyBooks.every{ it.contains('Groovy') }
---------------------------------------
-
-=== Java-style Lambda syntax
-
-The Java syntax for lambda expressions is now supported.
-
-[width="80%",align="center"]
-|===
-a| NOTE: _Experimental Status:_ While this feature will remain, we regard its current implementation as experimental. Currently, lambda expressions are turned into equivalent Groovy closures. An advantage of this approach is that it works even when using JDK7 (i.e. using Groovy 2.6 with Parrot parser enabled on a version 7 JRE) but it doesn't easily enable the same level of type inference and checking that Java 8 offers even when using `@TypeChecked` or `@CompileStatic` and might be much less performant in a range of scenarios. We are currently exploring supporting native lambda expression either instead of, or in addition to, conversion to closures. If we change the implementation, most users would experience no behavioral differences in their programs though a native implementation would likely be faster but only work on JDK8+. Our goal is to clarify this aspect of the language before reaching release candidate status.
-|===
-
-Examples:
-
-[source,groovy]
---------------------------------------
-import static java.util.stream.Collectors.toList
-
-(1..10).forEach((it) -> { println it })
-
-assert (1..10).stream()
-        .filter((it) -> it % 2 == 0)
-        .map((it) -> it * 2)
-        .collect(toList()) == [4, 8, 12, 16, 20]
---------------------------------------
-
-The normal variants are supported and Groovy adds additional features such as default parameter values:
-
-[source,groovy]
---------------------------------------
-// general form
-def add = (int x, int y) -> { def z = y; return x + z }
-assert add(3, 4) == 7
-
-// curly braces are optional for a single expression
-def sub = (int x, int y) -> x - y
-assert sub(4, 3) == 1
-
-// parameter types are optional
-def mult = (x, y) -> x * y
-assert mult(3, 4) == 12
-
-// no parentheses required for a single parameter with no type
-def isEven = n -> n % 2 == 0
-assert isEven(6)
-assert !isEven(7)
-
-// no arguments case
-def theAnswer = () -> 42
-assert theAnswer() == 42
-
-// any statement requires braces
-def checkMath = () -> { assert 1 + 1 == 2 }
-checkMath()
-
-// example showing default parameter values (no Java equivalent)
-def addWithDefault = (int x, int y = 100) -> x + y
-assert addWithDefault(1, 200) == 201
-assert addWithDefault(1) == 101
---------------------------------------
-
-=== Method references
-
-The Java 8 method reference syntax using the double colon syntax is now supported.
-
-[width="80%",align="center"]
-|===
-a| NOTE: _Experimental Status:_ While this feature will remain, we regard its current implementation as experimental. Currently, a method reference is turned into a Groovy method closure. This means that it even works when using JDK7 (i.e. using Groovy 2.6 with Parrot parser enabled on a version 7 JRE). We are currently exploring supporting native method references either instead of, or in addition to, method closures. If we change the implementation, we would expect no change in logical behavior though the new implementation may have different performance characteristics in some circumstances and the native implementation would only work on JDK8+.  Our goal is to clarify this aspect of the language before reaching release candidate status.
-|===
-
-The following examples illustrate referencing both static and instance methods of a class:
-
-[source,groovy]
---------------------------------------
-import java.util.stream.Stream
-import static java.util.stream.Collectors.toList
-
-// class::staticMethod
-assert ['1', '2', '3'] ==
-        Stream.of(1, 2, 3)
-                .map(String::valueOf)
-                .collect(toList())
-
-// class::instanceMethod
-assert ['A', 'B', 'C'] ==
-        ['a', 'b', 'c'].stream()
-                .map(String::toUpperCase)
-                .collect(toList())
---------------------------------------
-
-The following examples illustrate referencing methods of instance variables:
-
-[source,groovy]
---------------------------------------
-// instance::instanceMethod
-def sizeAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'::length
-assert sizeAlphabet() == 26
-
-// instance::staticMethod
-def hexer = 42::toHexString
-assert hexer(127) == '7f'
---------------------------------------
-
-The following examples illustrate referencing constructors:
-
-[source,groovy]
---------------------------------------
-// normal constructor
-def r = Random::new
-assert r().nextInt(10) in 0..9
-
-// array constructor refs are handy when working with various Java libraries, e.g. streams
-assert [1, 2, 3].stream().toArray().class.name == '[Ljava.lang.Object;'
-assert [1, 2, 3].stream().toArray(Integer[]::new).class.name == '[Ljava.lang.Integer;'
-
-// works with multi-dimensional arrays too
-def make2d = String[][]::new
-def tictac = make2d(3, 3)
-tictac[0] = ['X', 'O', 'X']
-tictac[1] = ['X', 'X', 'O']
-tictac[2] = ['O', 'X', 'O']
-assert tictac*.join().join('\n') == '''
-XOX
-XXO
-OXO
-'''.trim()
-
-// also useful for your own classes
-import groovy.transform.Canonical
-import java.util.stream.Collectors
-
-@Canonical
-class Animal {
-    String kind
-}
-
-def a = Animal::new
-assert a('lion').kind == 'lion'
-
-def c = Animal
-assert c::new('cat').kind == 'cat'
-
-def pets = ['cat', 'dog'].stream().map(Animal::new)
-def names = pets.map(Animal::toString).collect(Collectors.joining( "," ))
-assert names == 'Animal(cat),Animal(dog)'
---------------------------------------
-
-=== !in and !instanceof operators
-
-When wanting the negated form, rather than having to bracket expressions containing
-the `in` and `instanceof` infix operators and placing the exclamation operator in
-front of the brackets, an inline variant is now also supported. Examples:
-
-[source,groovy]
---------------------------------------
-/* assert !(45 instanceof Date) // old form */
-assert 45 !instanceof Date
-
-assert 4 !in [1, 3, 5, 7]
---------------------------------------
-
-=== Elvis assignment operator
-
-Groovy introduced the Elvis operator Example:
-
-[source,groovy]
---------------------------------------
-import groovy.transform.ToString
-
-@ToString
-class Element {
-    String name
-    int atomicNumber
-}
-
-def he = new Element(name: 'Helium')
-he.with {
-    name = name ?: 'Hydrogen'   // existing Elvis operator
-    atomicNumber ?= 2           // new Elvis assignment shorthand
-}
-assert he.toString() == 'Element(Helium, 2)'
---------------------------------------
-
-=== Identity comparison operators
-
-Both `===` and `!==` are supported which are the same as calling the `is()` method.
-
-[source,groovy]
---------------------------------------
-import groovy.transform.EqualsAndHashCode
-
-@EqualsAndHashCode
-class Creature { String type }
-
-def cat = new Creature(type: 'cat')
-def copyCat = cat
-def lion = new Creature(type: 'cat')
-
-assert cat.equals(lion) // Java logical equality
-assert cat == lion      // Groovy shorthand operator
-
-assert cat.is(copyCat)  // Groovy identity
-assert cat === copyCat  // operator shorthand
-assert cat !== lion     // negated operator shorthand
---------------------------------------
-
-=== Safe indexing
-
-[source,groovy]
---------------------------------------
-String[] array = ['a', 'b']
-assert 'b' == array?[1]      // get using normal array index
-array?[1] = 'c'              // set using normal array index
-assert 'c' == array?[1]
-
-array = null
-assert null == array?[1]     // return null for all index values
-array?[1] = 'c'              // quietly ignore attempt to set value
-assert null == array?[1]
-
-def personInfo = [name: 'Daniel.Sun', location: 'Shanghai']
-assert 'Daniel.Sun' == personInfo?['name']      // get using normal map index
-personInfo?['name'] = 'sunlan'                  // set using normal map index
-assert 'sunlan' == personInfo?['name']
-
-personInfo = null
-assert null == personInfo?['name']              // return null for all map values
-personInfo?['name'] = 'sunlan'                  // quietly ignore attempt to set value
-assert null == personInfo?['name']
---------------------------------------
-
-=== ARM Try with resources
-
-Groovy often provides better alternatives to Java 7's `try`-with-resources statement for Automatic Resource Management (ARM).
-That syntax is now supported for Java programmers migrating to Groovy and still wanting to use the old style:
-
-[source,groovy]
---------------------------------------
-class FromResource extends ByteArrayInputStream {
-    @Override
-    void close() throws IOException {
-        super.close()
-        println "FromResource closing"
-    }
-
-    FromResource(String input) {
-        super(input.toLowerCase().bytes)
-    }
-}
-
-class ToResource extends ByteArrayOutputStream {
-    @Override
-    void close() throws IOException {
-        super.close()
-        println "ToResource closing"
-    }
-}
-
-def wrestle(s) {
-    try (
-            FromResource from = new FromResource(s)
-            ToResource to = new ToResource()
-    ) {
-        to << from
-        return to.toString()
-    }
-}
-
-assert wrestle("ARM was here!").contains('arm')
---------------------------------------
-Which yields the following output:
---------------------------------------
-ToResource closing
-FromResource closing
---------------------------------------
-
-=== Nested code blocks
-
-An infrequently used structure within Java is the anonymous code block.
-It's generally not encouraged as it's often a sign that refactoring the
-related code into a method is in order. But it's sometimes useful to
-restrict scoping and is now available in Groovy:
-
-[source,groovy]
---------------------------------------
-{
-    def a = 1
-    a++
-    assert 2 == a
-}
-try {
-    a++ // not defined at this point
-} catch(MissingPropertyException ex) {
-    println ex.message
-}
-{
-    {
-        // inner nesting is another scope
-        def a = 'banana'
-        assert a.size() == 6
-    }
-    def a = 1
-    assert a == 1
-}
---------------------------------------
-
-Be aware though that in Groovy having a code block looking structure after any method
-call will be seen as an attempt to pass a closure as the last parameter in the method call.
-This happens even after a new line. So it's safe to start an anonymous code block after any other
-block (e.g. an if-then-else statement or another anonymous code block). Anywhere else and
-you might need to terminate the previous statement with a semicolon. In which case, see the
-note above about refactoring your code! :-)
-
-===  Interface default methods
-
-Java 8 supports adding default implementations to interfaces. Groovy now supports this too:
-
-[source,groovy]
---------------------------------------
-interface Greetable {
-    String target()
-
-    default String salutation() {
-        'Greetings'
-    }
-
-    default String greet() {
-        "${salutation()}, ${target()}"
-    }
-}
-
-class Greetee implements Greetable {
-    String name
-    @Override
-    String target() { name }
-}
-
-def daniel = new Greetee(name: 'Daniel')
-assert 'Greetings, Daniel' == "${daniel.salutation()}, ${daniel.target()}"
-assert 'Greetings, Daniel' == daniel.greet()
---------------------------------------
-
-[width="80%",align="center"]
-|===
-a| NOTE: _Experimental Status:_ While this feature will remain, we regard its current implementation as experimental. Currently, interface default methods are implemented using traits. This means that they work even when using JDK7 (i.e. using Groovy 2.6 with Parrot parser enabled on a version 7 JRE). We are currently exploring supporting native default methods in interfaces instead of, or in addition to, the trait implementation. If we change the implementation, we would expect no change in logical behavior though the new implementation may have different performance characteristics in some circumstances and the native implementation would only work on JDK8+.  Our goal is to clarify this aspect of the language before reaching release candidate status.
-|===
-
-[[Groovy3.0releasenotes-Miscimprovements]]
-== Miscellaneous improvements
-
-=== Embedded GroovyDoc
-
-You can now embed Groovydoc in various ways.
-
-It can be attached to the AST as node metadata and available during compilation for use by for instance
-AST transformations or other tools. This is enabled using the `groovy.attach.groovydoc` system property.
-
-It can also be embedded into the class file via an annotation and available at runtime for access
-via reflection or via other tools. This is enabled using the 'groovy.attach.runtime.groovydoc' system property
-to globally enable the attachment of all Groovydoc or by using a special `@Groovydoc` tag/annotation at
-the start of any Groovydoc comment. You normally don't deal with the annotation directly - the compiler handles
-proper placement of the annotation and an extension method allows easy access to the Groovydoc comment value.
-Here is a typical example:
-
-[source,groovy]
---------------------------------------
-/** fee fi */
-class Foo {
-    /** @Groovydoc fo fum */
-    def bar() { }
-}
-// next line assumes groovy.attach.runtime.groovydoc system property is true
-assert Foo.class.groovydoc.content.contains('fee fi')
-def bar = Foo.methods.find{ it.name == 'bar' }
-// next line always true due to explicit @Groovydoc
-assert bar.groovydoc.content.contains('@Groovydoc fo fum')
---------------------------------------
-
-=== JSR308 improvements (work in progress)
-
-Groovy has been improving JSR-308 support over recent versions.
-As part of implementing the new grammar, additional support has been added.
-
-== JDK requirements
-
-Groovy 3.0 requires JDK8+ to build and JDK8 is the minimum version of the JRE that we support. As additional Java 9/10 support is added, the version
-required to build may be bumped to JDK9.
-
-[[Groovy3.0releasenotes-Moreinformation]]
-== More information
-
-You can browse all the link:../changelogs/changelog-3.0.0-alpha-1.html[tickets closed for Groovy 3.0 in JIRA]. Note: some of the tickets relevant for this release are contained in the link:../changelogs/changelog-2.6.0-alpha-1.html[tickets closed for Groovy 2.6].
diff --git a/site/src/site/releasenotes/img/AstBrowser.png b/site/src/site/releasenotes/img/AstBrowser.png
deleted file mode 100644
index 36f1aab..0000000
--- a/site/src/site/releasenotes/img/AstBrowser.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/releasenotes/img/newoutputwindow.png b/site/src/site/releasenotes/img/newoutputwindow.png
deleted file mode 100644
index 38d0877..0000000
--- a/site/src/site/releasenotes/img/newoutputwindow.png
+++ /dev/null
Binary files differ
diff --git a/site/src/site/sitemap-dev.groovy b/site/src/site/sitemap-dev.groovy
deleted file mode 100644
index cddb119..0000000
--- a/site/src/site/sitemap-dev.groovy
+++ /dev/null
@@ -1,56 +0,0 @@
-def userSiteBase = 'http://groovy-lang.org/'
-def devSiteBase = '/'
-
-changelogs = false
-releaseNotes = false
-
-menu {
-    group('Groovy') {
-        item 'Learn',                       "${userSiteBase}learn.html"
-        item 'Documentation',               "${userSiteBase}documentation.html"
-        item 'Download',                    "${userSiteBase}download.html"
-        item 'Support',                     "${userSiteBase}support.html"
-        item 'Contribute',                  "${devSiteBase}"
-        item 'Ecosystem',                   "${userSiteBase}ecosystem.html"
-    }
-
-    group('About') {
-        item 'Source code',                 'https://github.com/apache/groovy'
-        item 'Security',                    "${userSiteBase}security.html"
-        item 'Books',                       "${userSiteBase}learn.html#books"
-        item 'Thanks',                      "${userSiteBase}thanks.html"
-        item 'Sponsorship',                 'http://www.apache.org/foundation/sponsorship.html'
-        item 'FAQ',                         "${userSiteBase}faq.html"
-        item 'Search',                      "${userSiteBase}search.html"
-    }
-
-    group('Socialize') {
-        item 'Discuss on the mailing-list', "${userSiteBase}mailing-lists.html",                'fa-envelope'
-        item 'Groovy newsletter',           "${userSiteBase}groovy-weekly.html",                'fa-envelope-o'
-        item 'Groovy on Twitter',           'https://twitter.com/ApacheGroovy',                 'fa-twitter'
-        item 'Events and conferences',      "${userSiteBase}events.html",                       'fa-calendar'
-        item 'Source code on GitHub',       'https://github.com/apache/groovy',                 'fa-github'
-        item 'Report issues in Jira',       "${userSiteBase}reporting-issues.html",             'fa-bug'
-        item 'Google+ Groovy Page',         'https://google.com/+groovy',                       'fa-google-plus'
-        item 'Google+ Groovy Community',    'http://bit.ly/g-community',                        'fa-google-plus'
-        item 'Stack Overflow questions',    'http://stackoverflow.com/questions/tagged/groovy', 'fa-stack-overflow'
-        item 'Slack Community',             'http://groovycommunity.com/',                      'fa-slack'
-    }
-}
-
-pages {
-//    page 'index', 'index', [:]
-    page 'search', 'search', [category: 'Search']
-    page 'versioning', 'versioning', [category: 'Download']
-    page 'contribute', 'index', [category: 'Develop']
-    page 'buildstatus', 'buildstatus', [category: 'Develop']
-    page 'faq', 'faq', [category: 'Documentation']
-    page '404','404', [:]
-}
-
-documentation {
-    section('Getting started','fa-graduation-cap') {
-        //          NAME                                     TARGET HTML         DOCPAGE HTML                       GENERATE
-        item 'Download Groovy',                             'download',         'download',                         false
-    }
-}
diff --git a/site/src/site/sitemap-user.groovy b/site/src/site/sitemap-user.groovy
deleted file mode 100644
index 07f323a..0000000
--- a/site/src/site/sitemap-user.groovy
+++ /dev/null
@@ -1,484 +0,0 @@
-wiki = false
-
-menu {
-    group('Groovy') {
-        item 'Learn',                       'learn.html'
-        item 'Documentation',               'documentation.html'
-        item 'Download',                    'download.html'
-        item 'Support',                     'support.html'
-        item 'Contribute',                  'http://groovy.apache.org'
-        item 'Ecosystem',                   'ecosystem.html'
-    }
-
-    group('About') {
-        item 'Source code',                 'https://github.com/apache/groovy'
-        item 'Security',                    'security.html'
-        item 'Books',                       'learn.html#books'
-        item 'Thanks',                      'thanks.html'
-        item 'Sponsorship',                 'http://www.apache.org/foundation/sponsorship.html'
-        item 'FAQ',                         'faq.html'
-        item 'Search',                      'search.html'
-    }
-
-    group('Socialize') {
-        item 'Discuss on the mailing-list', 'mailing-lists.html',                               'fa-envelope'
-        item 'Groovy newsletter',           'groovy-weekly.html',                               'fa-envelope-o'
-        item 'Groovy on Twitter',           'https://twitter.com/ApacheGroovy',                 'fa-twitter'
-        item 'Events and conferences',      'events.html',                                      'fa-calendar'
-        item 'Source code on GitHub',       'https://github.com/apache/groovy',                 'fa-github'
-        item 'Report issues in Jira',       'reporting-issues.html',                            'fa-bug'
-        item 'Google+ Groovy Page',         'https://google.com/+groovy',                       'fa-google-plus'
-        item 'Google+ Groovy Community',    'http://bit.ly/g-community',                        'fa-google-plus'
-        item 'Stack Overflow questions',    'http://stackoverflow.com/questions/tagged/groovy', 'fa-stack-overflow'
-	    item 'Slack Community',             'http://groovycommunity.com/',                      'fa-slack'
-    }
-}
-
-pages {
-    page 'index', 'index', [allEvents: allEvents]
-    page 'search', 'search', [category: 'Search']
-    page 'ecosystem', 'ecosystem', [category: 'Ecosystem', ecosys: ecosystem]
-    page 'learn', 'learn', [category: 'Learn', docSections: documentationSections, allBooks: library, videos: videos, courses: courses]
-    page 'documentation', 'documentation', [category: 'Documentation', docSections: documentationSections, allDocVersions: allDocVersions]
-    page 'download', 'download', [category: 'Download', distributions: distributions]
-    page 'versioning', 'versioning', [category: 'Download']
-    page 'indy', 'indy', [category: 'Download']
-    page 'security', 'security', [category: 'Learn']
-    page 'reporting-issues', 'reporting-issues', [category: 'Support']
-    page 'support', 'support', [category: 'Support']
-    page 'usergroups', 'usergroups', [category: 'Support', userGroups: usergroups]
-    page 'groovy-weekly', 'groovy-weekly', [category: 'Support']
-    page 'mailing-lists', 'mailing-lists', [category: 'Support']
-    page 'contribute', 'contribute', [category: 'Develop']
-    page 'thanks', 'thanks', [category: 'Support']
-    page 'faq', 'faq', [category: 'Documentation', docSections: documentationSections]
-    page 'events', 'events', [category: 'Support', allEvents: allEvents]
-    page 'api', 'api', [category: 'Learn', iframeTarget: "${DOCS_BASEURL}/html/gapi"]
-    page 'gdk', 'gdk', [category: 'Learn', iframeTarget: "${DOCS_BASEURL}/html/groovy-jdk"]
-    page 'singlepagedocumentation', 'single-page-documentation', [category: 'Learn', iframeTarget: "${DOCS_BASEURL}/html/documentation/"]
-    page 'changelogs', 'changelogs', [:]
-    page '404','404', [:]
-}
-
-documentation {
-    groovyDocumentationVersions([
-            '1.7.0', '1.7.1', '1.7.2', '1.7.3', '1.7.4', '1.7.5', '1.7.6', '1.7.7', '1.7.8', '1.7.9', '1.7.10', '1.7.11',
-            '1.8.0', '1.8.1', '1.8.2', '1.8.3', '1.8.4', '1.8.5', '1.8.6', '1.8.7', '1.8.8', '1.8.9',
-            '2.0.0', '2.0.1', '2.0.2', '2.0.3', '2.0.4', '2.0.5', '2.0.6', '2.0.7', '2.0.8',
-            '2.1.0', '2.1.1', '2.1.2', '2.1.3', '2.1.4', '2.1.5', '2.1.6', '2.1.7', '2.1.8', '2.1.9',
-            '2.2.0', '2.2.1', '2.2.2',
-            '2.3.0', '2.3.1', '2.3.2', '2.3.3', '2.3.4', '2.3.5', '2.3.6', '2.3.7', '2.3.8', '2.3.9', '2.3.10', '2.3.11',
-            '2.4.0', '2.4.1', '2.4.2', '2.4.3', '2.4.4', '2.4.5', '2.4.6', '2.4.7', '2.4.8', '2.4.9', '2.4.10', '2.4.11', '2.4.12', '2.4.13', '2.4.14', '2.4.15',
-            '2.5.0-rc-1', '2.5.0-rc-2', '2.5.0-rc-3', '2.5.0', '2.5.1', '2.5.2', '2.5.3', '2.5.4',
-            '2.6.0-alpha-1', '2.6.0-alpha-2', '2.6.0-alpha-3', '2.6.0-alpha-4',
-            '3.0.0-alpha-1', '3.0.0-alpha-2', '3.0.0-alpha-3',
-    ])
-
-    section('Getting started','fa-graduation-cap') {
-        //          NAME                                     TARGET HTML         DOCPAGE HTML                       GENERATE
-        item 'Download Groovy',                             'download',         'download',                         false
-        item 'Install Groovy',                              'install',          'core-getting-started'
-        item 'Differences with Java',                       'differences',      'core-differences-java'
-        item 'The Groovy Development Kit',                  'groovy-dev-kit',   'core-gdk'
-        item 'Runtime and compile-time metaprogramming',    'metaprogramming',  'core-metaprogramming'
-        item 'The Grape dependency manager',                'grape',            'grape'
-        item 'Testing guide',                               'testing',          'core-testing-guide'
-        item 'Domain-Specific Languages',                   'dsls',             'core-domain-specific-languages'
-        item 'Integrating Groovy into applications',        'integrating',      'guide-integrating'
-        item 'Security',                                    'security',         'security'
-        item 'Design patterns in Groovy',                   'design-patterns',  'design-pattern-in-groovy'
-        item 'Style guide',                                 'style-guide',      'style-guide'
-    }
-
-    section ('Language Specification', 'fa-graduation-cap') {
-        item 'Syntax',              'syntax',               'core-syntax'
-        item 'Operators',           'operators',            'core-operators'
-        item 'Program structure',   'structure',            'core-program-structure'
-        item 'Object orientation',  'objectorientation',    'core-object-orientation'
-        item 'Closures',            'closures',             'core-closures'
-        item 'Semantics',           'semantics',            'core-semantics'
-    }
-
-    section ('Tools','fa-gears') {
-        item 'groovyc — the Groovy compiler',               'groovyc',          'tools-groovyc'
-        item 'groovysh — the Groovy command -like shell',   'groovysh',         'groovysh'
-        item 'groovyConsole — the Groovy Swing console',    'groovyconsole',    'groovy-console'
-        item 'IDE integration', 'ides', 'tools-ide'
-    }
-
-    section('Groovy module guides', 'fa-cubes') {
-        item 'Parsing and producing JSON',          'json',             'json-userguide'
-        item 'Working with a relational database',  'databases',        'sql-userguide'
-        item 'Processing XML',                      'processing-xml',   'xml-userguide'
-        item 'Scripting Ant tasks',                 'scripting-ant',    'ant-builder'
-        item 'Template engines',                    'templating',       'template-engines'
-        item 'Creating Swing UIs',                  'swing',            'swing-builder'
-        item 'Servlet support',                     'servlet',          'servlet-userguide'
-        item 'Working with JMX',                    'jmx',              'jmx'
-    }
-
-    section ('API documentation', 'fa-code') {
-        item 'GroovyDoc documentation of the Groovy APIs',  'api',    'api'
-        item 'The Groovy Development Kit enhancements',     'gdk',    'gdk'
-    }
-}
-
-downloads {
-    distribution('Groovy 3.0') {
-        description {
-            yield 'Groovy 3.0 is a bleeding edge '
-            a(href: 'versioning.html', 'version')
-            yield ' of Groovy designed for JDK8+ and with the new Parrot parser enabled by default. Pre-stable versions are available:'
-        }
-        version('3.0.0-alpha-3') {
-            stable false
-            windowsInstaller 'https://dl.bintray.com/groovy/Distributions/groovy-3.0.0-alpha-3-installer.exe'
-        }
-    }
-    distribution('Groovy 2.6') {
-        description {
-            yield 'Groovy 2.6 is designed for JDK7+ and supports the new Parrot parser (when enabled) but has been'
-            yield ' retired before reaching final release to focus on Groovy 3.0. Alpha versions are available to help'
-            yield ' people wanting to port towards Groovy 3.0 but who are stuck on JDK7. See links under "Other versions" for details.'
-        }
-    }
-    distribution('Groovy 2.5') {
-        description {
-            yield 'Groovy 2.5 is the latest stable '
-            a(href: 'versioning.html', 'version')
-            yield ' of Groovy.'
-        }
-        version('2.5.4') {
-            stable true
-            windowsInstaller 'https://dl.bintray.com/groovy/Distributions/groovy-2.5.4-installer.exe'
-        }
-    }
-    distribution('Groovy 2.4') {
-        description {
-            yield 'Groovy 2.4 is the previous stable '
-            a(href: 'versioning.html', 'version')
-            yield ' of Groovy.'
-            yieldUnescaped ''' Important: Releases before 2.4.4 weren't done under the Apache Software Foundation and are provided as a convenience, without any warranty.'''
-        }
-        version('2.4.15') {
-            stable true
-            windowsInstaller 'https://dl.bintray.com/groovy/Distributions/groovy-2.4.15-installer.exe'
-        }
-    }
-}
-
-ecosystem {
-    project('Grails') {
-        description 'Grails is an Open Source, full stack, web application framework for the JVM. It takes advantage of the Groovy programming language and convention over configuration to provide a productive and stream-lined development experience.'
-        url 'http://grails.org/'
-        logo 'img/ecosystem/grails.png'
-    }
-
-    project('Gradle') {
-        description 'Gradle is build automation evolved. Gradle can automate the building, testing, publishing, deployment and more of software packages or other types of projects such as generated static websites, generated documentation or indeed anything else.'
-        url 'http://gradle.org'
-        logo 'img/ecosystem/gradle.png'
-    }
-
-    project('Spock') {
-        description 'Spock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd is its beautiful and highly expressive specification language. Thanks to its JUnit runner, Spock is compatible with most IDEs, build tools, and continuous integration servers.'
-        url 'http://spockframework.org/'
-        logo ''
-    }
-
-    project('GPars') {
-        description 'The GPars framework offers Java developers intuitive and safe ways to handle Java or Groovy tasks concurrently. Leveraging the enormous flexibility of the Groovy programming language and building on proven Java technologies, we aim to make concurrent programming for multi-core hardware intuitive, robust and enjoyable.'
-        url 'http://www.gpars.org/'
-        logo 'img/ecosystem/gpars.png'
-    }
-
-    project('Ratpack') {
-        description 'Ratpack is a simple, capable, toolkit for creating high performance web applications.'
-        url 'http://www.ratpack.io/'
-        logo 'img/ecosystem/ratpack.png'
-    }
-
-    project('Griffon') {
-        description 'Griffon is an application framework for developing desktop applications in the JVM, with Groovy being the primary language of choice. Inspired by Grails, Griffon follows the Convention over Configuration paradigm, paired with an intuitive MVC architecture and a command line interface.'
-        url 'http://griffon-framework.org/'
-        logo 'img/ecosystem/griffon.png'
-    }
-
-    project('Geb') {
-        description 'Geb is a powerful browser functional testing framework that lets you quickly and easily write functional tests in Groovy. It brings together the power of WebDriver, the elegance of jQuery content selection, the robustness of Page Object modelling and the expressiveness of the Groovy language.'
-        url 'http://www.gebish.org/'
-        logo 'img/ecosystem/geb.png'
-    }
-
-    project('SDKMAN!') {
-        description 'SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on most Unix based systems. It provides a convenient command line interface for installing, switching, removing and listing Candidates.'
-        url 'http://sdkman.io/'
-        logo 'img/ecosystem/sdkman.png'
-    }
-
-    project('BeakerX') {
-        description 'BeakerX brings Groovy to the Jupyter interactive computing environment.  It provides interactive plots, tables, and a notebook-style web UI.'
-        url 'http://beakerx.com/'
-        logo 'img/ecosystem/beakerx.png'
-    }
-    project('Micronaut') {
-        description 'Micronaut is a modern, JVM-based, full-stack framework for building modular, easily testable microservice applications. '
-        url 'http://micronaut.io/'
-        logo 'img/ecosystem/micronaut.png'
-    }
-}
-
-allEvents {
-    // Note that the event image should be 257x180 to look nice
-    event('Greach: The Groovy Spanish Conference') {
-        location 'Madrid, Spain'
-        date 'March 28 - 30, 2019'
-        url 'http://greachconf.com'
-        logo 'img/confs/greach.png'
-        description '<p>' +
-                'Android + JVM langs + JVM frameworks conference in Madrid, Spain with 100% English talks.' +
-                '</p>'
-    }
-    event('GR8Conf EU') {
-        location 'Copenhagen, Denmark'
-        date 'May 27 - 29, 2019'
-        url 'http://gr8conf.eu/'
-        logo 'img/confs/gr8confeu.png'
-        description '''
-            <p>
-            Groovy, Grails, and related technologies have seen astounding growth in interest and adoption over the past few years, and with good reason.
-            </p>
-            <p>GR8Conf is a series of conferences founded to spread the word worldwide. The 2018 GR8Conf Europe is celebrating its 10th year, and it's expected to be a blast. As in 2017 the conference had a DevOps day, this year DevOps topics will be mixed with the rest of the topics. 
-            </p>
-            <p>
-            GR8Conf is an independent, affordable series of conferences and covers All Things Groovy
-            </p>
-        '''
-    }
-    event('GR8Conf US') {
-        location 'Minneapolis, MN, USA'
-        date 'July, 2019'
-        url 'http://gr8conf.us/'
-        logo 'img/confs/gr8confus.png'
-        description '''
-            <p>
-            GR8Conf US is the equivalent of GR8Conf EU, but yet different. It has its own organization and its own crew.
-            </p>
-            <p>
-            <p>The goal is the same. It is founded to spread the word about the fantastic Groovy technologies and community.
-            </p>'''
-    }
-}
-
-books {
-    book('Groovy in Action, Second Edition') {
-        authors "Dierk König, Paul King, Guillaume Laforge, Hamlet D'Arcy, Cédric Champeau, Erik Pragt, and Jon Skeet"
-        cover 'img/books/regina.png'
-        url 'http://www.manning.com/koenig2/'
-        description 'The undisputed definitive reference on the Groovy programming language, authored by core members of the development team.'
-    }
-
-    book('Making Java Groovy') {
-        authors 'Ken Kousen'
-        cover 'img/books/Kousen-MJG.png'
-        url 'http://www.manning.com/kousen/'
-        description 'Make Java development easier by adding Groovy. Each chapter focuses on a task Java developers do, like building, testing, or working with databases or restful web services, and shows ways Groovy can help.'
-    }
-
-    book('Programming Groovy 2') {
-        authors 'Venkat Subramaniam'
-        cover 'img/books/vslg2.jpg'
-        url 'http://pragprog.com/book/vslg2/programming-groovy-2'
-        description 'Dynamic productivity for the Java developer'
-    }
-
-    book('Groovy 2 Cookbook') {
-        authors 'Andrey Adamovitch, Luciano Fiandeso'
-        cover 'img/books/g2cook.jpg'
-        url 'https://www.packtpub.com/application-development/groovy-2-cookbook'
-        description 'Over 90 recipes that provide solutions to everyday programming challenges using the powerful features of Groovy 2'
-    }
-
-    book('Groovy for Domain-Specific Languages - Second Edition') {
-        authors 'Fergal Dearle'
-        cover 'img/books/gdsl.jpg'
-        url 'https://www.packtpub.com/application-development/groovy-domain-specific-languages-second-edition'
-        description 'Extend and enhance your Java applications with domain-specific scripting in Groovy'
-    }
-
-    book('Groovy Goodness Notebook') {
-        authors 'Hubert A. Klein Ikkink'
-        cover 'img/books/ggood.jpg'
-        url 'https://leanpub.com/groovy-goodness-notebook'
-        description 'Experience the Groovy programming language through code snippets. Learn more about (hidden) Groovy features with code snippets and short articles. The articles and code will get you started quickly and will give more insight in Groovy.'
-    }
-
-    book('Learning Groovy') {
-        authors 'Adam L. Davis'
-        cover 'img/books/learning_groovy.jpg'
-        url 'http://www.apress.com/us/book/9781484221167'
-        description "Start building powerful apps that take advantage of the dynamic scripting capabilities of the Groovy language. This book covers Groovy fundamentals, such as installing Groovy, using Groovy tools, and working with the Groovy Development Kit (GDK). You'll also learn more advanced aspects of Groovy."
-    }
-
-    book("Grails 3: A Practical Guide to Application Development") {
-        authors "Eric Helgeson"
-        cover 'img/books/practical-grails-3-book-cover.png'
-        url 'https://www.grails3book.com/'
-        description "The first book dedicated to Grails 3. You will learn the concepts behind building Grails applications. Real, up-to-date code examples are provided so you can easily follow along."
-    }
-
-    book('Falando de Grails') {
-        authors 'Henrique Lobo Weissmann'
-        cover 'img/books/weissmann_groovy_grails.png'
-        url 'http://www.casadocodigo.com.br/products/livro-grails'
-        description 'For Groovy and Grails developers, authored by the founder of Grails Brasil based on his experiences as a Groovy and Grails consultant.'
-    }
-
-}
-
-usergroups {
-    // Europe
-    userGroup('Aarhus Groovy & Grails Meetup') {
-        location 'Europe/Denmark'
-        url 'https://www.linkedin.com/grps/Groovy-Grails-Meetup-Aarhus-3702945/'
-    }
-    userGroup('Paris Groovy Grails User Group') {
-         location 'Europe/France'
-    }
-    userGroup('Berlin Groovy User Group') {
-        location 'Europe/Germany'
-        url 'http://www.meetup.com/de/Berlin-Groovy-User-Group/'
-    }
-    userGroup('Groovy & Grails Israel User Group') {
-        location 'Europe/Israel'
-        url 'http://www.meetup.com/Groovy-Grails-Israel-Meetup-Group/'
-    }
-    userGroup('Warsaw Groovy User Group') {
-        location 'Europe/Poland'
-        url 'http://www.meetup.com/Warsaw-Groovy-User-Group/'
-    }
-    userGroup('Madrid Groovy User Group') {
-        location 'Europe/Spain'
-        url 'http://www.meetup.com/madrid-gug/'
-    }
-    userGroup('Dutch Groovy and Grails User Group (NLGUG)') {
-        location 'Europe/The Netherlands'
-        url 'http://www.meetup.com/nl-gug/'
-    }
-
-    // North-America
-    userGroup('Austin Groovy and Grails User Group (TX)') {
-        location 'North-America/United States'
-        url 'http://www.meetup.com/Austin-Groovy-and-Grails-Users/'
-    }
-    userGroup('Boston Groovy, Grails, Spring Meetup (B2GS)') {
-        location 'North-America/United States'
-        url 'https://www.meetup.com/Grails-Boston/'
-    }
-    userGroup('Coder Consortium of Sacramento') {
-        location 'North-America/United States'
-        url 'http://coderconsortium.com/'
-    }
-    userGroup('DFW Groovy & Grails User Group') {
-        location 'North-America/United States'
-        url 'http://dfw2gug.org'
-    }
-    userGroup('Groovy Users of Minnesota') {
-        location 'North-America/United States'
-        url 'http://groovy.mn'
-    }
-    userGroup('NYC Groovy / Grails Meetup') {
-        location 'North-America/United States'
-        url 'http://www.meetup.com/grails/'
-    }
-    userGroup('Pittsburgh Groovy Programming') {
-        location 'North-America/United States'
-        url 'http://www.meetup.com/Pittsburgh-Groovy-Programming/'
-    }
-
-    // South-America
-    userGroup('Grails Brasil - Groovy and Grails users group of Brazil') {
-        location 'South-America/Brazil'
-        url 'http://www.grailsbrasil.com.br'
-    }
-    userGroup('Brazil Groovy and Grails Meetup') {
-        location 'South-America/Brazil'
-        url 'http://www.meetup.com/groovybr'
-    }
-
-    // Asia
-    userGroup('Bangalore Groovy Grails Meetup') {
-        location 'Asia/India'
-        url 'http://www.meetup.com/Bangalore-Groovy-Grails-Meetup/'
-    }
-    userGroup('Japan Grails/Groovy User Group') {
-        location 'Asia/Japan'
-        url 'http://www.jggug.org/'
-    }
-
-    // Oceania?
-    /* userGroup('') { location 'Oceania/Australia' } */
-}
-
-videos {
-    video('The Groovy ecosystem revisited') {
-        speaker 'Andrés Almiray'
-        summary '''
-            <p>Groovy is a well established player in the JVM since a few years ago.
-            It's increased popularity across the years has spawned several projects that conform the Groovy Ecosystem.
-            You've probably heard of Grails, Gradle, Griffon and Spock.
-            But what about the rest of projects that are just waiting around the corner to be discovered and make your life easier?
-            This talk presents them tools and libraries that use Groovy as the main driving force to get the job done.</p>
-        '''
-        pictureUrl 'groovy-ecosystem-revisited.png'
-        videoUrl 'https://www.youtube.com/watch?v=2NGeaIwmnC8&list=PLwxhnQ2Qv3xuE4JEKBpyE2AbbM_7G0EN1&index=5'
-        slidesUrl 'http://fr.slideshare.net/aalmiray/gr8conf-groovy-ecosystem'
-    }
-
-    video('Metaprogramming with the Groovy runtime') {
-        speaker 'Jeff Brown'
-        summary '''
-            <p>The dynamic runtime nature of Groovy is one of the things that sets it apart from standard Java and makes it a fantastic language for building dynamic applications for the Java Platform.
-            The metaprogramming capabilities offered by the language provide everything that an application development team needs to build systems that are far more capable than their all Java counterparts.
-            This Part 1 of 2 will cover the runtime metaprogramming capabilities of Groovy. The session will dive deep into Groovy's Meta Object Protocol (MOP) which implements the incredibly dynamic runtime dispatch mechanism.
-            The session will include a lot of live code demonstrating really powerful runtime features of the language.
-            This session is focused specifically on Groovy's runtime metaprogramming capabilities.
-            Part 2 of 2 will cover Groovy's compile time metaprogramming capabilities</p>
-        '''
-        pictureUrl 'metaprogramming-part-1.png'
-        videoUrl 'https://www.youtube.com/watch?v=1xvg8Wcj-hg&list=PLwxhnQ2Qv3xuE4JEKBpyE2AbbM_7G0EN1&index=9'
-    }
-
-    video('Groovy Puzzlers') {
-        speaker 'Noam Tenne'
-        summary '''
-            <p>Remember the epic Java Puzzlers? Here's the Groovy version, and we have some neat ones!
-            Even though we are totally a Grails shop here at JFrog, some of these had us scratching our heads for days trying to figure them out.
-            And there is more!
-            Contributions from the truly Groovy senseis, including Guillaume Laforge, Andrés Almiray, Tim Yates, Ken Kousen
-            make this talk an unforgettable journey to Groovy.
-            In this talk, you'll have the expected dose of fun and enlightenment hearing about our mistakes and failures, great and small,
-            in hard core Groovy/Grails development.</p>
-        '''
-        pictureUrl 'groovy-puzzlers.png'
-        videoUrl 'https://www.youtube.com/watch?v=GfIhxi7L6R0&list=PLwxhnQ2Qv3xuE4JEKBpyE2AbbM_7G0EN1&index=17'
-    }
-}
-
-courses {
-    course('The Complete Apache Groovy Developer Course') {
-        instructor 'Dan Vega'
-        url 'https://www.udemy.com/apache-groovy/?couponCode=LEARN_GROOVY'
-        description '''
-            <p>I am going to teach you everything you need to know to start using The Groovy Programming language. This course is really designed
-            for 2 different types of people and I think both will benefit from it. If you’re a beginner programmer with a some experience in
-            another language like Python or Ruby this course is for you. Dynamic languages are generally thought of as easier for total beginners
-            to learn because they’re flexible and fun. If you’re an existing Java Developer (Beginner or Experienced) this course is also for you.</p>
-
-            <p>This course is packed with almost 14 hours of content. We are going to start off with getting your development environment up and running
-            and then go through the very basics of the language. From there we are going to build on that in each section cover topics like closures, meta-programming,
-            builders and so much more. I feel like this is one of the most complete courses around and I am excited for you to join me on this adventure.</p>
-        '''
-        cover 'groovy-course-cover.png'
-    }
-}
diff --git a/site/src/site/wiki/GEP-1.adoc b/site/src/site/wiki/GEP-1.adoc
deleted file mode 100644
index d2f132a..0000000
--- a/site/src/site/wiki/GEP-1.adoc
+++ /dev/null
@@ -1,106 +0,0 @@
-= GEP-1: Groovy Enhancement Proposal
-
-:category: dev
-
-.Metadata
-****
-[horizontal,options="compact"]
-*Number*:: GEP-1
-*Title*:: Groovy Enhancement Proposal
-*Version*:: 2.0
-*Type*:: Informational
-*Status*:: Final
-*Leader*:: Apache Project Leader
-*Created*:: 2009-03-26
-*Last modification*&#160;:: 2018-10-11
-****
-
-== Abstract: What is a GEP?
-
-GEP stands for Groovy Enhancement Proposal. A GEP is a document providing information to the Groovy development team and
-user community describing a new feature, an enhancement, or a change to Groovy, the language, its APIs, its integration,
-or its infrastructure. Whenever such an addition or change is significant and deserves a detailed discussion on its
-rationale, its design, or its impact on the project, the writing of a GEP should be considered.
-
-The concept of the GEP was freely inspired from Python's http://www.python.org/dev/peps/pep-0001/[PEP] (Python Enhancement Proposal).
-
-== Rationale: Why a GEP?
-
-For non-trivial, complex or strategic features, discussions on mailing-lists are difficult to lead and follow, and often
-don't help reach a consensus. Writing a proper document explaining the design and implications of said feature allows both
-the originator of the idea and the community at large to have a chance to provide interesting and useful feedback and
-helps better understanding the rationale, the design decisions, the impact of the proposal.
-
-== What's in a GEP?
-
-A GEP:
-
-* is led by a "Leader" who is responsible for the writing and progress of the proposal
-* is assigned a unique "Number"
-* has a "Title" describing succinctly its intent
-* has a "Type"
-* has a "Status" giving information on its progress
-* has a "Version" number indicating its current revision
-* gives a "Last modification" date
-* gives a "Creation" date
-* features an "Abstract" explaining the intent of the GEP
-* gives a "Rationale" for this enhancement
-
-The type of a GEP can be of the following:
-
-Informational:: if the GEP provides some information or guidance on a topic related to Groovy (this GEP is of such type, as well as the list of all existing GEPs)
-Feature:: if the GEP is about the implementation of a new feature, enhancement or a change in Groovy
-Process:: if the GEP describes a process related to the Groovy project (examples: the Groovy release process, how to enroll new committers, etc.)
-
-If the GEP is a Feature GEP, it should also:
-
-* define a "Target" Groovy version for its integration
-* provide a "Reference implementation" properly covered by unit tests and commented (Groovydoc/JavaDoc/asciidoc as appropriate) so that the Groovy community can play with the enhancement and provide useful feedback
-* detail the "Impact" on Groovy, especially in terms of backward-compatibility or impact on other projects
-
-The "Status" of a GEP can be:
-
-Draft:: when a GEP is currently in the writing and is in discussion but hasn't yet reached a state ready for inclusion in Groovy
-Accepted:: when the draft GEP, as is, is in a state which doesn't mandate any additional modification, is ready to be
-integrated into Groovy and has been accepted by the development team, following the usual Apache principles
-Rejected:: when consensus emerges or a development team decision has been made that deems the proposal should not be integrated into Groovy
-Final:: when the GEP has been integrated into a released version of Groovy and has been properly documented in the Groovy wiki
-
-Beyond all these metadata, as appropriate, a GEP should also:
-
-* give pointers to existing mailing-list discussions (through Nabble, Markmail or Ponymail)
-* list existing papers or documentations related to this feature that provides additional material for understanding the concepts or implementation difficulties
-* provide samples showing how the feature should be used and how idiomatic Groovy the solution is
-
-== The general workflow
-
-The general workflow of a Groovy Enhancement Proposal is as follows:
-
-The inception of a GEP generally stems from a discussion on the Groovy mailing-lists about a new feature or change
-when the Groovy Despot and the development team deem necessary to properly document and articulate this new idea,
-for further discussion and analysis. Generally, simple bug fixes and minor enhancements don't require a full-blown GEP.
-A GEP is started solely with the agreement of the Groovy PMC.
-
-A unique Number is assigned by the Groovy PMC and a meaningful "Title" is created for this GEP.
-A proposed Target Groovy version is proposed for the inclusion of this GEP if appropriate.
-A Leader for this effort (usually the instigator of the GEP or the lead developer of it) takes care of the
-creation of the GEP, of writing a detailed document proposing this enhancement, and eventually of providing
-a reference implementation as a branch (or PR or patch) for the targeted Groovy version.
-Once the development team and the "Leader" are happy with the status of the GEP, a decision should be made to act the
-integration of this GEP into Groovy and a JIRA issue for this task should be created. As per Apache guidelines,
-the Groovy PMC has the last say on the acceptation of the GEP as a Final status GEP.
-
-The integration of the GEP in Groovy is Final once proper documentation is added to the appropriate Groovy repo and
-that the reference implementation has reached maturity and provides a good test suite covering the feature.
-If the GEP doesn't fulfill all the requirements of the GEP process, the GEP can be rejected or deferred.
-
-== References
-
-=== JIRA issues:
-
-https://issues.apache.org/jira/browse/GROOVY-1709[GROOVY-1709]: GEP: Groovy Enhancement Proposal
-
-== Update history
-
-1.0 (2009-03-26):: Version as extracted from Codehaus wiki
-2.0 (2018-10-11):: Update to reflect changes since joining Apache
diff --git a/site/src/site/wiki/GEP-10.adoc b/site/src/site/wiki/GEP-10.adoc
deleted file mode 100644
index 9b2030c..0000000
--- a/site/src/site/wiki/GEP-10.adoc
+++ /dev/null
@@ -1,260 +0,0 @@
-= GEP-10: Static compilation
-
-:icons: font
-
-.Metadata
-****
-[horizontal,options="compact"]
-*Number*:: GEP-10
-*Title*:: Static compilation
-*Version*:: 4
-*Type*:: Feature
-*Status*:: Final
-*Comment*:: Delivered in Groovy 2.0 and enhanced in later versions
-*Leader*:: Cédric Champeau
-*Created*:: 2011-11-23
-*Last modification*&#160;:: 2018-10-26
-****
-
-== Abstract: Static compilation
-
-This GEP introduces an experimental new feature in the language known as static compilation.
-Static compilation can be used when the dynamic features of Groovy are not necessary and that the
-performance of the dynamic runtime is too low. The reader must understand that :
-
-* we do not plan to change the semantics of regular Groovy
-* we want static compilation to be triggered explicitly
-* we want the semantics of static groovy to be as close as possible as the semantics of dynamic Groovy
-
-=== Rationale: Static Type Checking vs Static compilation
-
-Static compilation heavily relies on another feature called Static type checking but it is important to understand
-that they are separate steps. You can statically type check your code, and still have the dynamic runtime at work.
-Static type checking adds type inference to the compilation process. This means that, for example, type arguments
-of method calls are inferred, as well as return types of closures or methods. Those inferred types are used by the
-checker to verify the type flow of your program. When it does so, once must be aware that the static checker cannot
-behave like dynamic Groovy. This means that even if a program passes static type checking, it may behave differently at runtime.
-
-=== Method selection
-
-==== Method selection in dynamic Groovy
-
-Groovy supports multimethods. Especially, in dynamic Groovy, target methods are chosen at runtime,
-in opposite to Java which chooses target method at compile time. Let's illustrate the difference with an example :
-
-```
-public void foo(String arg) { System.out.println("String"); }
-public void foo(Object o) { System.out.println("Object"); }
-
-Object o = "The type of o at runtime is String";
-foo(o);
-```
-
-In Java, this code will output "Object", because the target method is chosen according to the type of the arguments at compile time.
-The declared type of "o" is Object, so the Object version of the method is chosen. If you want to call the String version,
-you have to define "o" as a "String", or cast o to string in the method call arguments. Now the same example in dynamic Groovy :
-
-```
-void foo(String arg) { println 'String' }
-void foo(Object o) { println 'Object' }
-
-def o = 'The type of o at runtime is String'
-foo(o)
-```
-
-If you run this snippet, you will see that Groovy prints "String". The reason is that Groovy resolves type arguments at
-runtime and chooses the most specialized version of a method signature when multiple versions are possible.
-To deal with multiple arguments, Groovy computes a distance between the actual type arguments and the declared
-argument types of a method. The method with the best score is chosen.
-
-The method selection process is complex, and makes Groovy quite powerful. It is also possible, for example,
-to define metaclasses which will choose different methods, or change the return type of a method dynamically.
-This behaviour is responsible for a large part of the poor performance of Groovy invocation times as compared to Java.
-However, performance has greatly improved with the introduction of call site caching in Groovy.
-Even with those optimizations, Groovy is far for the performance of a pure static language.
-
-==== InvokeDynamic
-
-InvokeDynamic support is under development and should be introduced in the upcoming Groovy 2.0.
-What InvokeDynamic allows us to do is to, basically, replace call site caching with a native "dynamic method dispatch"
-system directly implemented by the JVM. It is still uncertain what performance improvement we will reach.
-At best, we could be close to the performance of a statically typed language.
-However, as some features are still difficult to implement with InvokeDynamic,
-most likely the performance gain will not be so high. It is important to talk about it though, because :
-
-* invokedynamic allows JIT optimizations
-* replaces the current dynamic method dispatch without changing the semantics of the language
-* if performance is good, could make static compilation unnecessary
-
-However, InvokeDynamic has a major drawback : it will only be available for people using a Java 7+ JVM.
-If we want to deliver Java-like performance for Groovy programs to our users, can we afford leaving
-most of them without such? Most probably, Java 7 won't be mainstream before two or three years.
-
-Rémi Forax, however, created a backport of invokedynamic for older versions of the JVM.
-Such a backport relies on bytecode transformation to replace invokedynamic instructions with "emulated instructions".
-This "emulated" mode is great for us Groovy developers, because it would allow us to write code once and run it on
-any JVM, but for users, the performance would most probably be bad. To be sure of that, an experiment with backported
-InDy will be made once invokedynamic support is implemented in Groovy core. The most probable situation,
-though, is that performance of such code will remain far from what a static language could provide.
-
-=== Static Groovy
-
-==== Type inference based dispatch
-
-This GEP is there to experiment a static compilation mode in Groovy. With what we have explained before,
-you should already understand that statically typed code implies a different behaviour from dynamic code.
-If you expect the statically checked and statically compiled code to behave exactly like dynamic Groovy,
-you should already stop there, or wait for invoke dynamic support to expect improved performance.
-If you perfectly understand that statically compiled code means different semantics,
-then you can continue reading this GEP, and help us choose the best implementation path.
-In fact, there are several options that we will explain here.
-
-The current implementation relies on the static type checker, which performs type inference.
-This means that with the previous example :
-
-```
-void foo(String arg) { println 'String' }
-void foo(Object o) { println 'Object' }
-
-def o = 'The type of o at runtime is String'
-foo(o)
-```
-
-The compiler is able to infer that when the foo method is called, the actual type argument will be a string.
-If we compile it statically, the behaviour of this statically compiled program at runtime will be the same as dynamic Groovy.
-With such an implementation, we expect most programs to behave statically like they would in dynamic Groovy.
-However, this will never be always true. This is why we say this behaviour is "as close as possible" as the one of dynamic Groovy.
-
-The drawback of this implementation is that the developer cannot easily know what method the compiler chooses.
-For example, let's take this example, extracted from a discussion on the mailing list:
-
-```
-void foo(String msg) { println msg }
-void foo(Object msg) { println 'Object' }
-
-def doIt = {x ->
-  Object o = x
-  foo(o)
-}
-
-def getXXX() { "return String" }
-
-def o2=getXXX()
-doIt o2   // "String method" or "Object method"????
-```
-
-The static type checker infers the type of o2 from the return type of getXXX, so knows that doIt is called with a String,
-so you could suspect the program to choose the foo(String) method. However, doIt is a closure, which can therefore
-be reused in many places, and the type of its "x" argument is unknown. The type checker will not generate distinct
-closure classes for the different call sites where it is used. This means that when you are in the closure,
-the type of 'x' is the one declared in the closure arguments. This means that without type information on 'x',
-x is supposed an Object, and the foo method which will be statically chosen will be the one with the Object argument.
-
-While this can be surprising, this is not really difficult to understand. To behave correctly,
-you must either add explicit type arguments to the closure, which is always preferred.
-In a word, in a statically checked world, it is preferred to limit the places where types will be inferred so
-that code is understood properly. Even if you don't do it, fixing code is easy, so we think this is not a major issue.
-
-==== Java-like method dispatch
-
-The alternative implementation is not to rely on inferred types, but rather behave exactly like Java does.
-The main advantage of this is that the user doesn't have 3 distinct method dispatch modes to understand,
-like in the previous solution (Java, dynamic Groovy, inferred static Groovy).
-The major drawback is that the semantics of static Groovy are not close to the ones of dynamic Groovy.
-For this reason, this is not the preferred experimental implementation. If you think this version should be preferred,
-do not hesitate to send an email to the mailing list so that we can discuss.
-You can even fork the current implementation to provide your own.
-
-=== Testing
-
-Static compilation is now part of the Groovy 2.0.0 release. You can download the latest Groovy 2 releases and test it.
-
-==== @CompileStatic
-
-You can try the following snippet :
-
-```
-@groovy.transform.CompileStatic
-int fib(int i) {
-    i < 2 ? 1 : fib(i - 2) + fib(i - 1)
-}
-```
-
-This code should already run as fast as Java.
-
-==== The "arrow" operator for direct method calls
-
-Some users have suggested another idea, related to static compilation, which is the "arrow operator".
-Basically, the idea is to introduce another way of calling methods in Groovy :
-
-```
-obj.method() // dynamic dispatch
-obj->method() // static dispatch
-```
-
-While this idea sounds interesting, especially when you want to mix dynamic and static code in a single method,
-we think it has many drawbacks. First, it introduces a grammar change, something we would like to avoid as much as possible.
-Second, the idea behind this operator is to perform direct method calls when you *know* the type of an object.
-But, without type inference, you have two problems :
-
-* even if the type of 'obj' is specified, you cannot be sure that at runtime, the type will be the same
-* you still have to infer the argument types too, which leaves us with the same problem as before: relying on type inference,
-or relying on Java-like behaviour where the method is chosen based on the declared types.
-If we do so, then we would introduce possible incompatibility with the static mode...
-So we would have to choose between this mode and the full static compilation mode.
-
-Imagine the following code :
-
-```
-void write(PrintWriter out) {
-   out->write('Hello')
-   out->write(template())
-}
-
-def template() { new MarkupBuilder().html { p('Hello') } }
-```
-
-While the first call can be resolved easily, this is not the same with the second one.
-You would have to rewrite your code probably this way to have this work :
-
-```
-void write(PrintWriter out) {
-   out->println('Hello')
-   String content = template() // dynamic call, implicit coercion to string
-   out->println(content) // static method dispatch based on declared types only
-}
-
-def template() { new MarkupBuilder().html { p('Hello') } }
-```
-
-Which is not necessary if you use the @CompileStatic annotation :
-
-```
-@CompileStatic
-void write(PrintWriter out) {
-   out.println('Hello')
-   out.println(template())
-}
-
-def template() { new MarkupBuilder().html { p('Hello') } }
-```
-
-== References and useful links
-
-* https://web.archive.org/web/20150508040816/http://docs.codehaus.org/display/GroovyJSR/GEP+10+-+Static+compilation[GEP-10: Static compilation] (web archive link)
-* http://blackdragsview.blogspot.com/2011/10/flow-sensitive-typing.html[Flow Sensitive Typing?]
-* https://web.archive.org/web/20150508040745/http://www.jroller.com/melix/entry/groovy_static_type_checker_status[Groovy static type checker: status update] (web archive)
-
-=== Mailing-list discussions
-
-* https://markmail.org/thread/a4qhxtjzu3wsw6e5[groovy-dev: Static compilation for Groovy]: +
-An interesting discussion where dynamic lovers explain why they do not want static compilation
-
-=== JIRA issues
-
-* https://issues.apache.org/jira/browse/GROOVY-5138[GROOVY-5138: GEP-10 - Static compilation]
-
-== Update history
-
-3 (2012-06-21):: Version as extracted from Codehaus wiki
-4 (2018-10-26):: Numerous minor tweaks
diff --git a/site/src/site/wiki/GEP-11.adoc b/site/src/site/wiki/GEP-11.adoc
deleted file mode 100644
index 040fbdc..0000000
--- a/site/src/site/wiki/GEP-11.adoc
+++ /dev/null
@@ -1,269 +0,0 @@
-= GEP-11: Groovy 3 semantics and new MOP
-
-:icons: font
-
-.Metadata
-****
-[horizontal,options="compact"]
-*Number*:: GEP-11
-*Title*:: Groovy 3 semantics and new MOP
-*Version*:: 4
-*Type*:: Feature
-*Status*:: Draft
-*Leader*:: Jochen "blackdrag" Theodorou
-*Created*:: 2012-06-26
-*Last modification*&#160;:: 2018-10-28
-****
-
-== Abstract: Groovy 3 semantics and new MOP
-
-For quite long we are thinking about a new MOP for Groovy, without finding the right way  to do it better this time.
-It is difficult to find the right path between being user-friendly and efficient.
-Thus the new MOP will contain some features the old did not, but will also remove some old features for
-the sake of a more straight and more easy to understand MOP.
-
-== Rationale
-
-=== Removing default null argument
-
-The default null argument is used for method calls that have one parameter,
-but the call is done without an argument for the parameter.
-Groovy will here use null, as long as the type of the parameter is not a primitive.
-In case of a primitive the call fails. This feature was mainly added in the early Groovy pre 1.0 years
-before Groovy supported default values for parameters. Another limitation of this logic is that it works
-only with single parameter methods. There have been multiple cases of confused users by this logic.
-Performance wise this logic doesn't cost much, and certainly not more than a call with a real argument.
-But since this is a confusing feature of limited use, it should be removed.
-
-=== Removing automatic list expansion
-
-A method call done with a list that finds no matching method for that list (a method with one parameter of type List,
-Collection, Object, etc), will cause a second method selection iteration. This time the list is "unpacked" and all
-elements of the list are taken as if the method call had been done with the elements rather than the list.
-Groovy also supports spreading of lists by an syntax element, making this automatic feature not needed.
-In fact this can be quite surprising for users and is a problem for performance.
-A spread version might be still not good in performance, but at least the user will have
-to use an extra symbol and thus have the visual indicator. As of why this feature was originally added is unclear.
-Looking at user code you will find barely intended usages of this. Thus it should be removed.
-
-=== Changing Safe Navigation to stop evaluation
-
-Currently an expression like a?.b.c will fail if a is null. It will not evaluate b, but it will try to evaluate c on null.
-This defies the intend of safe navigation to avoid a NullPointerException. Thus this should be changed to stop the
-evaluation of the path expression.
-
-=== User Wish List
-
-* Instance based Categories by Wujek Srujek +
-Instead of having to provide a class with static methods it would be good to be able to feed an instance to the
-use-construct and that then we will use this instance along with its instance methods. This allows instance state to be used.
-* Replacing Introspector by blackdrag +
-Not only because of bugs like GROOVY-5019 there should be a replacement of the Introspector
-
-=== Some of the leading design ideas of this MOP
-
-The plan is to orientate us a lot on the open call site caching the JVM provides with invokedynamic.
-For this to work all parts of the MOP should no longer be seen as places that do invoke something,
-but as places that return something, that then will be invoked. An invokeMethod then will for example
-return instead an object that acts as a kind of handler, which can be invoked.
-Groovy will then store it and avoid the reselection unless you invalidate it.
-In the old MOP such caching often did not happen once you interact using meta programming.
-The tasks to be solved in this are to provide an "extension point" for intercepting methods and to react to
-missing methods, as well as being able to invalidate a cached version and/or to make an uncached version possible.
-
-=== MOP2 outline
-
-image:img/mop_2.jpg[image]
-
-in meta class of x in pseudo code:
-
-```
-cachable = getMethodInterceptor(...)
-if (cachable==null) cachable = getFittingMethod(...)
-if (cachable==null) getMethodMissingHandler(...)
-if (cachable==null) throw new MethodMissingException(...)
-storeInCallSite(cachable)
-invoke(cachable)
-```
-
-as an explanation to the methods:
-
-* getMethodInterceptor +
-Extension point for the user to register an interceptor, that will be used for all method calls.
-This is equal what GroovyInterceptable does using invokeMethod, only that in MOP1 the method is directly called.
-In MOP2 we will instead return a handler that then will do whatever is needed. This can for example be a method
-handle to a invokeMethod method if wanted. TODO: define guards
-* getFittingMethod +
-Predefined way to select a method through meta class. This method will return an
-object which then can be used to invoke the selected method.
-* getMethodMissingHandler +
-Extension point for the user to register a handler for missing methods.
-The then invoked method is comparable to what methodMissing in MOP1 would be doing.
-* MethodMissingException +
-thrown if none of the above methods is bearing a non null result
-* storeInCallSite +
-Predefined method to store the cachable result of the above process in the call site.
-As long as the cached object is valid the above methods will not be called again for this call site.
-* invoke +
-Predefined method to do the Initial invocation of the cachable. Subsequent invocation may be done directly by invokedynamic.
-
-=== Context Meta Class
-
-For the MOP2 Groovy will use a system of meta classes with a context element and an always existing default.
-At each call site only one such view will be valid and it will be constant.
-Those views can be used to defined "sealed" meta class, which won't get influenced by outside
-meta classes or to allow for example calling private methods and not allowing them in other cases.
-This makes 3 possible meta class variations currently:
-
-* Default meta class +
-Behaves pretty much like what Java allows in regards of method calls (same class private methods are available)
-and all meta programming changes are visible
-* Sealed meta class +
-Like the default meta class, but meta programming changes from outside the class are not visible.
-This can be especially useful to library writers.
-* Test meta class (un)sealed +
-Like the two before but with the addition that private members will always be available.
-
-=== Getting a Meta Class
-
-Because of the concept of context a class does not have one direct meta class that can be generated without its context.
-The call site defines the place of the context. How the context itself is defined is a TODO.
-As an implementation strategy it is possible to for example use ClassValue to store a table with the context being a key.
-The key would probably have to be available as static information, or as easily computable information.
-Since the resulting meta class could be stored later in the call site object context changes are to be avoided,
-since it implies the invalidation of the call sites using that context.
-
-=== General dispatch rule for methods (and properties)
-
-To define the dispatch rules correctly we need to define some terms first: +
-_Static Sender Class (SSC)_:  This is the static information about the class a call is made from.
-If there is for example a class A and a class B extends A, and a call in a method in A,
-then even if your instance is actually a B the SSC will still be A. +
-_Inheritance based Multimethods_ (short multimethods from now on): Given a class A and a class B extends A,
-a call made from within A may see a method defined on B as long as the method is visible (not private).
-Groovy defines a special  exception to this though. If the method call from within A is calling a method of the name m,
-then a m from B can only be visible if there is no private m defined in A.
-
-Given those two definitions a method call in A will select the set of method to decide from based on this:
-A call m() with the SSC A and done on an instance of B (extends A) will be using the methods defined in A, if A has a private m, otherwise the call is done using B.
-
-Calls to Super: +
-A call to super in B extends A will have the SSC B, but for the method selection process the super class of SSC (super(SSC)) will be used. In super calls mutimethods are not visible. Thus we can directly use the meta class super(SSC), but we will dispatch only on the public methods of that meta class.
-
-=== Module Extension Methods Shadowing Rules
-
-Module Extensions Methods are in the old and new MOP defined by the DefaultGroovyMethods related classes and module extension, like groovy-swing. In the definition here we will use the terms of from "inside" and from "outside" to define a callsite, that lies in the same class as the target method (inside) or not (outside). The general rules are:
-
-* public methods are shadowed
-* private methods are shadowed for outside callsites, but not for inside callsites
-
-Subclasses of the class the module extension method has been applied to have these extended rules:
-
-* if the subclass defines a private method of the same signature as the module extension method, then outside callsites will still see the extension method, inside callsites the private method
-* A call to "super" or "this" will call the module extension method. As such the subclass is seen as outside callsite.
-
-Open Blocks are not seen as separate classes.
-
-=== Property Discovery
-
-Currently MetaClass discovers properties based on the Java Beans conventions.
-It also allows pseudo properties matching a convention on java.beans.EventSetDescriptor.
-This allows the following trick in SwingBuilder for example:
-
-```
-button(actionPerformed: { println it })
-```
-
-The pseudo property actionPerformed is inferred from the single method exposed by ActionListener,
-a type of listener that can be registered on a JButton. The code responsible for discovering these
-properties is buried in MetaClassImpl and is not accessible to the outside.
-It would be great if this mechanism be made pluggable.
-
-=== The Realm concept
-
-In MOP2 a Realm is a tree like structure containing the meta classes.
-There is a root realm, used as default, but there can be any number of lower realms.
-A meta class change is visible in a realm, if the change is done to the meta class in
-the same realm or to a meta class in a higher realm.
-Script execution engines are able to set a realm for example to prevent them changing meta classes they should not change.
-This can be used for unit tests to isolate meta class changes done during the tests as well.
-A library can have its own realm (defined through an annotation) to prevent other classes to
-leak their changes into that library, while the library can still use a higher realm to make
-changes more public visible, if the realm allows that. Realms can have a setting that prevents
-code executed from there to make changes to higher realms. Calling a method is always done using
-the meta classes from the current realm, even if the called class then calls other classes using
-its own realm. A realm is thus not thread local structure, it is more of a lexical scope.
-A realm can also use a different meta class flavor, to for example allow access to private methods and fields.
-
-=== Work Items
-
-This part is to guide the implementors with the course of action and planning of the subtasks.
-
-* make indy the only compilation target in the build
-* move all non-indy bytecode interfacing code to a module, which may be removed later. This includes ScriptBytecodeAdpater as well as all the custom call site caching classes
-* make a new module for MOP2
-* turn meta class into an immutable
-* implement meta class views
-
-=== Breaking changes trace
-
-`groovy.lang.MetaObjectProtocol` (currently in `groovy.mop.MetaObjectProtocol`):
-
-* `getProperties()` renamed to `getMetaProperties()`
-* `getMethods()` renamed to `getMetaMethods()`
-* `respondsTo(Object, String, Object[])` changed to `respondsTo(String, Object...)`
-* `respondsTo(Object, String)` replaced by `getMetaMethods(String, Class...)` with the class argument being null
-* hasProperty(Object,String) replaced by getMetaProperty(String) being null or not
-* getStaticMetaMethod(String, Object[]) replaced by respondsTo(String, Object...) and inspecting the list for static methods
-* getMetaMethod(name, Object[]) replaced by respondsTo(String, Object...) in case the arguments are no classes and getMetaMethods(String,Class...) in case of the arguments being classes
-* invokeConstructor(Object[])NO REPLACEMENT
-* invokeMethod(Object, String, Object[]) NO REPLACEMENT
-* invokeMethod(Object, String, Object) NO REPLACEMENT
-* invokeStaticMethod(Object, String, Object[]) NO REPLACEMENT
-* getProperty(Object, String) replaced by MetaProperty#invoke
-* setProperty(Object, String, Object) replaced by MetaProperty#invoke
-* getAttribute(Object, String) replaced by MetaProperty#getField#invoke
-* setAttribute(Object, String, Object) replaced by MetaProperty#getField#invoke
-* `getMetaProperty(String)`, `getTheClass()` UNCHANGED
-
-`groovy.lang.MetaMethod` is split into a public interface `groovy.mop.MetaMethod` and an internal default implementation `groovy.mop.internal.DefaultMetaMethod`.
-
-Differences to groovy.mop.internal.DefaultMetaMethod:
-
-* does no longer extend ParameterTypes and does no longer implement Clonable
-* no protected fields nativeParamTypes, parameterTypes and isVargsMethod
-* the constructor MetaMethod() and MetaMethod(Class[]) are removed and partially replaced by DefaultMetaMethod(Class, String, int, MethodHandle) and DefaultMetaMethod(Class, String, MethodType), which uses the MethodType or the MethodHandle to define the parameter classes
-* coerceArgumentsToClasses(Object[]), correctArguments(Object[]), isValidExactMethod(Class[]), isValidExactMethod(Object[]), isValidMethod(Class[]), isValidMethod(Object[]), isVargsMethod(), isVargsMethod(Object[]) NO REPLACEMENT
-* getNativeParameterTypes()replaced by getParameterClasses()
-* equal(CachedClass[], CachedClass[]), equal(CachedClass[], Class[]), checkParameters(Class[]), clone(), doMethodInvoke(Object, Object[]), getDescriptor() NO REPLACEMENT
-* getDeclaringClass(), getModifiers(), getName(), getReturnType(), isAbstract(), isPrivate(), isProtected(), isPublic(), isStatic(), toString() UNCHANGED
-* getMopName(), getSignature(), invoke(Object, Object[]), isCacheable(), isMethod(MetaMethod), isSame(MetaMethod), processDoMethodInvokeException(Exception, Object, Object[]) NO REPLACEMENT
-
-`groovy.lang.MetaProperty` is split into a public interface `groovy.mop.MetaProperty` and an internal default implementation `groovy.mop.internal.DefaultMetaProperty`.
-
-Differences to groovy.mop.internal.DefaultMetaProperty:
-
-* the public static field PROPERTY_SET_PREFIX is removed NO REPLACEMENT
-* the protected fields name and type are now private and have to be requested through getName and getType
-* getModifiers(), getName(), getType(), DefaultMetaProperty(String, Class) UNCHANGED
-* getGetterName(String, Class), getSetterName(String)NO REPLACEMENT
-* getProperty(Object) replaced by getter(boolean)
-* setProperty(Object, Object) replaced by setter(boolean)
-
-== References and useful links
-
-* https://web.archive.org/web/20150508123746/http://docs.codehaus.org/display/GroovyJSR/GEP+11+-+Groovy+3+semantics+and+new+MOP[GEP-11: Groovy 3 semantics and new MOP] (web archive link)
-
-=== Mailing-list discussions
-
-* https://markmail.org/message/zujumywsb73px2ky[groovy-user: Groovy 3]
-
-=== Reference implementation
-
-* https://github.com/groovy/groovy-core/tree/GROOVY_3_FEATURE[GROOVY_3_FEATURE] +
-feature branch on github
-
-== Update history
-
-3 (2013-10-11):: Version as extracted from Codehaus wiki
-4 (2018-10-28):: Numerous minor tweaks
diff --git a/site/src/site/wiki/GEP-12.adoc b/site/src/site/wiki/GEP-12.adoc
deleted file mode 100644
index bdde374..0000000
--- a/site/src/site/wiki/GEP-12.adoc
+++ /dev/null
@@ -1,223 +0,0 @@
-= GEP-12: SAM coercion
-
-:icons: font
-
-.Metadata
-****
-[horizontal,options="compact"]
-*Number*:: GEP-12
-*Title*:: SAM coercion
-*Version*:: 4
-*Type*:: Feature
-*Status*:: Final
-*Leader*:: Jochen "blackdrag" Theodorou
-*Created*:: 2013-05-30
-*Last modification*&#160;:: 2018-10-29
-****
-
-== Abstract: SAM coercion
-
-SAM stands for Single Abstract Method.  SAM coercion is here a Groovy style transformation of a
-`groovy.lang.Closure` instance into an object suitable for our SAM type.
-A SAM type is an abstract class or interface with a single abstract method. The coercion can happen as part of an assignment or as the result of a method call. Since this transformation might be outside of the types provided by Closure itself, it can be more than a simple Java style cast. Closure becomes a kind of sub type to all SAM types. Groovy has other such transformations without explicit cast or asType usage, which are number object transformations as well as the conversion of GString to String.
-
-=== Motivation
-Even before Java8 we had discussions about supporting different interfaces with Closure like Runnable and Callable.
-These two being easy cases, any framework can define a myriad of interfaces and abstract classes.
-This then requires to "groovify" the library by writing a helper layer capable of transforming Closure
-objects into something the library then understand. While it is unlikely of this approach to make Groovy
-Builder surplus, it can still help with a more simple integration.
-
-==== Meaning of  "Single Abstract Method"
-
-For a SAM type to be a SAM type according to this GEP an abstract class or interface with a single
-abstract method is required. Any static methods, as well as non-abstract methods are not counted.
-The abstract method may be defined in the SAM class itself, but it can also be a parent.
-The required visibility modifier for the method is public though.
-
-SAM examples:
-
-* Simple Interface:
-
-```
-interface SAM {
-  def foo()
-}
-```
-
-* Interface with defender method (aka virtual extension method):
-
-```
-interface SAM {
-  def foo()
-  def bar() default { 1 }
-}
-```
-
-* Interface inheriting from another interface:
-
-```
-interface ParentOfSAM {}
-interface SAM extends ParentOfSAM {
-  def foo()
-}
-```
-
-* Interface inheriting from another interface, but not defining a method on its own:
-
-```
-interface ParentOfSAM {
-  def foo()
-}
-interface SAM extends ParentOfSAM {}
-```
-
-* simple abstract class
-
-```
-abstract class SAM {
-  abstract foo()
-}
-```
-
-* abstract class with a abstract and a non abstract method:
-
-```
-abstract class SAM {
-  abstract foo()
-  def bar() { 1 }
-}
-```
-
-* abstract class extending other class:
-
-```
-abstract class ParentOfSAM1 {
-  abstract foo()
-}
-```
-
-* abstract class SAM1 extends ParentOfSAM1 {}
-
-```
-class ParentOfSAM {
-   def bar() { 1 }
-}
-abstract class SAM2 extends  {
-  abstract foo()
-}
-```
-
-* abstract class implementing interface:
-
-```
-interface SomeInterface{
-  def foo()
-}
-abstract class SAM1 implements SomeInterface {}
-abstract class SAM2 implements Runnable{}
-interface AnotherInterface {}
-abstract class SAM3 implements AnotherInterface {
-  abstract foo()
-}
-```
-
-Non-SAM examples:
-
-* empty interface:
-
-```
-interface SomeMarker {}
-```
-
-* interface with two methods:
-
-```
-interface TwoMethods {
-  def foo()
-  def bar()
-}
-```
-
-* abstract class with two abstract methods:
-
-```
-abstract class TwoMethods {
-  abstract foo()
-  abstract bar()
-}
-```
-
-* empty abstract class:
-
-```
-abstract class Empty {}
-```
-
-==== Influence on method selection
-
-The normal method selection algorithm tries to find the most specific method to the given argument
-runtime types and the most general for null. Since a SAM type and a target method parameter type
-are not in an inheritance relation "most specific" needs a redefinition in parts.
-It will be assumed the SAM type is like a direct child of the given target type,
-but if the SAM type is one implemented by Closure (Runnable and Callable),
-then no SAM coercion will be needed. This case is preferred in method selection.
-In case of an overloaded method, where each can be used as target for the SAM coercion,
-method selection will thus fail, regardless their internal relation.
-In Groovy the actual method signature of the SAM type and the coercion target are not important.
-Also it is not important if the target type is an abstract class or an interface.
-
-Example of two SAM targets with failing runtime method selection:
-
-```
-interface SAM1 { def foo(String s)}
-interface SAM2 { def bar(Integer i)}
-def method(x, SAM1 s1){s1.foo(x)}
-def method(x, SAM2 s2){s2.bar(x)}
-method (1)   {it}  // fails because SAM1 and SAM2 are seen as equal
-method ("1") {it}  // fails because SAM1 and SAM2 are seen as equal
-```
-
-Example of SAM type being ignore as a non-coercion case is available:
-
-```
-interface SAM {def foo(String s)}
-def method(SAM s) {1}
-def method(Runnable r) {2}
-assert method {it} == 2
-```
-
-==== Influence on static typing system
-
-The Scope for the static type system is split into a basic part for Groovy 2.2 and an extended one
-for a later version (2.3 or 3.0)
-
-==== Groovy 2.2 static checks
-
-The type checking in Groovy 2.2 will be limited to mimic the behavior of normal Groovy.
-No method signature checks are performed, as well as there will be no additional test or method
-selection based on the type provided by the open block.
-
-==== Groovy 2.2+ static checks
-
-In later versions of Groovy the static type checker has to be improved to refine method selection by the given type
-signature through the open block or lambda. A SAM type is then a fitting type for the coercion only if the provided
-types and the target types in the SAM are matching by number and type itself. A more detailed description can be
-found here: http://cr.openjdk.java.net/~dlsmith/jsr335-0.6.1/F.html
-
-== References and useful links
-
-* https://web.archive.org/web/20150508054422/http://docs.codehaus.org/display/GroovyJSR/GEP+12+-+SAM+coercion[GEP-12: SAM coercion] (web archive link)
-
-=== Reference implementation
-
-* https://github.com/groovy/groovy-core/commits/SAM (feature branch on github)
-
-=== JIRA issues
-
-* https://issues.apache.org/jira/browse/GROOVY-6188[GROOVY-6188: Java8 lambda style coercion for Closure]
-
-== Update history
-
-3 (2013-07-01):: Version as extracted from Codehaus wiki
-4 (2018-10-29):: Numerous minor tweaks
diff --git a/site/src/site/wiki/GEP-2.adoc b/site/src/site/wiki/GEP-2.adoc
deleted file mode 100644
index 3ab12bf..0000000
--- a/site/src/site/wiki/GEP-2.adoc
+++ /dev/null
@@ -1,215 +0,0 @@
-= GEP-2: AST Builder Support
-
-.Metadata
-****
-[horizontal,options="compact"]
-*Number*:: GEP-2
-*Title*:: AST Builder Support
-*Version*:: 8
-*Type*:: Feature
-*Target*:: Groovy 1.7
-*Status*:: Final
-*Comment*:: Included in Groovy but somewhat _superseded by macros_
-*Leader*:: Hamlet D'Arcy
-*Created*:: 2009-04-01
-*Last modification*&#160;:: 2018-10-12
-****
-
-== Abstract
-
-Groovy 1.6 introduced the ability to perform local and global AST (Abstract Syntax Tree) transformations,
-allowing users to read and modify the AST of Groovy code as it is being compiled.
-Reading information in the AST is relatively easy in Groovy.
-The core library provides a strongly-typed visitor called GroovyCodeVisitor.
-Nodes can be read and modified using the API provided through the subtypes of ASTNode.
-Writing new AST nodes is not as simple. The AST generated from source is not always obvious,
-and using constructor calls to generate trees of nodes can be verbose.
-This GEP proposes an ASTBuilder object that allows users to easily create AST.
-
-The ASTBuilder object allows AST to be created from:
-
-* strings containing Groovy source code
-* a closure containing Groovy source
-* a closure containing an AST creation DSL
-
-All three approaches share the same API: a builder object is instantiated and a build* method is invoked.
-
-== Approach
-
-=== ASTNode from String
-
-The simplest approach to implement is to provide an AST Builder with an API that takes a String and returns List<ASTNode>:
-
-```
-def builder = new AstBuilder()
-List<ASTNode> statements = builder.buildFromString(
-     CompilePhase.CONVERSION,
-     true,
-     """ println "Hello World" """
-)
-```
-
-* phase parameter tells the builder from which phase to return AST. This parameter is optional, and the default
-CompilePhase is CLASS_GENERATION. This provides a cleaner API for the common case, and CLASS_GENERATION was chosen
-because more types are available in later phases.
-* the "statementsOnly" boolean parameter is an optional parameter, and tells the builder to discard the generated
-top level Script ClassNode. Default is true.
-* The last String parameter is the input
-* The builder returns List<ASTNode>
-
-The above example produces the following AST:
-
-```
-BlockStatement
--> ExpressionStatement
-    -> MethodCallExpression
-       -> VariableExpression
-       -> ConstantExpression
-       -> ArgumentListExpression
-          -> ConstantExpression
-```
-==== Alternatives
-
-* Some sort of AST Template was considered for this feature. Consider the following example:
-
-```
-def astTemplate = builder.buildAst ( "println $txt" ).head()
-
-def constant = builder.buildAst ( "To be, or not to be: that is the question" ).head()
-
-def methodCallExpression = astTemplate.apply(txt: constant)
-// method call expression not contains println "To be ... "
-```
-
-This templating approach adds complexity that may not be used. It overloads the GString $ operator,
-in that it is used here only with objects of type ASTNode but is used normally in GStrings with any Object type at all.
-Also, the templating approach can create order of precedence confusion.
-Consider source = "$expr * y", and later $expr is bound to "x+a". The result is "x + a * y", which was probably unintentional.
-At this time, the AST builder does not include such a feature.
-
-=== ASTNode from Code Block
-
-A useful API would be creating AST from code blocks.
-
-```
-AstBuilder builder = new AstBuilder()
-def statementBlock = builder.buildFromCode (CompilePhase.CONVERSION, true) {
-     println "Hello World"
-}
-```
-
-* Expressing Groovy source within Groovy source seems the most natural way to write it (as opposed to putting Groovy source into a String).
-* Some IDE support is naturally available (highlighting, etc), but IDE warnings will be misleading for variable scoping rules
-* Same issues and rules from "ASTNode from String" for phase and statementsOnly properties apply to this version
-* Provides similar API as builder from String, except the code property accepts any block of code that is legal in the context of a Closure.
-* Converting from a closure into AST is performed through a global compiler transformation.
-This requires that the AstBuilder reference be strongly typed so that the global annotation can be triggered.
-
-The above example produces the following AST:
-
-```
-BlockStatement
- -> ExpressionStatement
-    -> MethodCallExpression
-       -> VariableExpression
-       -> ConstantExpression
-       -> ArgumentListExpression
-          -> ConstantExpression
-```
-
-==== Alternatives
-
-If @ASTSource annotation is used, then it would be very easy to let users reuse that annotation outside of the builder.
-Consider the following example:
-
-
-```
-@AstSource(CompilePhase.CONVERSION)
-List<ASTNode> source = { println "compiled on: ${new Date()}" }
-```
-
-This option seems helpful; however, annotations on local variables are not yet supported. This approach will not be implemented.
-
-=== ASTNode from psuedo-specification
-
-Building AST conditionally, such as inserting an if-statement or looping, is not easily accomplished in the String or code based builders.
-Consider this example:
-
-```
-def builder = new AstBuilder()
-List<ASTNode> statements = builder.buildFromSpec {
-    methodCall {
-        variable "this"
-        constant "println"
-        argumentList {
-            if (locale == "US") constant "Hello"
-            if (locale == "FR") constant "Bonjour"
-            else constant "Ni hao"
-        }
-    }
-}
-```
-
-This library class is useful for several reasons:
-
-* Using conditionals or looping within an AST Builder will probably be a common occurrence
-* It is difficult to create a Field or Method references in any of the other approaches
-* Simply using the @Newify annotation does not sufficiently improve the syntax
-* This construct alleviates the need to distinguish between Statement and Expressions, since those words are dropped from the method names
-* There is no need for a phase or statementsOnly property in this approach
-* Many expressions take a type ClassNode, which wraps a Class. The syntax for ClassNode is to just pass
-a Class instance and the builder wraps it in a ClassNode automatically.
-
-==== Issues
-
-* Constructor parameter lists can be lengthy on ASTNode subtypes, and this approach removes the possibility for an IDE to help.
-This is the price to pay for a builder, and the planned builder metadata feature in 1.7 may alleviate this.
-* The class creating AST from the pseudo-specification should be implemented so that it does not create a
-mirror-image class hierarchy of the current AST types. This would force all changes to the AST types to be performed
-in two places: once in the ASTNode subclass and once in this builder. If this is not possible, then at least the AST
-hierarchy doesn't change frequently.
-* Several ASTNode types have constructor signatures all of the same type: (Expression, Expression, Expression) most commonly.
-This means the parameters in the DSL are order dependent, and specifying arguments in the wrong order doesn't create
-an exception but causes drastically different results at runtime. This is fully documented on the mailing list.
-* The syntax for specifying Parameter objects is documented on the mailing list.
-* A few of the ASTNode types having naming conflicts with language keywords. For instance the ClassExpression type
-cannot be abbreviated to 'class' and IfStatement cannot be reduced to 'if'. This is fully documented on the mailing list.
-* Parameters have default values and can be varargs. A suitable syntax needs to be proposed.
-* Sometimes the order of the constructor parameters needed to be switched within the DSL. For instance,
-consider SwitchStatement(Expression expression, List<CaseStatement> caseStatements, Expression defaultStatement).
-The current syntax of the DSL imposes a sort of VarArgs rigidity on the arguments: lists are just implied by repeated elements.
-So having the middle parameter of SwitchStatement be a list is problematic because the natural way to convert the
-constructor is to have it become (Expression expression, CaseStatement... caseStatements, Expression default), which isn't possible.
-This is fully documented on the mailing list.
-
-==== Alternatives
-
-Template Haskell and Boo provide a special syntax for AST building statements.
-Quasi-quote (or Oxford quotes) can be used to trigger an AST building operation:
-
-```
-ConstantExpression exp = [| "Hello World" |]
-```
-
-Those languages also supply a splice operator $(...) to turn AST back into code. This is not part of the AstBuilder work.
-
-== References and useful links
-
-https://groovy.markmail.org/thread/4pw7uzl5ulkb5zbe[groovy-dev: Groovy AST Builder discussion]
-
-https://groovy.markmail.org/thread/bbusithri2xmhmiw[groovy-dev: Several issues with GEP-2 AST Builder "from specification"]
-
-https://en.wikipedia.org/wiki/Template_Haskell[Template Haskell]
-
-https://web.archive.org/web/20090213045341/http://blogs.codehaus.org:80/people/bamboo/archives/001593_boo_meta_methods.html[Boo meta methods]
-
-https://github.com/cython/cython/wiki/enhancements-metaprogramming[Cython Metaprogramming Proposal] by Martin C Martin - Contains nice write up of some use cases
-
-=== JIRA issues:
-
-This feature is dependent on allowing annotations on local variables: https://issues.apache.org/jira/browse/GROOVY-3481[GROOVY-3481]
-
-== Update history
-
-7 (2009-06-17):: Version as extracted from Codehaus wiki
-8 (2018-10-11):: Added comment about macros
diff --git a/site/src/site/wiki/GEP-3.adoc b/site/src/site/wiki/GEP-3.adoc
deleted file mode 100644
index d38fcfe..0000000
--- a/site/src/site/wiki/GEP-3.adoc
+++ /dev/null
@@ -1,269 +0,0 @@
-= GEP-3: Command Expression based DSL
-
-:icons: font
-
-.Metadata
-****
-[horizontal,options="compact"]
-*Number*:: GEP-3
-*Title*:: Command Expression based DSL
-*Version*:: 2
-*Type*:: Feature
-*Target*:: Groovy 1.8 or 2.0
-*Status*:: Final
-*Comment*:: Included in Groovy and has been further enhanced
-*Leader*:: Jochen "blackdrag" Theodorou
-*Created*:: 2009-06-30
-*Last modification*&#160;:: 2018-10-12
-****
-
-== Abstract
-
-Since Groovy 1.0 Groovy supports command expressions. These are method calls without parenthesizing the arguments.
-This would be in theory a nice base for DSLs, but our command expressions are too limited,
-because we were not able to find easy rules on how to handle multiple arguments.
-This proposal now tries to close the gap by defining the evaluation order and meaning of those arguments.
-The concept is very near to what Scala allows, but is not equal for historic reasons.
-
-== Rationale
-
-=== Current Command Expression
-
-Examples of current command expressions are:
-
-[options="header"]
-|===
-| Command expression | Meaning
-m| foo a1 m| foo (a1)
-m| foo {c} m| foo ({c})
-m| foo m {c} m| foo (m({c})
-m| foo a1, a2 m| foo (a1, a2)
-m| foo k1:v1, a2, k2:v2 m| foo ([k1:v1, k2:v2], a2)
-m| foo k1:m{c} m| foo ([k1:m({c})])
-|===
-
-Examples of current command expressions, that are not allowed:
-
-[options="header"]
-|===
-| Command expression | Possible meanings
-m| foo a1 a2
-a|
-----
-foo(a1,a2)
-foo(a1(a2))
-foo(a1).a2
-----
-
-m| foo a1 a2 a3
-a|
-----
-foo(a1,a2,a3)
-foo(a1(a2(a3)))
-foo(a1).a2(a3)
-foo(a1,a2(a3))
-----
-|===
-
-This list is not intended to be complete.
-
-=== Constraints
-
-* existing valid usages must be kept as much as possible (for obvious backwards compatibility reasons)
-* the evaluation must be easily explainable
-* the grammar should support it
-
-=== Details
-
-What I want to allow are expressions such as:
-
-[options="header"]
-|===
-| Expression | Possible meanings | Allowed in old syntax
-m| foo {c} m| foo({c}) | icon:thumbs-up[] (same meaning)
-m| foo a1 m| foo(a1) | icon:thumbs-up[] (same meaning)
-m| foo a1() m| foo(a1()) | icon:thumbs-up[] (same meaning)
-m| foo a1 {c} m| foo(a1({c})) | icon:thumbs-up[] (same meaning)
-m| foo a1 a2 | icon:thumbs-down[] | icon:thumbs-down[]
-m| foo a1() a2 | icon:thumbs-down[] | icon:thumbs-down[]
-m| foo a1 a2() | icon:thumbs-down[] | icon:thumbs-down[]
-m| foo a1 a2 {c} | icon:thumbs-down[] | icon:thumbs-down[]
-m| foo a1 {c} a2 | icon:thumbs-down[] | icon:thumbs-down[]
-m| foo a1 {c} a2 {c} | icon:thumbs-down[] | icon:thumbs-down[]
-m| foo a1 a2 a3 m| foo(a1).a2(a3) | icon:thumbs-down[]
-m| foo a1() a2 a3() m| foo(a1()).a2(a3()) | icon:thumbs-down[]
-m| foo a1 a2() a3 | icon:thumbs-down[] | icon:thumbs-down[]
-m| foo a1 a2 a3 {c} m| foo(a1).a2(a3({c})) | icon:thumbs-down[]
-m| foo a1 a2 a3 a4 | icon:thumbs-down[] | icon:thumbs-down[]
-m| foo a1 a2 a3 a4 {c} | icon:thumbs-down[] | icon:thumbs-down[]
-m| foo a1 a2 a3 a4 a5 m| foo(a1).a2(a3).a4(a5) | icon:thumbs-down[]
-m| foo a1() a2 a3() a4 a5() m| foo(a1()).a2(a3()).a4(a5()) | icon:thumbs-down[]
-m| foo a1 a2 a3 a4 a5 {c} m| foo(a1).a2(a3).a4(a5({c}) | icon:thumbs-down[]
-|===
-
-The table shows enough to recognize the pattern. The attached block has a special role as it does not count as argument
-on its own directly. Instead the block is always bound to the identifier before and makes a method call.
-That itself is no command expression, but a normal method call expression. As can be seen too,
-this syntax nicely extends the existing Groovy syntax. Of course this also means, it will not be possible to omit
-commas if multiple arguments are used. A case that is not supported today anyway. For a DSL that is not really a problem though.
-
-==== Summary of the pattern
-
-* A command-expression is composed of an even number of elements
-* The elements are alternating a method name, and its parameters (can be named and non-named parameters)
-* A parameter element can be any kind of expression (ie. a method call foo(), foo{}, or some expression like x+y)
-* All those pairs of method name and parameters are actually chained method calls (ie. send "hello" to "Guillaume"
-is two methods chained one after the other as send("hello").to("Guillaume"))
-
-==== Interesting benefit of the enhanced command expressions
-
-More and more do we see Java Fluent APIs that chain method calls, returning this, so as to "build" a new object.
-For instance, you can imagine a fluent API for building an Email message, that would look something like this in Java:
-```
-Email.from("foo@example.com").to("bar@example.com").subject("hello").body("how are you?")
-```
-In Groovy, with the extended command expressions, this could become:
-```
-Email.from "foo@example.com" to "bar@example.com" subject "hello" body "how are you?"
-```
-Notice the absence of parentheses and dots.
-
-==== Example: A DSL for SQL
-
-
-```
-SELECT "column_name"
-FROM "table_name"
-WHERE "column_name" IN ('value1', 'value2', ...)
-```
-In current Groovy this could maybe expressed by
-```
-sql.select(
-  "column_name",
-  from:"table_name",
-  where:"column_name",
-  in:['value1','value2',...])
-```
-With this new command dsl you could also do
-```
-sql.
-  select "column_name" \\
-  from "table_name" \\
-  where "column_name" \\
-  in ['value1','value2',...]
-```
-It should be noticed, that both cases have quite different semantics. In the second case the writer saves a lot of commas, but of course not all of them. Also the lack of any kind of operator like the comma makes it diifivult to span the DSL across multiple lines. A more extended example would be
-```
-SELECT COUNT("column_name")
-FROM "table_name"
-sql.select count("column_name") from "table_name"
-```
-To express this in map style is a bit difficult, because of where to place count... a possible version is mabye
-```
-sql.select(sql.count("column_name"), from:"table_name"
-```
-
-==== More example ideas
-
-Here are some additional examples which relate to various domains, which may make the idea more visual in our minds.
-These examples also mix named and non-named arguments, the use closures or not.
-In comments, alongside the example, you'll see the equivalent non-command expression interpretation.
-
-```
-sell 100.shares of MSFT // sell(100.shares).of(MSFT)
-every 10.minutes, execute {} // already possible with current command expressions
-schedule executionOf { ... } every 10.minutes // scheduler(executionOf({})).every(10.minutes)
-blend red, green of acrylic // blend(red, gree).of(acrylic)
-
-// named parameters into the mix
-select from: users where age > 32 and sex == 'male'
-// equivalent to select(from: users).where(age > 32).and(sex == 'male')
-// not that however for this example, it would be intersting
-// to transparently convert the boolean conditions into closure expressions!
-
-// a recipe DSL
-take mediumBowl
-combine soySauce, vinegar, chiliPowder, garlic
-place chicken in sauce
-turn once to coat
-marinate 30.minutes at roomTemperature
-```
-
-==== Extension to command expressions in the case of assignments
-
-Currently, command expressions are allowed as standalone top-leval statements or expressions, but you can't assign such an expression to a variable with keeping that nice DSL syntax. For instance, while you can do:
-```
-move left
-```
-If you wanted to assign that command (which could return a Position instance), you would like to do
-```
-def newPosition = move left
-```
-But you still have to do
-```
-def newPosition = move(left)
-```
-So the GEP-3 proposal also suggests we extend command expressions to be allowed on the RHS of assignments.
-
-==== Differences to Scala
-
-For historic reasons
-```
-println foo
-```
-has to be supported. This seems to not to be a valid version in Scala, since that would be interpreted as
-```
-println.foo
-```
-and not as
-```
-this.println foo
-```
-On the other hand
-```
-foo bar a1
-```
-is interpreted as
-```
-foo.bar(a1)
-```
-in Scala and is invalid in current Groovy as well as after this proposal. So it could be stated, that this proposal is less object oriented then Scala, because the DSL usually starts with the method, not the object. On the other hand it is possible to write
-```
-foo.bar a1
-```
-So the Groovy notation would be a bit more verbose, but not much.
-
-==== To be evaluated: Mixed case with explicit parentheses
-
-A possible supported case is also when mixing method calls with explicit parentheses within that extended command expression.
-The benefit would be to allow the ability to also be able to call methods not taking parameters, as well as allowing an odd number of "elements" (ie. a method name or a parameter).
-```
-m1 a m2 b m3()
-m1 a m2() m3 b
-m1() m2 a m3 b
-```
-would be respectively equivalent to:
-```
-m1(a).m2(b).m3()
-m1(a).m2().m3(b)
-m1().m2(a).m3(b)
-```
-Note that the method calls with explicit parentheses could also take a number of arguments.
-For instance, this is also a valid mixed command expression:
-```
-m1 a m2(1, 2, 3) m3 b
-```
-
-== References and useful links
-
-=== JIRA issues:
-
-* Implement GEP-3: extended command expressions https://issues.apache.org/jira/browse/GROOVY-4384[GROOVY-4384]
-* Ability to use (extended) command expression on the RHS https://issues.apache.org/jira/browse/GROOVY-4401[GROOVY-4401]
-* Allow zero-args methods in the chain of calls https://issues.apache.org/jira/browse/GROOVY-4402[GROOVY-4402]
-* Disambiguate cases where minus something or [] or {} are used as the argument of extended command expressions https://issues.apache.org/jira/browse/GROOVY-4403[GROOVY-4403]
-
-== Update history
-
-1 (2009-06-17):: Version as extracted from Codehaus wiki
-2 (2018-10-11):: Numerous minor tweaks
diff --git a/site/src/site/wiki/GEP-4.adoc b/site/src/site/wiki/GEP-4.adoc
deleted file mode 100644
index 8cd5b4c..0000000
--- a/site/src/site/wiki/GEP-4.adoc
+++ /dev/null
@@ -1,123 +0,0 @@
-= GEP-4: AstBuilder AST Templates
-
-:icons: font
-
-.Metadata
-****
-[horizontal,options="compact"]
-*Number*:: GEP-4
-*Title*:: AstBuilder AST Templates
-*Version*:: 2
-*Type*:: Feature
-*Status*:: Rejected
-*Comment*:: The approach used in Groovy macros was pursued instead
-*Leader*:: Hamlet D'Arcy
-*Created*:: 2010-02-16
-*Last modification*&#160;:: 2018-10-12
-****
-
-== Abstract
-
-The AstBuilder was introduced in Groovy 1.7 as a way to ease the task of writing AST transformations.
-The "fromCode" approach allows you generate the AST from a piece of code. Currently, the AstBuilder fromCode API
-accepts a closure as a parameter, and the code within the closure it transformed to AST.
-A limitation of the AstBuilder is that the closure parameter does not allow variables in the surrounding
-context to be referenced: there is no way to pass a parameter into the code block.
-It was initially discussed but the idea was deemed too much effort to fit into 1.7.
-
-This AST Template feature allows you to pass parameters into the AstBuilder.
-Similar to how a $ works in GString interpolation, there needs to be a way to bind a variable from the
-enclosing scope into an AstBuilder closure. The syntax proposed is to use oxford brackets (see below).
-An AstBuilder closure containing GEP 4 - AstBuilder AST Templates will have the variable within the brackets bound in.
-
-== Approach
-
-The oxford brackets are used to bind, or quasi-quote, variables from the enclosing scope into an AstBuilder parameter.
-
-Example 1: String concatenation
-```
-def constant = new ConstantExpression("World")
-List<ASTNode> greeting = AstBuilder.buildFromCode { "Hello" + [ | constant | ]  }
-```
-Produces the AST
-```
-BlockStatement
--> ExpressionStatement
-   -> BinaryExpression +
-      -> ConstantExpresssion - Hello
-      -> ConstantExpression - World
-```
-Example 2: Producing a println
-```
-new AstBuilder().buildFromCode { println([ | message | ]) }[0]
-```
-is equivalent to invoking this method:
-```
-private Statement createPrintlnAst(String message) {
-   return new ExpressionStatement(
-       new MethodCallExpression(
-           new VariableExpression("this"),
-           new ConstantExpression("println"),
-           new ArgumentListExpression(
-               new ConstantExpression(message)
-           )
-       )
-   )
-}
-```
-Example 3: Memoization of a method
-
-Presumably, you would have the existing method AST in a variable called "methodNode":
-```
-def methodNode = ...
-def parameters = methodNode.parameters
-
-def newMethod = new AstBuilder().buildFromCode {
- if (cache.contains([ | parameters | ])) {
-   return cache.get([ | parameters | ])
- }
- def result = [ | methodNode.code | ]
- cache.put([ | parameters | ])
- return result
-}
-
-methodNode.code = newMethod[0]
-```
-=== Alternatives
-
-There are many syntax alternatives:
-
-* Lisp uses ´ and ,
-* Template Haskell uses something similar to oxford brackets but with slightly different semantics
-* Boo uses uses GEP 4 - AstBuilder AST Templates and $ but with slightly different semantics
-
-A $ was considered but cannot be used as it is already a meaningful identifier.
-Boo Meta Method Comparison
-The Boo Metamethod feature overlaps with the Groovy AST Transformation features. Instead of an @AstTransformation interface with a seperately defined AstTransformation subclass, Boo offers Meta methods, where the AST Transformation is called and generated at compile time.
-
-While Groovy offers AstBuilder to turn code into AST, Boo uses the oxford brackets. And while GEP-4 proposed oxford brackets to signify an AST variable templating, Boo uses the $. Consider a simple println AST in Groovy
-```
-new AstBuilder().buildFromCode {
-    println([ | message | ])
-}[0]
-```
-Compared to a similar construct in Boo:
-```
-[Meta]
-static def methodname(expr as Expression):
-    [| println($expr) |]
-```
-GEP-4 proposes the opposite syntax from Boo: oxford brackets for AST Templating instead of the $. The $ is already a character in Java, and can be part of a variable name.
-
-There are no real drawbacks to having an opposite syntax. The number of Boo AST Transformation writers migrating to Groovy is most likely quite low.
-
-== References and useful links
-
-Mailing List Discussions
-
-* groovy-dev: https://groovy.markmail.org/thread/mgo3ze3uvn2jalz4[Groovy AstBuilder AST Templates]
-
-== Update history
-
-1 (2010-02-16):: Version as extracted from Codehaus wiki
-2 (2018-10-14):: Numerous minor tweaks
diff --git a/site/src/site/wiki/GEP-5.adoc b/site/src/site/wiki/GEP-5.adoc
deleted file mode 100644
index 5ad196f..0000000
--- a/site/src/site/wiki/GEP-5.adoc
+++ /dev/null
@@ -1,49 +0,0 @@
-= GEP-5: File extension dependent AST transformations
-
-:icons: font
-
-.Metadata
-****
-[horizontal,options="compact"]
-*Number*:: GEP-5
-*Title*:: File extension dependent AST transformations
-*Version*:: 2
-*Type*:: Feature
-*Status*:: Rejected
-*Comment*:: A general compiler configuration mechanism was adopted instead and delivered in Groovy 1.8
-*Leader*:: Alex Tkachman
-*Created*:: 2010-02-26
-*Last modification*&#160;:: 2018-10-12
-****
-
-== Abstract: What is a file extension dependent AST transformations?
-
-AST transformations is powerful tool for creating DSLs. Two ways to define AST transformations exist today - via annotation and global transformation, which apply to everything. This proposal introduce new type - transformations, which apply only to source files with given extension.
-
-Such approach gives possibility to have better and unified way to organize code base containing groovy based DSLs.
-
-=== How to implement?
-
-There are two problems to be addressed:
-
-* how to make AST transformation extension aware
-* how to make Groovyc or FileSystemCompiler or even IDE aware about additional (to *.groovy) extensions to be compiled
-Interesting that first problem doesn't require any specific handling at all. Global AST transformation can use name of SourceUnit to filter what files to process.
-
-For second problem file `META-INF/services/org.codehaus.groovy.transform.ASTTransformation` where global AST transformations normally defined can be used. To keep things backward compatible following syntax is suggested
-```
-#files:<ext1>,<ext2>...
-```
-The main benefit of using configuration files are:
-
-* new frameworks using AST based transformations make compiler aware about files to be compiled just by dropping in to classpath
-* it is very easy for any incarnation of compiler (FileSystemCompiler or Groovyc or whatever) to scan classpath and find extensions to be compiled
-
-== URLs
-
-https://groovy.markmail.org/thread/jahqbj6su5ddvuah[groovy-dev: GEP 5 - file extension based AST transformations]
-
-== Update history
-
-1 (2010-02-16):: Version as extracted from Codehaus wiki
-2 (2018-10-14):: Numerous minor tweaks
diff --git a/site/src/site/wiki/GEP-6.adoc b/site/src/site/wiki/GEP-6.adoc
deleted file mode 100644
index 103abc1..0000000
--- a/site/src/site/wiki/GEP-6.adoc
+++ /dev/null
@@ -1,88 +0,0 @@
-= GEP-6: NIO2 Support for Groovy
-
-:icons: font
-
-.Metadata
-****
-[horizontal,options="compact"]
-*Number*:: GEP-6
-*Title*:: NIO2 Support for Groovy
-*Version*:: 2
-*Type*:: Feature
-*Status*:: Final
-*Comment*:: Delivered in Groovy 2.3
-*Leader*:: Merlyn Albery-Speyer/Hamlet D'Arcy
-*Created*:: 2010-09-25
-*Last modification*&#160;:: 2018-10-12
-****
-
-== Abstract
-
-JDK 7 includes a new java.nio.file package and Path class.
-These provide extended capabilities for filesystem tasks.
-We should explore incorporation into Groovy.
-
-== Approach
-
-I propose:
-
-* Create an openjdk7 build of Groovy
-* Move NIO2 support to a Groovy Module for now
-* Move NIO2 Groovy Module to Groovy-core when JDK7 is officially released
-
-JDK7 is still in beta. It is subject to change. If we build NIO2 support into Groovy today and make a release,
-then we risk having JDK7 make an API change, which would force us to support 2 different APIs. That would be bad.
-
-=== Todo in Groovy NIO Module:
-
-* Support new Path object
-* All of the GDK File API needs to be on Path
-* NIO2 contains a new WatchService API. We need to probably provide a GDK on WatchService to make it easy to work
-with using closures, etc. This is the most interesting piece of work IMO.
-
-=== Todo in Groovy Core:
-
-Groovy has a FileNameFinder and FileNameRegExFinder. This stuff needs to work with Paths as well:
-http://mrhaki.blogspot.com/2009/11/groovy-goodness-finding-files-with.html
-
-I haven't looked at each file in this list yet, but we need to analyze these Groovy source files and see if
-any parallel Path implementations are needed. The first 3 files look like the most important:
-
-```
-./groovy/util/IFileNameFinder.java
-./groovy/io/FileType.java
-./groovy/io/FileVisitResult.java
-./org/codehaus/groovy/runtime/WritableFile.java
-./org/codehaus/groovy/ant/FileIterator.java
-./org/codehaus/groovy/ant/FileScanner.java
-./org/codehaus/groovy/control/io/FileReaderSource.java
-```
-
-I couldn't find any instances of this in Groovy-core, but any `asType(File)` methods need a parallel
-`asType(Path)` - I believe `asWritable(Path)` is the only change required. In NIO2, I believe `File.list`
-and another method now return an iterator, which enables this method to work better over networks.
-We need to update the File GDK to use this approach by default to also support network dir or ls style listings.
-NIO2 has a new `FileVisitor` class. We need to unify this new `FileVisitor` JDK method with what Groovy does
-today in with GDK with the `.eachFile` method. As well as the `.eachFileXXX` methods and the `.eachDirXXX`
-methods we should include the `.traverse` method when looking through potential places for unification.
-The `.traverse` method's primary role was to make some `FileVisitor` like functionality available in the pre-JDK 7
-world but having NIO2 there might open up some more possibilities. There was also some thought at the time of having
-additional overloaded traverse methods with a more statically typed flavor rather than just the current Map solution.
-I guess now is a good time to also look at that option.
-
-== References and useful links
-
-=== Mailing-list discussions
-
-* https://markmail.org/thread/osst6q4obk56fxqg[groovy-dev: OpenJDK 7 Groovy Build and NIO2 support]
-* https://docs.oracle.com/javase/8/docs/technotes/guides/io/index.html[Java I/O, NIO and NIO.2]
-
-=== JIRA issues
-
-* https://issues.apache.org/jira/browse/GROOVY-4390[GROOVY-4390: Add GDK File methods to the NIO2 API]
-* https://issues.apache.org/jira/browse/GROOVY-4391[GROOVY-4391: Groovy build fails test target using Java 1.7.0]
-
-== Update history
-
-1 (2010-02-16):: Version as extracted from Codehaus wiki
-2 (2018-10-14):: Numerous minor tweaks
diff --git a/site/src/site/wiki/GEP-7.adoc b/site/src/site/wiki/GEP-7.adoc
deleted file mode 100644
index a408bcc..0000000
--- a/site/src/site/wiki/GEP-7.adoc
+++ /dev/null
@@ -1,168 +0,0 @@
-= GEP-7: JSON Support
-
-:icons: font
-
-.Metadata
-****
-[horizontal,options="compact"]
-*Number*:: GEP-7
-*Title*:: JSON Support
-*Version*:: 4
-*Type*:: Feature
-*Status*:: Final
-*Comment*:: Delivered in Groovy 1.8
-*Leader*:: Guillaume Laforge
-*Contributors*:: Andres Almiray
-*Created*:: 2010-10-25
-*Last modification*&#160;:: 2018-10-12
-****
-
-== Abstract: JSON Support
-
-Provide a builder/slurper combination for handling data in JSON format in a similar fashion as it's already done for XML.
-
-== Rationale
-
-JSON has become ubiquitous to the web. RESTful services exchange data in both POX (Plain Old XML) and JSON formats.
-Groovy has excellent support for producing/consuming XML with MarkupBuilder, XmlSlurper and XmlParser but lacks this
-kind support for JSON. This GEP strives to remedy the situation, by providing a compatible builder approach.
-
-=== Producing JSON
-The following builder syntax is proposed
-
-```
-def builder = new groovy.json.JsonBuilder()
-def root = builder.people {
-    person {
-        firstName 'Guillame'
-        lastName 'Laforge'
-        // Maps are valid values for objects too
-        address(
-            city: 'Paris',
-            country: 'France',
-            zip: 12345,
-        )
-        married true
-        conferences 'JavaOne', 'Gr8conf'
-    }
-}
-
-// creates a data structure made of maps (Json object) and lists (Json array)
-assert root instanceof Map
-
-println builder.toString()
-
-// prints (without formatting)
-{"people": {
-    "person": {
-        "firstName": "Guillaume",
-        "lastName": "Laforge",
-        "address": {
-           "city": "Paris",
-           "country": "France",
-           "zip": 12345
-        },
-        "married": true,
-        "conferences": [
-            "JavaOne",
-            "Gr8conf"
-        ]
-    }
-}
-```
-
-Valid node values are: `Number`, `String`, `GString`, `Boolean`, `Map`, `List`. `null` is reserved for object references.
-Arrays can not be null but they can be empty. Anything else results in an IAE (or a more specialized exception) being thrown.
-
-=== Special cases
-
-There is a special case to be considered: when the top node results in an anonymous object or array.
-or objects a call() method on the builder is needed which takes a map as argument, for arrays call() takes a vararg of values. Here are some examples:
-
-```
-builder.foo "foo"
-// produces
-{foo: "foo"}
-```
-
-```
-builder([{
-  foo 'foo'
-}])
-// produces
-[{"foo": "foo"}]
-```
-
-```
-builder([[
-  foo: 'foo'
-]])
-// produces, same as above
-[{"foo": "foo"}]
-```
-
-```
-builder {
-    elem 1, 2, 3
-}
-// produces
-{ "elem": [1, 2, 3] }
-```
-When a method is called on the builder without arguments, and empty JSON object is associated with the key:
-
-```
-builder.element()
-// produces
-{ "element": {} }
-```
-
-You can also pass a map and a closure argument:
-```
-builder.person(name: "Guillaume", age: 33) { town "Paris" }
-
-// produces
-{"name": "Guillaume", "age": 33, "town": "Paris}
-```
-
-Calls like the following, with a map and a value, don't have any meaningful representation in JSON (unlike in XML), and triggers a JsonException:
-
-```
-shouldFail(JsonException) {
-    builder.elem(a: 1, b: 2, "some text value")
-}
-```
-
-In case of overlapping keys in the map and the closure, the closure wins – a visual clue for this rule is that the closure appears "after" the map key/value pairs.
-
-Consuming JSON
-The proposal is for the creation of a JsonSlurper class that can read JSON from a string (in a non-streaming fashion) and produce a hierarchy of maps and lists representing the JSON objects and arrays respectively.
-```
-String json = '{"person": {"firstName": "Guillaume", "lastName": "Laforge", "conferences": ["JavaOne", "Gr8conf"]}}'
-def root = new JsonSlurper().parseText(json)
-assert root instanceof Map
-assert root.person.conferences instanceof List
-assert root.person.firstName == 'Guillaume'
-assert root.person.conferences[1] == 'Gr8conf'
-```
-JsonSlurper's API should mirror closely what XmlParser/XmlSlurper offers in terms of its parse* method variants.
-
-== References and useful links
-
-JSON Spec and Java implementations
-
-* http://json.org/[json.org]
-* http://tools.ietf.org/html/rfc4627[RFC-4627]
-* http://json-lib.sourceforge.net/[json-lib]
-
-=== Mailing-list discussions
-
-* https://markmail.org/thread/5ofqwr6t33okyh6g[groovy-dev: Built-in JSON support in 1.8]
-
-=== JIRA issues
-
-* https://issues.apache.org/jira/browse/GROOVY-4644[GROOVY-4644: JSON support: provide a parser and a builder for JSON content]
-
-== Update history
-
-3 (2011-02-02):: Version as extracted from Codehaus wiki
-4 (2018-10-16):: Numerous minor tweaks
diff --git a/site/src/site/wiki/GEP-8.adoc b/site/src/site/wiki/GEP-8.adoc
deleted file mode 100644
index b3f449f..0000000
--- a/site/src/site/wiki/GEP-8.adoc
+++ /dev/null
@@ -1,300 +0,0 @@
-= GEP-8: Static type checking
-
-:icons: font
-
-.Metadata
-****
-[horizontal,options="compact"]
-*Number*:: GEP-8
-*Title*:: Static type checking
-*Version*:: 9
-*Type*:: Feature
-*Status*:: Final
-*Comment*:: Delivered in Groovy 2.0 and enhanced in later versions
-*Leader*:: Cédric Champeau
-*Created*:: 2011-10-08
-*Last modification*&#160;:: 2018-10-12
-****
-
-== Abstract: Static Type Checking
-
-This GEP introduces a new feature in the language known as static type checking.
-It is often disturbing for developers coming from a statically typed language (say Java)
-to discover that the Groovy compiler will not complain at compile time:
-
-* when assignments are made on different types
-* when a method doesn't exist
-* when a property or variable doesn't exist
-* when returned object type doesn't match the method signature
-* ...
-
-All those are silent because the dynamic nature of the Groovy language makes such code perfectly valid.
-However, in some situations, a developer may want Groovy to behave like a statically typed language
-and have the compiler give hints about such "errors". To do this, Groovy must introduce static type checking.
-
-== Rationale: Static Type Checking vs Static compilation
-
-It is important to make the difference between static type checking and static compilation.
-The goal of this GEP is to have an option to turn static type checking (STC) on.
-If STC is activated, the compiler will be more verbose (you will also see the term "grumpy"),
-but in the end, the generated bytecode and runtime behaviour will be exactly the same as if you
-did not activate this mode. This is a major difference from an alternate compiler like Groovy++
-which will perform STC then produce a different bytecode and therefore produce different runtime semantics.
-The scope of this GEP is only a static type checker, and therefore should only be considered as a
-feature which allows developers to write statically checked code, so is an elegant way for example
-to leverage the Groovy syntax to reduce verbosity of Java code while still getting strongly checked code.
-Eventually, IDE could support the STC mode and provide information to the developer.
-
-=== Implementation details
-
-==== Development branch
-
-Since Groovy 2.0-beta-2, code has been merged into master branch. However, if heavy developments are
-done on the type checker, it is advisable to work on the grumpy branch. It adds an AST transformation
-named TypeChecked. If set, then the AST transformation will perform type inference and store type
-information in AST nodes metadata. Eventually, if errors are found, it will add errors to the compiler
-through a dedicated addStaticTypeError method which basically does the same as the traditional
-addError method but prefixes the messages with a "Static type checking" message.
-This is done to help the developer determine whether the error he is seeing is a "plain Groovy" error,
-or an error thrown by the STC mode.
-
-==== The StaticTypeCheckingTestCase class
-
-Static type checking behaviour must be tested. As there are tons of possible checks to be done,
-a base test class provides a framework for testing this mode.
-Unit tests for static type checking should override this class.
-
-=== Decisions made
-
-==== About this section
-
-The goal of this section is to provide code samples which demonstrates in what case the STC transformation
-will actually complain and what is the expected error message, and serves as a basis to future STC documentation.
-This section may not be up-to-date, and one should always take a look at the STC unit tests found in the
-`src/test/groovy/transform/stc` directory.
-
-[options="header"]
-|===
-| Feature | Example | Behavior | Status
-| Method does not exist a|
-----
-def method() {
-  ...
-}
-methode() // typo
-----
-| Complains about undefined method | Implemented
-| Property does not exist a|
-----
-class A {
-  int x
-}
-A obj = new A()
-a.y = 2
-----
-| Complains about undefined property "y" | Implemented
-| Assignment type checking a|
-----
-int x = 2
-x = 'String'
-----
-| Assigning a String to an int is forbidden | Implemented
-| Incompatible binary expressions a|
-----
-1 + 'string'
-----
-| Checks that arguments of a binary expression are compatible (here, no 'plus' method is available | Implemented
-| Possible loss of precision (1/2) a|
-----
-long myLong = ...
-int myInt = myLong
-----
-| Complains about possible loss of precision | Implemented
-| Possible loss of precision (2/2) a|
-----
-int myInt = 2L
-----
-| Will not complain because '2' can be represented as an int | Implemented
-| Arrays components a|
-----
-String[] arr = { '1', '2', '3' }
-arr[2] = 200
-----
-| Cannot assign an int value in an array of type String[] | Implemented
-| Method return type check a|
-----
-String method() { 'Hello' }
-int x = method() // return types don't match
-----
-| Ensures that assignments are compatible with method return type | Implemented
-| Explicit return type checking a|
-----
-int method() {
-  return 'String' // return type is not compatible
-}
-----
-| Ensures that returned value is compatible with declared return type | Implemented
-| Implicit return type checking a|
-----
-int method() {
-  'String' // return type is not compatible
-}
-----
-| Ensures that returned value is compatible with declared return type | Implemented
-| Implicit toString() a|
-----
-String method(String name) {
-  StringBuilder sb = new StringBuilder()
-  sb 'Hi ' << name << '!'
-}
-----
-| Implicit call to toString() | Implemented
-| Basic type inference a|
-----
-def str = 'My string'
-str.toUpperCase() // type of 'str' is inferred
-----
-| Method calls as well as property access are checked against inferred type | Implemented
-| Basic flow analysis a|
-----
-def o
-...
-if (o instanceof String) {
-  o.toUpperCase() // no explicit cast required
-}
-----
-| Casts should not be necessary when type can be inferred from a previous instanceof check | Implemented
-| DefaultGroovyMethods support a|
-----
-'123'.toInteger() // toInteger() is a Groovy extension method
-----
-| Method calls can be resolved against Groovy extension methods | Implemented
-| with a|
-----
-class A {
-  int x
-}
-def a = new A()
-a.with {
-  x = 1
-}
-----
-| Method calls can be resolved against Groovy extension methods | Implemented
-| Categories a|
-----
-use (MyStringCategory) {
-   'string'.methodInStringCategory()
-}
-----
-| Compiler should be aware that extension method is found in a category | *N/A* (support will be limited as category support is inherently dynamic)
-| Groovy list constructor a|
-----
-Dimension d = [100, 200]
-----
-| Type checks the arguments and the number of arguments | Implemented
-| Groovy map constructor a|
-----
-Bean myBean = [x: 100, y: 200]
-----
-| Type checks the properties and checks for incorrect property names | Implemented
-| Closure parameter types a|
-----
-def closure = { int x, int y -> x + y }
-closure(1, 2)
-closure('1', '2') // complains
-----
-| Type checking the arguments when calling a closure | Implemented
-| Closure return type inference a|
-----
-def closure = { int x, int y -> x + y }
-int sum = closure(1, 2)
-----
-| Closure return type can be inferred from block | Implemented
-| Method return type inference a|
-----
-def method(int x, int y) { x + y }
-int sum = method(1, 2)
-----
-| Return type can be inferred from a method if the method is itself annotated with @TypeChecked (or class is annotated with @TypeChecked) | Implemented
-| Multiple assignments a|
-----
-def (x, y) = [1, 2]
-----
-| In case of inline declaration, type check arguments | Implemented
-| Multiple assignments from a variable a|
-----
-def (x, y) = list
-----
-| In case of inline declaration, type check arguments | Implemented
-| Generics a|
-----
-List<String> list = []
-List<String> list = ['a', 'b', 'c']
-List<String> list = [1, 2, 3] // should throw error
-----
-| Type checking of generic parameters | Implemented
-| Spread operator a|
-----
-def list = ['a', 'b', 'c']
-list*.toUpperCase()
-----
-| Type checking against component type | Implemented
-| Closure shared variables a|
-----
-def x = new Date()
-def cl = { x = 'hello' }
-cl()
-x.toUpperCase() // should throw an error because the toUpperCase() method doesn't belong to both Date and String classes
-----
-| Type check assignments of closure shared variables. The type checker is required to perform a two-pass verification,
-in order to check that method calls on a closure shared variables belong to the lowest upper bound of all assignment types. | Implemented
-|===
-
-=== Open discussions
-
-==== Closure parameter type inference
-
-With the current version of the checker, idiomatic constructs like :
-
-```
-['a','b','c'].collect { it.toUpperCase() }
-```
-
-Are not properly recognized. You have to explicitly set the type of the "it" parameter inside the closure.
-It is because the expected parameter types of closures are unknown at compile time.
-There is a discussion about how to add this type information to source code so that the inference
-engine can deal with them properly. The implementation of closure parameter type inference requires
-a change to the method signatures. It will probably not belong to the initial release of the type checker.
-
-==== Unification Types
-
-In cases of for example `x instanceof A || x instanceof B` with A and B being unrelated we could
-still make an artificial union kind of type, that contains everything present in A and B,
-to allow those kinds of method calls. The alternative to this is to allow only methods from Object here,
-which is less interesting. This typing can also be used for multicatch, ensuring that a method call is
-only valid if it exists on each of the exceptions for the multicatch.
-In the current implementation (2011-10-14) the multicatch is already expanded at the point @TypeChecked will check.
-Meaning effectively this already represents a kind of union type, as the same code is in each catch block
-and thus the method call would fail, if the method is not available on each type.
-The proposed behaviour is therefore to align the instanceof case with multicatch.
-
-== References and useful links
-
-* https://web.archive.org/web/20150508041021/http://docs.codehaus.org/display/GroovyJSR/GEP+8+-+Static+type+checking[GEP-8: Static type checking] (web archive link with comments)
-* http://blackdragsview.blogspot.com/2011/10/flow-sensitive-typing.html[Flow Sensitive Typing?]
-* https://web.archive.org/web/20150508040745/http://www.jroller.com/melix/entry/groovy_static_type_checker_status[Groovy static type checker: status update] (web archive)
-
-=== Mailing-list discussions
-
-* https://markmail.org/thread/reou7z35nk64cai5[groovy-user: What to do on assignment?] Discussion about the expected behaviour when STC detects a potential error on assignment (for example, possible loose of precision on implicit number casts)
-
-=== JIRA issues
-
-* https://issues.apache.org/jira/browse/GROOVY-5073[GROOVY-5073: GEP-8 - Static type checking]
-* https://issues.apache.org/jira/browse/GROOVY-3014[GROOVY-3014: add an annotation that forces the compiler to check methods for their existence at compile time]
-* https://issues.apache.org/jira/browse/GROOVY-5081[GROOVY-5081: Handle explicit and implicit returns]
-
-== Update history
-
-8 (2012-02-21):: Version as extracted from Codehaus wiki
-9 (2018-10-16):: Numerous minor tweaks
diff --git a/site/src/site/wiki/GEP-9.adoc b/site/src/site/wiki/GEP-9.adoc
deleted file mode 100644
index 63cf201..0000000
--- a/site/src/site/wiki/GEP-9.adoc
+++ /dev/null
@@ -1,183 +0,0 @@
-= GEP-9: Modularization
-
-:icons: font
-
-.Metadata
-****
-[horizontal,options="compact"]
-*Number*:: GEP-9
-*Title*:: Modularization
-*Version*:: 5
-*Type*:: Feature
-*Status*:: Final
-*Comment*:: Parts incorporated in Groovy 2.0
-*Leader*:: Paul King
-*Created*:: 2011-10-26
-*Last modification*&#160;:: 2018-10-24
-****
-
-== Abstract: Modularization
-
-This GEP introduces the goals and proposed details behind a modularization effort that will:
-
-* provide a more streamlined jar for core Groovy with other jars comprising what might be considered optional parts of Groovy
-* provide Groovy library writers with hooks into the groovy runtime to allow them to extend Groovy in various ways - allowing "grapes" to be more like plugins than just traditional libraries
-* auxiliary details about how the modularization might affect other artifacts, e.g. the Groovy build, wiki, jira components, etc.
-
-This activity builds upon the work discussed previously: Groovy 2.0 modularization and the somewhat older profiles discussion Packaging and Modularity.
-
-=== Out of scope
-
-While we should keep a watching brief on other modularization efforts, at this stage we are anticipating structural
-changes to the Groovy classes which are orthogonal to eventually using something like OSGi or Java 8's Jigsaw modularization.
-
-=== Jar groupings
-
-At the moment, Groovy provides two main jar artifacts:
-
-* groovy.jar contains the core classes for Groovy and has a dependency on a small handful of critical dependent jars (i.e. asm, antlr, etc.)
-* groovy-all.jar contains the core classes for Groovy and bundled versions of the critical dependent jars
-
-After modularization, the main Groovy codebase will be packaged into additional jar artifacts:
-
-* groovy.jar or groovy-core.jar (name to be finalized) will contain a smaller set of core classes for Groovy and will retain its dependency on a small handful of critical dependent jars (i.e. asm, antlr, etc.)
-* numerous smaller "module/component" jars (exact names/numbers/contents to be finalized) but possibly things like groovy-bsf.jar, groovy-sql.jar, groovy-swing.jar, groovy-jmx.jar, groovy-xml, groovy-tools etc.
-* groovy-all.jar contains the core classes for Groovy, bundled versions of the critical dependent jars and all of the classes from the module jars
-* optionally we may support other "profiles" - profiles being other "fat" jars we bundle together for other environments, e.g. groovy-android.jar might exclude the JMX or Swing modules for instance.
-
-Recommendations/suggestions for jar groupings are welcome. See some more details in the accompanying discussion: Groovy 2.0 modularization.
-
-One of the goals of this bundling effort is to facilitate Groovy's evolution as a language by enabling:
-
-* less relevant modules to become deprecated and removed from the main project but still available as external libraries, e.g. groovy-bsf might be deemed inessential now that most users will have jsr-223 (but it can be moved into a separate module and still available for anyone who needs it)
-* the controlled migration from legacy to new versions of some functionality, e.g. we could produce a groovy-xml-v2 library which might have breaking changes - the v2 library might be an optional module at first but later become the main supported option - legacy users would be able to "point back to the old version" so that their scripts don't break if they wished (further details later)
-* external modules could more easily be incorporated into the core distribution (with users able to customize certain aspects of what gets bundled)
-* we can provide "legacy" jars which contain deprecated features or unforeseen breaking changes - library writers can incorporate the legacy jar into their libraries to more easily support using their libraries across multiple versions of Groovy
-
-=== Configuring a Groovy installation
-
-Groovy bootstraps its configuration using a file in the conf/groovy-starter.conf file. It has entries like this:
-
-```
-# load required libraries
-load !{groovy.home}/lib/*.jar
-```
-
-with required jars being in a lib directory which is part of a Groovy install.
-
-The groovy install will now likely have a "modules" (or components or repository) directory.
-The groovy-starter.conf file will have additional entries such as:
-
-```
-# load SQL component
-grab org.codehaus.groovy groovy-sql 1.9.0
-# load XML component
-grab org.codehaus.groovy groovy-xml 1.9.0
-```
-
-Grapes are loaded via Ivy and configured from a settings file. This file might have an additional entry:
-
-```
-<ibiblio name="modules" root="file:${groovy.home}/modules/" m2compatible="true"/>
-```
-
-The Ivy library (or perhaps the wharf or aether libraries) will likely become a required jar - though it may be
-that only a very limited form of grab is supported in which case no additional library might be necessary.
-
-=== Runtime hooks/registration
-
-When downloading a grape, the classes from its jar are added (currently appended) to the classpath.
-In addition, we are planning on supporting additional integration points:
-
-[options="header"]
-|===
-| potential hook | purpose | status
-m| META-INF/services/ +
-org.codehaus.groovy.runtime.CategoryMethods | allow the module to define additional category methods | now in `META-INF/groovy/ +
-                                                                                                       org.codehaus.groovy.runtime.ExtensionModuleSpec`
-m| META-INF/services/ +
-org.codehaus.groovy.runtime.StaticCategoryMethods | allow the module to define additional static category methods | now in `META-INF/groovy/ +
-                                                                                                                    org.codehaus.groovy.runtime.ExtensionModuleSpec`
-m| META-INF/services/ +
-org.codehaus.groovy.runtime.SerializedCategoryMethods | allow the module to define additional category methods which have been serialized | deferred
-m| META-INF/services/ +
-org.codehaus.groovy.runtime.ExpandoMethods | allow the module to define additional ExpandoMetaClass methods | deferred
-m| META-INF/services/ +
-org.codehaus.groovy.runtime.DefaultMetaClasses | allow the module to define additional metaclasses similar to the current magic package mechanism footnote:[This needs to mesh in with the existing magic package mechanism for defining custom metaclasses.] | deferred
-m| META-INF/services/groovy/defaultImports | allow the module to define additional normal, star, static imports, aliases | moved to compiler configuration
-m| META-INF/services/groovy/defaultExtensions | allow the module to define supported file extensions | moved to compiler configuration
-m| META-INF/services/groovy/defaultAstTransforms | allow the module to define AST transforms | now in `META-INF/services/ +
-                                                                                               org.codehaus.groovy.transform.ASTTransformation`
-| ? | provide a way to register builder metadata | deferred
-| ? | should there by a way to 'publish' new commandline level startup scripts e.g. java2groovy | deferred
-| ? | provide a way to register a runner class, e.g. EasyB - there might also be a need to detect runner types | now in `META-INF/groovy/ +
-                                                                                                                 org.apache.groovy.plugin.GroovyRunner`
-| ? | provide a way to register special compiler flags, e.g. '--indy' | deferred
-| ? | provide a way to inject special AST customizations | deferred
-|===
-
-This is also where we could specify additional requirements, e.g. require 'invoke dynamic' - but see later also. Could we declaratively specify our security policy requirements. Or can we disable specific aspects of functionality, e.g. disable some standard global AST transform because we want to provide a better one. (There are obviously security implications for this!)
-
-Another question is whether all these features will be available also via an API. Would such an API allow modules to be "unregistered"?
-
-=== Groovydoc/source pointers
-
-Some modularization systems support the "installation" of documentation (and/or sources) along with the module.
-Should a module have a pointer to (or be bundled with) its GroovyDoc and/or source.
-
-In the Java ecosystem, many libraries are published with their javadoc/sources according to common conventions or have javadoc available online. Do we rely on these established conventions or provide additional support? For users without access to sophisticated IDEs it could be convenient to have all the documentation available in "merged" form in one place.
-
-=== Runtime Introspection
-
-In Groovy you can currently determine the Groovy version using:
-
-```
-println GroovySystem.version
-```
-
-which returns a String.
-
-In GROOVY-2422 it talks about the desire for additional version checks.
-
-It also talks about listing capabilities. This could be "is invokeDynamic" available or could really just be about available loaded modules. In general, we would expect our dependencies to be specified as part of our pom and loaded for us automatically but it can sometimes be useful to do special things.
-
-In general, should we be able to find out the list of loaded modules and versions? Or ask about which module/version a particular class belongs to?
-
-=== Build Impacts
-
-Mostly discussed here: Groovy 2.0 modularization
-
-Should each "submodule" be able to be built on its own? Will it have its own javadoc, own coding style rules, own coverage metrics etc.
-
-=== Module robustness
-
-Should we provide a standard hook/mechanism to try to combat the following scenarios:
-
-* you are loading a jar that depends on classes managed by the root classloader?
-* a class with the same name is already on the classpath before yours?
-* a class with the same name as one of your dependencies but from an incompatible version is on the classpath already
-* an ability to register a "ping"/health check method to quickly test the component
-
-=== Assisting IDE support
-
-We may define a standard place or convention, e.g. META-INF/services/groovy/dsld or META-INF/services/groovy/gdsl where IDEs can find DSL descriptors relevant for that module.
-
-=== Logging
-
-Should modules themselves have a standard way to do logging? Is that j.u.l.Logger? Perhaps bridged with slf4j?
-
-== References and useful links
-
-=== Wiki pages (web archive)
-
-* https://web.archive.org/web/20150508040614/http://docs.codehaus.org/display/GROOVY/Groovy+2.0+modularization[Groovy 2.0 modularization]
-* https://web.archive.org/web/20150512231712/http://docs.codehaus.org/display/GroovyJSR/Packaging+and+Modularity[Packaging and Modularity]
-
-=== JIRA issues
-
-* https://issues.apache.org/jira/browse/GROOVY-2422[GROOVY-2422: API for checking version and capabilities of Groovy runtime]
-
-== Update history
-
-4 (2011-10-26):: Version as extracted from Codehaus wiki
-5 (2018-10-24):: Numerous minor tweaks
diff --git a/site/src/site/wiki/groovy-release-discussion.adoc b/site/src/site/wiki/groovy-release-discussion.adoc
deleted file mode 100644
index d8fc13b..0000000
--- a/site/src/site/wiki/groovy-release-discussion.adoc
+++ /dev/null
@@ -1,137 +0,0 @@
-= Adapting the release process for Apache
-
-v1.1, March 28, 2018
-
-:teamcity: http://ci.groovy-lang.org
-:groovy: http://groovy-lang.org
-:bintray: https://bintray.com/[Bintray]
-:gradle: http://gradle.org[Gradle]
-:category: dev
-
-_NOTE_
-****
-This document captures some historical information and discussion about Groovy's release process both before joining Apache and during incubation.
-Many of the ideas went into Groovy's current release process which involves use of a gradle build at the following repo: https://github.com/apache/groovy-release/
-****
-
-== The Groovy Way
-
-Between 2010 and 2015, the Groovy team invested a lot of time in narrowing its release process to reduce human errors as much as possible. Releases were previously done from a despot personal computer, with a number of risks:
-
-* mix of development sources and sources found in the repository. This can happen if the release manager did the release without doing a clean checkout in a separate directory. Then there were risks that source files were present on the release manager computer and not in source control.
-* reliance on a local dependency repository. During development, committers usually do not suffer dependency management issues, because they do regular update and some third party dependencies are found in their local caches (Maven, Gradle). However, new developers may find themselves in a different situation, where they have no local cache. When they try to build, compilation fails because some dependencies cannot be fetched.
-* manual update of properties file for release numbers
-* manual tagging
-* manual update of VCS after release, that can easily be forgotten
-* upload of distribution to the Codehaus WebDAV repository, with a lot of failures due to the poor quality of the protocol (in particular stale lock files)
-* upload of documentation took up to several hours due to the WebDAV process, and were *erasing* previous versions of documentation (API, GAPI, GDK) so it wasn't possible to find online the reference API for a specific Groovy version.
-* Maven artifact uploading and signing done through the Codehaus repository, which was again very slow and error-prone
-
-It's worth noting that binary artifacts are currently published in the `org.codehaus.groovy` group id and that the build uses {gradle}.
-
-=== Automation
-
-For those reasons, we slowly migrated off the Codehaus infrastructure and built a new release process with a continuous integration server at its core. We reviewed several options and eventually found a sponsor, Jetbrains, for a {teamcity}[TeamCity continuous integration server]. The reasons to choose a dedicated server are not all related to the release process. The development process itself greatly benefits from it:
-
-* each branch of Groovy (currently 3 active branches: 2.3.x, 2.4.x, master) are built and tested against multiple JDKs : JDK 6, JDK 7, JDK 8, and older branches of Groovy are tested against older JDKs (JDK 5 for 1.8.x/2.x). Note that some Groovy versions are tested in two flavors: legacy and _invokedynamic_.
-* we build unreleased versions of OpenJDK from sources, so that we can test the master branch against upcoming JDK versions, such as JDK 8 updates and even JDK 9. Those builds allowed us to find a lot of bugs in the JDK before it was released.
-* some community projects are tested against development versions of Groovy (currently, Ratpack and Nextflow)
-
-Eventually, the {groovy}[new Groovy website] is built from https://github.com/groovy/groovy-website[sources] and deployed directly from the CI server, after each push on the _master_ branch.
-
-But in addition to those benefits, it's the release process itself which greatly improved:
-
-* the deployment infrastructure moved from Codehaus to {bintray} and http://www.jfrog.com/open-source/[Artifactory]
-* several build plans are dedicated to builds and releases:
-** the http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_UploadSnapshots&guest=1[snapshot upload] plan builds Groovy from sources and deploys the artifacts to the http://oss.jfrog.org/oss-snapshot-local/org/codehaus/groovy/[OSS Artifactory Snapshot Repository].
-** the http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_ReleasePlan&guest=1[release plan] allows a release manager to release a new version of Groovy directly from the CI server
-** the http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_GvmBroadcast[GVM broadcast] plan allows us to announce a new release of Groovy to http://gvmtool.net/[GVM] and its https://twitter.com/gvmtool[Twitter account] directly from the CI server
-** the http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_GvmMakeDefault[GVM default] plan allows us to notify GVM that a specific Groovy version is the new default version, directly from the CI server
-
-The last two GVM plans are separated because they need to be triggered manually, once we are ready to announce that a new Groovy version is out. Let's now describe what the release plan does, so that we can imagine what adaptations will be required to go the Apache Way.
-
-=== Release plan
-
-The release plan is at the core of the Groovy release process. It reduces human interactions to the bare minimal, dramatically reducing the potential errors. In particular:
-
-* builds are done using a verified JDK
-* the CI local Maven and Gradle repository caches are cleaned every day, making sure that the build is doable from source for any developer
-* release branches and tags are created automatically
-* properties files are updated automatically (sets the release version, then the next version to push on VCS)
-* binaries (sources, documentation, distribution, SDK) are uploaded to {bintray}
-* documentation is uploaded to the {groovy}[Groovy website] in a separate directory, so that each Groovy version has its own documentation readable online
-* all artifacts (binaries+maven) are signed through the {bintray} API
-* Maven artifacts are uploaded to https://bintray.com/bintray/jcenter[JCenter]
-* Maven Central synchronization is done through the {bintray} API
-* GVM gets notified that a new version is available
-
-To do this, the only requirement is to fill in a form and click a button. From that, everything is automated. So when the Groovy team decides that a new release can be done, after clicking the button, the release is available online in general less than 2 hours later. This has to be compared to the previous, error prone process, which took up to 12 hours for a single release. Groovy has a tradition of maintaining multiple branches, so this time has to be multiplied by the number of active branches that we maintain, which are usually released the same day.
-
-With that regards, the decision whether to release a new version or not is done collectively, on the mailing list or in a Skype channel where the core developers agree about releases. But once the decision is made, there is almost no human process involved anymore.
-
-Last but not least, Groovy doesn't make any difference between the source distribution (the zip of the source tree) and binary artifacts (distribution, documentation, maven artifacts). All are considered part of the release, and signed accordingly. But there is a technical difference between Maven artifacts and what we call the distribution (sources, binaries, documentation, SDKs). The distribution is only available in {bintray}. It consists of zip files that the developer can download from the Groovy website. The Maven artifacts, on the other hand, are hosted in JCenter and Maven Central. 
-
-To be able to upload the distribution, the release process automatically creates a new version of Groovy on {bintray}. This version is some kind of folder which will host files for this specific Groovy version. When the files are uploaded, they are kept in *staging* for at most 48 hours. Currently, the release process automatically publishes the artifacts, so there's effectively no staging for Groovy.
-
-It is unclear whether such a staging phase exists for the Maven artifacts uploaded to JCenter (but it seems we can), but it is clear that the Maven Central synchronization that is doable through {bintray} uses a staging phase, because it directly communicates with the Nexus OSS repository. Maven Central synchronization staging repositories are directly closed by {bintray}.
-
-Releasing a new version of Groovy also implies updating the website. Technically it involves two manual steps:
-
-* connect to the server and update the _symlinks_ in _/var/www/docs/docs_ for _latest_ and _next_ versions of Groovy, so that the latest documentation link points to the just released version of Groovy
-* *then* update the _sitemap.groovy_ file in the Groovy Website repo to add the new version, commit, and push, leading to the generation of the website. In particular, the static website generator will fetch the release notes from JIRA and generate a pretty page using the website template, as well as generating some documentation pages from the whole documentation, again decorated with the website template. 
-
-Optionally, for major versions, release notes can be written in Asciidoctor format, and published through the website (see https://github.com/groovy/groovy-website/tree/master/site/src/site/releasenotes).
-
-Eventually, the joint builds on the CI server need to be updated so that they use the latest snapshot versions of Groovy. This is done by changing the `CI_GROOVY_VERSION` environment variable of each build configuration.
-
-== Adaptations required for Apache
-
-The following section is based on our understanding of the Apache Way of releasing. This section is going to be updated based on the feedback we have from our mentors or fellow Apache members.
-
-First of all, the main and only important artifact for Apache is the *sources of the project*. This is going to be very important for our adaptation of the process. This means that binaries, documentation, Maven artifacts and such are not considered equally, and are not mandatory to be able to release a version.
-
-A detailed guide of the release process *during incubation* can be found http://incubator.apache.org/guides/releasemanagement.html[here] but those are derived from the final release process. Below are the main points with comments about how far we are from there.
-
-* 1.1 Checksums and PGP signatures are valid.
-
-_There are no such checksums or multiple PGP signatures for Groovy, apart from those generated through {bintray}. It is implied here that signatures must be checked before the release is done, that is to say that we *require* a staging phase and the ability to perform *multiple signatures*. Signatures are those of committers._
-
-* 2.1 Build is successful including automated tests.
-
-_We're all clear on that. Groovy is tested before each release, and the CI server does much more in testing that a normal user can do. In particular, testing with multiple JDKs. The sources zip has been verified to build and test from sources without any issue._
-
-* 3.1 DISCLAIMER is correct, filenames include "incubating".
-
-_We need to add the *DISCLAIMER*. The "incubating" part is disturbing. In particular, Groovy is not a new project. It's been there for 12 years, and the last release before Apache will be 2.4.2. Does it mean that the next release will have to be named 2.4.3-incubating? It will be very disturbing for our users, and it sounds pretty bad, just as if Groovy wasn't production ready. Should we do this, then the incubation phase should be shortened as much as possible. Another option that we consider is what are exactly the deliverables. If the only deliverable is the source zip, because only sources matter (see 3.6), then we could potentially rename only the source zip to include incubating. The binaries, the properties file, etc, could stay with 2.4.3 (without incubating) because it doesn't seem to be mandatory that the *version number* includes incubating, only the filenames. And if we produce binaries that are not hosted at Apache, like we do now, they can follow their own pattern. This would imply that in Groovy, the only deliverable that would be done through Apache would be the source zip, and the *filename* could include incubating. All other artifacts would *not* belong to the release checklist._
-
-* 3.2 Top-level LICENSE and NOTICE are correct for each distribution.
-
-_We do have those files_.
-
-* 3.3 All source files have license headers where appropriate.
-
-_It has to be checked, but it should already be the case_
-
-* 3.4 The provenance of all source files is clear (ASF or software grants).
-
-_This is going to be done during the incubation phase._
-
-* 3.5 Dependencies licenses are ok as per http://apache.org/legal/
-
-_We will have to remove the only dependency which is now unused and not a standard OSS license: Simian._
-
-* 3.6 Release consists of source code only, no binaries. Each Apache release must contain a source package. This package may not contain compiled components (such as "jar" files) because compiled components are not open source, even if they were built from open source. 
-
-_The source zip does contain a binary *dependency*: openbeans, which is not available in a third party Maven repository. We are unsure if the rule applies to it or not._
- 
-It is also implied that we are going to change the group id from `org.codehaus.groovy` to `org.apache.groovy`. What it means for the release process (in particular synchronization with Maven Central through Bintray) are unclear.
-
-So it seems that the current process could be adapted if:
-
-* we only release the source zip on Apache, and only this item is voted
-* to do this we need to split the release process in at least 3 steps
-** building and deploying to a staging repository, including all artifacts. That staging period has to be extended to *at least* 72 hours, which is the minimal voting duration.
-** signing has to be done by individuals. This implies some way to download the full artifact list (there are more than 200 binary files in total !), sign them, and upload the signatures only.
-** publishing, which implies closing the Bintray staging repository, then synchronizing to Maven Central and publishing to GVM
-
-
diff --git a/site/src/site/wiki/img/mop_2.jpg b/site/src/site/wiki/img/mop_2.jpg
deleted file mode 100644
index c8abac3..0000000
--- a/site/src/site/wiki/img/mop_2.jpg
+++ /dev/null
Binary files differ
diff --git a/site/src/site/wiki/initial-release-process-proposal.adoc b/site/src/site/wiki/initial-release-process-proposal.adoc
deleted file mode 100644
index 0469a65..0000000
--- a/site/src/site/wiki/initial-release-process-proposal.adoc
+++ /dev/null
@@ -1,257 +0,0 @@
-= Initial release process proposal
-
-v1.2, March 28, 2018
-
-:teamcity: http://ci.groovy-lang.org
-:groovy: http://groovy-lang.org
-:bintray: https://bintray.com/[Bintray]
-:gradle: http://gradle.org[Gradle]
-
-_NOTE_
-****
-This document captures some historical information and discussion about Groovy's release process that occurred soon after the Groovy project joined Apache.
-Many of the ideas went into Groovy's current release process which involves use of a gradle build at the following repo: https://github.com/apache/groovy-release/
-If any of the steps in the automated process fail, this documentation might prove useful to understand what manual rectification steps that might be needed.
-****
-
-== Background
-
-The goal of this document is to guide the release manager in order to perform a release under the Apache Incubator. This document, reflecting the status of incubation, is work in progress and will be adapted with regards to comments from the community, mentors and IPMC.
-
-== Initiating a release
-
-Releases can be initiated by a committer, as long as:
-
-* an email has been sent to the dev mailing list, where a committer volunteers for a release
-* there's a general agreement that a release can be done. There's still no explicit rule telling when a new Groovy version can be released, but the history of the project shows that releases are usually done when a significant amount of bugfixes have been done justifying a release, or that new major features are ready.
-* release manager has his personal setup ready. In particular:
-** release manager can log into his people.apache.org account using SSH
-** release manager has administration privileges on {teamcity}[the CI server]
-
-Releases are launched from the CI server. A release should never be done from a personal computer.
-
-== Preparing a release
-
-Releases are done from the CI server, but since it will involve creating tags, branches and several commits, and that the CI server doesn't have privileges to do it, we cannot work on the Apache Git origin. Instead, it is required that the release manager forks the repository and pushes changes to his personal fork. Given that `GROOVY_2_4_X` is the branch to release, `upstream` references Apache Git, and `origin` the release manager fork on GitHub, preparing for a release usually starts with:
-
-```
-git checkout GROOVY_2_4_X
-git pull --rebase upstream GROOVY_2_4_X
-git push origin GROOVY_2_4_X
-```
-
-If you haven't done it already, create a token on https://github.com/settings/tokens[your GitHub profile] so that the CI server can have write access on your fork. Keep the token safe!
-
-== Setup the TeamCity release configuration
-
-Go to the http://ci.groovy-lang.org/admin/editBuild.html?id=buildType:Groovy_BintrayIntegration_ReleasePlan[TeamCity release plan] configuration and open the VCS settings. If the VCS root attached to the configuration is not your GitHub fork, attach your VCS root, or create a new VCS root if you haven't done it already. The VCS root MUST have write access using the token authentication.
-
-
-== Trigger the release
-
-Go to the http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_ReleasePlan&tab=artifactory[Artifactory Release Management tab] and fill the form appropriately:
-
-* _groovyVersion_
-** _release version_ must be set to the version number of Groovy you are releasing. For example `2.4.6`.
-** _next integration version_ *must* be set to the subsequent version number of Groovy you are releasing and as it will be a development version, *must* end with `-SNAPSHOT`. For example `2.4.5-SNAPSHOT`.
-* _groovyBundleVersion_
-** _release version_ must be set to the OSGi bundle version number of Groovy you are releasing. For example `2.4.6`.
-** _next integration version_ *must* be set to the subsequent OSGi bundle version number of Groovy you are releasing and as it will be a development version, *must* end with `.SNAPSHOT`. For example `2.4.5.SNAPSHOT`.
-* _Checkout branch:_ must be set to the branch your are releasing. For example, if you are releasing a 2.4.x version of Groovy, `GROOVY_2_4_X`.
-* _Use release branch_ must be checked, and it will automate the creation of a release branch. Use a branch name in the form of `REL_BRANCH_2_4_3`
-* _Create VCS tag_ must be checked, and it will automate the creation of a release tag. Use a tag name in the form of `GROOVY_2_4_4`
-* _Tag comment_ must be set to something useful describing the release version
-* _Repository to stage the release to (Artifactory Pro):_ must be set to `oss-release-local`
-* _Staging comment_ should be set with something useful like `release of Groovy 2.4.6`
-
-Hit the release button.
-
-== Upload to Apache servers
-
-At this point, if the release build was successful, artifacts are staging on Bintray. You must log into Bintray and download the distribution artifacts. The URL for
-the staging distribution should be in the form of https://bintray.com/groovy/maven/groovy/2.4.6[https://bintray.com/groovy/maven/groovy/2.4.6].
-
-Downloads of the following files are only possible if you use the (groovy-operator,<api key>) credentials. If you don't have them please ask one of the PPMC members:
-
-* apache-groovy-src-_version_.zip
-* apache-groovy-binary-_version_.zip
-* apache-groovy-docs-_version_.zip
-* apache-groovy-sdk-_version_.zip
-
-as well as the corresponding _asc_ and _md5_ files. There should therefore be a total of _12_ files.
-
-NOTE: at this point it is possible that the MD5 files are missing, in which cases you would have to create them locally before uploading to Apache.
-```
-for f in `ls *.zip`; do md5sum $f > $f.md5; done
-```
-
-It is in general not accepted that the release is signed using the CI server key, so you *must* replace the signatures with your own. If you didn't yet,
-add your public key to the `KEYS` file, then sign each zip individually. This can be done, for each file, with a command line like:
-
-```
-gpg --armor --output apache-groovy-src-2.4.6.zip.asc --detach-sign apache-groovy-src-2.4.6.zip
-```
-
-Now you are ready to upload to the dev space on _dist.apache.org_. First of all, please make sure your local layout
-looks like this:
-
-```
-|-- KEYS
-|-- 2.4.6
-|     |
-|     -- distribution
-|     |  |-- apache-groovy-binary-2.4.6.zip
-|     |  |-- apache-groovy-binary-2.4.6.zip.asc
-|     |  |-- apache-groovy-binary-2.4.6.zip.md5
-|     |  |-- apache-groovy-docs-2.4.6.zip
-|     |  |-- apache-groovy-docs-2.4.6.zip.asc
-|     |  |-- apache-groovy-docs-2.4.6.zip.md5
-|     |  |-- apache-groovy-sdk-2.4.6.zip
-|     |  |-- apache-groovy-sdk-2.4.6.zip.asc
-|     |  `-- apache-groovy-sdk-2.4.6.zip.md5
-|     |-- sources
-         |-- apache-groovy-src-2.4.6.zip
-         |-- apache-groovy-src-2.4.6.zip.asc
-         `-- apache-groovy-src-2.4.6.zip.md5
-```
-
-Then you need to perform the upload:
-
-```
-svn https://dist.apache.org/repos/dist/dev/incubator/groovy groovy-release
-cd groovy-release
-cp -r ../path/to/local/groovy/<version> .
-svn add <version>
-svn ci <version>
-```
-
-== Push the tag and new HEAD
-
-```
-git fetch origin --tags
-git push upstream GROOVY_2_4_4
-git push upstream GROOVY_2_4_X
-```
-
-== Send a [VOTE] thread
-
-You can use the following template to send a VOTE thread on the dev@ list:
-
-```
-Dear community,
-
-I am happy to start the VOTE thread for a Groovy x.y.z!
-This release includes bugfixes for ...
-
-The changelog for this release can be found here: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123&version=12331941
-
-Tag: https://git1-us-west.apache.org/repos/asf?p=groovy.git;a=tag;h=19f70958f39f0cc5c6b4d3e9471fd297400647d2
-
-The artifacts to be voted on are located here: https://dist.apache.org/repos/dist/dev/incubator/groovy/
-
-Release artifacts are signed with the following key: https://dist.apache.org/repos/dist/dev/incubator/groovy/KEYS
-
-Please vote on releasing this package as Apache Groovy 2.4.6.
-
-The vote is open for the next 72 hours and passes if a majority of at least three +1 PMC votes are cast.
-
-[ ] +1 Release Apache Groovy 2.4.6
-[ ]  0 I don't have a strong opinion about this, but I assume it's ok
-[ ] -1 Do not release Apache Groovy 2.4.6 because...
-
-Here is my vote:
-
-+1 (binding)
-```
-
-After 72h, send another email summarizing the result of the vote. If it passed, you *must* send another vote to
-`general@incubator.apache.org` to ask the IPMC to vote:
-
-```
-Hi all!
-
-The Apache Groovy PMC has successfully voted the release of Apache Groovy 2.4.6 [1], with 6 "+1" binding votes, one "+1" non binding, no "0" votes and one "-1" vote (see the explanation below). We are now asking the IPMC to vote it too. Since it is our first release under the Apache Software Foundation umbrella, let me give a few more details:
-
-<description of the release>
-
-Vote on dev list: http://mail-archives.apache.org/mod_mbox/groovy-dev/201507.mbox/%3CCADQzvm%3DzDNCxpOua3LQ1ZNo62Aq40QZM7SJwgER5MfkArWrTeA%40mail.gmail.com%3E
-Result of vote on dev list: http://mail-archives.apache.org/mod_mbox/groovy-dev/201507.mbox/%3CCADQzvmn1yEMMz_ZaCL5QqqUtQJdgd0NNcy8v7BVY8Lt4Uog0Zg%40mail.gmail.com%3E
-Relicensing of the documentation tracking: https://issues.apache.org/jira/browse/GROOVY-7470
-Vote for relicensing the docs: http://mail-archives.apache.org/mod_mbox/groovy-dev/201506.mbox/%3CCADQzvm%3DMfajQuMxoZJmpLe%2B4W22a_MDY_dC4W%2BNMWiakEEOyNg%40mail.gmail.com%3E
-Result of vote for relicensing the docs: http://mail-archives.apache.org/mod_mbox/groovy-dev/201506.mbox/%3CCADQzvmkQyOEk3ofOrnTHfnvTKO5xECY87hKAGf5pD%2BuePyA8UA%40mail.gmail.com%3E
-
-The changelog for this release can be found here: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123&version=12331941
-
-Tag for the release: https://git1-us-west.apache.org/repos/asf?p=groovy.git;a=commit;h=716b0b1bd56eeab04e4441eecc91c2cd8bfda8b6
-<https://git1-us-west.apache.org/repos/asf?p=groovy.git;a=tag;h=19f70958f39f0cc5c6b4d3e9471fd297400647d2>
-
-The artifacts to be voted on are located here: https://dist.apache.org/repos/dist/dev/incubator/groovy/
-
-Release artifacts are signed with the following keys: https://dist.apache.org/repos/dist/dev/incubator/groovy/KEYS
-
-Vote is open for at least 72 hours. Artifacts will be moved to dist as soon as the vote passes.
-
-[ ] +1, release Apache Groovy 2.4.6
-[ ] 0, I don't care
-[ ] -1, because...
-```
-
-If the vote passes:
-
-== Publish the release
-
-* Open `https://bintray.com/groovy/maven/groovy/2.4.6` and click `Publish` on the notice message (something like `ou have 532 unpublished item(s) for this version (expiring in 21 hours)`)
-* Perform Maven Central synchronization: on https://bintray.com/groovy/maven/groovy/2.4.6/view?sort=&order=#central[this page (update the link to the appropriate version)], click 'sync'. This step may take several minutes to complete.
-* Update the documentation symlinks on the website. You need credentials on the server:
-```
-cd /var/www/docs/docs
-rm -f latest
-ln -s groovy-2.4.6 latest
-```
-* Publish to GVM. Open http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_GvmPublish[the publish configuration], click on the 3 dots near `run` then on the _parameters_ tab, fill
-in the `groovyVersion` parameter. Click on `run build`.
-* if the release is NOT a beta or a release candidate, make it the default version on GVM. Open http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_GvmMakeDefault[the GVM make default configuration], click on the 3 dots near `run` then on the _parameters_ tab, fill
-in the `groovyVersion` parameter. Click on `run build`.
-
-== Update the web site
-
-If you don't have it locally, checkout `https://github.com/groovy/groovy-website`.
-
-* Update the https://github.com/melix/groovy-website/blob/master/site/src/site/sitemap.groovy[site map] to include the newly released version.
-* Push the changes
-* Wait for the http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_Website[CI website deployment build] to complete.
-
-== Send an announcement email
-
-You should wait 24h before doing this (in order for `dist.apache.org` to be properly mirrored).
-Send an email to `dev@`, `user@` and `announce@apache.org`.
-
-You can use this template. Please make sure that the email at least contains the DISCLAIMER:
-
-```
-Dear community,
-
-We are pleased to announce the first release of Apache Groovy done under the Apache Software Foundation
-Incubator sponsorship! Apache Groovy is a multi-facet programming language for the JVM. Details can be
-found at http://groovy-lang.org
-
-This release is a maintenance release of the 2.4.x branch, but contains critical fixes, in particular a fix
-for a 0-day vulnerability. Details can be found on http://groovy-lang.org/security.html
-
-It is strongly encouraged that all users upgrade to this version. There is no plan to provide patches for
-older versions of Groovy which were not developped under the Foundation umbrella.
-
-Changelog for this version can be found at: http://groovy-lang.org/changelogs/changelog-2.4.6.html
-Sources can be downloaded from: http://www.groovy-lang.org/download.html
-Convenience binaries, SDK and documentation can be found at: http://www.groovy-lang.org/download.html
-
-We would like to thank all people who contributed to this release. In particular, thanks to our mentors who are
-having hard days at explaining the Apache Way :) Despite comments we received about this release, we felt that
-the security issue is so important that we deserved this to our community.
-
-Best regards,
-
-```
-
-* Broadcast the release on GVM. Open http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_GvmBroadcast[the GVM broadcast configuration], click on the 3 dots near `run` then on the _parameters_ tab, fill
-in the `groovyVersion` parameter. Click on `run build`.
