+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sashimi-webapp/package.json b/sashimi-webapp/package.json
index b79e229e..a8595e46 100644
--- a/sashimi-webapp/package.json
+++ b/sashimi-webapp/package.json
@@ -30,10 +30,12 @@
"chai": "^3.5.0",
"chalk": "^1.1.3",
"chromedriver": "^2.27.2",
+ "codemirror": "^5.25.0",
"connect-history-api-fallback": "^1.3.0",
"cross-env": "^3.1.4",
"cross-spawn": "^5.0.1",
"css-loader": "^0.26.1",
+ "dom-compare": "^0.2.1",
"eslint": "^3.14.1",
"eslint-config-airbnb-base": "^11.0.1",
"eslint-friendly-formatter": "^2.0.7",
@@ -48,6 +50,7 @@
"file-loader": "^0.10.0",
"friendly-errors-webpack-plugin": "^1.1.3",
"function-bind": "^1.1.0",
+ "he": "^1.1.1",
"highlight.js": "^9.9.0",
"html-loader": "^0.4.5",
"html-webpack-plugin": "^2.28.0",
@@ -90,7 +93,7 @@
"url-loader": "^0.5.7",
"vue": "^2.1.10",
"vue-async-computed": "^3.0.0",
- "vue-codemirror": "^2.1.8",
+ "vue-codemirror": "^3.0.3",
"vue-loader": "^10.3.0",
"vue-router": "^2.2.0",
"vue-style-loader": "^2.0.0",
diff --git a/sashimi-webapp/src/App.vue b/sashimi-webapp/src/App.vue
index 5b20e9ff..d47b28e1 100644
--- a/sashimi-webapp/src/App.vue
+++ b/sashimi-webapp/src/App.vue
@@ -41,6 +41,10 @@ img {
-ms-user-select: none;
}
+a {
+ color: black;
+ text-decoration: none;
+}
:focus {
outline: 0;
}
@@ -119,7 +123,7 @@ img {
}
&-img {
- width: $button-img-width;
+ width: $button-sashimi-width;
}
}
@@ -144,7 +148,7 @@ img {
}
img {
- width: 40px;
+ width: 150px;
}
p {
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Black.ttf b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Black.ttf
new file mode 100755
index 00000000..093fbf96
Binary files /dev/null and b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Black.ttf differ
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-BlackItalic.ttf b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-BlackItalic.ttf
new file mode 100755
index 00000000..00db009e
Binary files /dev/null and b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-BlackItalic.ttf differ
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Bold.ttf b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Bold.ttf
new file mode 100755
index 00000000..a3ca4b60
Binary files /dev/null and b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Bold.ttf differ
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-BoldItalic.ttf b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-BoldItalic.ttf
new file mode 100755
index 00000000..1bccb977
Binary files /dev/null and b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-BoldItalic.ttf differ
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-ExtraBold.ttf b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-ExtraBold.ttf
new file mode 100755
index 00000000..a7324253
Binary files /dev/null and b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-ExtraBold.ttf differ
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-ExtraBoldItalic.ttf b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-ExtraBoldItalic.ttf
new file mode 100755
index 00000000..05e26d69
Binary files /dev/null and b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-ExtraBoldItalic.ttf differ
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-ExtraLight.ttf b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-ExtraLight.ttf
new file mode 100755
index 00000000..2ad4ac06
Binary files /dev/null and b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-ExtraLight.ttf differ
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-ExtraLightItalic.ttf b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-ExtraLightItalic.ttf
new file mode 100755
index 00000000..b73b0fa9
Binary files /dev/null and b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-ExtraLightItalic.ttf differ
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Italic.ttf b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Italic.ttf
new file mode 100755
index 00000000..85269a1d
Binary files /dev/null and b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Italic.ttf differ
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Light.ttf b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Light.ttf
new file mode 100755
index 00000000..2f5d0493
Binary files /dev/null and b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Light.ttf differ
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-LightItalic.ttf b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-LightItalic.ttf
new file mode 100755
index 00000000..bac17d00
Binary files /dev/null and b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-LightItalic.ttf differ
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Regular.ttf b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Regular.ttf
new file mode 100755
index 00000000..9abe932d
Binary files /dev/null and b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-Regular.ttf differ
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-SemiBold.ttf b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-SemiBold.ttf
new file mode 100755
index 00000000..c27eaf46
Binary files /dev/null and b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-SemiBold.ttf differ
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-SemiBoldItalic.ttf b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-SemiBoldItalic.ttf
new file mode 100755
index 00000000..59b6402d
Binary files /dev/null and b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans-SemiBoldItalic.ttf differ
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans.scss b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans.scss
new file mode 100644
index 00000000..05de2966
--- /dev/null
+++ b/sashimi-webapp/src/assets/fonts/Nunito_Sans/NunitoSans.scss
@@ -0,0 +1,24 @@
+/* vietnamese */
+@font-face {
+ font-family: 'Nunito Sans';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Nunito Sans Regular'), local('NunitoSans-Regular'), url(https://fonts.gstatic.com/s/nunitosans/v2/iJ4p9wO0GDKJ-D5teKuZqtDiNsR5a-9Oe_Ivpu8XWlY.woff2) format('woff2');
+ unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: 'Nunito Sans';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Nunito Sans Regular'), local('NunitoSans-Regular'), url(https://fonts.gstatic.com/s/nunitosans/v2/iJ4p9wO0GDKJ-D5teKuZqqE8kM4xWR1_1bYURRojRGc.woff2) format('woff2');
+ unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Nunito Sans';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Nunito Sans Regular'), local('NunitoSans-Regular'), url(https://fonts.gstatic.com/s/nunitosans/v2/iJ4p9wO0GDKJ-D5teKuZqogp9Q8gbYrhqGlRav_IXfk.woff2) format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
+}
\ No newline at end of file
diff --git a/sashimi-webapp/src/assets/fonts/Nunito_Sans/OFL.txt b/sashimi-webapp/src/assets/fonts/Nunito_Sans/OFL.txt
new file mode 100755
index 00000000..a6a76595
--- /dev/null
+++ b/sashimi-webapp/src/assets/fonts/Nunito_Sans/OFL.txt
@@ -0,0 +1,92 @@
+Copyright 2016 The Nunito Project Authors (contact@sansoxygen.com),
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/sashimi-webapp/src/assets/images/icons/icon-delete.svg b/sashimi-webapp/src/assets/images/icons/icon-delete.svg
new file mode 100644
index 00000000..faa07c56
--- /dev/null
+++ b/sashimi-webapp/src/assets/images/icons/icon-delete.svg
@@ -0,0 +1,15 @@
+
+
+
+
diff --git a/sashimi-webapp/src/assets/images/icons/icon-download.svg b/sashimi-webapp/src/assets/images/icons/icon-download.svg
new file mode 100644
index 00000000..b0f4806c
--- /dev/null
+++ b/sashimi-webapp/src/assets/images/icons/icon-download.svg
@@ -0,0 +1,16 @@
+
+
+
+
diff --git a/sashimi-webapp/src/assets/images/icons/icon-duplicate.svg b/sashimi-webapp/src/assets/images/icons/icon-duplicate.svg
new file mode 100644
index 00000000..fba751aa
--- /dev/null
+++ b/sashimi-webapp/src/assets/images/icons/icon-duplicate.svg
@@ -0,0 +1,15 @@
+
+
+
+
diff --git a/sashimi-webapp/src/assets/images/icons/icon-editor.svg b/sashimi-webapp/src/assets/images/icons/icon-editor.svg
new file mode 100644
index 00000000..6b400add
--- /dev/null
+++ b/sashimi-webapp/src/assets/images/icons/icon-editor.svg
@@ -0,0 +1,29 @@
+
+
+
+
diff --git a/sashimi-webapp/src/assets/images/icons/icon-file.svg b/sashimi-webapp/src/assets/images/icons/icon-file.svg
index ec42de78..ae1ebae1 100644
--- a/sashimi-webapp/src/assets/images/icons/icon-file.svg
+++ b/sashimi-webapp/src/assets/images/icons/icon-file.svg
@@ -1,13 +1,12 @@
-
-
\ No newline at end of file
+
+
+
+
diff --git a/sashimi-webapp/src/assets/images/icons/icon-folder.svg b/sashimi-webapp/src/assets/images/icons/icon-folder.svg
index 3f00173f..7e86457c 100644
--- a/sashimi-webapp/src/assets/images/icons/icon-folder.svg
+++ b/sashimi-webapp/src/assets/images/icons/icon-folder.svg
@@ -1,13 +1,11 @@
-
-
\ No newline at end of file
+
+
+
+
diff --git a/sashimi-webapp/src/assets/images/icons/icon-new-file.svg b/sashimi-webapp/src/assets/images/icons/icon-new-file.svg
new file mode 100644
index 00000000..cf5f58b2
--- /dev/null
+++ b/sashimi-webapp/src/assets/images/icons/icon-new-file.svg
@@ -0,0 +1,20 @@
+
+
+
+
diff --git a/sashimi-webapp/src/assets/images/icons/icon-new-folder.svg b/sashimi-webapp/src/assets/images/icons/icon-new-folder.svg
new file mode 100644
index 00000000..3feaa6ec
--- /dev/null
+++ b/sashimi-webapp/src/assets/images/icons/icon-new-folder.svg
@@ -0,0 +1,16 @@
+
+
+
+
diff --git a/sashimi-webapp/src/assets/images/icons/icon-split-screen.svg b/sashimi-webapp/src/assets/images/icons/icon-split-screen.svg
new file mode 100644
index 00000000..9881fc2f
--- /dev/null
+++ b/sashimi-webapp/src/assets/images/icons/icon-split-screen.svg
@@ -0,0 +1,11 @@
+
+
+
+
diff --git a/sashimi-webapp/src/assets/images/icons/icon-upload.svg b/sashimi-webapp/src/assets/images/icons/icon-upload.svg
new file mode 100644
index 00000000..ab51f542
--- /dev/null
+++ b/sashimi-webapp/src/assets/images/icons/icon-upload.svg
@@ -0,0 +1,15 @@
+
+
+
+
diff --git a/sashimi-webapp/src/assets/images/icons/icon-viewer.svg b/sashimi-webapp/src/assets/images/icons/icon-viewer.svg
new file mode 100644
index 00000000..2cf3f208
--- /dev/null
+++ b/sashimi-webapp/src/assets/images/icons/icon-viewer.svg
@@ -0,0 +1,11 @@
+
+
+
+
diff --git a/sashimi-webapp/src/assets/images/icons/icons-folder.svg b/sashimi-webapp/src/assets/images/icons/icons-folder.svg
new file mode 100644
index 00000000..670b7518
--- /dev/null
+++ b/sashimi-webapp/src/assets/images/icons/icons-folder.svg
@@ -0,0 +1,83 @@
+
+
+
+
diff --git a/sashimi-webapp/src/assets/sashimi-note.svg b/sashimi-webapp/src/assets/sashimi-note.svg
new file mode 100644
index 00000000..22b5816f
--- /dev/null
+++ b/sashimi-webapp/src/assets/sashimi-note.svg
@@ -0,0 +1,87 @@
+
+
+
+
diff --git a/sashimi-webapp/src/assets/styles/loader.scss b/sashimi-webapp/src/assets/styles/loader.scss
index 293bb357..9342d6df 100644
--- a/sashimi-webapp/src/assets/styles/loader.scss
+++ b/sashimi-webapp/src/assets/styles/loader.scss
@@ -3,5 +3,6 @@
@import './vendor/normalize/normalize';
@import './vendor/highlight.js/ocean.min';
@import './static/vendors/katex/katex.min';
+@import '../fonts/Nunito_Sans/NunitoSans.scss';
@import './variables';
diff --git a/sashimi-webapp/src/assets/styles/variables.scss b/sashimi-webapp/src/assets/styles/variables.scss
index 1170af7c..4d2fa251 100644
--- a/sashimi-webapp/src/assets/styles/variables.scss
+++ b/sashimi-webapp/src/assets/styles/variables.scss
@@ -1,5 +1,5 @@
// $fonts
-$font-primary: 'Avenir', Helvetica, Arial, sans-serif;
+$font-primary: 'Avenir', 'Nunito Sans', Helvetica, Arial, sans-serif;
$font-size-primary: 15px;
$font-size-secondary: 14px;
@@ -9,15 +9,18 @@ $documents-name-font-size: 13px;
// widths and heights
$content-navbar-height: 71px;
-$file-manager-navbar-height: 122px;
-$file-manager-navbar-height-mobile: 157px;
+$file-manager-navbar-height: 134px;
+$file-manager-navbar-height-mobile: 174px;
-$button-logo-width: 155px;
-$button-img-width: 35px;
+$button-logo-width: 158px;
+$button-sashimi-width: 35px;
$navbar-elements-left-margin: 18px;
$navbar-button-dropdown-width: 140px;
+$searchbar-icons-width: 44px;
+$searchbar-mobile-margin-left: 15px;
+
// colors
$grey-background: #F7F7F7;
$grey-border: #D5D5D5;
diff --git a/sashimi-webapp/src/components/editor-viewer/Content.vue b/sashimi-webapp/src/components/editor-viewer/Content.vue
index 838bc78c..89a65a48 100644
--- a/sashimi-webapp/src/components/editor-viewer/Content.vue
+++ b/sashimi-webapp/src/components/editor-viewer/Content.vue
@@ -1,13 +1,13 @@
@@ -96,6 +118,7 @@
+
+```
+
+This will find and highlight code inside of `
` tags; it tries
+to detect the language automatically. If automatic detection doesn’t
+work for you, you can specify the language in the `class` attribute:
+
+```html
+
...
+```
+
+The list of supported language classes is available in the [class
+reference][2]. Classes can also be prefixed with either `language-` or
+`lang-`.
+
+To disable highlighting altogether use the `nohighlight` class:
+
+```html
+
...
+```
+
+## Custom Initialization
+
+When you need a bit more control over the initialization of
+highlight.js, you can use the [`highlightBlock`][3] and [`configure`][4]
+functions. This allows you to control *what* to highlight and *when*.
+
+Here’s an equivalent way to calling [`initHighlightingOnLoad`][1] using
+jQuery:
+
+```javascript
+$(document).ready(function() {
+ $('pre code').each(function(i, block) {
+ hljs.highlightBlock(block);
+ });
+});
+```
+
+You can use any tags instead of `
` to mark up your code. If
+you don't use a container that preserve line breaks you will need to
+configure highlight.js to use the ` ` tag:
+
+```javascript
+hljs.configure({useBR: true});
+
+$('div.code').each(function(i, block) {
+ hljs.highlightBlock(block);
+});
+```
+
+For other options refer to the documentation for [`configure`][4].
+
+
+## Web Workers
+
+You can run highlighting inside a web worker to avoid freezing the browser
+window while dealing with very big chunks of code.
+
+In your main script:
+
+```javascript
+addEventListener('load', function() {
+ var code = document.querySelector('#code');
+ var worker = new Worker('worker.js');
+ worker.onmessage = function(event) { code.innerHTML = event.data; }
+ worker.postMessage(code.textContent);
+})
+```
+
+In worker.js:
+
+```javascript
+onmessage = function(event) {
+ importScripts('/highlight.pack.js');
+ var result = self.hljs.highlightAuto(event.data);
+ postMessage(result.value);
+}
+```
+
+
+## Getting the Library
+
+You can get highlight.js as a hosted, or custom-build, browser script or
+as a server module. Right out of the box the browser script supports
+both AMD and CommonJS, so if you wish you can use RequireJS or
+Browserify without having to build from source. The server module also
+works perfectly fine with Browserify, but there is the option to use a
+build specific to browsers rather than something meant for a server.
+Head over to the [download page][5] for all the options.
+
+**Don't link to GitHub directly.** The library is not supposed to work straight
+from the source, it requires building. If none of the pre-packaged options
+work for you refer to the [building documentation][6].
+
+**The CDN-hosted package doesn't have all the languages.** Otherwise it'd be
+too big. If you don't see the language you need in the ["Common" section][5],
+it can be added manually:
+
+```html
+
+```
+
+**On Almond.** You need to use the optimizer to give the module a name. For
+example:
+
+```
+r.js -o name=hljs paths.hljs=/path/to/highlight out=highlight.js
+```
+
+
+## License
+
+Highlight.js is released under the BSD License. See [LICENSE][7] file
+for details.
+
+## Links
+
+The official site for the library is at .
+
+Further in-depth documentation for the API and other topics is at
+.
+
+Authors and contributors are listed in the [AUTHORS.en.txt][8] file.
+
+[1]: http://highlightjs.readthedocs.io/en/latest/api.html#inithighlightingonload
+[2]: http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html
+[3]: http://highlightjs.readthedocs.io/en/latest/api.html#highlightblock-block
+[4]: http://highlightjs.readthedocs.io/en/latest/api.html#configure-options
+[5]: https://highlightjs.org/download/
+[6]: http://highlightjs.readthedocs.io/en/latest/building-testing.html
+[7]: https://github.com/isagalaev/highlight.js/blob/master/LICENSE
+[8]: https://github.com/isagalaev/highlight.js/blob/master/AUTHORS.en.txt
diff --git a/sashimi-webapp/static/vendors/highlight.js/docs/api.rst b/sashimi-webapp/static/vendors/highlight.js/docs/api.rst
new file mode 100644
index 00000000..d8039539
--- /dev/null
+++ b/sashimi-webapp/static/vendors/highlight.js/docs/api.rst
@@ -0,0 +1,120 @@
+Library API
+===========
+
+Highlight.js exports a few functions as methods of the ``hljs`` object.
+
+
+``highlight(name, value, ignore_illegals, continuation)``
+---------------------------------------------------------
+
+Core highlighting function.
+Accepts a language name, or an alias, and a string with the code to highlight.
+The ``ignore_illegals`` parameter, when present and evaluates to a true value,
+forces highlighting to finish even in case of detecting illegal syntax for the
+language instead of throwing an exception.
+The ``continuation`` is an optional mode stack representing unfinished parsing.
+When present, the function will restart parsing from this state instead of
+initializing a new one.
+Returns an object with the following properties:
+
+* ``language``: language name, same as the one passed into a function, returned for consistency with ``highlightAuto``
+* ``relevance``: integer value
+* ``value``: HTML string with highlighting markup
+* ``top``: top of the current mode stack
+
+
+``highlightAuto(value, languageSubset)``
+----------------------------------------
+
+Highlighting with language detection.
+Accepts a string with the code to highlight and an optional array of language names and aliases restricting detection to only those languages. The subset can also be set with ``configure``, but the local parameter overrides the option if set.
+Returns an object with the following properties:
+
+* ``language``: detected language
+* ``relevance``: integer value
+* ``value``: HTML string with highlighting markup
+* ``second_best``: object with the same structure for second-best heuristically detected language, may be absent
+
+
+``fixMarkup(value)``
+--------------------
+
+Post-processing of the highlighted markup. Currently consists of replacing indentation TAB characters and using `` `` tags instead of new-line characters. Options are set globally with ``configure``.
+
+Accepts a string with the highlighted markup.
+
+
+``highlightBlock(block)``
+-------------------------
+
+Applies highlighting to a DOM node containing code.
+
+This function is the one to use to apply highlighting dynamically after page load
+or within initialization code of third-party Javascript frameworks.
+
+The function uses language detection by default but you can specify the language
+in the ``class`` attribute of the DOM node. See the :doc:`class reference
+` for all available language names and aliases.
+
+
+``configure(options)``
+----------------------
+
+Configures global options:
+
+* ``tabReplace``: a string used to replace TAB characters in indentation.
+* ``useBR``: a flag to generate `` `` tags instead of new-line characters in the output, useful when code is marked up using a non-``
`` container.
+* ``classPrefix``: a string prefix added before class names in the generated markup, used for backwards compatibility with stylesheets.
+* ``languages``: an array of language names and aliases restricting auto detection to only these languages.
+
+Accepts an object representing options with the values to updated. Other options don't change
+::
+
+ hljs.configure({
+ tabReplace: ' ', // 4 spaces
+ classPrefix: '' // don't append class prefix
+ // … other options aren't changed
+ })
+ hljs.initHighlighting();
+
+
+``initHighlighting()``
+----------------------
+
+Applies highlighting to all ``
..
`` blocks on a page.
+
+
+
+``initHighlightingOnLoad()``
+----------------------------
+
+Attaches highlighting to the page load event.
+
+
+``registerLanguage(name, language)``
+------------------------------------
+
+Adds new language to the library under the specified name. Used mostly internally.
+
+* ``name``: a string with the name of the language being registered
+* ``language``: a function that returns an object which represents the
+ language definition. The function is passed the ``hljs`` object to be able
+ to use common regular expressions defined within it.
+
+
+``listLanguages()``
+----------------------------
+
+Returns the languages names list.
+
+
+
+.. _getLanguage:
+
+
+``getLanguage(name)``
+---------------------
+
+Looks up a language by name or alias.
+
+Returns the language object if found, ``undefined`` otherwise.
diff --git a/sashimi-webapp/static/vendors/highlight.js/docs/building-testing.rst b/sashimi-webapp/static/vendors/highlight.js/docs/building-testing.rst
new file mode 100644
index 00000000..16292cb8
--- /dev/null
+++ b/sashimi-webapp/static/vendors/highlight.js/docs/building-testing.rst
@@ -0,0 +1,88 @@
+Building and testing
+====================
+
+To actually run highlight.js it is necessary to build it for the environment
+where you're going to run it: a browser, the node.js server, etc.
+
+
+Building
+--------
+
+The build tool is written in JavaScript using node.js. Before running the
+script, make sure to have node installed and run ``npm install`` to get the
+dependencies.
+
+The tool is located in ``tools/build.js``. A few useful examples:
+
+* Build for a browser using only common languages::
+
+ node tools/build.js :common
+
+* Build for node.js including all available languages::
+
+ node tools/build.js -t node
+
+* Build two specific languages for debugging, skipping compression in this case::
+
+ node tools/build.js -n python ruby
+
+On some systems the node binary is named ``nodejs``; simply replace ``node``
+with ``nodejs`` in the examples above if that is the case.
+
+The full option reference is available with the usual ``--help`` option.
+
+The build result will be in the ``build/`` directory.
+
+.. _basic-testing:
+
+Basic testing
+-------------
+
+The usual approach to debugging and testing a language is first doing it
+visually. You need to build highlight.js with only the language you're working
+on (without compression, to have readable code in browser error messages) and
+then use the Developer tool in ``tools/developer.html`` to see how it highlights
+a test snippet in that language.
+
+A test snippet should be short and give the idea of the overall look of the
+language. It shouldn't include every possible syntactic element and shouldn't
+even make practical sense.
+
+After you satisfied with the result you need to make sure that language
+detection still works with your language definition included in the whole suite.
+
+Testing is done using `Mocha `_ and the
+files are found in the ``test/`` directory. You can use the node build to
+run the tests in the command line with ``npm test`` after installing the
+dependencies with ``npm install``.
+
+**Note**: for Debian-based machine, like Ubuntu, you might need to create an
+alias or symbolic link for nodejs to node. The reason for this is the
+dependencies that are requires to test highlight.js has a reference to
+"node".
+
+Place the snippet you used inside the browser in
+``test/detect//default.txt``, build the package with all the languages
+for node and run the test suite. If your language breaks auto-detection, it
+should be fixed by :ref:`improving relevance `, which is a black art
+in and of itself. When in doubt, please refer to the discussion group!
+
+
+Testing markup
+--------------
+
+You can also provide additional markup tests for the language to test isolated
+cases of various syntactic construct. If your language has 19 different string
+literals or complicated heuristics for telling division (``/``) apart from
+regexes (``/ .. /``) -- this is the place.
+
+A test case consists of two files:
+
+* ``test/markup//.txt``: test code
+* ``test/markup//.expect.txt``: reference rendering
+
+To generate reference rendering use the Developer tool located at
+``tools/developer.html``. Make sure to explicitly select your language in the
+drop-down menu, as automatic detection is unlikely to work in this case.
+
+
diff --git a/sashimi-webapp/static/vendors/highlight.js/docs/css-classes-reference.rst b/sashimi-webapp/static/vendors/highlight.js/docs/css-classes-reference.rst
new file mode 100644
index 00000000..9861beb5
--- /dev/null
+++ b/sashimi-webapp/static/vendors/highlight.js/docs/css-classes-reference.rst
@@ -0,0 +1,424 @@
+CSS classes reference
+=====================
+
+
+Stylable classes
+----------------
+
++------------------------------------------------------------------------------+
+| **General-purpose** |
++--------------------------+---------------------------------------------------+
+| keyword | keyword in a regular Algol-style language |
++--------------------------+---------------------------------------------------+
+| built_in | built-in or library object (constant, class, |
+| | function) |
++--------------------------+---------------------------------------------------+
+| type | user-defined type in a language with first-class |
+| | syntactically significant types, like Haskell |
++--------------------------+---------------------------------------------------+
+| literal | special identifier for a built-in value ("true", |
+| | "false", "null") |
++--------------------------+---------------------------------------------------+
+| number | number, including units and modifiers, if any. |
++--------------------------+---------------------------------------------------+
+| regexp | literal regular expression |
++--------------------------+---------------------------------------------------+
+| string | literal string, character |
++--------------------------+---------------------------------------------------+
+| subst | parsed section inside a literal string |
++--------------------------+---------------------------------------------------+
+| symbol | symbolic constant, interned string, goto label |
++--------------------------+---------------------------------------------------+
+| class | class or class-level declaration (interfaces, |
+| | traits, modules, etc) |
++--------------------------+---------------------------------------------------+
+| function | function or method declaration |
++--------------------------+---------------------------------------------------+
+| title | name of a class or a function at the place of |
+| | declaration |
++--------------------------+---------------------------------------------------+
+| params | block of function arguments (parameters) at the |
+| | place of declaration |
++--------------------------+---------------------------------------------------+
+| **Meta** |
++--------------------------+---------------------------------------------------+
+| comment | comment |
++--------------------------+---------------------------------------------------+
+| doctag | documentation markup within comments |
++--------------------------+---------------------------------------------------+
+| meta | flags, modifiers, annotations, processing |
+| | instructions, preprocessor directive, etc |
++--------------------------+---------------------------------------------------+
+| meta-keyword | keyword or built-in within meta construct |
++--------------------------+---------------------------------------------------+
+| meta-string | string within meta construct |
++--------------------------+---------------------------------------------------+
+| **Tags, attributes, configs** |
++--------------------------+---------------------------------------------------+
+| section | heading of a section in a config file, heading in |
+| | text markup |
++--------------------------+---------------------------------------------------+
+| tag | XML/HTML tag |
++--------------------------+---------------------------------------------------+
+| name | name of an XML tag, the first word in an |
+| | s-expression |
++--------------------------+---------------------------------------------------+
+| builtin-name | s-expression name from the language standard |
+| | library |
++--------------------------+---------------------------------------------------+
+| attr | name of an attribute with no language defined |
+| | semantics (keys in JSON, setting names in .ini), |
+| | also sub-attribute within another highlighted |
+| | object, like XML tag |
++--------------------------+---------------------------------------------------+
+| attribute | name of an attribute followed by a structured |
+| | value part, like CSS properties |
++--------------------------+---------------------------------------------------+
+| variable | variable in a config or a template file, |
+| | environment var expansion in a script |
++--------------------------+---------------------------------------------------+
+| **Markup** |
++--------------------------+---------------------------------------------------+
+| bullet | list item bullet in text markup |
++--------------------------+---------------------------------------------------+
+| code | code block in text markup |
++--------------------------+---------------------------------------------------+
+| emphasis | emphasis in text markup |
++--------------------------+---------------------------------------------------+
+| strong | strong emphasis in text markup |
++--------------------------+---------------------------------------------------+
+| formula | mathematical formula in text markup |
++--------------------------+---------------------------------------------------+
+| link | hyperlink in text markup |
++--------------------------+---------------------------------------------------+
+| quote | quotation in text markup |
++--------------------------+---------------------------------------------------+
+| **CSS** |
++--------------------------+---------------------------------------------------+
+| selector-tag | tag selector in CSS |
++--------------------------+---------------------------------------------------+
+| selector-id | #id selector in CSS |
++--------------------------+---------------------------------------------------+
+| selector-class | .class selector in CSS |
++--------------------------+---------------------------------------------------+
+| selector-attr | [attr] selector in CSS |
++--------------------------+---------------------------------------------------+
+| selector-pseudo | :pseudo selector in CSS |
++--------------------------+---------------------------------------------------+
+| **Templates** |
++--------------------------+---------------------------------------------------+
+| template-tag | tag of a template language |
++--------------------------+---------------------------------------------------+
+| template-variable | variable in a template language |
++--------------------------+---------------------------------------------------+
+| **diff** |
++--------------------------+---------------------------------------------------+
+| addition | added or changed line in a diff |
++--------------------------+---------------------------------------------------+
+| deletion | deleted line in a diff |
++--------------------------+---------------------------------------------------+
+
+
+Language names and aliases
+--------------------------
+
++-------------------------+---------------------------------------------------+
+| 1C | 1c |
++-------------------------+---------------------------------------------------+
+| ABNF | abnf |
++-------------------------+---------------------------------------------------+
+| Access logs | accesslog |
++-------------------------+---------------------------------------------------+
+| Ada | ada |
++-------------------------+---------------------------------------------------+
+| ARM assembler | armasm, arm |
++-------------------------+---------------------------------------------------+
+| AVR assembler | avrasm |
++-------------------------+---------------------------------------------------+
+| ActionScript | actionscript, as |
++-------------------------+---------------------------------------------------+
+| Apache | apache, apacheconf |
++-------------------------+---------------------------------------------------+
+| AppleScript | applescript, osascript |
++-------------------------+---------------------------------------------------+
+| AsciiDoc | asciidoc, adoc |
++-------------------------+---------------------------------------------------+
+| AspectJ | aspectj |
++-------------------------+---------------------------------------------------+
+| AutoHotkey | autohotkey |
++-------------------------+---------------------------------------------------+
+| AutoIt | autoit |
++-------------------------+---------------------------------------------------+
+| Awk | awk, mawk, nawk, gawk |
++-------------------------+---------------------------------------------------+
+| Axapta | axapta |
++-------------------------+---------------------------------------------------+
+| Bash | bash, sh, zsh |
++-------------------------+---------------------------------------------------+
+| Basic | basic |
++-------------------------+---------------------------------------------------+
+| BNF | bnf |
++-------------------------+---------------------------------------------------+
+| Brainfuck | brainfuck, bf |
++-------------------------+---------------------------------------------------+
+| C# | cs, csharp |
++-------------------------+---------------------------------------------------+
+| C++ | cpp, c, cc, h, c++, h++, hpp |
++-------------------------+---------------------------------------------------+
+| C/AL | cal |
++-------------------------+---------------------------------------------------+
+| Cache Object Script | cos, cls |
++-------------------------+---------------------------------------------------+
+| CMake | cmake, cmake.in |
++-------------------------+---------------------------------------------------+
+| Coq | coq |
++-------------------------+---------------------------------------------------+
+| CSP | csp |
++-------------------------+---------------------------------------------------+
+| CSS | css |
++-------------------------+---------------------------------------------------+
+| Cap’n Proto | capnproto, capnp |
++-------------------------+---------------------------------------------------+
+| Clojure | clojure, clj |
++-------------------------+---------------------------------------------------+
+| CoffeeScript | coffeescript, coffee, cson, iced |
++-------------------------+---------------------------------------------------+
+| Crmsh | crmsh, crm, pcmk |
++-------------------------+---------------------------------------------------+
+| Crystal | crystal, cr |
++-------------------------+---------------------------------------------------+
+| D | d |
++-------------------------+---------------------------------------------------+
+| DNS Zone file | dns, zone, bind |
++-------------------------+---------------------------------------------------+
+| DOS | dos, bat, cmd |
++-------------------------+---------------------------------------------------+
+| Dart | dart |
++-------------------------+---------------------------------------------------+
+| Delphi | delphi, dpr, dfm, pas, pascal, freepascal, |
+| | lazarus, lpr, lfm |
++-------------------------+---------------------------------------------------+
+| Diff | diff, patch |
++-------------------------+---------------------------------------------------+
+| Django | django, jinja |
++-------------------------+---------------------------------------------------+
+| Dockerfile | dockerfile, docker |
++-------------------------+---------------------------------------------------+
+| dsconfig | dsconfig |
++-------------------------+---------------------------------------------------+
+| DTS (Device Tree) | dts |
++-------------------------+---------------------------------------------------+
+| Dust | dust, dst |
++-------------------------+---------------------------------------------------+
+| EBNF | ebnf |
++-------------------------+---------------------------------------------------+
+| Elixir | elixir |
++-------------------------+---------------------------------------------------+
+| Elm | elm |
++-------------------------+---------------------------------------------------+
+| Erlang | erlang, erl |
++-------------------------+---------------------------------------------------+
+| Excel | excel, xls, xlsx |
++-------------------------+---------------------------------------------------+
+| F# | fsharp, fs |
++-------------------------+---------------------------------------------------+
+| FIX | fix |
++-------------------------+---------------------------------------------------+
+| Fortran | fortran, f90, f95 |
++-------------------------+---------------------------------------------------+
+| G-Code | gcode, nc |
++-------------------------+---------------------------------------------------+
+| Gams | gams, gms |
++-------------------------+---------------------------------------------------+
+| GAUSS | gauss, gss |
++-------------------------+---------------------------------------------------+
+| Gherkin | gherkin |
++-------------------------+---------------------------------------------------+
+| Go | go, golang |
++-------------------------+---------------------------------------------------+
+| Golo | golo, gololang |
++-------------------------+---------------------------------------------------+
+| Gradle | gradle |
++-------------------------+---------------------------------------------------+
+| Groovy | groovy |
++-------------------------+---------------------------------------------------+
+| HTML, XML | xml, html, xhtml, rss, atom, xjb, xsd, xsl, plist |
++-------------------------+---------------------------------------------------+
+| HTTP | http, https |
++-------------------------+---------------------------------------------------+
+| Haml | haml |
++-------------------------+---------------------------------------------------+
+| Handlebars | handlebars, hbs, html.hbs, html.handlebars |
++-------------------------+---------------------------------------------------+
+| Haskell | haskell, hs |
++-------------------------+---------------------------------------------------+
+| Haxe | haxe, hx |
++-------------------------+---------------------------------------------------+
+| Ini | ini |
++-------------------------+---------------------------------------------------+
+| Inform7 | inform7, i7 |
++-------------------------+---------------------------------------------------+
+| IRPF90 | irpf90 |
++-------------------------+---------------------------------------------------+
+| JSON | json |
++-------------------------+---------------------------------------------------+
+| Java | java, jsp |
++-------------------------+---------------------------------------------------+
+| JavaScript | javascript, js, jsx |
++-------------------------+---------------------------------------------------+
+| Lasso | lasso, ls, lassoscript |
++-------------------------+---------------------------------------------------+
+| Less | less |
++-------------------------+---------------------------------------------------+
+| LDIF | ldif |
++-------------------------+---------------------------------------------------+
+| Lisp | lisp |
++-------------------------+---------------------------------------------------+
+| LiveCode Server | livecodeserver |
++-------------------------+---------------------------------------------------+
+| LiveScript | livescript, ls |
++-------------------------+---------------------------------------------------+
+| Lua | lua |
++-------------------------+---------------------------------------------------+
+| Makefile | makefile, mk, mak |
++-------------------------+---------------------------------------------------+
+| Markdown | markdown, md, mkdown, mkd |
++-------------------------+---------------------------------------------------+
+| Mathematica | mathematica, mma |
++-------------------------+---------------------------------------------------+
+| Matlab | matlab |
++-------------------------+---------------------------------------------------+
+| Maxima | maxima |
++-------------------------+---------------------------------------------------+
+| Maya Embedded Language | mel |
++-------------------------+---------------------------------------------------+
+| Mercury | mercury |
++-------------------------+---------------------------------------------------+
+| Mizar | mizar |
++-------------------------+---------------------------------------------------+
+| Mojolicious | mojolicious |
++-------------------------+---------------------------------------------------+
+| Monkey | monkey |
++-------------------------+---------------------------------------------------+
+| Moonscript | moonscript, moon |
++-------------------------+---------------------------------------------------+
+| NSIS | nsis |
++-------------------------+---------------------------------------------------+
+| Nginx | nginx, nginxconf |
++-------------------------+---------------------------------------------------+
+| Nimrod | nimrod, nim |
++-------------------------+---------------------------------------------------+
+| Nix | nix |
++-------------------------+---------------------------------------------------+
+| OCaml | ocaml, ml |
++-------------------------+---------------------------------------------------+
+| Objective C | objectivec, mm, objc, obj-c |
++-------------------------+---------------------------------------------------+
+| OpenGL Shading Language | glsl |
++-------------------------+---------------------------------------------------+
+| OpenSCAD | openscad, scad |
++-------------------------+---------------------------------------------------+
+| Oracle Rules Language | ruleslanguage |
++-------------------------+---------------------------------------------------+
+| Oxygene | oxygene |
++-------------------------+---------------------------------------------------+
+| PF | pf, pf.conf |
++-------------------------+---------------------------------------------------+
+| PHP | php, php3, php4, php5, php6 |
++-------------------------+---------------------------------------------------+
+| Parser3 | parser3 |
++-------------------------+---------------------------------------------------+
+| Perl | perl, pl, pm |
++-------------------------+---------------------------------------------------+
+| Pony | pony |
++-------------------------+---------------------------------------------------+
+| PowerShell | powershell, ps |
++-------------------------+---------------------------------------------------+
+| Processing | processing |
++-------------------------+---------------------------------------------------+
+| Prolog | prolog |
++-------------------------+---------------------------------------------------+
+| Protocol Buffers | protobuf |
++-------------------------+---------------------------------------------------+
+| Puppet | puppet, pp |
++-------------------------+---------------------------------------------------+
+| Python | python, py, gyp |
++-------------------------+---------------------------------------------------+
+| Python profiler results | profile |
++-------------------------+---------------------------------------------------+
+| Q | k, kdb |
++-------------------------+---------------------------------------------------+
+| QML | qml |
++-------------------------+---------------------------------------------------+
+| R | r |
++-------------------------+---------------------------------------------------+
+| RenderMan RIB | rib |
++-------------------------+---------------------------------------------------+
+| RenderMan RSL | rsl |
++-------------------------+---------------------------------------------------+
+| Roboconf | graph, instances |
++-------------------------+---------------------------------------------------+
+| Ruby | ruby, rb, gemspec, podspec, thor, irb |
++-------------------------+---------------------------------------------------+
+| Rust | rust, rs |
++-------------------------+---------------------------------------------------+
+| SCSS | scss |
++-------------------------+---------------------------------------------------+
+| SQL | sql |
++-------------------------+---------------------------------------------------+
+| STEP Part 21 | p21, step, stp |
++-------------------------+---------------------------------------------------+
+| Scala | scala |
++-------------------------+---------------------------------------------------+
+| Scheme | scheme |
++-------------------------+---------------------------------------------------+
+| Scilab | scilab, sci |
++-------------------------+---------------------------------------------------+
+| Smali | smali |
++-------------------------+---------------------------------------------------+
+| Smalltalk | smalltalk, st |
++-------------------------+---------------------------------------------------+
+| Stan | stan |
++-------------------------+---------------------------------------------------+
+| Stata | stata |
++-------------------------+---------------------------------------------------+
+| Stylus | stylus, styl |
++-------------------------+---------------------------------------------------+
+| SubUnit | subunit |
++-------------------------+---------------------------------------------------+
+| Swift | swift |
++-------------------------+---------------------------------------------------+
+| Test Anything Protocol | tap |
++-------------------------+---------------------------------------------------+
+| Tcl | tcl, tk |
++-------------------------+---------------------------------------------------+
+| TeX | tex |
++-------------------------+---------------------------------------------------+
+| Thrift | thrift |
++-------------------------+---------------------------------------------------+
+| TP | tp |
++-------------------------+---------------------------------------------------+
+| Twig | twig, craftcms |
++-------------------------+---------------------------------------------------+
+| TypeScript | typescript, ts |
++-------------------------+---------------------------------------------------+
+| VB.Net | vbnet, vb |
++-------------------------+---------------------------------------------------+
+| VBScript | vbscript, vbs |
++-------------------------+---------------------------------------------------+
+| VHDL | vhdl |
++-------------------------+---------------------------------------------------+
+| Vala | vala |
++-------------------------+---------------------------------------------------+
+| Verilog | verilog, v |
++-------------------------+---------------------------------------------------+
+| Vim Script | vim |
++-------------------------+---------------------------------------------------+
+| x86 Assembly | x86asm |
++-------------------------+---------------------------------------------------+
+| XL | xl, tao |
++-------------------------+---------------------------------------------------+
+| XQuery | xpath, xq |
++-------------------------+---------------------------------------------------+
+| Zephir | zephir, zep |
++-------------------------+---------------------------------------------------+
diff --git a/sashimi-webapp/static/vendors/highlight.js/docs/index.rst b/sashimi-webapp/static/vendors/highlight.js/docs/index.rst
new file mode 100644
index 00000000..0559dfd2
--- /dev/null
+++ b/sashimi-webapp/static/vendors/highlight.js/docs/index.rst
@@ -0,0 +1,44 @@
+.. highlight.js documentation master file, created by
+ sphinx-quickstart on Wed Sep 12 23:48:27 2012.
+ You can adapt this file completely to your liking, but it should at least
+ contain the root `toctree` directive.
+
+``highlight.js`` developer documentation
+==========================================
+
+Contents:
+
+.. toctree::
+ :maxdepth: 1
+
+ api
+ language-guide
+ reference
+ css-classes-reference
+ style-guide
+ language-contribution
+ building-testing
+ release-process
+
+Miscellaneous:
+
+.. toctree::
+ :maxdepth: 1
+
+ line-numbers
+ language-requests
+
+Links:
+
+- Code: https://github.com/isagalaev/highlight.js
+- Discussion: http://groups.google.com/group/highlightjs
+- Bug tracking: https://github.com/isagalaev/highlight.js/issues
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
diff --git a/sashimi-webapp/static/vendors/highlight.js/docs/language-contribution.rst b/sashimi-webapp/static/vendors/highlight.js/docs/language-contribution.rst
new file mode 100644
index 00000000..4deae3f3
--- /dev/null
+++ b/sashimi-webapp/static/vendors/highlight.js/docs/language-contribution.rst
@@ -0,0 +1,78 @@
+Language contributor checklist
+==============================
+
+1. Put language definition into a .js file
+------------------------------------------
+
+The file defines a function accepting a reference to the library and returning a language object.
+The library parameter is useful to access common modes and regexps. You should not immediately call this function,
+this is done during the build process and details differ for different build targets.
+
+::
+
+ function(hljs) {
+ return {
+ keywords: 'foo bar',
+ contains: [ ..., hljs.NUMBER_MODE, ... ]
+ }
+ }
+
+The name of the file is used as a short language identifier and should be usable as a class name in HTML and CSS.
+
+
+2. Provide meta data
+--------------------
+
+At the top of the file there is a specially formatted comment with meta data processed by a build system.
+Meta data format is simply key-value pairs each occupying its own line:
+
+::
+
+ /*
+ Language: Superlanguage
+ Requires: java.js, sql.js
+ Author: John Smith
+ Contributors: Mike Johnson <...@...>, Matt Wilson <...@...>
+ Description: Some cool language definition
+ */
+
+``Language`` — the only required header giving a human-readable language name.
+
+``Requires`` — a list of other language files required for this language to work.
+This make it possible to describe languages that extend definitions of other ones.
+Required files aren't processed in any special way.
+The build system just makes sure that they will be in the final package in
+``LANGUAGES`` object.
+
+The meaning of the other headers is pretty obvious.
+
+
+3. Create a code example
+------------------------
+
+The code example is used both to test language detection and for the demo page
+on https://highlightjs.org/. Put it in ``test/detect//default.txt``.
+
+Take inspiration from other languages in ``test/detect/`` and read
+:ref:`testing instructions ` for more details.
+
+
+4. Write class reference
+------------------------
+
+Class reference lives in the :doc:`CSS classes reference `..
+Describe shortly names of all meaningful modes used in your language definition.
+
+
+5. Add yourself to AUTHORS.*.txt and CHANGES.md
+-----------------------------------------------
+
+If you're a new contributor add yourself to the authors list. Feel free to use
+either English and/or Russian version.
+Also it will be good to update CHANGES.md.
+
+
+6. Create a pull request
+------------------------
+
+Send your contribution as a pull request on GitHub.
diff --git a/sashimi-webapp/static/vendors/highlight.js/docs/language-guide.rst b/sashimi-webapp/static/vendors/highlight.js/docs/language-guide.rst
new file mode 100644
index 00000000..f48c748b
--- /dev/null
+++ b/sashimi-webapp/static/vendors/highlight.js/docs/language-guide.rst
@@ -0,0 +1,264 @@
+Language definition guide
+=========================
+
+Highlighting overview
+---------------------
+
+Programming language code consists of parts with different rules of parsing: keywords like ``for`` or ``if``
+don't make sense inside strings, strings may contain backslash-escaped symbols like ``\"``
+and comments usually don't contain anything interesting except the end of the comment.
+
+In highlight.js such parts are called "modes".
+
+Each mode consists of:
+
+* starting condition
+* ending condition
+* list of contained sub-modes
+* lexing rules and keywords
+* …exotic stuff like another language inside a language
+
+The parser's work is to look for modes and their keywords.
+Upon finding, it wraps them into the markup ``...``
+and puts the name of the mode ("string", "comment", "number")
+or a keyword group name ("keyword", "literal", "built-in") as the span's class name.
+
+
+General syntax
+--------------
+
+A language definition is a JavaScript object describing the default parsing mode for the language.
+This default mode contains sub-modes which in turn contain other sub-modes, effectively making the language definition a tree of modes.
+
+Here's an example:
+
+::
+
+ {
+ case_insensitive: true, // language is case-insensitive
+ keywords: 'for if while',
+ contains: [
+ {
+ className: 'string',
+ begin: '"', end: '"'
+ },
+ hljs.COMMENT(
+ '/\\*', // begin
+ '\\*/', // end
+ {
+ contains: [
+ {
+ className: 'doc', begin: '@\\w+'
+ }
+ ]
+ }
+ )
+ ]
+ }
+
+Usually the default mode accounts for the majority of the code and describes all language keywords.
+A notable exception here is XML in which a default mode is just a user text that doesn't contain any keywords,
+and most interesting parsing happens inside tags.
+
+
+Keywords
+--------
+
+In the simple case language keywords are defined in a string, separated by space:
+
+::
+
+ {
+ keywords: 'else for if while'
+ }
+
+Some languages have different kinds of "keywords" that might not be called as such by the language spec
+but are very close to them from the point of view of a syntax highlighter. These are all sorts of "literals", "built-ins", "symbols" and such.
+To define such keyword groups the attribute ``keywords`` becomes an object each property of which defines its own group of keywords:
+
+::
+
+ {
+ keywords: {
+ keyword: 'else for if while',
+ literal: 'false true null'
+ }
+ }
+
+The group name becomes then a class name in a generated markup enabling different styling for different kinds of keywords.
+
+To detect keywords highlight.js breaks the processed chunk of code into separate words — a process called lexing.
+The "word" here is defined by the regexp ``[a-zA-Z][a-zA-Z0-9_]*`` that works for keywords in most languages.
+Different lexing rules can be defined by the ``lexemes`` attribute:
+
+::
+
+ {
+ lexemes '-[a-z]+',
+ keywords: '-import -export'
+ }
+
+
+Sub-modes
+---------
+
+Sub-modes are listed in the ``contains`` attribute:
+
+::
+
+ {
+ keywords: '...',
+ contains: [
+ hljs.QUOTE_STRING_MODE,
+ hljs.C_LINE_COMMENT,
+ { ... custom mode definition ... }
+ ]
+ }
+
+A mode can reference itself in the ``contains`` array by using a special keyword ``'self``'.
+This is commonly used to define nested modes:
+
+::
+
+ {
+ className: 'object',
+ begin: '{', end: '}',
+ contains: [hljs.QUOTE_STRING_MODE, 'self']
+ }
+
+
+Comments
+--------
+
+To define custom comments it is recommended to use a built-in helper function ``hljs.COMMENT`` instead of describing the mode directly, as it also defines a few default sub-modes that improve language detection and do other nice things.
+
+Parameters for the function are:
+
+::
+
+ hljs.COMMENT(
+ begin, // begin regex
+ end, // end regex
+ extra // optional object with extra attributes to override defaults
+ // (for example {relevance: 0})
+ )
+
+
+Markup generation
+-----------------
+
+Modes usually generate actual highlighting markup — ```` elements with specific class names that are defined by the ``className`` attribute:
+
+::
+
+ {
+ contains: [
+ {
+ className: 'string',
+ // ... other attributes
+ },
+ {
+ className: 'number',
+ // ...
+ }
+ ]
+ }
+
+Names are not required to be unique, it's quite common to have several definitions with the same name.
+For example, many languages have various syntaxes for strings, comments, etc…
+
+Sometimes modes are defined only to support specific parsing rules and aren't needed in the final markup.
+A classic example is an escaping sequence inside strings allowing them to contain an ending quote.
+
+::
+
+ {
+ className: 'string',
+ begin: '"', end: '"',
+ contains: [{begin: '\\\\.'}],
+ }
+
+For such modes ``className`` attribute should be omitted so they won't generate excessive markup.
+
+
+Mode attributes
+---------------
+
+Other useful attributes are defined in the :doc:`mode reference `.
+
+
+.. _relevance:
+
+Relevance
+---------
+
+Highlight.js tries to automatically detect the language of a code fragment.
+The heuristics is essentially simple: it tries to highlight a fragment with all the language definitions
+and the one that yields most specific modes and keywords wins. The job of a language definition
+is to help this heuristics by hinting relative relevance (or irrelevance) of modes.
+
+This is best illustrated by example. Python has special kinds of strings defined by prefix letters before the quotes:
+``r"..."``, ``u"..."``. If a code fragment contains such strings there is a good chance that it's in Python.
+So these string modes are given high relevance:
+
+::
+
+ {
+ className: 'string',
+ begin: 'r"', end: '"',
+ relevance: 10
+ }
+
+On the other hand, conventional strings in plain single or double quotes aren't specific to any language
+and it makes sense to bring their relevance to zero to lessen statistical noise:
+
+::
+
+ {
+ className: 'string',
+ begin: '"', end: '"',
+ relevance: 0
+ }
+
+The default value for relevance is 1. When setting an explicit value it's recommended to use either 10 or 0.
+
+Keywords also influence relevance. Each of them usually has a relevance of 1, but there are some unique names
+that aren't likely to be found outside of their languages, even in the form of variable names.
+For example just having ``reinterpret_cast`` somewhere in the code is a good indicator that we're looking at C++.
+It's worth to set relevance of such keywords a bit higher. This is done with a pipe:
+
+::
+
+ {
+ keywords: 'for if reinterpret_cast|10'
+ }
+
+
+Illegal symbols
+---------------
+
+Another way to improve language detection is to define illegal symbols for a mode.
+For example in Python first line of class definition (``class MyClass(object):``) cannot contain symbol "{" or a newline.
+Presence of these symbols clearly shows that the language is not Python and the parser can drop this attempt early.
+
+Illegal symbols are defined as a a single regular expression:
+
+::
+
+ {
+ className: 'class',
+ illegal: '[${]'
+ }
+
+
+Pre-defined modes and regular expressions
+-----------------------------------------
+
+Many languages share common modes and regular expressions. Such expressions are defined in core highlight.js code
+at the end under "Common regexps" and "Common modes" titles. Use them when possible.
+
+
+Contributing
+------------
+
+Follow the :doc:`contributor checklist `.
diff --git a/sashimi-webapp/static/vendors/highlight.js/docs/language-requests.rst b/sashimi-webapp/static/vendors/highlight.js/docs/language-requests.rst
new file mode 100644
index 00000000..4e4c2f0b
--- /dev/null
+++ b/sashimi-webapp/static/vendors/highlight.js/docs/language-requests.rst
@@ -0,0 +1,17 @@
+On requesting new languages
+===========================
+
+This is a general answer to requests for adding new languages that appear from
+time to time in the highlight.js issue tracker and discussion group.
+
+ Highlight.js doesn't have a fundamental plan for implementing languages,
+ instead the project works by accepting language definitions from
+ interested contributors. There are also no rules at the moment forbidding
+ any languages from being added to the library, no matter how obscure or
+ weird.
+
+ This means that there's no point in requesting a new language without
+ providing an implementation for it. If you want to see a particular language
+ included in highlight.js but cannot implement it, the best way to make it
+ happen is to get another developer interested in doing so. Here's our
+ :doc:`language-guide`.
diff --git a/sashimi-webapp/static/vendors/highlight.js/docs/line-numbers.rst b/sashimi-webapp/static/vendors/highlight.js/docs/line-numbers.rst
new file mode 100644
index 00000000..674542d4
--- /dev/null
+++ b/sashimi-webapp/static/vendors/highlight.js/docs/line-numbers.rst
@@ -0,0 +1,39 @@
+Line numbers
+============
+
+Highlight.js' notable lack of line numbers support is not an oversight but a
+feature. Following is the explanation of this policy from the current project
+maintainer (hey guys!):
+
+ One of the defining design principles for highlight.js from the start was
+ simplicity. Not the simplicity of code (in fact, it's quite complex) but
+ the simplicity of usage and of the actual look of highlighted snippets on
+ HTML pages. Many highlighters, in my opinion, are overdoing it with such
+ things as separate colors for every single type of lexemes, striped
+ backgrounds, fancy buttons around code blocks and — yes — line numbers.
+ The more fancy stuff resides around the code the more it distracts a
+ reader from understanding it.
+
+ This is why it's not a straightforward decision: this new feature will not
+ just make highlight.js better, it might actually make it worse simply by
+ making it look more bloated in blog posts around the Internet. This is why
+ I'm asking people to show that it's worth it.
+
+ The only real use-case that ever was brought up in support of line numbers
+ is referencing code from the descriptive text around it. On my own blog I
+ was always solving this either with comments within the code itself or by
+ breaking the larger snippets into smaller ones and describing each small
+ part separately. I'm not saying that my solution is better. But I don't
+ see how line numbers are better either. And the only way to show that they
+ are better is to set up some usability research on the subject. I doubt
+ anyone would bother to do it.
+
+ Then there's maintenance. So far the core code of highlight.js is
+ maintained by only one person — yours truly. Inclusion of any new code in
+ highlight.js means that from that moment I will have to fix bugs in it,
+ improve it further, make it work together with the rest of the code,
+ defend its design. And I don't want to do all this for the feature that I
+ consider "evil" and probably will never use myself.
+
+This position is `subject to discuss `_.
+Also it doesn't stop anyone from forking the code and maintaining line-numbers implementation separately.
diff --git a/sashimi-webapp/static/vendors/highlight.js/docs/reference.rst b/sashimi-webapp/static/vendors/highlight.js/docs/reference.rst
new file mode 100644
index 00000000..56879fbd
--- /dev/null
+++ b/sashimi-webapp/static/vendors/highlight.js/docs/reference.rst
@@ -0,0 +1,324 @@
+Mode reference
+==============
+
+Types
+-----
+
+Types of attributes values in this reference:
+
++------------+-------------------------------------------------------------------------------------+
+| identifier | String suitable to be used as a Javascript variable and CSS class name |
+| | (i.e. mostly ``/[A-Za-z0-9_]+/``) |
++------------+-------------------------------------------------------------------------------------+
+| regexp | String representing a Javascript regexp. |
+| | Note that since it's not a literal regexp all back-slashes should be repeated twice |
++------------+-------------------------------------------------------------------------------------+
+| boolean | Javascript boolean: ``true`` or ``false`` |
++------------+-------------------------------------------------------------------------------------+
+| number | Javascript number |
++------------+-------------------------------------------------------------------------------------+
+| object | Javascript object: ``{ ... }`` |
++------------+-------------------------------------------------------------------------------------+
+| array | Javascript array: ``[ ... ]`` |
++------------+-------------------------------------------------------------------------------------+
+
+
+Attributes
+----------
+
+case_insensitive
+^^^^^^^^^^^^^^^^
+
+**type**: boolean
+
+Case insensitivity of language keywords and regexps. Used only on the top-level mode.
+
+
+aliases
+^^^^^^^
+
+**type**: array
+
+A list of additional names (besides the canonical one given by the filename) that can be used to identify a language in HTML classes and in a call to :ref:`getLanguage `.
+
+
+className
+^^^^^^^^^
+
+**type**: identifier
+
+The name of the mode. It is used as a class name in HTML markup.
+
+Multiple modes can have the same name. This is useful when a language has multiple variants of syntax
+for one thing like string in single or double quotes.
+
+
+begin
+^^^^^
+
+**type**: regexp
+
+Regular expression starting a mode. For example a single quote for strings or two forward slashes for C-style comments.
+If absent, ``begin`` defaults to a regexp that matches anything, so the mode starts immediately.
+
+
+end
+^^^
+
+**type**: regexp
+
+Regular expression ending a mode. For example a single quote for strings or "$" (end of line) for one-line comments.
+
+It's often the case that a beginning regular expression defines the entire mode and doesn't need any special ending.
+For example a number can be defined with ``begin: "\\b\\d+"`` which spans all the digits.
+
+If absent, ``end`` defaults to a regexp that matches anything, so the mode ends immediately.
+
+Sometimes a mode can end not by itself but implicitly with its containing (parent) mode.
+This is achieved with :ref:`endsWithParent ` attribute.
+
+
+beginKeywords
+^^^^^^^^^^^^^^^^
+
+**type**: string
+
+Used instead of ``begin`` for modes starting with keywords to avoid needless repetition:
+
+::
+
+ {
+ begin: '\\b(extends|implements) ',
+ keywords: 'extends implements'
+ }
+
+… becomes:
+
+::
+
+ {
+ beginKeywords: 'extends implements'
+ }
+
+Unlike the :ref:`keywords ` attribute, this one allows only a simple list of space separated keywords.
+If you do need additional features of ``keywords`` or you just need more keywords for this mode you may include ``keywords`` along with ``beginKeywords``.
+
+
+.. _endsWithParent:
+
+endsWithParent
+^^^^^^^^^^^^^^
+
+**type**: boolean
+
+A flag showing that a mode ends when its parent ends.
+
+This is best demonstrated by example. In CSS syntax a selector has a set of rules contained within symbols "{" and "}".
+Individual rules separated by ";" but the last one in a set can omit the terminating semicolon:
+
+::
+
+ p {
+ width: 100%; color: red
+ }
+
+This is when ``endsWithParent`` comes into play:
+
+::
+
+ {
+ className: 'rules', begin: '{', end: '}',
+ contains: [
+ {className: 'rule', /* ... */ end: ';', endsWithParent: true}
+ ]
+ }
+
+.. _endsParent:
+
+endsParent
+^^^^^^^^^^^^^^
+
+**type**: boolean
+
+Forces closing of the parent mode right after the current mode is closed.
+
+This is used for modes that don't have an easily expressible ending lexeme but
+instead could be closed after the last interesting sub-mode is found.
+
+Here's an example with two ways of defining functions in Elixir, one using a
+keyword ``do`` and another using a comma:
+
+::
+
+ def foo :clear, list do
+ :ok
+ end
+
+ def foo, do: IO.puts "hello world"
+
+Note that in the first case the parameter list after the function title may also
+include a comma. And iIf we're only interested in highlighting a title we can
+tell it to end the function definition after itself:
+
+::
+
+ {
+ className: 'function',
+ beginKeywords: 'def', end: /\B\b/,
+ contains: [
+ {
+ className: 'title',
+ begin: hljs.IDENT_RE, endsParent: true
+ }
+ ]
+ }
+
+(The ``end: /\B\b/`` regex tells function to never end by itself.)
+
+.. _lexemes:
+
+lexemes
+^^^^^^^
+
+**type**: regexp
+
+A regular expression that extracts individual lexemes from language text to find :ref:`keywords ` among them.
+Default value is ``hljs.IDENT_RE`` which works for most languages.
+
+
+.. _keywords:
+
+keywords
+^^^^^^^^
+
+**type**: object
+
+Keyword definition comes in two forms:
+
+* ``'for while if else weird_voodoo|10 ... '`` -- a string of space-separated keywords with an optional relevance over a pipe
+* ``{'keyword': ' ... ', 'literal': ' ... '}`` -- an object whose keys are names of different kinds of keywords and values are keyword definition strings in the first form
+
+For detailed explanation see :doc:`Language definition guide `.
+
+
+illegal
+^^^^^^^
+
+**type**: regexp
+
+A regular expression that defines symbols illegal for the mode.
+When the parser finds a match for illegal expression it immediately drops parsing the whole language altogether.
+
+
+excludeBegin, excludeEnd
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+**type**: boolean
+
+Exclude beginning or ending lexemes out of mode's generated markup. For example in CSS syntax a rule ends with a semicolon.
+However visually it's better not to color it as the rule contents. Having ``excludeEnd: true`` forces a ```` element for the rule to close before the semicolon.
+
+
+returnBegin
+^^^^^^^^^^^
+
+**type**: boolean
+
+Returns just found beginning lexeme back into parser. This is used when beginning of a sub-mode is a complex expression
+that should not only be found within a parent mode but also parsed according to the rules of a sub-mode.
+
+Since the parser is effectively goes back it's quite possible to create a infinite loop here so use with caution!
+
+
+returnEnd
+^^^^^^^^^
+
+**type**: boolean
+
+Returns just found ending lexeme back into parser. This is used for example to parse Javascript embedded into HTML.
+A Javascript block ends with the HTML closing tag ```` that cannot be parsed with Javascript rules.
+So it is returned back into its parent HTML mode that knows what to do with it.
+
+Since the parser is effectively goes back it's quite possible to create a infinite loop here so use with caution!
+
+
+contains
+^^^^^^^^
+
+**type**: array
+
+The list of sub-modes that can be found inside the mode. For detailed explanation see :doc:`Language definition guide `.
+
+
+starts
+^^^^^^
+
+**type**: identifier
+
+The name of the mode that will start right after the current mode ends. The new mode won't be contained within the current one.
+
+Currently this attribute is used to highlight Javascript and CSS contained within HTML.
+Tags ``