You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@singa.apache.org by ch...@apache.org on 2020/11/22 06:16:43 UTC

[singa-site] 45/47: rename download-singa to downloads

This is an automated email from the ASF dual-hosted git repository.

chrishkchris pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/singa-site.git

commit 33bc8e7f6eb1c7cedda0fce015dd814920f0a796
Author: Chris Yeung <ch...@yahoo.com.hk>
AuthorDate: Sun Nov 22 14:08:27 2020 +0800

    rename download-singa to downloads
---
 content/docs/download-singa/index.html | 271 ---------------------------------
 1 file changed, 271 deletions(-)

diff --git a/content/docs/download-singa/index.html b/content/docs/download-singa/index.html
deleted file mode 100644
index 30492eb..0000000
--- a/content/docs/download-singa/index.html
+++ /dev/null
@@ -1,271 +0,0 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Download SINGA · Apache SINGA</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file distributed with this work for additional information regarding copyright  [...]
-        document.addEventListener('DOMContentLoaded', function() {
-          addBackToTop(
-            {"zIndex":100}
-          )
-        });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>3.1.0</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-intern [...]
-            var coll = document.getElementsByClassName('collapsible');
-            var checkActiveCategory = true;
-            for (var i = 0; i < coll.length; i++) {
-              var links = coll[i].nextElementSibling.getElementsByTagName('*');
-              if (checkActiveCategory){
-                for (var j = 0; j < links.length; j++) {
-                  if (links[j].classList.contains('navListItemActive')){
-                    coll[i].nextElementSibling.classList.toggle('hide');
-                    coll[i].childNodes[1].classList.toggle('rotate');
-                    checkActiveCategory = false;
-                    break;
-                  }
-                }
-              }
-
-              coll[i].addEventListener('click', function() {
-                var arrow = this.childNodes[1];
-                arrow.classList.toggle('rotate');
-                var content = this.nextElementSibling;
-                content.classList.toggle('hide');
-              });
-            }
-
-            document.addEventListener('DOMContentLoaded', function() {
-              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
-              createToggler('#tocToggler', 'body', 'tocActive');
-
-              var headings = document.querySelector('.toc-headings');
-              headings && headings.addEventListener('click', function(event) {
-                var el = event.target;
-                while(el !== headings){
-                  if (el.tagName === 'A') {
-                    document.body.classList.remove('tocActive');
-                    break;
-                  } else{
-                    el = el.parentNode;
-                  }
-                }
-              }, false);
-
-              function createToggler(togglerSelector, targetSelector, className) {
-                var toggler = document.querySelector(togglerSelector);
-                var target = document.querySelector(targetSelector);
-
-                if (!toggler) {
-                  return;
-                }
-
-                toggler.onclick = function(event) {
-                  event.preventDefault();
-
-                  target.classList.toggle(className);
-                };
-              }
-            });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/singa-doc/blob/master/docs-site/docs/download.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Download SINGA</h1></header><article><div><span><!--- Licensed to the Apache Software Foundation (ASF) under one or more contributor li [...]
-<h2><a class="anchor" aria-hidden="true" id="verify"></a><a href="#verify" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
-<p>To verify the downloaded tar.gz file, download the
-<a href="https://www.apache.org/dist/singa/KEYS">KEYS</a> and ASC files and then execute
-the following commands</p>
-<pre><code class="hljs css language-shell"><span class="hljs-meta">%</span><span class="bash"> gpg --import KEYS</span>
-<span class="hljs-meta">%</span><span class="bash"> gpg --verify downloaded_file.asc downloaded_file</span>
-</code></pre>
-<p>You can also check the SHA512 or MD5 values to see if the download is completed.</p>
-<h2><a class="anchor" aria-hidden="true" id="v300-18-april-2020"></a><a href="#v300-18-april-2020" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
-<ul>
-<li><a href="http://www.apache.org/dyn/closer.cgi/singa/3.0.0/apache-singa-3.0.0.tar.gz">Apache SINGA 3.0.0</a>
-<a href="https://www.apache.org/dist/singa/3.0.0/apache-singa-3.0.0.tar.gz.sha512">[SHA512]</a>
-<a href="https://www.apache.org/dist/singa/3.0.0/apache-singa-3.0.0.tar.gz.asc">[ASC]</a></li>
-<li><a href="releases/RELEASE_NOTES_3.0.0">Release Notes 3.0.0</a></li>
-<li>New features and major changes,
-<ul>
-<li>Enhanced ONNX. Multiple ONNX models have been tested in SINGA.</li>
-<li>Distributed training with MPI and NCCL Communication optimization through
-gradient sparsification and compression, and chunk transmission.</li>
-<li>Computational graph construction and optimization for speed and memory using
-the graph.</li>
-<li>New documentation website (singa.apache.org) and API reference website
-(apache-singa.rtfd.io).</li>
-<li>CI for code quality check.</li>
-<li>Replace MKLDNN with DNNL</li>
-<li>Update tensor APIs to support broadcasting operations.</li>
-<li>New autograd operators to support ONNX models.</li>
-</ul></li>
-</ul>
-<h2><a class="anchor" aria-hidden="true" id="incubating-v200-20-april-2019"></a><a href="#incubating-v200-20-april-2019" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<ul>
-<li><a href="http://www.apache.org/dyn/closer.cgi/incubator/singa/2.0.0/apache-singa-incubating-2.0.0.tar.gz">Apache SINGA 2.0.0 (incubating)</a>
-<a href="https://www.apache.org/dist/incubator/singa/2.0.0/apache-singa-incubating-2.0.0.tar.gz.sha512">[SHA512]</a>
-<a href="https://www.apache.org/dist/incubator/singa/2.0.0/apache-singa-incubating-2.0.0.tar.gz.asc">[ASC]</a></li>
-<li><a href="releases/RELEASE_NOTES_2.0.0.html">Release Notes 2.0.0 (incubating)</a></li>
-<li>New features and major updates,
-<ul>
-<li>Enhance autograd (for Convolution networks and recurrent networks)</li>
-<li>Support ONNX</li>
-<li>Improve the CPP operations via Intel MKL DNN lib</li>
-<li>Implement tensor broadcasting</li>
-<li>Move Docker images under Apache user name</li>
-<li>Update dependent lib versions in conda-build config</li>
-</ul></li>
-</ul>
-<h2><a class="anchor" aria-hidden="true" id="incubating-v120-6-june-2018"></a><a href="#incubating-v120-6-june-2018" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/singa/1.2.0/apache-singa-incubating-1.2.0.tar.gz">Apache SINGA 1.2.0 (incubating)</a>
-<a href="https://archive.apache.org/dist/incubator/singa/1.2.0/apache-singa-incubating-1.2.0.tar.gz.sha512">[SHA512]</a>
-<a href="https://archive.apache.org/dist/incubator/singa/1.2.0/apache-singa-incubating-1.2.0.tar.gz.asc">[ASC]</a></li>
-<li><a href="releases/RELEASE_NOTES_1.2.0.html">Release Notes 1.2.0 (incubating)</a></li>
-<li>New features and major updates,
-<ul>
-<li>Implement autograd (currently support MLP model)</li>
-<li>Upgrade PySinga to support Python 3</li>
-<li>Improve the Tensor class with the stride field</li>
-<li>Upgrade cuDNN from V5 to V7</li>
-<li>Add VGG, Inception V4, ResNet, and DenseNet for ImageNet classification</li>
-<li>Create alias for conda packages</li>
-<li>Complete documentation in Chinese</li>
-<li>Add instructions for running Singa on Windows</li>
-<li>Update the compilation, CI</li>
-<li>Fix some bugs</li>
-</ul></li>
-</ul>
-<h2><a class="anchor" aria-hidden="true" id="incubating-v110-12-february-2017"></a><a href="#incubating-v110-12-february-2017" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/singa/1.1.0/apache-singa-incubating-1.1.0.tar.gz">Apache SINGA 1.1.0 (incubating)</a>
-<a href="https://archive.apache.org/dist/incubator/singa/1.1.0/apache-singa-incubating-1.1.0.tar.gz.md5">[MD5]</a>
-<a href="https://archive.apache.org/dist/incubator/singa/1.1.0/apache-singa-incubating-1.1.0.tar.gz.asc">[ASC]</a></li>
-<li><a href="releases/RELEASE_NOTES_1.1.0.html">Release Notes 1.1.0 (incubating)</a></li>
-<li>New features and major updates,
-<ul>
-<li>Create Docker images (CPU and GPU versions)</li>
-<li>Create Amazon AMI for SINGA (CPU version)</li>
-<li>Integrate with Jenkins for automatically generating Wheel and Debian
-packages (for installation), and updating the website.</li>
-<li>Enhance the FeedFowardNet, e.g., multiple inputs and verbose mode for
-debugging</li>
-<li>Add Concat and Slice layers</li>
-<li>Extend CrossEntropyLoss to accept instance with multiple labels</li>
-<li>Add image_tool.py with image augmentation methods</li>
-<li>Support model loading and saving via the Snapshot API</li>
-<li>Compile SINGA source on Windows</li>
-<li>Compile mandatory dependent libraries together with SINGA code</li>
-<li>Enable Java binding (basic) for SINGA</li>
-<li>Add version ID in checkpointing files</li>
-<li>Add Rafiki toolkit for providing RESTFul APIs</li>
-<li>Add examples pretrained from Caffe, including GoogleNet</li>
-</ul></li>
-</ul>
-<h2><a class="anchor" aria-hidden="true" id="incubating-v100-8-september-2016"></a><a href="#incubating-v100-8-september-2016" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/singa/1.0.0/apache-singa-incubating-1.0.0.tar.gz">Apache SINGA 1.0.0 (incubating)</a>
-<a href="https://archive.apache.org/dist/incubator/singa/1.0.0/apache-singa-incubating-1.0.0.tar.gz.md5">[MD5]</a>
-<a href="https://archive.apache.org/dist/incubator/singa/1.0.0/apache-singa-incubating-1.0.0.tar.gz.asc">[ASC]</a></li>
-<li><a href="releases/RELEASE_NOTES_1.0.0.html">Release Notes 1.0.0 (incubating)</a></li>
-<li>New features and major updates,
-<ul>
-<li>Tensor abstraction for supporting more machine learning models.</li>
-<li>Device abstraction for running on different hardware devices, including CPU,
-(Nvidia/AMD) GPU and FPGA (to be tested in later versions).</li>
-<li>Replace GNU autotool with cmake for compilation.</li>
-<li>Support Mac OS</li>
-<li>Improve Python binding, including installation and programming</li>
-<li>More deep learning models, including VGG and ResNet</li>
-<li>More IO classes for reading/writing files and encoding/decoding data</li>
-<li>New network communication components directly based on Socket.</li>
-<li>Cudnn V5 with Dropout and RNN layers.</li>
-<li>Replace website building tool from maven to Sphinx</li>
-<li>Integrate Travis-CI</li>
-</ul></li>
-</ul>
-<h2><a class="anchor" aria-hidden="true" id="incubating-v030-20-april-2016"></a><a href="#incubating-v030-20-april-2016" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/singa/0.3.0/apache-singa-incubating-0.3.0.tar.gz">Apache SINGA 0.3.0 (incubating)</a>
-<a href="https://archive.apache.org/dist/incubator/singa/0.3.0/apache-singa-incubating-0.3.0.tar.gz.md5">[MD5]</a>
-<a href="https://archive.apache.org/dist/incubator/singa/0.3.0/apache-singa-incubating-0.3.0.tar.gz.asc">[ASC]</a></li>
-<li><a href="releases/RELEASE_NOTES_0.3.0.html">Release Notes 0.3.0 (incubating)</a></li>
-<li>New features and major updates,
-<ul>
-<li>Training on GPU cluster enables training of deep learning models over a GPU
-cluster.</li>
-<li>Python wrapper improvement makes it easy to configure the job, including
-neural net and SGD algorithm.</li>
-<li>New SGD updaters are added, including Adam, AdaDelta and AdaMax.</li>
-<li>Installation has fewer dependent libraries for single node training.</li>
-<li>Heterogeneous training with CPU and GPU.</li>
-<li>Support cuDNN V4.</li>
-<li>Data prefetching.</li>
-<li>Fix some bugs.</li>
-</ul></li>
-</ul>
-<h2><a class="anchor" aria-hidden="true" id="incubating-v020-14-january-2016"></a><a href="#incubating-v020-14-january-2016" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 [...]
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/singa/0.2.0/apache-singa-incubating-0.2.0.tar.gz">Apache SINGA 0.2.0 (incubating)</a>
-<a href="https://archive.apache.org/dist/incubator/singa/0.2.0/apache-singa-incubating-0.2.0.tar.gz.md5">[MD5]</a>
-<a href="https://archive.apache.org/dist/incubator/singa/0.2.0/apache-singa-incubating-0.2.0.tar.gz.asc">[ASC]</a></li>
-<li><a href="releases/RELEASE_NOTES_0.2.0.html">Release Notes 0.2.0 (incubating)</a></li>
-<li>New features and major updates,
-<ul>
-<li>Training on GPU enables training of complex models on a single node with
-multiple GPU cards.</li>
-<li>Hybrid neural net partitioning supports data and model parallelism at the
-same time.</li>
-<li>Python wrapper makes it easy to configure the job, including neural net and
-SGD algorithm.</li>
-<li>RNN model and BPTT algorithm are implemented to support applications based
-on RNN models, e.g., GRU.</li>
-<li>Cloud software integration includes Mesos, Docker and HDFS.</li>
-<li>Visualization of neural net structure and layer information, which is
-helpful for debugging.</li>
-<li>Linear algebra functions and random functions against Blobs and raw data
-pointers.</li>
-<li>New layers, including SoftmaxLayer, ArgSortLayer, DummyLayer, RNN layers and
-cuDNN layers.</li>
-<li>Update Layer class to carry multiple data/grad Blobs.</li>
-<li>Extract features and test performance for new data by loading previously
-trained model parameters.</li>
-<li>Add Store class for IO operations.</li>
-</ul></li>
-</ul>
-<h2><a class="anchor" aria-hidden="true" id="incubating-v010-8-october-2015"></a><a href="#incubating-v010-8-october-2015" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 1 [...]
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/singa/apache-singa-incubating-0.1.0.tar.gz">Apache SINGA 0.1.0 (incubating)</a>
-<a href="https://archive.apache.org/dist/incubator/singa/apache-singa-incubating-0.1.0.tar.gz.md5">[MD5]</a>
-<a href="https://archive.apache.org/dist/incubator/singa/apache-singa-incubating-0.1.0.tar.gz.asc">[ASC]</a></li>
-<li><a href="https://console.aws.amazon.com/ec2/v2/home?region=ap-southeast-1#LaunchInstanceWizard:ami=ami-b41001e6">Amazon EC2 image</a></li>
-<li><a href="releases/RELEASE_NOTES_0.1.0.html">Release Notes 0.1.0 (incubating)</a></li>
-<li>Major features include,
-<ul>
-<li>Installation using GNU build utility</li>
-<li>Scripts for job management with zookeeper</li>
-<li>Programming model based on NeuralNet and Layer abstractions.</li>
-<li>System architecture based on Worker, Server and Stub.</li>
-<li>Training models from three different model categories, namely, feed-forward
-models, energy models and RNN models.</li>
-<li>Synchronous and asynchronous distributed training frameworks using CPU</li>
-<li>Checkpoint and restore</li>
-<li>Unit test using gtest</li>
-</ul></li>
-</ul>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 19/04/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/time-profiling"><span class="arrow-prev">← </span><span>Time Profiling</span></a><a class="docs-next button" href="/docs/build"><span>Build SINGA from Source</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#verify">Verify</a></li><li><a href="#v300-18-a [...]
-   The Apache Software Foundation. All rights reserved.
-   Apache SINGA, Apache, the Apache feather logo, and
-   the Apache SINGA project logos are trademarks of The
-   Apache Software Foundation. All other marks mentioned
-   may be trademarks or registered trademarks of their
-   respective owners.</section></div></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter- [...]
-                document.addEventListener('keyup', function(e) {
-                  if (e.target !== document.body) {
-                    return;
-                  }
-                  // keyCode for '/' (slash)
-                  if (e.keyCode === 191) {
-                    const search = document.getElementById('search_input_react');
-                    search && search.focus();
-                  }
-                });
-              </script><script>
-              var search = docsearch({
-                
-                apiKey: '45202133606c0b5fa6d21cddc4725dd8',
-                indexName: 'apache_singa',
-                inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:3.0.0"]}
-              });
-            </script></body></html>
\ No newline at end of file