e._cyclicBufferSize?e._pos-e._cyclicBufferSize:0,o=e._bufferOffset+e._pos,l=1,c=0,u=0,e.HASH_ARRAY?(c=1023&(k=ze[255&e._bufferBase[o]]^255&e._bufferBase[o+1]),u=65535&(k^=(255&e._bufferBase[o+2])<<8),f=(k^ze[255&e._bufferBase[o+3]]<<5)&e._hashMask):f=255&e._bufferBase[o]^(255&e._bufferBase[o+1])<<8,n=e._hash[e.kFixHashSize+f]||0,e.HASH_ARRAY&&(s=e._hash[c]||0,i=e._hash[1024+u]||0,e._hash[c]=e._pos,e._hash[1024+u]=e._pos,s>P&&e._bufferBase[e._bufferOffset+s]==e._bufferBase[o]&&(r[v++]=l=2,r[v++]=e._pos-s-1),i>P&&e._bufferBase[e._bufferOffset+i]==e._bufferBase[o]&&(i==s&&(v-=2),r[v++]=l=3,r[v++]=e._pos-i-1,s=i),0!=v&&s==n&&(v-=2,l=1)),e._hash[e.kFixHashSize+f]=e._pos,S=1+(e._cyclicBufferPos<<1),g=e._cyclicBufferPos<<1,d=p=e.kNumHashDirectBytes,0!=e.kNumHashDirectBytes&&n>P&&e._bufferBase[e._bufferOffset+n+e.kNumHashDirectBytes]!=e._bufferBase[o+e.kNumHashDirectBytes]&&(r[v++]=l=e.kNumHashDirectBytes,r[v++]=e._pos-n-1),t=e._cutValue;;){if(n<=P||0==t--){e._son[S]=e._son[g]=0;break}if(a=e._pos-n,_=(a<=e._cyclicBufferPos?e._cyclicBufferPos-a:e._cyclicBufferPos-a+e._cyclicBufferSize)<<1,B=e._bufferOffset+n,m=d0&&(r=e._matchDistances[e._numDistancePairs-2])==e._numFastBytes&&(r+=b(e._matchFinder,r-1,e._matchDistances[e._numDistancePairs-1],273-r)),++e._additionalOffset,r}function J(e){e._matchFinder&&e._needReleaseMFStream&&(e._matchFinder._stream=null,e._needReleaseMFStream=0)}function Q(e){return e<2048?Fe[e]:e<2097152?Fe[e>>10]+20:Fe[e>>20]+40}function U(e, r){he(e._choice);for(var t=0; t>>2],_=(i=Ie[2048-e._choice[0]>>>2])+Ie[e._choice[1]>>>2],a=i+Ie[2048-e._choice[1]>>>2],c=0,c=0; c<8; ++c){if(c>=t)return;o[n+c]=s+me(e._lowCoder[r],c)}for(; c<16; ++c){if(c>=t)return;o[n+c]=_+me(e._midCoder[r],c-8)}for(; c>>8-e.m_NumPrevBits)]}function se(e, r, t){var o,n,s=1;for(n=7; n>=0; --n)o=t>>n&1,Pe(r,e.m_Encoders,s,o),s=s<<1|o}function ie(e, r, t, o){var n,s,i=1,_=7,a=0;if(r)for(; _>=0; --_)if(s=t>>_&1,n=o>>_&1,a+=Be(e.m_Encoders[(1+s<<8)+i],n),i=i<<1|n,s!=n){--_;break}for(; _>=0; --_)n=o>>_&1,a+=Be(e.m_Encoders[i],n),i=i<<1|n;return a}function _e(e){e.BackPrev=-1,e.Prev1IsChar=0}function ae(e, t){return e.NumBitLevels=t,e.Models=r(1<>>--n&1,Pe(r,e.Models,s,o),s=s<<1|o}function me(e, r){var t,o,n=1,s=0;for(o=e.NumBitLevels; 0!=o;)t=r>>>--o&1,s+=Be(e.Models[n],t),n=(n<<1)+t;return s}function de(e, r, t){var o,n,s=1;for(n=0; n>=1}function pe(e, r, t){var o,n=r[t];return o=(e.Range>>>11)*n,(-2147483648^e.Code)<(-2147483648^o)?(e.Range=o,r[t]=n+(2048-n>>>5)<<16>>16,-16777216&e.Range||(e.Code=e.Code<<8|p(e.Stream),e.Range<<=8),0):(e.Range-=o,e.Code-=o,r[t]=n-(n>>>5)<<16>>16,-16777216&e.Range||(e.Code=e.Code<<8|p(e.Stream),e.Range<<=8),1)}function he(e){for(var r=e.length-1; r>=0; --r)e[r]=1024}function Pe(e, r, n, s){var i,a=r[n];i=(e.Range>>>11)*a,s?(e.Low=t(e.Low,o(_(i),[4294967295,0])),e.Range-=i,r[n]=a-(a>>>5)<<16>>16):(e.Range=i,r[n]=a+(2048-a>>>5)<<16>>16),-16777216&e.Range||(e.Range<<=8,ve(e))}function le(e, r, o){for(var n=o-1; n>=0; --n)e.Range>>>=1,1==(r>>>n&1)&&(e.Low=t(e.Low,_(e.Range))),-16777216&e.Range||(e.Range<<=8,ve(e))}function ve(e){var r,s=a(function(e, r){var o;return r&=63,o=f(e,r),e[1]<0&&(o=t(o,u([2,0],63-r))),o}(e.Low,32));if(0!=s||n(e.Low,[4278190080,0])<0){e._position=t(e._position,_(e._cacheSize)),r=e._cache;do{v(e.Stream,r+s),r=255}while(0!=--e._cacheSize);e._cache=a(e.Low)>>>24}++e._cacheSize,e.Low=u(o(e.Low,[16777215,0]),8)}function Be(e, r){return Ie[(2047&(e-r^-r))>>>2]}function Se(e){for(var r,t,o,n=0,s=0,i=e.length,_=[],a=[]; n=i)return e;if(128!=(192&(t=255&e[++n])))return e;a[s]=(31&r)<<6|63&t}else{if(224!=(240&r))return e;if(n+2>=i)return e;if(128!=(192&(t=255&e[++n])))return e;if(128!=(192&(o=255&e[++n])))return e;a[s]=(15&r)<<12|(63&t)<<6|63&o}else{if(!r)return e;a[s]=r}16383==s&&(_.push(String.fromCharCode.apply(String,a)),s=-1)}return s>0&&(a.length=s,_.push(String.fromCharCode.apply(String,a))),_.join("")}function ge(e){var r,t,o,n=[],s=0,i=e.length;if("object"==typeof e)return e;for(function(e, r, t, o, n){var s;for(s=r; s=1&&r<=127?++s:s+=!r||r>=128&&r<=2047?2:3;for(t=[],s=0,o=0; o=1&&r<=127?t[s++]=r<<24>>24:!r||r>=128&&r<=2047?(t[s++]=(192|r>>6&31)<<24>>24,t[s++]=(128|63&r)<<24>>24):(t[s++]=(224|r>>12&15)<<24>>24,t[s++]=(128|r>>6&63)<<24>>24,t[s++]=(128|63&r)<<24>>24);return t}function ke(e){return e[1]+e[0]}var Re=1,Me=2,De=3,be="function"==typeof setImmediate?setImmediate:setTimeout,we=4294967296,Ee=[4294967295,-we],Le=[0,-0x8000000000000000],ye=[0,0],Ce=[1,0],ze=function(){var e,r,t,o=[];for(e=0; e<256; ++e){for(t=e,r=0; r<8; ++r)0!=(1&t)?t=t>>>1^-306674912:t>>>=1;o[e]=t}return o}(),Fe=function(){var e,r,t,o=2,n=[0,1];for(t=2; t<22; ++t)for(r=1<<(t>>1)-1,e=0; e>24;return n}(),Ie=function(){var e,r,t,o=[];for(r=8; r>=0; --r)for(e=1<<9-r,t=1<<9-r-1; t>>9-r-1);return o}(),xe=function(){var e=[{s:16,f:64,m:0},{s:20,f:64,m:0},{s:19,f:64,m:1},{s:20,f:64,m:1},{s:21,f:128,m:1},{s:22,f:128,m:1},{s:23,f:128,m:1},{s:24,f:255,m:1},{s:25,f:255,m:1}];return function(r){return e[r-1]||e[6]}}();return"undefined"==typeof onmessage||"undefined"!=typeof window&&void 0!==window.document||(onmessage=function(e){e&&e.data&&(e.data.action==Me?LzmaMin.decompress(e.data.data,e.data.cbn):e.data.action==Re&&LzmaMin.compress(e.data.data,e.data.mode,e.data.cbn))}),{compress:function(r, t, o, n){function s(){try{for(var e,r=(new Date).getTime(); O(a.c.chunker);)if(i=ke(a.c.chunker.inBytesProcessed)/ke(a.c.length_0),(new Date).getTime()-r>200)return n(i),be(s,0),0;n(1),e=l(a.c.output),be(o.bind(null,e),0)}catch(e){o(null,e)}}var i,_,a={},c=void 0===o&&void 0===n;if("function"!=typeof o&&(_=o,o=n=0),n=n||function(r){if(void 0!==_)return e(r,_)},o=o||function(e, r){if(void 0!==_)return postMessage({action:Re,cbn:_,result:e,error:r})},c){for(a.c=k({},ge(r),xe(t)); O(a.c.chunker););return l(a.c.output)}try{a.c=k({},ge(r),xe(t)),n(0)}catch(e){return o(null,e)}be(s,0)},decompress:function(r, t, o){function n(){try{for(var e,r=0,i=(new Date).getTime(); O(c.d.chunker);)if(++r%1e3==0&&(new Date).getTime()-i>200)return _&&(s=ke(c.d.chunker.decoder.nowPos64)/a,o(s)),be(n,0),0;o(1),e=Se(l(c.d.output)),be(t.bind(null,e),0)}catch(e){t(null,e)}}var s,i,_,a,c={},u=void 0===t&&void 0===o;if("function"!=typeof t&&(i=t,t=o=0),o=o||function(r){if(void 0!==i)return e(_?r:-1,i)},t=t||function(e, r){if(void 0!==i)return postMessage({action:Me,cbn:i,result:e,error:r})},u){for(c.d=M({},r); O(c.d.chunker););return Se(l(c.d.output))}try{c.d=M({},r),a=ke(c.d.length_0),_=a>-1,o(0)}catch(e){return t(null,e)}be(n,0)}}}();this.LZMA=this.LZMA_WORKER=LzmaMin;
diff --git a/styles.css b/styles.css
new file mode 100644
index 0000000..4c0b8ec
--- /dev/null
+++ b/styles.css
@@ -0,0 +1,38 @@
+/* General app style */
+
+#editor,
+#footer,
+#copy {
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+}
+
+#editor {
+ top: 0;
+ bottom: 36px;
+}
+
+#footer,
+#copy {
+ height: 36px;
+ padding: 4px 20px 0 50px;
+ background-color: #3b3b47;
+}
+
+.d-inline-block {
+ display: inline-block;
+}
+
+.select-wrapper {
+ width: 300px;
+ font-size: 14px;
+ font-family: sans-serif;
+}
+.select-wrapper .ss-main .ss-single-selected {
+ height: 28px;
+}
+button {
+ cursor: pointer;
+}
diff --git a/theme.css b/theme.css
new file mode 100644
index 0000000..f7552e0
--- /dev/null
+++ b/theme.css
@@ -0,0 +1,209 @@
+/* Code editor style */
+
+.codeflask {
+ color: #ccc;
+ background: #282936;
+}
+.codeflask textarea {
+ color: #282936;
+ caret-color: rgba(241, 250, 140, 1);
+}
+
+.codeflask .codeflask__flatten {
+ font-size: 15px;
+}
+
+.codeflask textarea::-moz-selection,
+.codeflask textarea ::-moz-selection {
+ text-shadow: none;
+ background-color: #5a5f80;
+ color: #5a5f80;
+}
+
+.codeflask textarea::selection,
+.codeflask textarea ::selection {
+ text-shadow: none;
+ background-color: #5a5f80;
+ color: #5a5f80;
+}
+
+.codeflask__lines {
+ background: #3b3b47;
+}
+
+.token.comment {
+ color: rgba(98, 114, 164, 1);
+}
+
+.token.prolog {
+ color: rgba(207, 207, 194, 1);
+}
+
+.token.tag {
+ color: rgba(220, 104, 170, 1);
+}
+
+.token.entity {
+ color: rgba(139, 233, 253, 1);
+}
+
+.token.atrule {
+ color: rgba(98, 239, 117, 1);
+}
+
+.token.url {
+ color: rgba(102, 217, 239, 1);
+}
+
+.token.selector {
+ color: rgba(207, 207, 194, 1);
+}
+
+.token.string {
+ color: rgba(241, 250, 140, 1);
+}
+
+.token.property {
+ color: rgba(255, 184, 108, 1);
+}
+
+.token.important {
+ color: rgba(255, 121, 198, 1);
+ font-weight: bold;
+}
+
+.token.punctuation {
+ color: white;
+}
+
+.token.number {
+ color: rgba(189, 147, 249, 1);
+}
+
+.token.function {
+ color: rgba(80, 250, 123, 1);
+}
+
+.token.class-name {
+ color: rgba(255, 184, 108, 1);
+}
+
+.token.keyword {
+ color: rgba(255, 121, 198, 1);
+}
+
+.token.boolean {
+ color: rgba(255, 184, 108, 1);
+}
+
+.token.operator {
+ color: rgba(139, 233, 253, 1);
+}
+
+.token.char {
+ color: rgba(255, 135, 157, 1);
+}
+
+.token.regex {
+ color: rgba(80, 250, 123, 1);
+}
+
+.token.variable {
+ color: rgba(80, 250, 123, 1);
+}
+
+.token.constant {
+ color: rgba(255, 184, 108, 1);
+}
+
+.token.symbol {
+ color: rgba(255, 184, 108, 1);
+}
+
+.token.builtin {
+ color: rgba(255, 121, 198, 1);
+}
+
+.token.attr-value {
+ color: #7ec699;
+}
+
+.token.deleted {
+ color: #e2777a;
+}
+
+.token.namespace {
+ color: #e2777a;
+}
+
+.token.bold {
+ font-weight: bold;
+}
+
+.token.italic {
+ font-style: italic;
+}
+
+.token {
+ color: #ff79c6;
+}
+
+.language-cpp .token.string {
+ color: #8be9fd;
+}
+
+.language-c .token.string {
+ color: #8be9fd;
+}
+
+.language-css .token.selector {
+ color: rgba(80, 250, 123, 1);
+}
+
+.language-css .token.property {
+ color: rgba(255, 184, 108, 1);
+}
+
+.language-java span.token.class-name {
+ color: #8be9fd;
+}
+
+.language-java .token.class-name {
+ color: #8be9fd;
+}
+
+.language-markup .token.attr-value {
+ color: rgba(102, 217, 239, 1);
+}
+
+.language-markup .token.tag {
+ color: rgba(80, 250, 123, 1);
+}
+
+.language-objectivec .token.property {
+ color: #66d9ef;
+}
+
+.language-objectivec .token.string {
+ color: #50fa7b;
+}
+
+.language-php .token.boolean {
+ color: #8be9fd;
+}
+
+.language-php .token.function {
+ color: #ff79c6;
+}
+
+.language-php .token.keyword {
+ color: #66d9ef;
+}
+
+.language-ruby .token.symbol {
+ color: #8be9fd;
+}
+
+.language-ruby .token.class-name {
+ color: #cfcfc2;
+}