From 57f8183211e0ea8139277e5979f9afafb1cf0d80 Mon Sep 17 00:00:00 2001 From: "Viktor A. Rozenko Voitenko" Date: Fri, 8 Oct 2021 14:37:52 +0100 Subject: [PATCH 01/15] fix(branch): main -> master in github pages workflow --- .github/workflows/pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index d9ea21e..62f45c7 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -2,7 +2,7 @@ name: Deploy to GitHub Pages on: push: branches: - - main + - master jobs: build-and-deploy: runs-on: ubuntu-latest From d806ffcf54af37a89d8044dadaf24bff6ffc1cb6 Mon Sep 17 00:00:00 2001 From: sharpvik Date: Fri, 8 Oct 2021 13:39:26 +0000 Subject: [PATCH 02/15] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sh?= =?UTF-8?q?arpvik/sharpvik.github.io@ad8c157238996728cc240a85211b7c6b50f96?= =?UTF-8?q?cd8=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 - LICENSE | 35 - README.md | 33 - {dist/assets => assets}/github.svg | 0 {dist/assets => assets}/gmail.svg | 0 build | 5 - {dist/css => css}/about.css | 0 {dist/css => css}/common.css | 0 {dist/css => css}/main.css | 0 {dist/css => css}/skills.css | 0 {dist/css => css}/vsh.css | 0 dist/.gitignore | 1 - dist/index.html | 28 - elm.json | 25 - img/demo.png | Bin 170393 -> 0 bytes index.html | 2 +- js/main.js | 7954 ++++++++++++++++++++++++++++ release | 5 - src/About/Asset.elm | 13 - src/About/Class.elm | 30 - src/About/Main.elm | 106 - src/Common/Class.elm | 60 - src/Common/Element.elm | 47 - src/Common/Link.elm | 42 - src/Main.elm | 209 - src/Route.elm | 93 - src/Skills/Asset.elm | 18 - src/Skills/Class.elm | 35 - src/Skills/Main.elm | 123 - src/Vsh/Class.elm | 40 - src/Vsh/Command.elm | 258 - src/Vsh/History.elm | 54 - src/Vsh/Main.elm | 296 -- src/Vsh/Text.elm | 32 - 34 files changed, 7955 insertions(+), 1591 deletions(-) delete mode 100644 .gitignore delete mode 100644 LICENSE delete mode 100644 README.md rename {dist/assets => assets}/github.svg (100%) rename {dist/assets => assets}/gmail.svg (100%) delete mode 100755 build rename {dist/css => css}/about.css (100%) rename {dist/css => css}/common.css (100%) rename {dist/css => css}/main.css (100%) rename {dist/css => css}/skills.css (100%) rename {dist/css => css}/vsh.css (100%) delete mode 100644 dist/.gitignore delete mode 100644 dist/index.html delete mode 100644 elm.json delete mode 100644 img/demo.png create mode 100644 js/main.js delete mode 100755 release delete mode 100644 src/About/Asset.elm delete mode 100644 src/About/Class.elm delete mode 100644 src/About/Main.elm delete mode 100644 src/Common/Class.elm delete mode 100644 src/Common/Element.elm delete mode 100644 src/Common/Link.elm delete mode 100644 src/Main.elm delete mode 100644 src/Route.elm delete mode 100644 src/Skills/Asset.elm delete mode 100644 src/Skills/Class.elm delete mode 100644 src/Skills/Main.elm delete mode 100644 src/Vsh/Class.elm delete mode 100644 src/Vsh/Command.elm delete mode 100644 src/Vsh/History.elm delete mode 100644 src/Vsh/Main.elm delete mode 100644 src/Vsh/Text.elm diff --git a/.gitignore b/.gitignore deleted file mode 100644 index df8f073..0000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.idea -elm-stuff \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 553c9da..0000000 --- a/LICENSE +++ /dev/null @@ -1,35 +0,0 @@ -VSH Public License v1 - -Copyright (c) 2021 Viktor A. Rozenko Voitenko - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -=== LIABILITY AND WARRANTY - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -=== SOFTWARE VERSION MESSAGE - -SOFTWARE VERSION MESSAGE IS A LINE OF TEXT THAT APPEARS UPON EXECUTION OF THE -"version" COMMAND: - - vsh vX.X.X by Viktor A. Rozenko Voitenko - -ANY PERSON OR GROUP THAT HAS A COPY OF THE SOFTWARE AND USES IT PUBLICALLY -(WHERE "PUBLIC" AFFAIRS INCLUDE BUT ARE NOT LIMITED TO USING A MODIFIED VERSION -OF THIS CODE FOR A PUBLIC WEBSITE, RESEARCH, OR DEMONSTRATION OF ANY KIND) MUST -NOT MODIFY ANY OF THE CODE RELATED TO THE SOFTWARE VERSION MESSAGE, INCLUDING -THE SEMANTIC VERSIONING TAG AND AUTHOR'S NAME. diff --git a/README.md b/README.md deleted file mode 100644 index 0ebeaae..0000000 --- a/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# My Personal Website - -![cli to my <3](img/demo.png) - -**Note:** In order to properly emulate a terminal, I had to ditch `textarea` and -use a plain `div` block, capturing key presses manually. Therefore, this app -will **not** work on mobile devices, unless your phone happens to have a -keyboard connected to it. - -## Change Log - -### v0.1.3 - -- `CTRL + ` combinations no longer result in text being displayed. They - are treated as either special bindings within terminal and produce effect - there or are interpreted as browser bindings and ignored. -- `CTRL + e` = `exit` -- `CTRL + ;` = `clear` - -### v0.1.2 - -- Stylistic changes. -- Rich commands. -- Terminal colours for contrast and clarity. - -### v0.1.1 - -- `top`, `cv`, `jobs` commands added. - -### v0.1.0 - -- Basic functionality -- `whoami`, `help`, `version`, `touch` commands. diff --git a/dist/assets/github.svg b/assets/github.svg similarity index 100% rename from dist/assets/github.svg rename to assets/github.svg diff --git a/dist/assets/gmail.svg b/assets/gmail.svg similarity index 100% rename from dist/assets/gmail.svg rename to assets/gmail.svg diff --git a/build b/build deleted file mode 100755 index 70fa7ea..0000000 --- a/build +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -LOCAL_DIST_DIR=dist - -elm make src/Main.elm --output $LOCAL_DIST_DIR/js/main.js \ No newline at end of file diff --git a/dist/css/about.css b/css/about.css similarity index 100% rename from dist/css/about.css rename to css/about.css diff --git a/dist/css/common.css b/css/common.css similarity index 100% rename from dist/css/common.css rename to css/common.css diff --git a/dist/css/main.css b/css/main.css similarity index 100% rename from dist/css/main.css rename to css/main.css diff --git a/dist/css/skills.css b/css/skills.css similarity index 100% rename from dist/css/skills.css rename to css/skills.css diff --git a/dist/css/vsh.css b/css/vsh.css similarity index 100% rename from dist/css/vsh.css rename to css/vsh.css diff --git a/dist/.gitignore b/dist/.gitignore deleted file mode 100644 index bc42fd6..0000000 --- a/dist/.gitignore +++ /dev/null @@ -1 +0,0 @@ -js \ No newline at end of file diff --git a/dist/index.html b/dist/index.html deleted file mode 100644 index a32ab63..0000000 --- a/dist/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - Loading... - - - - -
- - - diff --git a/elm.json b/elm.json deleted file mode 100644 index a0d8b33..0000000 --- a/elm.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "application", - "source-directories": [ - "src" - ], - "elm-version": "0.19.1", - "dependencies": { - "direct": { - "elm/browser": "1.0.2", - "elm/core": "1.0.5", - "elm/html": "1.0.0", - "elm/json": "1.1.3", - "elm/time": "1.0.0", - "elm/url": "1.0.0", - "pilatch/flip": "1.0.0" - }, - "indirect": { - "elm/virtual-dom": "1.0.2" - } - }, - "test-dependencies": { - "direct": {}, - "indirect": {} - } -} diff --git a/img/demo.png b/img/demo.png deleted file mode 100644 index 7b56a858f98efaeb8a3feaddba81f8b6e33a386f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170393 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 z 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 z Loading... - +
diff --git a/js/main.js b/js/main.js new file mode 100644 index 0000000..9c6db61 --- /dev/null +++ b/js/main.js @@ -0,0 +1,7954 @@ +(function(scope){ +'use strict'; + +function F(arity, fun, wrapper) { + wrapper.a = arity; + wrapper.f = fun; + return wrapper; +} + +function F2(fun) { + return F(2, fun, function(a) { return function(b) { return fun(a,b); }; }) +} +function F3(fun) { + return F(3, fun, function(a) { + return function(b) { return function(c) { return fun(a, b, c); }; }; + }); +} +function F4(fun) { + return F(4, fun, function(a) { return function(b) { return function(c) { + return function(d) { return fun(a, b, c, d); }; }; }; + }); +} +function F5(fun) { + return F(5, fun, function(a) { return function(b) { return function(c) { + return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; }; + }); +} +function F6(fun) { + return F(6, fun, function(a) { return function(b) { return function(c) { + return function(d) { return function(e) { return function(f) { + return fun(a, b, c, d, e, f); }; }; }; }; }; + }); +} +function F7(fun) { + return F(7, fun, function(a) { return function(b) { return function(c) { + return function(d) { return function(e) { return function(f) { + return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; }; + }); +} +function F8(fun) { + return F(8, fun, function(a) { return function(b) { return function(c) { + return function(d) { return function(e) { return function(f) { + return function(g) { return function(h) { + return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; }; + }); +} +function F9(fun) { + return F(9, fun, function(a) { return function(b) { return function(c) { + return function(d) { return function(e) { return function(f) { + return function(g) { return function(h) { return function(i) { + return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; }; + }); +} + +function A2(fun, a, b) { + return fun.a === 2 ? fun.f(a, b) : fun(a)(b); +} +function A3(fun, a, b, c) { + return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c); +} +function A4(fun, a, b, c, d) { + return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d); +} +function A5(fun, a, b, c, d, e) { + return fun.a === 5 ? fun.f(a, b, c, d, e) : fun(a)(b)(c)(d)(e); +} +function A6(fun, a, b, c, d, e, f) { + return fun.a === 6 ? fun.f(a, b, c, d, e, f) : fun(a)(b)(c)(d)(e)(f); +} +function A7(fun, a, b, c, d, e, f, g) { + return fun.a === 7 ? fun.f(a, b, c, d, e, f, g) : fun(a)(b)(c)(d)(e)(f)(g); +} +function A8(fun, a, b, c, d, e, f, g, h) { + return fun.a === 8 ? fun.f(a, b, c, d, e, f, g, h) : fun(a)(b)(c)(d)(e)(f)(g)(h); +} +function A9(fun, a, b, c, d, e, f, g, h, i) { + return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i); +} + + + + +// EQUALITY + +function _Utils_eq(x, y) +{ + for ( + var pair, stack = [], isEqual = _Utils_eqHelp(x, y, 0, stack); + isEqual && (pair = stack.pop()); + isEqual = _Utils_eqHelp(pair.a, pair.b, 0, stack) + ) + {} + + return isEqual; +} + +function _Utils_eqHelp(x, y, depth, stack) +{ + if (x === y) + { + return true; + } + + if (typeof x !== 'object' || x === null || y === null) + { + typeof x === 'function' && _Debug_crash(5); + return false; + } + + if (depth > 100) + { + stack.push(_Utils_Tuple2(x,y)); + return true; + } + + /**_UNUSED/ + if (x.$ === 'Set_elm_builtin') + { + x = $elm$core$Set$toList(x); + y = $elm$core$Set$toList(y); + } + if (x.$ === 'RBNode_elm_builtin' || x.$ === 'RBEmpty_elm_builtin') + { + x = $elm$core$Dict$toList(x); + y = $elm$core$Dict$toList(y); + } + //*/ + + /**/ + if (x.$ < 0) + { + x = $elm$core$Dict$toList(x); + y = $elm$core$Dict$toList(y); + } + //*/ + + for (var key in x) + { + if (!_Utils_eqHelp(x[key], y[key], depth + 1, stack)) + { + return false; + } + } + return true; +} + +var _Utils_equal = F2(_Utils_eq); +var _Utils_notEqual = F2(function(a, b) { return !_Utils_eq(a,b); }); + + + +// COMPARISONS + +// Code in Generate/JavaScript.hs, Basics.js, and List.js depends on +// the particular integer values assigned to LT, EQ, and GT. + +function _Utils_cmp(x, y, ord) +{ + if (typeof x !== 'object') + { + return x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1; + } + + /**_UNUSED/ + if (x instanceof String) + { + var a = x.valueOf(); + var b = y.valueOf(); + return a === b ? 0 : a < b ? -1 : 1; + } + //*/ + + /**/ + if (typeof x.$ === 'undefined') + //*/ + /**_UNUSED/ + if (x.$[0] === '#') + //*/ + { + return (ord = _Utils_cmp(x.a, y.a)) + ? ord + : (ord = _Utils_cmp(x.b, y.b)) + ? ord + : _Utils_cmp(x.c, y.c); + } + + // traverse conses until end of a list or a mismatch + for (; x.b && y.b && !(ord = _Utils_cmp(x.a, y.a)); x = x.b, y = y.b) {} // WHILE_CONSES + return ord || (x.b ? /*GT*/ 1 : y.b ? /*LT*/ -1 : /*EQ*/ 0); +} + +var _Utils_lt = F2(function(a, b) { return _Utils_cmp(a, b) < 0; }); +var _Utils_le = F2(function(a, b) { return _Utils_cmp(a, b) < 1; }); +var _Utils_gt = F2(function(a, b) { return _Utils_cmp(a, b) > 0; }); +var _Utils_ge = F2(function(a, b) { return _Utils_cmp(a, b) >= 0; }); + +var _Utils_compare = F2(function(x, y) +{ + var n = _Utils_cmp(x, y); + return n < 0 ? $elm$core$Basics$LT : n ? $elm$core$Basics$GT : $elm$core$Basics$EQ; +}); + + +// COMMON VALUES + +var _Utils_Tuple0 = 0; +var _Utils_Tuple0_UNUSED = { $: '#0' }; + +function _Utils_Tuple2(a, b) { return { a: a, b: b }; } +function _Utils_Tuple2_UNUSED(a, b) { return { $: '#2', a: a, b: b }; } + +function _Utils_Tuple3(a, b, c) { return { a: a, b: b, c: c }; } +function _Utils_Tuple3_UNUSED(a, b, c) { return { $: '#3', a: a, b: b, c: c }; } + +function _Utils_chr(c) { return c; } +function _Utils_chr_UNUSED(c) { return new String(c); } + + +// RECORDS + +function _Utils_update(oldRecord, updatedFields) +{ + var newRecord = {}; + + for (var key in oldRecord) + { + newRecord[key] = oldRecord[key]; + } + + for (var key in updatedFields) + { + newRecord[key] = updatedFields[key]; + } + + return newRecord; +} + + +// APPEND + +var _Utils_append = F2(_Utils_ap); + +function _Utils_ap(xs, ys) +{ + // append Strings + if (typeof xs === 'string') + { + return xs + ys; + } + + // append Lists + if (!xs.b) + { + return ys; + } + var root = _List_Cons(xs.a, ys); + xs = xs.b + for (var curr = root; xs.b; xs = xs.b) // WHILE_CONS + { + curr = curr.b = _List_Cons(xs.a, ys); + } + return root; +} + + + +var _List_Nil = { $: 0 }; +var _List_Nil_UNUSED = { $: '[]' }; + +function _List_Cons(hd, tl) { return { $: 1, a: hd, b: tl }; } +function _List_Cons_UNUSED(hd, tl) { return { $: '::', a: hd, b: tl }; } + + +var _List_cons = F2(_List_Cons); + +function _List_fromArray(arr) +{ + var out = _List_Nil; + for (var i = arr.length; i--; ) + { + out = _List_Cons(arr[i], out); + } + return out; +} + +function _List_toArray(xs) +{ + for (var out = []; xs.b; xs = xs.b) // WHILE_CONS + { + out.push(xs.a); + } + return out; +} + +var _List_map2 = F3(function(f, xs, ys) +{ + for (var arr = []; xs.b && ys.b; xs = xs.b, ys = ys.b) // WHILE_CONSES + { + arr.push(A2(f, xs.a, ys.a)); + } + return _List_fromArray(arr); +}); + +var _List_map3 = F4(function(f, xs, ys, zs) +{ + for (var arr = []; xs.b && ys.b && zs.b; xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES + { + arr.push(A3(f, xs.a, ys.a, zs.a)); + } + return _List_fromArray(arr); +}); + +var _List_map4 = F5(function(f, ws, xs, ys, zs) +{ + for (var arr = []; ws.b && xs.b && ys.b && zs.b; ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES + { + arr.push(A4(f, ws.a, xs.a, ys.a, zs.a)); + } + return _List_fromArray(arr); +}); + +var _List_map5 = F6(function(f, vs, ws, xs, ys, zs) +{ + for (var arr = []; vs.b && ws.b && xs.b && ys.b && zs.b; vs = vs.b, ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES + { + arr.push(A5(f, vs.a, ws.a, xs.a, ys.a, zs.a)); + } + return _List_fromArray(arr); +}); + +var _List_sortBy = F2(function(f, xs) +{ + return _List_fromArray(_List_toArray(xs).sort(function(a, b) { + return _Utils_cmp(f(a), f(b)); + })); +}); + +var _List_sortWith = F2(function(f, xs) +{ + return _List_fromArray(_List_toArray(xs).sort(function(a, b) { + var ord = A2(f, a, b); + return ord === $elm$core$Basics$EQ ? 0 : ord === $elm$core$Basics$LT ? -1 : 1; + })); +}); + + + +var _JsArray_empty = []; + +function _JsArray_singleton(value) +{ + return [value]; +} + +function _JsArray_length(array) +{ + return array.length; +} + +var _JsArray_initialize = F3(function(size, offset, func) +{ + var result = new Array(size); + + for (var i = 0; i < size; i++) + { + result[i] = func(offset + i); + } + + return result; +}); + +var _JsArray_initializeFromList = F2(function (max, ls) +{ + var result = new Array(max); + + for (var i = 0; i < max && ls.b; i++) + { + result[i] = ls.a; + ls = ls.b; + } + + result.length = i; + return _Utils_Tuple2(result, ls); +}); + +var _JsArray_unsafeGet = F2(function(index, array) +{ + return array[index]; +}); + +var _JsArray_unsafeSet = F3(function(index, value, array) +{ + var length = array.length; + var result = new Array(length); + + for (var i = 0; i < length; i++) + { + result[i] = array[i]; + } + + result[index] = value; + return result; +}); + +var _JsArray_push = F2(function(value, array) +{ + var length = array.length; + var result = new Array(length + 1); + + for (var i = 0; i < length; i++) + { + result[i] = array[i]; + } + + result[length] = value; + return result; +}); + +var _JsArray_foldl = F3(function(func, acc, array) +{ + var length = array.length; + + for (var i = 0; i < length; i++) + { + acc = A2(func, array[i], acc); + } + + return acc; +}); + +var _JsArray_foldr = F3(function(func, acc, array) +{ + for (var i = array.length - 1; i >= 0; i--) + { + acc = A2(func, array[i], acc); + } + + return acc; +}); + +var _JsArray_map = F2(function(func, array) +{ + var length = array.length; + var result = new Array(length); + + for (var i = 0; i < length; i++) + { + result[i] = func(array[i]); + } + + return result; +}); + +var _JsArray_indexedMap = F3(function(func, offset, array) +{ + var length = array.length; + var result = new Array(length); + + for (var i = 0; i < length; i++) + { + result[i] = A2(func, offset + i, array[i]); + } + + return result; +}); + +var _JsArray_slice = F3(function(from, to, array) +{ + return array.slice(from, to); +}); + +var _JsArray_appendN = F3(function(n, dest, source) +{ + var destLen = dest.length; + var itemsToCopy = n - destLen; + + if (itemsToCopy > source.length) + { + itemsToCopy = source.length; + } + + var size = destLen + itemsToCopy; + var result = new Array(size); + + for (var i = 0; i < destLen; i++) + { + result[i] = dest[i]; + } + + for (var i = 0; i < itemsToCopy; i++) + { + result[i + destLen] = source[i]; + } + + return result; +}); + + + +// LOG + +var _Debug_log = F2(function(tag, value) +{ + return value; +}); + +var _Debug_log_UNUSED = F2(function(tag, value) +{ + console.log(tag + ': ' + _Debug_toString(value)); + return value; +}); + + +// TODOS + +function _Debug_todo(moduleName, region) +{ + return function(message) { + _Debug_crash(8, moduleName, region, message); + }; +} + +function _Debug_todoCase(moduleName, region, value) +{ + return function(message) { + _Debug_crash(9, moduleName, region, value, message); + }; +} + + +// TO STRING + +function _Debug_toString(value) +{ + return ''; +} + +function _Debug_toString_UNUSED(value) +{ + return _Debug_toAnsiString(false, value); +} + +function _Debug_toAnsiString(ansi, value) +{ + if (typeof value === 'function') + { + return _Debug_internalColor(ansi, ''); + } + + if (typeof value === 'boolean') + { + return _Debug_ctorColor(ansi, value ? 'True' : 'False'); + } + + if (typeof value === 'number') + { + return _Debug_numberColor(ansi, value + ''); + } + + if (value instanceof String) + { + return _Debug_charColor(ansi, "'" + _Debug_addSlashes(value, true) + "'"); + } + + if (typeof value === 'string') + { + return _Debug_stringColor(ansi, '"' + _Debug_addSlashes(value, false) + '"'); + } + + if (typeof value === 'object' && '$' in value) + { + var tag = value.$; + + if (typeof tag === 'number') + { + return _Debug_internalColor(ansi, ''); + } + + if (tag[0] === '#') + { + var output = []; + for (var k in value) + { + if (k === '$') continue; + output.push(_Debug_toAnsiString(ansi, value[k])); + } + return '(' + output.join(',') + ')'; + } + + if (tag === 'Set_elm_builtin') + { + return _Debug_ctorColor(ansi, 'Set') + + _Debug_fadeColor(ansi, '.fromList') + ' ' + + _Debug_toAnsiString(ansi, $elm$core$Set$toList(value)); + } + + if (tag === 'RBNode_elm_builtin' || tag === 'RBEmpty_elm_builtin') + { + return _Debug_ctorColor(ansi, 'Dict') + + _Debug_fadeColor(ansi, '.fromList') + ' ' + + _Debug_toAnsiString(ansi, $elm$core$Dict$toList(value)); + } + + if (tag === 'Array_elm_builtin') + { + return _Debug_ctorColor(ansi, 'Array') + + _Debug_fadeColor(ansi, '.fromList') + ' ' + + _Debug_toAnsiString(ansi, $elm$core$Array$toList(value)); + } + + if (tag === '::' || tag === '[]') + { + var output = '['; + + value.b && (output += _Debug_toAnsiString(ansi, value.a), value = value.b) + + for (; value.b; value = value.b) // WHILE_CONS + { + output += ',' + _Debug_toAnsiString(ansi, value.a); + } + return output + ']'; + } + + var output = ''; + for (var i in value) + { + if (i === '$') continue; + var str = _Debug_toAnsiString(ansi, value[i]); + var c0 = str[0]; + var parenless = c0 === '{' || c0 === '(' || c0 === '[' || c0 === '<' || c0 === '"' || str.indexOf(' ') < 0; + output += ' ' + (parenless ? str : '(' + str + ')'); + } + return _Debug_ctorColor(ansi, tag) + output; + } + + if (typeof DataView === 'function' && value instanceof DataView) + { + return _Debug_stringColor(ansi, '<' + value.byteLength + ' bytes>'); + } + + if (typeof File !== 'undefined' && value instanceof File) + { + return _Debug_internalColor(ansi, '<' + value.name + '>'); + } + + if (typeof value === 'object') + { + var output = []; + for (var key in value) + { + var field = key[0] === '_' ? key.slice(1) : key; + output.push(_Debug_fadeColor(ansi, field) + ' = ' + _Debug_toAnsiString(ansi, value[key])); + } + if (output.length === 0) + { + return '{}'; + } + return '{ ' + output.join(', ') + ' }'; + } + + return _Debug_internalColor(ansi, ''); +} + +function _Debug_addSlashes(str, isChar) +{ + var s = str + .replace(/\\/g, '\\\\') + .replace(/\n/g, '\\n') + .replace(/\t/g, '\\t') + .replace(/\r/g, '\\r') + .replace(/\v/g, '\\v') + .replace(/\0/g, '\\0'); + + if (isChar) + { + return s.replace(/\'/g, '\\\''); + } + else + { + return s.replace(/\"/g, '\\"'); + } +} + +function _Debug_ctorColor(ansi, string) +{ + return ansi ? '\x1b[96m' + string + '\x1b[0m' : string; +} + +function _Debug_numberColor(ansi, string) +{ + return ansi ? '\x1b[95m' + string + '\x1b[0m' : string; +} + +function _Debug_stringColor(ansi, string) +{ + return ansi ? '\x1b[93m' + string + '\x1b[0m' : string; +} + +function _Debug_charColor(ansi, string) +{ + return ansi ? '\x1b[92m' + string + '\x1b[0m' : string; +} + +function _Debug_fadeColor(ansi, string) +{ + return ansi ? '\x1b[37m' + string + '\x1b[0m' : string; +} + +function _Debug_internalColor(ansi, string) +{ + return ansi ? '\x1b[36m' + string + '\x1b[0m' : string; +} + +function _Debug_toHexDigit(n) +{ + return String.fromCharCode(n < 10 ? 48 + n : 55 + n); +} + + +// CRASH + + +function _Debug_crash(identifier) +{ + throw new Error('https://github.com/elm/core/blob/1.0.0/hints/' + identifier + '.md'); +} + + +function _Debug_crash_UNUSED(identifier, fact1, fact2, fact3, fact4) +{ + switch(identifier) + { + case 0: + throw new Error('What node should I take over? In JavaScript I need something like:\n\n Elm.Main.init({\n node: document.getElementById("elm-node")\n })\n\nYou need to do this with any Browser.sandbox or Browser.element program.'); + + case 1: + throw new Error('Browser.application programs cannot handle URLs like this:\n\n ' + document.location.href + '\n\nWhat is the root? The root of your file system? Try looking at this program with `elm reactor` or some other server.'); + + case 2: + var jsonErrorString = fact1; + throw new Error('Problem with the flags given to your Elm program on initialization.\n\n' + jsonErrorString); + + case 3: + var portName = fact1; + throw new Error('There can only be one port named `' + portName + '`, but your program has multiple.'); + + case 4: + var portName = fact1; + var problem = fact2; + throw new Error('Trying to send an unexpected type of value through port `' + portName + '`:\n' + problem); + + case 5: + throw new Error('Trying to use `(==)` on functions.\nThere is no way to know if functions are "the same" in the Elm sense.\nRead more about this at https://package.elm-lang.org/packages/elm/core/latest/Basics#== which describes why it is this way and what the better version will look like.'); + + case 6: + var moduleName = fact1; + throw new Error('Your page is loading multiple Elm scripts with a module named ' + moduleName + '. Maybe a duplicate script is getting loaded accidentally? If not, rename one of them so I know which is which!'); + + case 8: + var moduleName = fact1; + var region = fact2; + var message = fact3; + throw new Error('TODO in module `' + moduleName + '` ' + _Debug_regionToString(region) + '\n\n' + message); + + case 9: + var moduleName = fact1; + var region = fact2; + var value = fact3; + var message = fact4; + throw new Error( + 'TODO in module `' + moduleName + '` from the `case` expression ' + + _Debug_regionToString(region) + '\n\nIt received the following value:\n\n ' + + _Debug_toString(value).replace('\n', '\n ') + + '\n\nBut the branch that handles it says:\n\n ' + message.replace('\n', '\n ') + ); + + case 10: + throw new Error('Bug in https://github.com/elm/virtual-dom/issues'); + + case 11: + throw new Error('Cannot perform mod 0. Division by zero error.'); + } +} + +function _Debug_regionToString(region) +{ + if (region.L.C === region.R.C) + { + return 'on line ' + region.L.C; + } + return 'on lines ' + region.L.C + ' through ' + region.R.C; +} + + + +// MATH + +var _Basics_add = F2(function(a, b) { return a + b; }); +var _Basics_sub = F2(function(a, b) { return a - b; }); +var _Basics_mul = F2(function(a, b) { return a * b; }); +var _Basics_fdiv = F2(function(a, b) { return a / b; }); +var _Basics_idiv = F2(function(a, b) { return (a / b) | 0; }); +var _Basics_pow = F2(Math.pow); + +var _Basics_remainderBy = F2(function(b, a) { return a % b; }); + +// https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf +var _Basics_modBy = F2(function(modulus, x) +{ + var answer = x % modulus; + return modulus === 0 + ? _Debug_crash(11) + : + ((answer > 0 && modulus < 0) || (answer < 0 && modulus > 0)) + ? answer + modulus + : answer; +}); + + +// TRIGONOMETRY + +var _Basics_pi = Math.PI; +var _Basics_e = Math.E; +var _Basics_cos = Math.cos; +var _Basics_sin = Math.sin; +var _Basics_tan = Math.tan; +var _Basics_acos = Math.acos; +var _Basics_asin = Math.asin; +var _Basics_atan = Math.atan; +var _Basics_atan2 = F2(Math.atan2); + + +// MORE MATH + +function _Basics_toFloat(x) { return x; } +function _Basics_truncate(n) { return n | 0; } +function _Basics_isInfinite(n) { return n === Infinity || n === -Infinity; } + +var _Basics_ceiling = Math.ceil; +var _Basics_floor = Math.floor; +var _Basics_round = Math.round; +var _Basics_sqrt = Math.sqrt; +var _Basics_log = Math.log; +var _Basics_isNaN = isNaN; + + +// BOOLEANS + +function _Basics_not(bool) { return !bool; } +var _Basics_and = F2(function(a, b) { return a && b; }); +var _Basics_or = F2(function(a, b) { return a || b; }); +var _Basics_xor = F2(function(a, b) { return a !== b; }); + + + +var _String_cons = F2(function(chr, str) +{ + return chr + str; +}); + +function _String_uncons(string) +{ + var word = string.charCodeAt(0); + return !isNaN(word) + ? $elm$core$Maybe$Just( + 0xD800 <= word && word <= 0xDBFF + ? _Utils_Tuple2(_Utils_chr(string[0] + string[1]), string.slice(2)) + : _Utils_Tuple2(_Utils_chr(string[0]), string.slice(1)) + ) + : $elm$core$Maybe$Nothing; +} + +var _String_append = F2(function(a, b) +{ + return a + b; +}); + +function _String_length(str) +{ + return str.length; +} + +var _String_map = F2(function(func, string) +{ + var len = string.length; + var array = new Array(len); + var i = 0; + while (i < len) + { + var word = string.charCodeAt(i); + if (0xD800 <= word && word <= 0xDBFF) + { + array[i] = func(_Utils_chr(string[i] + string[i+1])); + i += 2; + continue; + } + array[i] = func(_Utils_chr(string[i])); + i++; + } + return array.join(''); +}); + +var _String_filter = F2(function(isGood, str) +{ + var arr = []; + var len = str.length; + var i = 0; + while (i < len) + { + var char = str[i]; + var word = str.charCodeAt(i); + i++; + if (0xD800 <= word && word <= 0xDBFF) + { + char += str[i]; + i++; + } + + if (isGood(_Utils_chr(char))) + { + arr.push(char); + } + } + return arr.join(''); +}); + +function _String_reverse(str) +{ + var len = str.length; + var arr = new Array(len); + var i = 0; + while (i < len) + { + var word = str.charCodeAt(i); + if (0xD800 <= word && word <= 0xDBFF) + { + arr[len - i] = str[i + 1]; + i++; + arr[len - i] = str[i - 1]; + i++; + } + else + { + arr[len - i] = str[i]; + i++; + } + } + return arr.join(''); +} + +var _String_foldl = F3(function(func, state, string) +{ + var len = string.length; + var i = 0; + while (i < len) + { + var char = string[i]; + var word = string.charCodeAt(i); + i++; + if (0xD800 <= word && word <= 0xDBFF) + { + char += string[i]; + i++; + } + state = A2(func, _Utils_chr(char), state); + } + return state; +}); + +var _String_foldr = F3(function(func, state, string) +{ + var i = string.length; + while (i--) + { + var char = string[i]; + var word = string.charCodeAt(i); + if (0xDC00 <= word && word <= 0xDFFF) + { + i--; + char = string[i] + char; + } + state = A2(func, _Utils_chr(char), state); + } + return state; +}); + +var _String_split = F2(function(sep, str) +{ + return str.split(sep); +}); + +var _String_join = F2(function(sep, strs) +{ + return strs.join(sep); +}); + +var _String_slice = F3(function(start, end, str) { + return str.slice(start, end); +}); + +function _String_trim(str) +{ + return str.trim(); +} + +function _String_trimLeft(str) +{ + return str.replace(/^\s+/, ''); +} + +function _String_trimRight(str) +{ + return str.replace(/\s+$/, ''); +} + +function _String_words(str) +{ + return _List_fromArray(str.trim().split(/\s+/g)); +} + +function _String_lines(str) +{ + return _List_fromArray(str.split(/\r\n|\r|\n/g)); +} + +function _String_toUpper(str) +{ + return str.toUpperCase(); +} + +function _String_toLower(str) +{ + return str.toLowerCase(); +} + +var _String_any = F2(function(isGood, string) +{ + var i = string.length; + while (i--) + { + var char = string[i]; + var word = string.charCodeAt(i); + if (0xDC00 <= word && word <= 0xDFFF) + { + i--; + char = string[i] + char; + } + if (isGood(_Utils_chr(char))) + { + return true; + } + } + return false; +}); + +var _String_all = F2(function(isGood, string) +{ + var i = string.length; + while (i--) + { + var char = string[i]; + var word = string.charCodeAt(i); + if (0xDC00 <= word && word <= 0xDFFF) + { + i--; + char = string[i] + char; + } + if (!isGood(_Utils_chr(char))) + { + return false; + } + } + return true; +}); + +var _String_contains = F2(function(sub, str) +{ + return str.indexOf(sub) > -1; +}); + +var _String_startsWith = F2(function(sub, str) +{ + return str.indexOf(sub) === 0; +}); + +var _String_endsWith = F2(function(sub, str) +{ + return str.length >= sub.length && + str.lastIndexOf(sub) === str.length - sub.length; +}); + +var _String_indexes = F2(function(sub, str) +{ + var subLen = sub.length; + + if (subLen < 1) + { + return _List_Nil; + } + + var i = 0; + var is = []; + + while ((i = str.indexOf(sub, i)) > -1) + { + is.push(i); + i = i + subLen; + } + + return _List_fromArray(is); +}); + + +// TO STRING + +function _String_fromNumber(number) +{ + return number + ''; +} + + +// INT CONVERSIONS + +function _String_toInt(str) +{ + var total = 0; + var code0 = str.charCodeAt(0); + var start = code0 == 0x2B /* + */ || code0 == 0x2D /* - */ ? 1 : 0; + + for (var i = start; i < str.length; ++i) + { + var code = str.charCodeAt(i); + if (code < 0x30 || 0x39 < code) + { + return $elm$core$Maybe$Nothing; + } + total = 10 * total + code - 0x30; + } + + return i == start + ? $elm$core$Maybe$Nothing + : $elm$core$Maybe$Just(code0 == 0x2D ? -total : total); +} + + +// FLOAT CONVERSIONS + +function _String_toFloat(s) +{ + // check if it is a hex, octal, or binary number + if (s.length === 0 || /[\sxbo]/.test(s)) + { + return $elm$core$Maybe$Nothing; + } + var n = +s; + // faster isNaN check + return n === n ? $elm$core$Maybe$Just(n) : $elm$core$Maybe$Nothing; +} + +function _String_fromList(chars) +{ + return _List_toArray(chars).join(''); +} + + + + +function _Char_toCode(char) +{ + var code = char.charCodeAt(0); + if (0xD800 <= code && code <= 0xDBFF) + { + return (code - 0xD800) * 0x400 + char.charCodeAt(1) - 0xDC00 + 0x10000 + } + return code; +} + +function _Char_fromCode(code) +{ + return _Utils_chr( + (code < 0 || 0x10FFFF < code) + ? '\uFFFD' + : + (code <= 0xFFFF) + ? String.fromCharCode(code) + : + (code -= 0x10000, + String.fromCharCode(Math.floor(code / 0x400) + 0xD800, code % 0x400 + 0xDC00) + ) + ); +} + +function _Char_toUpper(char) +{ + return _Utils_chr(char.toUpperCase()); +} + +function _Char_toLower(char) +{ + return _Utils_chr(char.toLowerCase()); +} + +function _Char_toLocaleUpper(char) +{ + return _Utils_chr(char.toLocaleUpperCase()); +} + +function _Char_toLocaleLower(char) +{ + return _Utils_chr(char.toLocaleLowerCase()); +} + + + +/**_UNUSED/ +function _Json_errorToString(error) +{ + return $elm$json$Json$Decode$errorToString(error); +} +//*/ + + +// CORE DECODERS + +function _Json_succeed(msg) +{ + return { + $: 0, + a: msg + }; +} + +function _Json_fail(msg) +{ + return { + $: 1, + a: msg + }; +} + +function _Json_decodePrim(decoder) +{ + return { $: 2, b: decoder }; +} + +var _Json_decodeInt = _Json_decodePrim(function(value) { + return (typeof value !== 'number') + ? _Json_expecting('an INT', value) + : + (-2147483647 < value && value < 2147483647 && (value | 0) === value) + ? $elm$core$Result$Ok(value) + : + (isFinite(value) && !(value % 1)) + ? $elm$core$Result$Ok(value) + : _Json_expecting('an INT', value); +}); + +var _Json_decodeBool = _Json_decodePrim(function(value) { + return (typeof value === 'boolean') + ? $elm$core$Result$Ok(value) + : _Json_expecting('a BOOL', value); +}); + +var _Json_decodeFloat = _Json_decodePrim(function(value) { + return (typeof value === 'number') + ? $elm$core$Result$Ok(value) + : _Json_expecting('a FLOAT', value); +}); + +var _Json_decodeValue = _Json_decodePrim(function(value) { + return $elm$core$Result$Ok(_Json_wrap(value)); +}); + +var _Json_decodeString = _Json_decodePrim(function(value) { + return (typeof value === 'string') + ? $elm$core$Result$Ok(value) + : (value instanceof String) + ? $elm$core$Result$Ok(value + '') + : _Json_expecting('a STRING', value); +}); + +function _Json_decodeList(decoder) { return { $: 3, b: decoder }; } +function _Json_decodeArray(decoder) { return { $: 4, b: decoder }; } + +function _Json_decodeNull(value) { return { $: 5, c: value }; } + +var _Json_decodeField = F2(function(field, decoder) +{ + return { + $: 6, + d: field, + b: decoder + }; +}); + +var _Json_decodeIndex = F2(function(index, decoder) +{ + return { + $: 7, + e: index, + b: decoder + }; +}); + +function _Json_decodeKeyValuePairs(decoder) +{ + return { + $: 8, + b: decoder + }; +} + +function _Json_mapMany(f, decoders) +{ + return { + $: 9, + f: f, + g: decoders + }; +} + +var _Json_andThen = F2(function(callback, decoder) +{ + return { + $: 10, + b: decoder, + h: callback + }; +}); + +function _Json_oneOf(decoders) +{ + return { + $: 11, + g: decoders + }; +} + + +// DECODING OBJECTS + +var _Json_map1 = F2(function(f, d1) +{ + return _Json_mapMany(f, [d1]); +}); + +var _Json_map2 = F3(function(f, d1, d2) +{ + return _Json_mapMany(f, [d1, d2]); +}); + +var _Json_map3 = F4(function(f, d1, d2, d3) +{ + return _Json_mapMany(f, [d1, d2, d3]); +}); + +var _Json_map4 = F5(function(f, d1, d2, d3, d4) +{ + return _Json_mapMany(f, [d1, d2, d3, d4]); +}); + +var _Json_map5 = F6(function(f, d1, d2, d3, d4, d5) +{ + return _Json_mapMany(f, [d1, d2, d3, d4, d5]); +}); + +var _Json_map6 = F7(function(f, d1, d2, d3, d4, d5, d6) +{ + return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6]); +}); + +var _Json_map7 = F8(function(f, d1, d2, d3, d4, d5, d6, d7) +{ + return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7]); +}); + +var _Json_map8 = F9(function(f, d1, d2, d3, d4, d5, d6, d7, d8) +{ + return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7, d8]); +}); + + +// DECODE + +var _Json_runOnString = F2(function(decoder, string) +{ + try + { + var value = JSON.parse(string); + return _Json_runHelp(decoder, value); + } + catch (e) + { + return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'This is not valid JSON! ' + e.message, _Json_wrap(string))); + } +}); + +var _Json_run = F2(function(decoder, value) +{ + return _Json_runHelp(decoder, _Json_unwrap(value)); +}); + +function _Json_runHelp(decoder, value) +{ + switch (decoder.$) + { + case 2: + return decoder.b(value); + + case 5: + return (value === null) + ? $elm$core$Result$Ok(decoder.c) + : _Json_expecting('null', value); + + case 3: + if (!_Json_isArray(value)) + { + return _Json_expecting('a LIST', value); + } + return _Json_runArrayDecoder(decoder.b, value, _List_fromArray); + + case 4: + if (!_Json_isArray(value)) + { + return _Json_expecting('an ARRAY', value); + } + return _Json_runArrayDecoder(decoder.b, value, _Json_toElmArray); + + case 6: + var field = decoder.d; + if (typeof value !== 'object' || value === null || !(field in value)) + { + return _Json_expecting('an OBJECT with a field named `' + field + '`', value); + } + var result = _Json_runHelp(decoder.b, value[field]); + return ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, field, result.a)); + + case 7: + var index = decoder.e; + if (!_Json_isArray(value)) + { + return _Json_expecting('an ARRAY', value); + } + if (index >= value.length) + { + return _Json_expecting('a LONGER array. Need index ' + index + ' but only see ' + value.length + ' entries', value); + } + var result = _Json_runHelp(decoder.b, value[index]); + return ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, index, result.a)); + + case 8: + if (typeof value !== 'object' || value === null || _Json_isArray(value)) + { + return _Json_expecting('an OBJECT', value); + } + + var keyValuePairs = _List_Nil; + // TODO test perf of Object.keys and switch when support is good enough + for (var key in value) + { + if (value.hasOwnProperty(key)) + { + var result = _Json_runHelp(decoder.b, value[key]); + if (!$elm$core$Result$isOk(result)) + { + return $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, key, result.a)); + } + keyValuePairs = _List_Cons(_Utils_Tuple2(key, result.a), keyValuePairs); + } + } + return $elm$core$Result$Ok($elm$core$List$reverse(keyValuePairs)); + + case 9: + var answer = decoder.f; + var decoders = decoder.g; + for (var i = 0; i < decoders.length; i++) + { + var result = _Json_runHelp(decoders[i], value); + if (!$elm$core$Result$isOk(result)) + { + return result; + } + answer = answer(result.a); + } + return $elm$core$Result$Ok(answer); + + case 10: + var result = _Json_runHelp(decoder.b, value); + return (!$elm$core$Result$isOk(result)) + ? result + : _Json_runHelp(decoder.h(result.a), value); + + case 11: + var errors = _List_Nil; + for (var temp = decoder.g; temp.b; temp = temp.b) // WHILE_CONS + { + var result = _Json_runHelp(temp.a, value); + if ($elm$core$Result$isOk(result)) + { + return result; + } + errors = _List_Cons(result.a, errors); + } + return $elm$core$Result$Err($elm$json$Json$Decode$OneOf($elm$core$List$reverse(errors))); + + case 1: + return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, decoder.a, _Json_wrap(value))); + + case 0: + return $elm$core$Result$Ok(decoder.a); + } +} + +function _Json_runArrayDecoder(decoder, value, toElmValue) +{ + var len = value.length; + var array = new Array(len); + for (var i = 0; i < len; i++) + { + var result = _Json_runHelp(decoder, value[i]); + if (!$elm$core$Result$isOk(result)) + { + return $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, i, result.a)); + } + array[i] = result.a; + } + return $elm$core$Result$Ok(toElmValue(array)); +} + +function _Json_isArray(value) +{ + return Array.isArray(value) || (typeof FileList !== 'undefined' && value instanceof FileList); +} + +function _Json_toElmArray(array) +{ + return A2($elm$core$Array$initialize, array.length, function(i) { return array[i]; }); +} + +function _Json_expecting(type, value) +{ + return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'Expecting ' + type, _Json_wrap(value))); +} + + +// EQUALITY + +function _Json_equality(x, y) +{ + if (x === y) + { + return true; + } + + if (x.$ !== y.$) + { + return false; + } + + switch (x.$) + { + case 0: + case 1: + return x.a === y.a; + + case 2: + return x.b === y.b; + + case 5: + return x.c === y.c; + + case 3: + case 4: + case 8: + return _Json_equality(x.b, y.b); + + case 6: + return x.d === y.d && _Json_equality(x.b, y.b); + + case 7: + return x.e === y.e && _Json_equality(x.b, y.b); + + case 9: + return x.f === y.f && _Json_listEquality(x.g, y.g); + + case 10: + return x.h === y.h && _Json_equality(x.b, y.b); + + case 11: + return _Json_listEquality(x.g, y.g); + } +} + +function _Json_listEquality(aDecoders, bDecoders) +{ + var len = aDecoders.length; + if (len !== bDecoders.length) + { + return false; + } + for (var i = 0; i < len; i++) + { + if (!_Json_equality(aDecoders[i], bDecoders[i])) + { + return false; + } + } + return true; +} + + +// ENCODE + +var _Json_encode = F2(function(indentLevel, value) +{ + return JSON.stringify(_Json_unwrap(value), null, indentLevel) + ''; +}); + +function _Json_wrap_UNUSED(value) { return { $: 0, a: value }; } +function _Json_unwrap_UNUSED(value) { return value.a; } + +function _Json_wrap(value) { return value; } +function _Json_unwrap(value) { return value; } + +function _Json_emptyArray() { return []; } +function _Json_emptyObject() { return {}; } + +var _Json_addField = F3(function(key, value, object) +{ + object[key] = _Json_unwrap(value); + return object; +}); + +function _Json_addEntry(func) +{ + return F2(function(entry, array) + { + array.push(_Json_unwrap(func(entry))); + return array; + }); +} + +var _Json_encodeNull = _Json_wrap(null); + + + +// TASKS + +function _Scheduler_succeed(value) +{ + return { + $: 0, + a: value + }; +} + +function _Scheduler_fail(error) +{ + return { + $: 1, + a: error + }; +} + +function _Scheduler_binding(callback) +{ + return { + $: 2, + b: callback, + c: null + }; +} + +var _Scheduler_andThen = F2(function(callback, task) +{ + return { + $: 3, + b: callback, + d: task + }; +}); + +var _Scheduler_onError = F2(function(callback, task) +{ + return { + $: 4, + b: callback, + d: task + }; +}); + +function _Scheduler_receive(callback) +{ + return { + $: 5, + b: callback + }; +} + + +// PROCESSES + +var _Scheduler_guid = 0; + +function _Scheduler_rawSpawn(task) +{ + var proc = { + $: 0, + e: _Scheduler_guid++, + f: task, + g: null, + h: [] + }; + + _Scheduler_enqueue(proc); + + return proc; +} + +function _Scheduler_spawn(task) +{ + return _Scheduler_binding(function(callback) { + callback(_Scheduler_succeed(_Scheduler_rawSpawn(task))); + }); +} + +function _Scheduler_rawSend(proc, msg) +{ + proc.h.push(msg); + _Scheduler_enqueue(proc); +} + +var _Scheduler_send = F2(function(proc, msg) +{ + return _Scheduler_binding(function(callback) { + _Scheduler_rawSend(proc, msg); + callback(_Scheduler_succeed(_Utils_Tuple0)); + }); +}); + +function _Scheduler_kill(proc) +{ + return _Scheduler_binding(function(callback) { + var task = proc.f; + if (task.$ === 2 && task.c) + { + task.c(); + } + + proc.f = null; + + callback(_Scheduler_succeed(_Utils_Tuple0)); + }); +} + + +/* STEP PROCESSES + +type alias Process = + { $ : tag + , id : unique_id + , root : Task + , stack : null | { $: SUCCEED | FAIL, a: callback, b: stack } + , mailbox : [msg] + } + +*/ + + +var _Scheduler_working = false; +var _Scheduler_queue = []; + + +function _Scheduler_enqueue(proc) +{ + _Scheduler_queue.push(proc); + if (_Scheduler_working) + { + return; + } + _Scheduler_working = true; + while (proc = _Scheduler_queue.shift()) + { + _Scheduler_step(proc); + } + _Scheduler_working = false; +} + + +function _Scheduler_step(proc) +{ + while (proc.f) + { + var rootTag = proc.f.$; + if (rootTag === 0 || rootTag === 1) + { + while (proc.g && proc.g.$ !== rootTag) + { + proc.g = proc.g.i; + } + if (!proc.g) + { + return; + } + proc.f = proc.g.b(proc.f.a); + proc.g = proc.g.i; + } + else if (rootTag === 2) + { + proc.f.c = proc.f.b(function(newRoot) { + proc.f = newRoot; + _Scheduler_enqueue(proc); + }); + return; + } + else if (rootTag === 5) + { + if (proc.h.length === 0) + { + return; + } + proc.f = proc.f.b(proc.h.shift()); + } + else // if (rootTag === 3 || rootTag === 4) + { + proc.g = { + $: rootTag === 3 ? 0 : 1, + b: proc.f.b, + i: proc.g + }; + proc.f = proc.f.d; + } + } +} + + + +function _Process_sleep(time) +{ + return _Scheduler_binding(function(callback) { + var id = setTimeout(function() { + callback(_Scheduler_succeed(_Utils_Tuple0)); + }, time); + + return function() { clearTimeout(id); }; + }); +} + + + + +// PROGRAMS + + +var _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args) +{ + return _Platform_initialize( + flagDecoder, + args, + impl.at, + impl.aE, + impl.aD, + function() { return function() {} } + ); +}); + + + +// INITIALIZE A PROGRAM + + +function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder) +{ + var result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined)); + $elm$core$Result$isOk(result) || _Debug_crash(2 /**_UNUSED/, _Json_errorToString(result.a) /**/); + var managers = {}; + var initPair = init(result.a); + var model = initPair.a; + var stepper = stepperBuilder(sendToApp, model); + var ports = _Platform_setupEffects(managers, sendToApp); + + function sendToApp(msg, viewMetadata) + { + var pair = A2(update, msg, model); + stepper(model = pair.a, viewMetadata); + _Platform_enqueueEffects(managers, pair.b, subscriptions(model)); + } + + _Platform_enqueueEffects(managers, initPair.b, subscriptions(model)); + + return ports ? { ports: ports } : {}; +} + + + +// TRACK PRELOADS +// +// This is used by code in elm/browser and elm/http +// to register any HTTP requests that are triggered by init. +// + + +var _Platform_preload; + + +function _Platform_registerPreload(url) +{ + _Platform_preload.add(url); +} + + + +// EFFECT MANAGERS + + +var _Platform_effectManagers = {}; + + +function _Platform_setupEffects(managers, sendToApp) +{ + var ports; + + // setup all necessary effect managers + for (var key in _Platform_effectManagers) + { + var manager = _Platform_effectManagers[key]; + + if (manager.a) + { + ports = ports || {}; + ports[key] = manager.a(key, sendToApp); + } + + managers[key] = _Platform_instantiateManager(manager, sendToApp); + } + + return ports; +} + + +function _Platform_createManager(init, onEffects, onSelfMsg, cmdMap, subMap) +{ + return { + b: init, + c: onEffects, + d: onSelfMsg, + e: cmdMap, + f: subMap + }; +} + + +function _Platform_instantiateManager(info, sendToApp) +{ + var router = { + g: sendToApp, + h: undefined + }; + + var onEffects = info.c; + var onSelfMsg = info.d; + var cmdMap = info.e; + var subMap = info.f; + + function loop(state) + { + return A2(_Scheduler_andThen, loop, _Scheduler_receive(function(msg) + { + var value = msg.a; + + if (msg.$ === 0) + { + return A3(onSelfMsg, router, value, state); + } + + return cmdMap && subMap + ? A4(onEffects, router, value.i, value.j, state) + : A3(onEffects, router, cmdMap ? value.i : value.j, state); + })); + } + + return router.h = _Scheduler_rawSpawn(A2(_Scheduler_andThen, loop, info.b)); +} + + + +// ROUTING + + +var _Platform_sendToApp = F2(function(router, msg) +{ + return _Scheduler_binding(function(callback) + { + router.g(msg); + callback(_Scheduler_succeed(_Utils_Tuple0)); + }); +}); + + +var _Platform_sendToSelf = F2(function(router, msg) +{ + return A2(_Scheduler_send, router.h, { + $: 0, + a: msg + }); +}); + + + +// BAGS + + +function _Platform_leaf(home) +{ + return function(value) + { + return { + $: 1, + k: home, + l: value + }; + }; +} + + +function _Platform_batch(list) +{ + return { + $: 2, + m: list + }; +} + + +var _Platform_map = F2(function(tagger, bag) +{ + return { + $: 3, + n: tagger, + o: bag + } +}); + + + +// PIPE BAGS INTO EFFECT MANAGERS +// +// Effects must be queued! +// +// Say your init contains a synchronous command, like Time.now or Time.here +// +// - This will produce a batch of effects (FX_1) +// - The synchronous task triggers the subsequent `update` call +// - This will produce a batch of effects (FX_2) +// +// If we just start dispatching FX_2, subscriptions from FX_2 can be processed +// before subscriptions from FX_1. No good! Earlier versions of this code had +// this problem, leading to these reports: +// +// https://github.com/elm/core/issues/980 +// https://github.com/elm/core/pull/981 +// https://github.com/elm/compiler/issues/1776 +// +// The queue is necessary to avoid ordering issues for synchronous commands. + + +// Why use true/false here? Why not just check the length of the queue? +// The goal is to detect "are we currently dispatching effects?" If we +// are, we need to bail and let the ongoing while loop handle things. +// +// Now say the queue has 1 element. When we dequeue the final element, +// the queue will be empty, but we are still actively dispatching effects. +// So you could get queue jumping in a really tricky category of cases. +// +var _Platform_effectsQueue = []; +var _Platform_effectsActive = false; + + +function _Platform_enqueueEffects(managers, cmdBag, subBag) +{ + _Platform_effectsQueue.push({ p: managers, q: cmdBag, r: subBag }); + + if (_Platform_effectsActive) return; + + _Platform_effectsActive = true; + for (var fx; fx = _Platform_effectsQueue.shift(); ) + { + _Platform_dispatchEffects(fx.p, fx.q, fx.r); + } + _Platform_effectsActive = false; +} + + +function _Platform_dispatchEffects(managers, cmdBag, subBag) +{ + var effectsDict = {}; + _Platform_gatherEffects(true, cmdBag, effectsDict, null); + _Platform_gatherEffects(false, subBag, effectsDict, null); + + for (var home in managers) + { + _Scheduler_rawSend(managers[home], { + $: 'fx', + a: effectsDict[home] || { i: _List_Nil, j: _List_Nil } + }); + } +} + + +function _Platform_gatherEffects(isCmd, bag, effectsDict, taggers) +{ + switch (bag.$) + { + case 1: + var home = bag.k; + var effect = _Platform_toEffect(isCmd, home, taggers, bag.l); + effectsDict[home] = _Platform_insert(isCmd, effect, effectsDict[home]); + return; + + case 2: + for (var list = bag.m; list.b; list = list.b) // WHILE_CONS + { + _Platform_gatherEffects(isCmd, list.a, effectsDict, taggers); + } + return; + + case 3: + _Platform_gatherEffects(isCmd, bag.o, effectsDict, { + s: bag.n, + t: taggers + }); + return; + } +} + + +function _Platform_toEffect(isCmd, home, taggers, value) +{ + function applyTaggers(x) + { + for (var temp = taggers; temp; temp = temp.t) + { + x = temp.s(x); + } + return x; + } + + var map = isCmd + ? _Platform_effectManagers[home].e + : _Platform_effectManagers[home].f; + + return A2(map, applyTaggers, value) +} + + +function _Platform_insert(isCmd, newEffect, effects) +{ + effects = effects || { i: _List_Nil, j: _List_Nil }; + + isCmd + ? (effects.i = _List_Cons(newEffect, effects.i)) + : (effects.j = _List_Cons(newEffect, effects.j)); + + return effects; +} + + + +// PORTS + + +function _Platform_checkPortName(name) +{ + if (_Platform_effectManagers[name]) + { + _Debug_crash(3, name) + } +} + + + +// OUTGOING PORTS + + +function _Platform_outgoingPort(name, converter) +{ + _Platform_checkPortName(name); + _Platform_effectManagers[name] = { + e: _Platform_outgoingPortMap, + u: converter, + a: _Platform_setupOutgoingPort + }; + return _Platform_leaf(name); +} + + +var _Platform_outgoingPortMap = F2(function(tagger, value) { return value; }); + + +function _Platform_setupOutgoingPort(name) +{ + var subs = []; + var converter = _Platform_effectManagers[name].u; + + // CREATE MANAGER + + var init = _Process_sleep(0); + + _Platform_effectManagers[name].b = init; + _Platform_effectManagers[name].c = F3(function(router, cmdList, state) + { + for ( ; cmdList.b; cmdList = cmdList.b) // WHILE_CONS + { + // grab a separate reference to subs in case unsubscribe is called + var currentSubs = subs; + var value = _Json_unwrap(converter(cmdList.a)); + for (var i = 0; i < currentSubs.length; i++) + { + currentSubs[i](value); + } + } + return init; + }); + + // PUBLIC API + + function subscribe(callback) + { + subs.push(callback); + } + + function unsubscribe(callback) + { + // copy subs into a new array in case unsubscribe is called within a + // subscribed callback + subs = subs.slice(); + var index = subs.indexOf(callback); + if (index >= 0) + { + subs.splice(index, 1); + } + } + + return { + subscribe: subscribe, + unsubscribe: unsubscribe + }; +} + + + +// INCOMING PORTS + + +function _Platform_incomingPort(name, converter) +{ + _Platform_checkPortName(name); + _Platform_effectManagers[name] = { + f: _Platform_incomingPortMap, + u: converter, + a: _Platform_setupIncomingPort + }; + return _Platform_leaf(name); +} + + +var _Platform_incomingPortMap = F2(function(tagger, finalTagger) +{ + return function(value) + { + return tagger(finalTagger(value)); + }; +}); + + +function _Platform_setupIncomingPort(name, sendToApp) +{ + var subs = _List_Nil; + var converter = _Platform_effectManagers[name].u; + + // CREATE MANAGER + + var init = _Scheduler_succeed(null); + + _Platform_effectManagers[name].b = init; + _Platform_effectManagers[name].c = F3(function(router, subList, state) + { + subs = subList; + return init; + }); + + // PUBLIC API + + function send(incomingValue) + { + var result = A2(_Json_run, converter, _Json_wrap(incomingValue)); + + $elm$core$Result$isOk(result) || _Debug_crash(4, name, result.a); + + var value = result.a; + for (var temp = subs; temp.b; temp = temp.b) // WHILE_CONS + { + sendToApp(temp.a(value)); + } + } + + return { send: send }; +} + + + +// EXPORT ELM MODULES +// +// Have DEBUG and PROD versions so that we can (1) give nicer errors in +// debug mode and (2) not pay for the bits needed for that in prod mode. +// + + +function _Platform_export(exports) +{ + scope['Elm'] + ? _Platform_mergeExportsProd(scope['Elm'], exports) + : scope['Elm'] = exports; +} + + +function _Platform_mergeExportsProd(obj, exports) +{ + for (var name in exports) + { + (name in obj) + ? (name == 'init') + ? _Debug_crash(6) + : _Platform_mergeExportsProd(obj[name], exports[name]) + : (obj[name] = exports[name]); + } +} + + +function _Platform_export_UNUSED(exports) +{ + scope['Elm'] + ? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports) + : scope['Elm'] = exports; +} + + +function _Platform_mergeExportsDebug(moduleName, obj, exports) +{ + for (var name in exports) + { + (name in obj) + ? (name == 'init') + ? _Debug_crash(6, moduleName) + : _Platform_mergeExportsDebug(moduleName + '.' + name, obj[name], exports[name]) + : (obj[name] = exports[name]); + } +} + + + + +// HELPERS + + +var _VirtualDom_divertHrefToApp; + +var _VirtualDom_doc = typeof document !== 'undefined' ? document : {}; + + +function _VirtualDom_appendChild(parent, child) +{ + parent.appendChild(child); +} + +var _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args) +{ + // NOTE: this function needs _Platform_export available to work + + /**/ + var node = args['node']; + //*/ + /**_UNUSED/ + var node = args && args['node'] ? args['node'] : _Debug_crash(0); + //*/ + + node.parentNode.replaceChild( + _VirtualDom_render(virtualNode, function() {}), + node + ); + + return {}; +}); + + + +// TEXT + + +function _VirtualDom_text(string) +{ + return { + $: 0, + a: string + }; +} + + + +// NODE + + +var _VirtualDom_nodeNS = F2(function(namespace, tag) +{ + return F2(function(factList, kidList) + { + for (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS + { + var kid = kidList.a; + descendantsCount += (kid.b || 0); + kids.push(kid); + } + descendantsCount += kids.length; + + return { + $: 1, + c: tag, + d: _VirtualDom_organizeFacts(factList), + e: kids, + f: namespace, + b: descendantsCount + }; + }); +}); + + +var _VirtualDom_node = _VirtualDom_nodeNS(undefined); + + + +// KEYED NODE + + +var _VirtualDom_keyedNodeNS = F2(function(namespace, tag) +{ + return F2(function(factList, kidList) + { + for (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS + { + var kid = kidList.a; + descendantsCount += (kid.b.b || 0); + kids.push(kid); + } + descendantsCount += kids.length; + + return { + $: 2, + c: tag, + d: _VirtualDom_organizeFacts(factList), + e: kids, + f: namespace, + b: descendantsCount + }; + }); +}); + + +var _VirtualDom_keyedNode = _VirtualDom_keyedNodeNS(undefined); + + + +// CUSTOM + + +function _VirtualDom_custom(factList, model, render, diff) +{ + return { + $: 3, + d: _VirtualDom_organizeFacts(factList), + g: model, + h: render, + i: diff + }; +} + + + +// MAP + + +var _VirtualDom_map = F2(function(tagger, node) +{ + return { + $: 4, + j: tagger, + k: node, + b: 1 + (node.b || 0) + }; +}); + + + +// LAZY + + +function _VirtualDom_thunk(refs, thunk) +{ + return { + $: 5, + l: refs, + m: thunk, + k: undefined + }; +} + +var _VirtualDom_lazy = F2(function(func, a) +{ + return _VirtualDom_thunk([func, a], function() { + return func(a); + }); +}); + +var _VirtualDom_lazy2 = F3(function(func, a, b) +{ + return _VirtualDom_thunk([func, a, b], function() { + return A2(func, a, b); + }); +}); + +var _VirtualDom_lazy3 = F4(function(func, a, b, c) +{ + return _VirtualDom_thunk([func, a, b, c], function() { + return A3(func, a, b, c); + }); +}); + +var _VirtualDom_lazy4 = F5(function(func, a, b, c, d) +{ + return _VirtualDom_thunk([func, a, b, c, d], function() { + return A4(func, a, b, c, d); + }); +}); + +var _VirtualDom_lazy5 = F6(function(func, a, b, c, d, e) +{ + return _VirtualDom_thunk([func, a, b, c, d, e], function() { + return A5(func, a, b, c, d, e); + }); +}); + +var _VirtualDom_lazy6 = F7(function(func, a, b, c, d, e, f) +{ + return _VirtualDom_thunk([func, a, b, c, d, e, f], function() { + return A6(func, a, b, c, d, e, f); + }); +}); + +var _VirtualDom_lazy7 = F8(function(func, a, b, c, d, e, f, g) +{ + return _VirtualDom_thunk([func, a, b, c, d, e, f, g], function() { + return A7(func, a, b, c, d, e, f, g); + }); +}); + +var _VirtualDom_lazy8 = F9(function(func, a, b, c, d, e, f, g, h) +{ + return _VirtualDom_thunk([func, a, b, c, d, e, f, g, h], function() { + return A8(func, a, b, c, d, e, f, g, h); + }); +}); + + + +// FACTS + + +var _VirtualDom_on = F2(function(key, handler) +{ + return { + $: 'a0', + n: key, + o: handler + }; +}); +var _VirtualDom_style = F2(function(key, value) +{ + return { + $: 'a1', + n: key, + o: value + }; +}); +var _VirtualDom_property = F2(function(key, value) +{ + return { + $: 'a2', + n: key, + o: value + }; +}); +var _VirtualDom_attribute = F2(function(key, value) +{ + return { + $: 'a3', + n: key, + o: value + }; +}); +var _VirtualDom_attributeNS = F3(function(namespace, key, value) +{ + return { + $: 'a4', + n: key, + o: { f: namespace, o: value } + }; +}); + + + +// XSS ATTACK VECTOR CHECKS + + +function _VirtualDom_noScript(tag) +{ + return tag == 'script' ? 'p' : tag; +} + +function _VirtualDom_noOnOrFormAction(key) +{ + return /^(on|formAction$)/i.test(key) ? 'data-' + key : key; +} + +function _VirtualDom_noInnerHtmlOrFormAction(key) +{ + return key == 'innerHTML' || key == 'formAction' ? 'data-' + key : key; +} + +function _VirtualDom_noJavaScriptUri(value) +{ + return /^javascript:/i.test(value.replace(/\s/g,'')) ? '' : value; +} + +function _VirtualDom_noJavaScriptUri_UNUSED(value) +{ + return /^javascript:/i.test(value.replace(/\s/g,'')) + ? 'javascript:alert("This is an XSS vector. Please use ports or web components instead.")' + : value; +} + +function _VirtualDom_noJavaScriptOrHtmlUri(value) +{ + return /^\s*(javascript:|data:text\/html)/i.test(value) ? '' : value; +} + +function _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value) +{ + return /^\s*(javascript:|data:text\/html)/i.test(value) + ? 'javascript:alert("This is an XSS vector. Please use ports or web components instead.")' + : value; +} + + + +// MAP FACTS + + +var _VirtualDom_mapAttribute = F2(function(func, attr) +{ + return (attr.$ === 'a0') + ? A2(_VirtualDom_on, attr.n, _VirtualDom_mapHandler(func, attr.o)) + : attr; +}); + +function _VirtualDom_mapHandler(func, handler) +{ + var tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler); + + // 0 = Normal + // 1 = MayStopPropagation + // 2 = MayPreventDefault + // 3 = Custom + + return { + $: handler.$, + a: + !tag + ? A2($elm$json$Json$Decode$map, func, handler.a) + : + A3($elm$json$Json$Decode$map2, + tag < 3 + ? _VirtualDom_mapEventTuple + : _VirtualDom_mapEventRecord, + $elm$json$Json$Decode$succeed(func), + handler.a + ) + }; +} + +var _VirtualDom_mapEventTuple = F2(function(func, tuple) +{ + return _Utils_Tuple2(func(tuple.a), tuple.b); +}); + +var _VirtualDom_mapEventRecord = F2(function(func, record) +{ + return { + p: func(record.p), + M: record.M, + J: record.J + } +}); + + + +// ORGANIZE FACTS + + +function _VirtualDom_organizeFacts(factList) +{ + for (var facts = {}; factList.b; factList = factList.b) // WHILE_CONS + { + var entry = factList.a; + + var tag = entry.$; + var key = entry.n; + var value = entry.o; + + if (tag === 'a2') + { + (key === 'className') + ? _VirtualDom_addClass(facts, key, _Json_unwrap(value)) + : facts[key] = _Json_unwrap(value); + + continue; + } + + var subFacts = facts[tag] || (facts[tag] = {}); + (tag === 'a3' && key === 'class') + ? _VirtualDom_addClass(subFacts, key, value) + : subFacts[key] = value; + } + + return facts; +} + +function _VirtualDom_addClass(object, key, newClass) +{ + var classes = object[key]; + object[key] = classes ? classes + ' ' + newClass : newClass; +} + + + +// RENDER + + +function _VirtualDom_render(vNode, eventNode) +{ + var tag = vNode.$; + + if (tag === 5) + { + return _VirtualDom_render(vNode.k || (vNode.k = vNode.m()), eventNode); + } + + if (tag === 0) + { + return _VirtualDom_doc.createTextNode(vNode.a); + } + + if (tag === 4) + { + var subNode = vNode.k; + var tagger = vNode.j; + + while (subNode.$ === 4) + { + typeof tagger !== 'object' + ? tagger = [tagger, subNode.j] + : tagger.push(subNode.j); + + subNode = subNode.k; + } + + var subEventRoot = { j: tagger, p: eventNode }; + var domNode = _VirtualDom_render(subNode, subEventRoot); + domNode.elm_event_node_ref = subEventRoot; + return domNode; + } + + if (tag === 3) + { + var domNode = vNode.h(vNode.g); + _VirtualDom_applyFacts(domNode, eventNode, vNode.d); + return domNode; + } + + // at this point `tag` must be 1 or 2 + + var domNode = vNode.f + ? _VirtualDom_doc.createElementNS(vNode.f, vNode.c) + : _VirtualDom_doc.createElement(vNode.c); + + if (_VirtualDom_divertHrefToApp && vNode.c == 'a') + { + domNode.addEventListener('click', _VirtualDom_divertHrefToApp(domNode)); + } + + _VirtualDom_applyFacts(domNode, eventNode, vNode.d); + + for (var kids = vNode.e, i = 0; i < kids.length; i++) + { + _VirtualDom_appendChild(domNode, _VirtualDom_render(tag === 1 ? kids[i] : kids[i].b, eventNode)); + } + + return domNode; +} + + + +// APPLY FACTS + + +function _VirtualDom_applyFacts(domNode, eventNode, facts) +{ + for (var key in facts) + { + var value = facts[key]; + + key === 'a1' + ? _VirtualDom_applyStyles(domNode, value) + : + key === 'a0' + ? _VirtualDom_applyEvents(domNode, eventNode, value) + : + key === 'a3' + ? _VirtualDom_applyAttrs(domNode, value) + : + key === 'a4' + ? _VirtualDom_applyAttrsNS(domNode, value) + : + ((key !== 'value' && key !== 'checked') || domNode[key] !== value) && (domNode[key] = value); + } +} + + + +// APPLY STYLES + + +function _VirtualDom_applyStyles(domNode, styles) +{ + var domNodeStyle = domNode.style; + + for (var key in styles) + { + domNodeStyle[key] = styles[key]; + } +} + + + +// APPLY ATTRS + + +function _VirtualDom_applyAttrs(domNode, attrs) +{ + for (var key in attrs) + { + var value = attrs[key]; + typeof value !== 'undefined' + ? domNode.setAttribute(key, value) + : domNode.removeAttribute(key); + } +} + + + +// APPLY NAMESPACED ATTRS + + +function _VirtualDom_applyAttrsNS(domNode, nsAttrs) +{ + for (var key in nsAttrs) + { + var pair = nsAttrs[key]; + var namespace = pair.f; + var value = pair.o; + + typeof value !== 'undefined' + ? domNode.setAttributeNS(namespace, key, value) + : domNode.removeAttributeNS(namespace, key); + } +} + + + +// APPLY EVENTS + + +function _VirtualDom_applyEvents(domNode, eventNode, events) +{ + var allCallbacks = domNode.elmFs || (domNode.elmFs = {}); + + for (var key in events) + { + var newHandler = events[key]; + var oldCallback = allCallbacks[key]; + + if (!newHandler) + { + domNode.removeEventListener(key, oldCallback); + allCallbacks[key] = undefined; + continue; + } + + if (oldCallback) + { + var oldHandler = oldCallback.q; + if (oldHandler.$ === newHandler.$) + { + oldCallback.q = newHandler; + continue; + } + domNode.removeEventListener(key, oldCallback); + } + + oldCallback = _VirtualDom_makeCallback(eventNode, newHandler); + domNode.addEventListener(key, oldCallback, + _VirtualDom_passiveSupported + && { passive: $elm$virtual_dom$VirtualDom$toHandlerInt(newHandler) < 2 } + ); + allCallbacks[key] = oldCallback; + } +} + + + +// PASSIVE EVENTS + + +var _VirtualDom_passiveSupported; + +try +{ + window.addEventListener('t', null, Object.defineProperty({}, 'passive', { + get: function() { _VirtualDom_passiveSupported = true; } + })); +} +catch(e) {} + + + +// EVENT HANDLERS + + +function _VirtualDom_makeCallback(eventNode, initialHandler) +{ + function callback(event) + { + var handler = callback.q; + var result = _Json_runHelp(handler.a, event); + + if (!$elm$core$Result$isOk(result)) + { + return; + } + + var tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler); + + // 0 = Normal + // 1 = MayStopPropagation + // 2 = MayPreventDefault + // 3 = Custom + + var value = result.a; + var message = !tag ? value : tag < 3 ? value.a : value.p; + var stopPropagation = tag == 1 ? value.b : tag == 3 && value.M; + var currentEventNode = ( + stopPropagation && event.stopPropagation(), + (tag == 2 ? value.b : tag == 3 && value.J) && event.preventDefault(), + eventNode + ); + var tagger; + var i; + while (tagger = currentEventNode.j) + { + if (typeof tagger == 'function') + { + message = tagger(message); + } + else + { + for (var i = tagger.length; i--; ) + { + message = tagger[i](message); + } + } + currentEventNode = currentEventNode.p; + } + currentEventNode(message, stopPropagation); // stopPropagation implies isSync + } + + callback.q = initialHandler; + + return callback; +} + +function _VirtualDom_equalEvents(x, y) +{ + return x.$ == y.$ && _Json_equality(x.a, y.a); +} + + + +// DIFF + + +// TODO: Should we do patches like in iOS? +// +// type Patch +// = At Int Patch +// | Batch (List Patch) +// | Change ... +// +// How could it not be better? +// +function _VirtualDom_diff(x, y) +{ + var patches = []; + _VirtualDom_diffHelp(x, y, patches, 0); + return patches; +} + + +function _VirtualDom_pushPatch(patches, type, index, data) +{ + var patch = { + $: type, + r: index, + s: data, + t: undefined, + u: undefined + }; + patches.push(patch); + return patch; +} + + +function _VirtualDom_diffHelp(x, y, patches, index) +{ + if (x === y) + { + return; + } + + var xType = x.$; + var yType = y.$; + + // Bail if you run into different types of nodes. Implies that the + // structure has changed significantly and it's not worth a diff. + if (xType !== yType) + { + if (xType === 1 && yType === 2) + { + y = _VirtualDom_dekey(y); + yType = 1; + } + else + { + _VirtualDom_pushPatch(patches, 0, index, y); + return; + } + } + + // Now we know that both nodes are the same $. + switch (yType) + { + case 5: + var xRefs = x.l; + var yRefs = y.l; + var i = xRefs.length; + var same = i === yRefs.length; + while (same && i--) + { + same = xRefs[i] === yRefs[i]; + } + if (same) + { + y.k = x.k; + return; + } + y.k = y.m(); + var subPatches = []; + _VirtualDom_diffHelp(x.k, y.k, subPatches, 0); + subPatches.length > 0 && _VirtualDom_pushPatch(patches, 1, index, subPatches); + return; + + case 4: + // gather nested taggers + var xTaggers = x.j; + var yTaggers = y.j; + var nesting = false; + + var xSubNode = x.k; + while (xSubNode.$ === 4) + { + nesting = true; + + typeof xTaggers !== 'object' + ? xTaggers = [xTaggers, xSubNode.j] + : xTaggers.push(xSubNode.j); + + xSubNode = xSubNode.k; + } + + var ySubNode = y.k; + while (ySubNode.$ === 4) + { + nesting = true; + + typeof yTaggers !== 'object' + ? yTaggers = [yTaggers, ySubNode.j] + : yTaggers.push(ySubNode.j); + + ySubNode = ySubNode.k; + } + + // Just bail if different numbers of taggers. This implies the + // structure of the virtual DOM has changed. + if (nesting && xTaggers.length !== yTaggers.length) + { + _VirtualDom_pushPatch(patches, 0, index, y); + return; + } + + // check if taggers are "the same" + if (nesting ? !_VirtualDom_pairwiseRefEqual(xTaggers, yTaggers) : xTaggers !== yTaggers) + { + _VirtualDom_pushPatch(patches, 2, index, yTaggers); + } + + // diff everything below the taggers + _VirtualDom_diffHelp(xSubNode, ySubNode, patches, index + 1); + return; + + case 0: + if (x.a !== y.a) + { + _VirtualDom_pushPatch(patches, 3, index, y.a); + } + return; + + case 1: + _VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKids); + return; + + case 2: + _VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKeyedKids); + return; + + case 3: + if (x.h !== y.h) + { + _VirtualDom_pushPatch(patches, 0, index, y); + return; + } + + var factsDiff = _VirtualDom_diffFacts(x.d, y.d); + factsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff); + + var patch = y.i(x.g, y.g); + patch && _VirtualDom_pushPatch(patches, 5, index, patch); + + return; + } +} + +// assumes the incoming arrays are the same length +function _VirtualDom_pairwiseRefEqual(as, bs) +{ + for (var i = 0; i < as.length; i++) + { + if (as[i] !== bs[i]) + { + return false; + } + } + + return true; +} + +function _VirtualDom_diffNodes(x, y, patches, index, diffKids) +{ + // Bail if obvious indicators have changed. Implies more serious + // structural changes such that it's not worth it to diff. + if (x.c !== y.c || x.f !== y.f) + { + _VirtualDom_pushPatch(patches, 0, index, y); + return; + } + + var factsDiff = _VirtualDom_diffFacts(x.d, y.d); + factsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff); + + diffKids(x, y, patches, index); +} + + + +// DIFF FACTS + + +// TODO Instead of creating a new diff object, it's possible to just test if +// there *is* a diff. During the actual patch, do the diff again and make the +// modifications directly. This way, there's no new allocations. Worth it? +function _VirtualDom_diffFacts(x, y, category) +{ + var diff; + + // look for changes and removals + for (var xKey in x) + { + if (xKey === 'a1' || xKey === 'a0' || xKey === 'a3' || xKey === 'a4') + { + var subDiff = _VirtualDom_diffFacts(x[xKey], y[xKey] || {}, xKey); + if (subDiff) + { + diff = diff || {}; + diff[xKey] = subDiff; + } + continue; + } + + // remove if not in the new facts + if (!(xKey in y)) + { + diff = diff || {}; + diff[xKey] = + !category + ? (typeof x[xKey] === 'string' ? '' : null) + : + (category === 'a1') + ? '' + : + (category === 'a0' || category === 'a3') + ? undefined + : + { f: x[xKey].f, o: undefined }; + + continue; + } + + var xValue = x[xKey]; + var yValue = y[xKey]; + + // reference equal, so don't worry about it + if (xValue === yValue && xKey !== 'value' && xKey !== 'checked' + || category === 'a0' && _VirtualDom_equalEvents(xValue, yValue)) + { + continue; + } + + diff = diff || {}; + diff[xKey] = yValue; + } + + // add new stuff + for (var yKey in y) + { + if (!(yKey in x)) + { + diff = diff || {}; + diff[yKey] = y[yKey]; + } + } + + return diff; +} + + + +// DIFF KIDS + + +function _VirtualDom_diffKids(xParent, yParent, patches, index) +{ + var xKids = xParent.e; + var yKids = yParent.e; + + var xLen = xKids.length; + var yLen = yKids.length; + + // FIGURE OUT IF THERE ARE INSERTS OR REMOVALS + + if (xLen > yLen) + { + _VirtualDom_pushPatch(patches, 6, index, { + v: yLen, + i: xLen - yLen + }); + } + else if (xLen < yLen) + { + _VirtualDom_pushPatch(patches, 7, index, { + v: xLen, + e: yKids + }); + } + + // PAIRWISE DIFF EVERYTHING ELSE + + for (var minLen = xLen < yLen ? xLen : yLen, i = 0; i < minLen; i++) + { + var xKid = xKids[i]; + _VirtualDom_diffHelp(xKid, yKids[i], patches, ++index); + index += xKid.b || 0; + } +} + + + +// KEYED DIFF + + +function _VirtualDom_diffKeyedKids(xParent, yParent, patches, rootIndex) +{ + var localPatches = []; + + var changes = {}; // Dict String Entry + var inserts = []; // Array { index : Int, entry : Entry } + // type Entry = { tag : String, vnode : VNode, index : Int, data : _ } + + var xKids = xParent.e; + var yKids = yParent.e; + var xLen = xKids.length; + var yLen = yKids.length; + var xIndex = 0; + var yIndex = 0; + + var index = rootIndex; + + while (xIndex < xLen && yIndex < yLen) + { + var x = xKids[xIndex]; + var y = yKids[yIndex]; + + var xKey = x.a; + var yKey = y.a; + var xNode = x.b; + var yNode = y.b; + + var newMatch = undefined; + var oldMatch = undefined; + + // check if keys match + + if (xKey === yKey) + { + index++; + _VirtualDom_diffHelp(xNode, yNode, localPatches, index); + index += xNode.b || 0; + + xIndex++; + yIndex++; + continue; + } + + // look ahead 1 to detect insertions and removals. + + var xNext = xKids[xIndex + 1]; + var yNext = yKids[yIndex + 1]; + + if (xNext) + { + var xNextKey = xNext.a; + var xNextNode = xNext.b; + oldMatch = yKey === xNextKey; + } + + if (yNext) + { + var yNextKey = yNext.a; + var yNextNode = yNext.b; + newMatch = xKey === yNextKey; + } + + + // swap x and y + if (newMatch && oldMatch) + { + index++; + _VirtualDom_diffHelp(xNode, yNextNode, localPatches, index); + _VirtualDom_insertNode(changes, localPatches, xKey, yNode, yIndex, inserts); + index += xNode.b || 0; + + index++; + _VirtualDom_removeNode(changes, localPatches, xKey, xNextNode, index); + index += xNextNode.b || 0; + + xIndex += 2; + yIndex += 2; + continue; + } + + // insert y + if (newMatch) + { + index++; + _VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts); + _VirtualDom_diffHelp(xNode, yNextNode, localPatches, index); + index += xNode.b || 0; + + xIndex += 1; + yIndex += 2; + continue; + } + + // remove x + if (oldMatch) + { + index++; + _VirtualDom_removeNode(changes, localPatches, xKey, xNode, index); + index += xNode.b || 0; + + index++; + _VirtualDom_diffHelp(xNextNode, yNode, localPatches, index); + index += xNextNode.b || 0; + + xIndex += 2; + yIndex += 1; + continue; + } + + // remove x, insert y + if (xNext && xNextKey === yNextKey) + { + index++; + _VirtualDom_removeNode(changes, localPatches, xKey, xNode, index); + _VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts); + index += xNode.b || 0; + + index++; + _VirtualDom_diffHelp(xNextNode, yNextNode, localPatches, index); + index += xNextNode.b || 0; + + xIndex += 2; + yIndex += 2; + continue; + } + + break; + } + + // eat up any remaining nodes with removeNode and insertNode + + while (xIndex < xLen) + { + index++; + var x = xKids[xIndex]; + var xNode = x.b; + _VirtualDom_removeNode(changes, localPatches, x.a, xNode, index); + index += xNode.b || 0; + xIndex++; + } + + while (yIndex < yLen) + { + var endInserts = endInserts || []; + var y = yKids[yIndex]; + _VirtualDom_insertNode(changes, localPatches, y.a, y.b, undefined, endInserts); + yIndex++; + } + + if (localPatches.length > 0 || inserts.length > 0 || endInserts) + { + _VirtualDom_pushPatch(patches, 8, rootIndex, { + w: localPatches, + x: inserts, + y: endInserts + }); + } +} + + + +// CHANGES FROM KEYED DIFF + + +var _VirtualDom_POSTFIX = '_elmW6BL'; + + +function _VirtualDom_insertNode(changes, localPatches, key, vnode, yIndex, inserts) +{ + var entry = changes[key]; + + // never seen this key before + if (!entry) + { + entry = { + c: 0, + z: vnode, + r: yIndex, + s: undefined + }; + + inserts.push({ r: yIndex, A: entry }); + changes[key] = entry; + + return; + } + + // this key was removed earlier, a match! + if (entry.c === 1) + { + inserts.push({ r: yIndex, A: entry }); + + entry.c = 2; + var subPatches = []; + _VirtualDom_diffHelp(entry.z, vnode, subPatches, entry.r); + entry.r = yIndex; + entry.s.s = { + w: subPatches, + A: entry + }; + + return; + } + + // this key has already been inserted or moved, a duplicate! + _VirtualDom_insertNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, yIndex, inserts); +} + + +function _VirtualDom_removeNode(changes, localPatches, key, vnode, index) +{ + var entry = changes[key]; + + // never seen this key before + if (!entry) + { + var patch = _VirtualDom_pushPatch(localPatches, 9, index, undefined); + + changes[key] = { + c: 1, + z: vnode, + r: index, + s: patch + }; + + return; + } + + // this key was inserted earlier, a match! + if (entry.c === 0) + { + entry.c = 2; + var subPatches = []; + _VirtualDom_diffHelp(vnode, entry.z, subPatches, index); + + _VirtualDom_pushPatch(localPatches, 9, index, { + w: subPatches, + A: entry + }); + + return; + } + + // this key has already been removed or moved, a duplicate! + _VirtualDom_removeNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, index); +} + + + +// ADD DOM NODES +// +// Each DOM node has an "index" assigned in order of traversal. It is important +// to minimize our crawl over the actual DOM, so these indexes (along with the +// descendantsCount of virtual nodes) let us skip touching entire subtrees of +// the DOM if we know there are no patches there. + + +function _VirtualDom_addDomNodes(domNode, vNode, patches, eventNode) +{ + _VirtualDom_addDomNodesHelp(domNode, vNode, patches, 0, 0, vNode.b, eventNode); +} + + +// assumes `patches` is non-empty and indexes increase monotonically. +function _VirtualDom_addDomNodesHelp(domNode, vNode, patches, i, low, high, eventNode) +{ + var patch = patches[i]; + var index = patch.r; + + while (index === low) + { + var patchType = patch.$; + + if (patchType === 1) + { + _VirtualDom_addDomNodes(domNode, vNode.k, patch.s, eventNode); + } + else if (patchType === 8) + { + patch.t = domNode; + patch.u = eventNode; + + var subPatches = patch.s.w; + if (subPatches.length > 0) + { + _VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode); + } + } + else if (patchType === 9) + { + patch.t = domNode; + patch.u = eventNode; + + var data = patch.s; + if (data) + { + data.A.s = domNode; + var subPatches = data.w; + if (subPatches.length > 0) + { + _VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode); + } + } + } + else + { + patch.t = domNode; + patch.u = eventNode; + } + + i++; + + if (!(patch = patches[i]) || (index = patch.r) > high) + { + return i; + } + } + + var tag = vNode.$; + + if (tag === 4) + { + var subNode = vNode.k; + + while (subNode.$ === 4) + { + subNode = subNode.k; + } + + return _VirtualDom_addDomNodesHelp(domNode, subNode, patches, i, low + 1, high, domNode.elm_event_node_ref); + } + + // tag must be 1 or 2 at this point + + var vKids = vNode.e; + var childNodes = domNode.childNodes; + for (var j = 0; j < vKids.length; j++) + { + low++; + var vKid = tag === 1 ? vKids[j] : vKids[j].b; + var nextLow = low + (vKid.b || 0); + if (low <= index && index <= nextLow) + { + i = _VirtualDom_addDomNodesHelp(childNodes[j], vKid, patches, i, low, nextLow, eventNode); + if (!(patch = patches[i]) || (index = patch.r) > high) + { + return i; + } + } + low = nextLow; + } + return i; +} + + + +// APPLY PATCHES + + +function _VirtualDom_applyPatches(rootDomNode, oldVirtualNode, patches, eventNode) +{ + if (patches.length === 0) + { + return rootDomNode; + } + + _VirtualDom_addDomNodes(rootDomNode, oldVirtualNode, patches, eventNode); + return _VirtualDom_applyPatchesHelp(rootDomNode, patches); +} + +function _VirtualDom_applyPatchesHelp(rootDomNode, patches) +{ + for (var i = 0; i < patches.length; i++) + { + var patch = patches[i]; + var localDomNode = patch.t + var newNode = _VirtualDom_applyPatch(localDomNode, patch); + if (localDomNode === rootDomNode) + { + rootDomNode = newNode; + } + } + return rootDomNode; +} + +function _VirtualDom_applyPatch(domNode, patch) +{ + switch (patch.$) + { + case 0: + return _VirtualDom_applyPatchRedraw(domNode, patch.s, patch.u); + + case 4: + _VirtualDom_applyFacts(domNode, patch.u, patch.s); + return domNode; + + case 3: + domNode.replaceData(0, domNode.length, patch.s); + return domNode; + + case 1: + return _VirtualDom_applyPatchesHelp(domNode, patch.s); + + case 2: + if (domNode.elm_event_node_ref) + { + domNode.elm_event_node_ref.j = patch.s; + } + else + { + domNode.elm_event_node_ref = { j: patch.s, p: patch.u }; + } + return domNode; + + case 6: + var data = patch.s; + for (var i = 0; i < data.i; i++) + { + domNode.removeChild(domNode.childNodes[data.v]); + } + return domNode; + + case 7: + var data = patch.s; + var kids = data.e; + var i = data.v; + var theEnd = domNode.childNodes[i]; + for (; i < kids.length; i++) + { + domNode.insertBefore(_VirtualDom_render(kids[i], patch.u), theEnd); + } + return domNode; + + case 9: + var data = patch.s; + if (!data) + { + domNode.parentNode.removeChild(domNode); + return domNode; + } + var entry = data.A; + if (typeof entry.r !== 'undefined') + { + domNode.parentNode.removeChild(domNode); + } + entry.s = _VirtualDom_applyPatchesHelp(domNode, data.w); + return domNode; + + case 8: + return _VirtualDom_applyPatchReorder(domNode, patch); + + case 5: + return patch.s(domNode); + + default: + _Debug_crash(10); // 'Ran into an unknown patch!' + } +} + + +function _VirtualDom_applyPatchRedraw(domNode, vNode, eventNode) +{ + var parentNode = domNode.parentNode; + var newNode = _VirtualDom_render(vNode, eventNode); + + if (!newNode.elm_event_node_ref) + { + newNode.elm_event_node_ref = domNode.elm_event_node_ref; + } + + if (parentNode && newNode !== domNode) + { + parentNode.replaceChild(newNode, domNode); + } + return newNode; +} + + +function _VirtualDom_applyPatchReorder(domNode, patch) +{ + var data = patch.s; + + // remove end inserts + var frag = _VirtualDom_applyPatchReorderEndInsertsHelp(data.y, patch); + + // removals + domNode = _VirtualDom_applyPatchesHelp(domNode, data.w); + + // inserts + var inserts = data.x; + for (var i = 0; i < inserts.length; i++) + { + var insert = inserts[i]; + var entry = insert.A; + var node = entry.c === 2 + ? entry.s + : _VirtualDom_render(entry.z, patch.u); + domNode.insertBefore(node, domNode.childNodes[insert.r]); + } + + // add end inserts + if (frag) + { + _VirtualDom_appendChild(domNode, frag); + } + + return domNode; +} + + +function _VirtualDom_applyPatchReorderEndInsertsHelp(endInserts, patch) +{ + if (!endInserts) + { + return; + } + + var frag = _VirtualDom_doc.createDocumentFragment(); + for (var i = 0; i < endInserts.length; i++) + { + var insert = endInserts[i]; + var entry = insert.A; + _VirtualDom_appendChild(frag, entry.c === 2 + ? entry.s + : _VirtualDom_render(entry.z, patch.u) + ); + } + return frag; +} + + +function _VirtualDom_virtualize(node) +{ + // TEXT NODES + + if (node.nodeType === 3) + { + return _VirtualDom_text(node.textContent); + } + + + // WEIRD NODES + + if (node.nodeType !== 1) + { + return _VirtualDom_text(''); + } + + + // ELEMENT NODES + + var attrList = _List_Nil; + var attrs = node.attributes; + for (var i = attrs.length; i--; ) + { + var attr = attrs[i]; + var name = attr.name; + var value = attr.value; + attrList = _List_Cons( A2(_VirtualDom_attribute, name, value), attrList ); + } + + var tag = node.tagName.toLowerCase(); + var kidList = _List_Nil; + var kids = node.childNodes; + + for (var i = kids.length; i--; ) + { + kidList = _List_Cons(_VirtualDom_virtualize(kids[i]), kidList); + } + return A3(_VirtualDom_node, tag, attrList, kidList); +} + +function _VirtualDom_dekey(keyedNode) +{ + var keyedKids = keyedNode.e; + var len = keyedKids.length; + var kids = new Array(len); + for (var i = 0; i < len; i++) + { + kids[i] = keyedKids[i].b; + } + + return { + $: 1, + c: keyedNode.c, + d: keyedNode.d, + e: kids, + f: keyedNode.f, + b: keyedNode.b + }; +} + + + + +// ELEMENT + + +var _Debugger_element; + +var _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debugMetadata, args) +{ + return _Platform_initialize( + flagDecoder, + args, + impl.at, + impl.aE, + impl.aD, + function(sendToApp, initialModel) { + var view = impl.aF; + /**/ + var domNode = args['node']; + //*/ + /**_UNUSED/ + var domNode = args && args['node'] ? args['node'] : _Debug_crash(0); + //*/ + var currNode = _VirtualDom_virtualize(domNode); + + return _Browser_makeAnimator(initialModel, function(model) + { + var nextNode = view(model); + var patches = _VirtualDom_diff(currNode, nextNode); + domNode = _VirtualDom_applyPatches(domNode, currNode, patches, sendToApp); + currNode = nextNode; + }); + } + ); +}); + + + +// DOCUMENT + + +var _Debugger_document; + +var _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, debugMetadata, args) +{ + return _Platform_initialize( + flagDecoder, + args, + impl.at, + impl.aE, + impl.aD, + function(sendToApp, initialModel) { + var divertHrefToApp = impl.K && impl.K(sendToApp) + var view = impl.aF; + var title = _VirtualDom_doc.title; + var bodyNode = _VirtualDom_doc.body; + var currNode = _VirtualDom_virtualize(bodyNode); + return _Browser_makeAnimator(initialModel, function(model) + { + _VirtualDom_divertHrefToApp = divertHrefToApp; + var doc = view(model); + var nextNode = _VirtualDom_node('body')(_List_Nil)(doc.O); + var patches = _VirtualDom_diff(currNode, nextNode); + bodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp); + currNode = nextNode; + _VirtualDom_divertHrefToApp = 0; + (title !== doc.af) && (_VirtualDom_doc.title = title = doc.af); + }); + } + ); +}); + + + +// ANIMATION + + +var _Browser_cancelAnimationFrame = + typeof cancelAnimationFrame !== 'undefined' + ? cancelAnimationFrame + : function(id) { clearTimeout(id); }; + +var _Browser_requestAnimationFrame = + typeof requestAnimationFrame !== 'undefined' + ? requestAnimationFrame + : function(callback) { return setTimeout(callback, 1000 / 60); }; + + +function _Browser_makeAnimator(model, draw) +{ + draw(model); + + var state = 0; + + function updateIfNeeded() + { + state = state === 1 + ? 0 + : ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 ); + } + + return function(nextModel, isSync) + { + model = nextModel; + + isSync + ? ( draw(model), + state === 2 && (state = 1) + ) + : ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded), + state = 2 + ); + }; +} + + + +// APPLICATION + + +function _Browser_application(impl) +{ + var onUrlChange = impl.av; + var onUrlRequest = impl.aw; + var key = function() { key.a(onUrlChange(_Browser_getUrl())); }; + + return _Browser_document({ + K: function(sendToApp) + { + key.a = sendToApp; + _Browser_window.addEventListener('popstate', key); + _Browser_window.navigator.userAgent.indexOf('Trident') < 0 || _Browser_window.addEventListener('hashchange', key); + + return F2(function(domNode, event) + { + if (!event.ctrlKey && !event.metaKey && !event.shiftKey && event.button < 1 && !domNode.target && !domNode.hasAttribute('download')) + { + event.preventDefault(); + var href = domNode.href; + var curr = _Browser_getUrl(); + var next = $elm$url$Url$fromString(href).a; + sendToApp(onUrlRequest( + (next + && curr.aA === next.aA + && curr.ar === next.ar + && curr.az.a === next.az.a + ) + ? $elm$browser$Browser$Internal(next) + : $elm$browser$Browser$External(href) + )); + } + }); + }, + at: function(flags) + { + return A3(impl.at, flags, _Browser_getUrl(), key); + }, + aF: impl.aF, + aE: impl.aE, + aD: impl.aD + }); +} + +function _Browser_getUrl() +{ + return $elm$url$Url$fromString(_VirtualDom_doc.location.href).a || _Debug_crash(1); +} + +var _Browser_go = F2(function(key, n) +{ + return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { + n && history.go(n); + key(); + })); +}); + +var _Browser_pushUrl = F2(function(key, url) +{ + return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { + history.pushState({}, '', url); + key(); + })); +}); + +var _Browser_replaceUrl = F2(function(key, url) +{ + return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { + history.replaceState({}, '', url); + key(); + })); +}); + + + +// GLOBAL EVENTS + + +var _Browser_fakeNode = { addEventListener: function() {}, removeEventListener: function() {} }; +var _Browser_doc = typeof document !== 'undefined' ? document : _Browser_fakeNode; +var _Browser_window = typeof window !== 'undefined' ? window : _Browser_fakeNode; + +var _Browser_on = F3(function(node, eventName, sendToSelf) +{ + return _Scheduler_spawn(_Scheduler_binding(function(callback) + { + function handler(event) { _Scheduler_rawSpawn(sendToSelf(event)); } + node.addEventListener(eventName, handler, _VirtualDom_passiveSupported && { passive: true }); + return function() { node.removeEventListener(eventName, handler); }; + })); +}); + +var _Browser_decodeEvent = F2(function(decoder, event) +{ + var result = _Json_runHelp(decoder, event); + return $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing; +}); + + + +// PAGE VISIBILITY + + +function _Browser_visibilityInfo() +{ + return (typeof _VirtualDom_doc.hidden !== 'undefined') + ? { aq: 'hidden', am: 'visibilitychange' } + : + (typeof _VirtualDom_doc.mozHidden !== 'undefined') + ? { aq: 'mozHidden', am: 'mozvisibilitychange' } + : + (typeof _VirtualDom_doc.msHidden !== 'undefined') + ? { aq: 'msHidden', am: 'msvisibilitychange' } + : + (typeof _VirtualDom_doc.webkitHidden !== 'undefined') + ? { aq: 'webkitHidden', am: 'webkitvisibilitychange' } + : { aq: 'hidden', am: 'visibilitychange' }; +} + + + +// ANIMATION FRAMES + + +function _Browser_rAF() +{ + return _Scheduler_binding(function(callback) + { + var id = _Browser_requestAnimationFrame(function() { + callback(_Scheduler_succeed(Date.now())); + }); + + return function() { + _Browser_cancelAnimationFrame(id); + }; + }); +} + + +function _Browser_now() +{ + return _Scheduler_binding(function(callback) + { + callback(_Scheduler_succeed(Date.now())); + }); +} + + + +// DOM STUFF + + +function _Browser_withNode(id, doStuff) +{ + return _Scheduler_binding(function(callback) + { + _Browser_requestAnimationFrame(function() { + var node = document.getElementById(id); + callback(node + ? _Scheduler_succeed(doStuff(node)) + : _Scheduler_fail($elm$browser$Browser$Dom$NotFound(id)) + ); + }); + }); +} + + +function _Browser_withWindow(doStuff) +{ + return _Scheduler_binding(function(callback) + { + _Browser_requestAnimationFrame(function() { + callback(_Scheduler_succeed(doStuff())); + }); + }); +} + + +// FOCUS and BLUR + + +var _Browser_call = F2(function(functionName, id) +{ + return _Browser_withNode(id, function(node) { + node[functionName](); + return _Utils_Tuple0; + }); +}); + + + +// WINDOW VIEWPORT + + +function _Browser_getViewport() +{ + return { + ac: _Browser_getScene(), + ag: { + ai: _Browser_window.pageXOffset, + aj: _Browser_window.pageYOffset, + ah: _Browser_doc.documentElement.clientWidth, + U: _Browser_doc.documentElement.clientHeight + } + }; +} + +function _Browser_getScene() +{ + var body = _Browser_doc.body; + var elem = _Browser_doc.documentElement; + return { + ah: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth), + U: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight) + }; +} + +var _Browser_setViewport = F2(function(x, y) +{ + return _Browser_withWindow(function() + { + _Browser_window.scroll(x, y); + return _Utils_Tuple0; + }); +}); + + + +// ELEMENT VIEWPORT + + +function _Browser_getViewportOf(id) +{ + return _Browser_withNode(id, function(node) + { + return { + ac: { + ah: node.scrollWidth, + U: node.scrollHeight + }, + ag: { + ai: node.scrollLeft, + aj: node.scrollTop, + ah: node.clientWidth, + U: node.clientHeight + } + }; + }); +} + + +var _Browser_setViewportOf = F3(function(id, x, y) +{ + return _Browser_withNode(id, function(node) + { + node.scrollLeft = x; + node.scrollTop = y; + return _Utils_Tuple0; + }); +}); + + + +// ELEMENT + + +function _Browser_getElement(id) +{ + return _Browser_withNode(id, function(node) + { + var rect = node.getBoundingClientRect(); + var x = _Browser_window.pageXOffset; + var y = _Browser_window.pageYOffset; + return { + ac: _Browser_getScene(), + ag: { + ai: x, + aj: y, + ah: _Browser_doc.documentElement.clientWidth, + U: _Browser_doc.documentElement.clientHeight + }, + ao: { + ai: x + rect.left, + aj: y + rect.top, + ah: rect.width, + U: rect.height + } + }; + }); +} + + + +// LOAD and RELOAD + + +function _Browser_reload(skipCache) +{ + return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback) + { + _VirtualDom_doc.location.reload(skipCache); + })); +} + +function _Browser_load(url) +{ + return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback) + { + try + { + _Browser_window.location = url; + } + catch(err) + { + // Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here. + // Other browsers reload the page, so let's be consistent about that. + _VirtualDom_doc.location.reload(false); + } + })); +} + + +function _Url_percentEncode(string) +{ + return encodeURIComponent(string); +} + +function _Url_percentDecode(string) +{ + try + { + return $elm$core$Maybe$Just(decodeURIComponent(string)); + } + catch (e) + { + return $elm$core$Maybe$Nothing; + } +} + + +var _Bitwise_and = F2(function(a, b) +{ + return a & b; +}); + +var _Bitwise_or = F2(function(a, b) +{ + return a | b; +}); + +var _Bitwise_xor = F2(function(a, b) +{ + return a ^ b; +}); + +function _Bitwise_complement(a) +{ + return ~a; +}; + +var _Bitwise_shiftLeftBy = F2(function(offset, a) +{ + return a << offset; +}); + +var _Bitwise_shiftRightBy = F2(function(offset, a) +{ + return a >> offset; +}); + +var _Bitwise_shiftRightZfBy = F2(function(offset, a) +{ + return a >>> offset; +}); +var $author$project$Main$LinkChanged = function (a) { + return {$: 4, a: a}; +}; +var $author$project$Main$LinkClicked = function (a) { + return {$: 3, a: a}; +}; +var $elm$core$Basics$EQ = 1; +var $elm$core$Basics$GT = 2; +var $elm$core$Basics$LT = 0; +var $elm$core$List$cons = _List_cons; +var $elm$core$Dict$foldr = F3( + function (func, acc, t) { + foldr: + while (true) { + if (t.$ === -2) { + return acc; + } else { + var key = t.b; + var value = t.c; + var left = t.d; + var right = t.e; + var $temp$func = func, + $temp$acc = A3( + func, + key, + value, + A3($elm$core$Dict$foldr, func, acc, right)), + $temp$t = left; + func = $temp$func; + acc = $temp$acc; + t = $temp$t; + continue foldr; + } + } + }); +var $elm$core$Dict$toList = function (dict) { + return A3( + $elm$core$Dict$foldr, + F3( + function (key, value, list) { + return A2( + $elm$core$List$cons, + _Utils_Tuple2(key, value), + list); + }), + _List_Nil, + dict); +}; +var $elm$core$Dict$keys = function (dict) { + return A3( + $elm$core$Dict$foldr, + F3( + function (key, value, keyList) { + return A2($elm$core$List$cons, key, keyList); + }), + _List_Nil, + dict); +}; +var $elm$core$Set$toList = function (_v0) { + var dict = _v0; + return $elm$core$Dict$keys(dict); +}; +var $elm$core$Elm$JsArray$foldr = _JsArray_foldr; +var $elm$core$Array$foldr = F3( + function (func, baseCase, _v0) { + var tree = _v0.c; + var tail = _v0.d; + var helper = F2( + function (node, acc) { + if (!node.$) { + var subTree = node.a; + return A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree); + } else { + var values = node.a; + return A3($elm$core$Elm$JsArray$foldr, func, acc, values); + } + }); + return A3( + $elm$core$Elm$JsArray$foldr, + helper, + A3($elm$core$Elm$JsArray$foldr, func, baseCase, tail), + tree); + }); +var $elm$core$Array$toList = function (array) { + return A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array); +}; +var $elm$core$Result$Err = function (a) { + return {$: 1, a: a}; +}; +var $elm$json$Json$Decode$Failure = F2( + function (a, b) { + return {$: 3, a: a, b: b}; + }); +var $elm$json$Json$Decode$Field = F2( + function (a, b) { + return {$: 0, a: a, b: b}; + }); +var $elm$json$Json$Decode$Index = F2( + function (a, b) { + return {$: 1, a: a, b: b}; + }); +var $elm$core$Result$Ok = function (a) { + return {$: 0, a: a}; +}; +var $elm$json$Json$Decode$OneOf = function (a) { + return {$: 2, a: a}; +}; +var $elm$core$Basics$False = 1; +var $elm$core$Basics$add = _Basics_add; +var $elm$core$Maybe$Just = function (a) { + return {$: 0, a: a}; +}; +var $elm$core$Maybe$Nothing = {$: 1}; +var $elm$core$String$all = _String_all; +var $elm$core$Basics$and = _Basics_and; +var $elm$core$Basics$append = _Utils_append; +var $elm$json$Json$Encode$encode = _Json_encode; +var $elm$core$String$fromInt = _String_fromNumber; +var $elm$core$String$join = F2( + function (sep, chunks) { + return A2( + _String_join, + sep, + _List_toArray(chunks)); + }); +var $elm$core$String$split = F2( + function (sep, string) { + return _List_fromArray( + A2(_String_split, sep, string)); + }); +var $elm$json$Json$Decode$indent = function (str) { + return A2( + $elm$core$String$join, + '\n ', + A2($elm$core$String$split, '\n', str)); +}; +var $elm$core$List$foldl = F3( + function (func, acc, list) { + foldl: + while (true) { + if (!list.b) { + return acc; + } else { + var x = list.a; + var xs = list.b; + var $temp$func = func, + $temp$acc = A2(func, x, acc), + $temp$list = xs; + func = $temp$func; + acc = $temp$acc; + list = $temp$list; + continue foldl; + } + } + }); +var $elm$core$List$length = function (xs) { + return A3( + $elm$core$List$foldl, + F2( + function (_v0, i) { + return i + 1; + }), + 0, + xs); +}; +var $elm$core$List$map2 = _List_map2; +var $elm$core$Basics$le = _Utils_le; +var $elm$core$Basics$sub = _Basics_sub; +var $elm$core$List$rangeHelp = F3( + function (lo, hi, list) { + rangeHelp: + while (true) { + if (_Utils_cmp(lo, hi) < 1) { + var $temp$lo = lo, + $temp$hi = hi - 1, + $temp$list = A2($elm$core$List$cons, hi, list); + lo = $temp$lo; + hi = $temp$hi; + list = $temp$list; + continue rangeHelp; + } else { + return list; + } + } + }); +var $elm$core$List$range = F2( + function (lo, hi) { + return A3($elm$core$List$rangeHelp, lo, hi, _List_Nil); + }); +var $elm$core$List$indexedMap = F2( + function (f, xs) { + return A3( + $elm$core$List$map2, + f, + A2( + $elm$core$List$range, + 0, + $elm$core$List$length(xs) - 1), + xs); + }); +var $elm$core$Char$toCode = _Char_toCode; +var $elm$core$Char$isLower = function (_char) { + var code = $elm$core$Char$toCode(_char); + return (97 <= code) && (code <= 122); +}; +var $elm$core$Char$isUpper = function (_char) { + var code = $elm$core$Char$toCode(_char); + return (code <= 90) && (65 <= code); +}; +var $elm$core$Basics$or = _Basics_or; +var $elm$core$Char$isAlpha = function (_char) { + return $elm$core$Char$isLower(_char) || $elm$core$Char$isUpper(_char); +}; +var $elm$core$Char$isDigit = function (_char) { + var code = $elm$core$Char$toCode(_char); + return (code <= 57) && (48 <= code); +}; +var $elm$core$Char$isAlphaNum = function (_char) { + return $elm$core$Char$isLower(_char) || ($elm$core$Char$isUpper(_char) || $elm$core$Char$isDigit(_char)); +}; +var $elm$core$List$reverse = function (list) { + return A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list); +}; +var $elm$core$String$uncons = _String_uncons; +var $elm$json$Json$Decode$errorOneOf = F2( + function (i, error) { + return '\n\n(' + ($elm$core$String$fromInt(i + 1) + (') ' + $elm$json$Json$Decode$indent( + $elm$json$Json$Decode$errorToString(error)))); + }); +var $elm$json$Json$Decode$errorToString = function (error) { + return A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil); +}; +var $elm$json$Json$Decode$errorToStringHelp = F2( + function (error, context) { + errorToStringHelp: + while (true) { + switch (error.$) { + case 0: + var f = error.a; + var err = error.b; + var isSimple = function () { + var _v1 = $elm$core$String$uncons(f); + if (_v1.$ === 1) { + return false; + } else { + var _v2 = _v1.a; + var _char = _v2.a; + var rest = _v2.b; + return $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest); + } + }(); + var fieldName = isSimple ? ('.' + f) : ('[\'' + (f + '\']')); + var $temp$error = err, + $temp$context = A2($elm$core$List$cons, fieldName, context); + error = $temp$error; + context = $temp$context; + continue errorToStringHelp; + case 1: + var i = error.a; + var err = error.b; + var indexName = '[' + ($elm$core$String$fromInt(i) + ']'); + var $temp$error = err, + $temp$context = A2($elm$core$List$cons, indexName, context); + error = $temp$error; + context = $temp$context; + continue errorToStringHelp; + case 2: + var errors = error.a; + if (!errors.b) { + return 'Ran into a Json.Decode.oneOf with no possibilities' + function () { + if (!context.b) { + return '!'; + } else { + return ' at json' + A2( + $elm$core$String$join, + '', + $elm$core$List$reverse(context)); + } + }(); + } else { + if (!errors.b.b) { + var err = errors.a; + var $temp$error = err, + $temp$context = context; + error = $temp$error; + context = $temp$context; + continue errorToStringHelp; + } else { + var starter = function () { + if (!context.b) { + return 'Json.Decode.oneOf'; + } else { + return 'The Json.Decode.oneOf at json' + A2( + $elm$core$String$join, + '', + $elm$core$List$reverse(context)); + } + }(); + var introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt( + $elm$core$List$length(errors)) + ' ways:')); + return A2( + $elm$core$String$join, + '\n\n', + A2( + $elm$core$List$cons, + introduction, + A2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors))); + } + } + default: + var msg = error.a; + var json = error.b; + var introduction = function () { + if (!context.b) { + return 'Problem with the given value:\n\n'; + } else { + return 'Problem with the value at json' + (A2( + $elm$core$String$join, + '', + $elm$core$List$reverse(context)) + ':\n\n '); + } + }(); + return introduction + ($elm$json$Json$Decode$indent( + A2($elm$json$Json$Encode$encode, 4, json)) + ('\n\n' + msg)); + } + } + }); +var $elm$core$Array$branchFactor = 32; +var $elm$core$Array$Array_elm_builtin = F4( + function (a, b, c, d) { + return {$: 0, a: a, b: b, c: c, d: d}; + }); +var $elm$core$Elm$JsArray$empty = _JsArray_empty; +var $elm$core$Basics$ceiling = _Basics_ceiling; +var $elm$core$Basics$fdiv = _Basics_fdiv; +var $elm$core$Basics$logBase = F2( + function (base, number) { + return _Basics_log(number) / _Basics_log(base); + }); +var $elm$core$Basics$toFloat = _Basics_toFloat; +var $elm$core$Array$shiftStep = $elm$core$Basics$ceiling( + A2($elm$core$Basics$logBase, 2, $elm$core$Array$branchFactor)); +var $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty); +var $elm$core$Elm$JsArray$initialize = _JsArray_initialize; +var $elm$core$Array$Leaf = function (a) { + return {$: 1, a: a}; +}; +var $elm$core$Basics$apL = F2( + function (f, x) { + return f(x); + }); +var $elm$core$Basics$apR = F2( + function (x, f) { + return f(x); + }); +var $elm$core$Basics$eq = _Utils_equal; +var $elm$core$Basics$floor = _Basics_floor; +var $elm$core$Elm$JsArray$length = _JsArray_length; +var $elm$core$Basics$gt = _Utils_gt; +var $elm$core$Basics$max = F2( + function (x, y) { + return (_Utils_cmp(x, y) > 0) ? x : y; + }); +var $elm$core$Basics$mul = _Basics_mul; +var $elm$core$Array$SubTree = function (a) { + return {$: 0, a: a}; +}; +var $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList; +var $elm$core$Array$compressNodes = F2( + function (nodes, acc) { + compressNodes: + while (true) { + var _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes); + var node = _v0.a; + var remainingNodes = _v0.b; + var newAcc = A2( + $elm$core$List$cons, + $elm$core$Array$SubTree(node), + acc); + if (!remainingNodes.b) { + return $elm$core$List$reverse(newAcc); + } else { + var $temp$nodes = remainingNodes, + $temp$acc = newAcc; + nodes = $temp$nodes; + acc = $temp$acc; + continue compressNodes; + } + } + }); +var $elm$core$Tuple$first = function (_v0) { + var x = _v0.a; + return x; +}; +var $elm$core$Array$treeFromBuilder = F2( + function (nodeList, nodeListSize) { + treeFromBuilder: + while (true) { + var newNodeSize = $elm$core$Basics$ceiling(nodeListSize / $elm$core$Array$branchFactor); + if (newNodeSize === 1) { + return A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodeList).a; + } else { + var $temp$nodeList = A2($elm$core$Array$compressNodes, nodeList, _List_Nil), + $temp$nodeListSize = newNodeSize; + nodeList = $temp$nodeList; + nodeListSize = $temp$nodeListSize; + continue treeFromBuilder; + } + } + }); +var $elm$core$Array$builderToArray = F2( + function (reverseNodeList, builder) { + if (!builder.a) { + return A4( + $elm$core$Array$Array_elm_builtin, + $elm$core$Elm$JsArray$length(builder.c), + $elm$core$Array$shiftStep, + $elm$core$Elm$JsArray$empty, + builder.c); + } else { + var treeLen = builder.a * $elm$core$Array$branchFactor; + var depth = $elm$core$Basics$floor( + A2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1)); + var correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.d) : builder.d; + var tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.a); + return A4( + $elm$core$Array$Array_elm_builtin, + $elm$core$Elm$JsArray$length(builder.c) + treeLen, + A2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep), + tree, + builder.c); + } + }); +var $elm$core$Basics$idiv = _Basics_idiv; +var $elm$core$Basics$lt = _Utils_lt; +var $elm$core$Array$initializeHelp = F5( + function (fn, fromIndex, len, nodeList, tail) { + initializeHelp: + while (true) { + if (fromIndex < 0) { + return A2( + $elm$core$Array$builderToArray, + false, + {d: nodeList, a: (len / $elm$core$Array$branchFactor) | 0, c: tail}); + } else { + var leaf = $elm$core$Array$Leaf( + A3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn)); + var $temp$fn = fn, + $temp$fromIndex = fromIndex - $elm$core$Array$branchFactor, + $temp$len = len, + $temp$nodeList = A2($elm$core$List$cons, leaf, nodeList), + $temp$tail = tail; + fn = $temp$fn; + fromIndex = $temp$fromIndex; + len = $temp$len; + nodeList = $temp$nodeList; + tail = $temp$tail; + continue initializeHelp; + } + } + }); +var $elm$core$Basics$remainderBy = _Basics_remainderBy; +var $elm$core$Array$initialize = F2( + function (len, fn) { + if (len <= 0) { + return $elm$core$Array$empty; + } else { + var tailLen = len % $elm$core$Array$branchFactor; + var tail = A3($elm$core$Elm$JsArray$initialize, tailLen, len - tailLen, fn); + var initialFromIndex = (len - tailLen) - $elm$core$Array$branchFactor; + return A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail); + } + }); +var $elm$core$Basics$True = 0; +var $elm$core$Result$isOk = function (result) { + if (!result.$) { + return true; + } else { + return false; + } +}; +var $elm$json$Json$Decode$map = _Json_map1; +var $elm$json$Json$Decode$map2 = _Json_map2; +var $elm$json$Json$Decode$succeed = _Json_succeed; +var $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) { + switch (handler.$) { + case 0: + return 0; + case 1: + return 1; + case 2: + return 2; + default: + return 3; + } +}; +var $elm$browser$Browser$External = function (a) { + return {$: 1, a: a}; +}; +var $elm$browser$Browser$Internal = function (a) { + return {$: 0, a: a}; +}; +var $elm$core$Basics$identity = function (x) { + return x; +}; +var $elm$browser$Browser$Dom$NotFound = $elm$core$Basics$identity; +var $elm$url$Url$Http = 0; +var $elm$url$Url$Https = 1; +var $elm$url$Url$Url = F6( + function (protocol, host, port_, path, query, fragment) { + return {T: fragment, ar: host, ay: path, az: port_, aA: protocol, aB: query}; + }); +var $elm$core$String$contains = _String_contains; +var $elm$core$String$length = _String_length; +var $elm$core$String$slice = _String_slice; +var $elm$core$String$dropLeft = F2( + function (n, string) { + return (n < 1) ? string : A3( + $elm$core$String$slice, + n, + $elm$core$String$length(string), + string); + }); +var $elm$core$String$indexes = _String_indexes; +var $elm$core$String$isEmpty = function (string) { + return string === ''; +}; +var $elm$core$String$left = F2( + function (n, string) { + return (n < 1) ? '' : A3($elm$core$String$slice, 0, n, string); + }); +var $elm$core$String$toInt = _String_toInt; +var $elm$url$Url$chompBeforePath = F5( + function (protocol, path, params, frag, str) { + if ($elm$core$String$isEmpty(str) || A2($elm$core$String$contains, '@', str)) { + return $elm$core$Maybe$Nothing; + } else { + var _v0 = A2($elm$core$String$indexes, ':', str); + if (!_v0.b) { + return $elm$core$Maybe$Just( + A6($elm$url$Url$Url, protocol, str, $elm$core$Maybe$Nothing, path, params, frag)); + } else { + if (!_v0.b.b) { + var i = _v0.a; + var _v1 = $elm$core$String$toInt( + A2($elm$core$String$dropLeft, i + 1, str)); + if (_v1.$ === 1) { + return $elm$core$Maybe$Nothing; + } else { + var port_ = _v1; + return $elm$core$Maybe$Just( + A6( + $elm$url$Url$Url, + protocol, + A2($elm$core$String$left, i, str), + port_, + path, + params, + frag)); + } + } else { + return $elm$core$Maybe$Nothing; + } + } + } + }); +var $elm$url$Url$chompBeforeQuery = F4( + function (protocol, params, frag, str) { + if ($elm$core$String$isEmpty(str)) { + return $elm$core$Maybe$Nothing; + } else { + var _v0 = A2($elm$core$String$indexes, '/', str); + if (!_v0.b) { + return A5($elm$url$Url$chompBeforePath, protocol, '/', params, frag, str); + } else { + var i = _v0.a; + return A5( + $elm$url$Url$chompBeforePath, + protocol, + A2($elm$core$String$dropLeft, i, str), + params, + frag, + A2($elm$core$String$left, i, str)); + } + } + }); +var $elm$url$Url$chompBeforeFragment = F3( + function (protocol, frag, str) { + if ($elm$core$String$isEmpty(str)) { + return $elm$core$Maybe$Nothing; + } else { + var _v0 = A2($elm$core$String$indexes, '?', str); + if (!_v0.b) { + return A4($elm$url$Url$chompBeforeQuery, protocol, $elm$core$Maybe$Nothing, frag, str); + } else { + var i = _v0.a; + return A4( + $elm$url$Url$chompBeforeQuery, + protocol, + $elm$core$Maybe$Just( + A2($elm$core$String$dropLeft, i + 1, str)), + frag, + A2($elm$core$String$left, i, str)); + } + } + }); +var $elm$url$Url$chompAfterProtocol = F2( + function (protocol, str) { + if ($elm$core$String$isEmpty(str)) { + return $elm$core$Maybe$Nothing; + } else { + var _v0 = A2($elm$core$String$indexes, '#', str); + if (!_v0.b) { + return A3($elm$url$Url$chompBeforeFragment, protocol, $elm$core$Maybe$Nothing, str); + } else { + var i = _v0.a; + return A3( + $elm$url$Url$chompBeforeFragment, + protocol, + $elm$core$Maybe$Just( + A2($elm$core$String$dropLeft, i + 1, str)), + A2($elm$core$String$left, i, str)); + } + } + }); +var $elm$core$String$startsWith = _String_startsWith; +var $elm$url$Url$fromString = function (str) { + return A2($elm$core$String$startsWith, 'http://', str) ? A2( + $elm$url$Url$chompAfterProtocol, + 0, + A2($elm$core$String$dropLeft, 7, str)) : (A2($elm$core$String$startsWith, 'https://', str) ? A2( + $elm$url$Url$chompAfterProtocol, + 1, + A2($elm$core$String$dropLeft, 8, str)) : $elm$core$Maybe$Nothing); +}; +var $elm$core$Basics$never = function (_v0) { + never: + while (true) { + var nvr = _v0; + var $temp$_v0 = nvr; + _v0 = $temp$_v0; + continue never; + } +}; +var $elm$core$Task$Perform = $elm$core$Basics$identity; +var $elm$core$Task$succeed = _Scheduler_succeed; +var $elm$core$Task$init = $elm$core$Task$succeed(0); +var $elm$core$List$foldrHelper = F4( + function (fn, acc, ctr, ls) { + if (!ls.b) { + return acc; + } else { + var a = ls.a; + var r1 = ls.b; + if (!r1.b) { + return A2(fn, a, acc); + } else { + var b = r1.a; + var r2 = r1.b; + if (!r2.b) { + return A2( + fn, + a, + A2(fn, b, acc)); + } else { + var c = r2.a; + var r3 = r2.b; + if (!r3.b) { + return A2( + fn, + a, + A2( + fn, + b, + A2(fn, c, acc))); + } else { + var d = r3.a; + var r4 = r3.b; + var res = (ctr > 500) ? A3( + $elm$core$List$foldl, + fn, + acc, + $elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4); + return A2( + fn, + a, + A2( + fn, + b, + A2( + fn, + c, + A2(fn, d, res)))); + } + } + } + } + }); +var $elm$core$List$foldr = F3( + function (fn, acc, ls) { + return A4($elm$core$List$foldrHelper, fn, acc, 0, ls); + }); +var $elm$core$List$map = F2( + function (f, xs) { + return A3( + $elm$core$List$foldr, + F2( + function (x, acc) { + return A2( + $elm$core$List$cons, + f(x), + acc); + }), + _List_Nil, + xs); + }); +var $elm$core$Task$andThen = _Scheduler_andThen; +var $elm$core$Task$map = F2( + function (func, taskA) { + return A2( + $elm$core$Task$andThen, + function (a) { + return $elm$core$Task$succeed( + func(a)); + }, + taskA); + }); +var $elm$core$Task$map2 = F3( + function (func, taskA, taskB) { + return A2( + $elm$core$Task$andThen, + function (a) { + return A2( + $elm$core$Task$andThen, + function (b) { + return $elm$core$Task$succeed( + A2(func, a, b)); + }, + taskB); + }, + taskA); + }); +var $elm$core$Task$sequence = function (tasks) { + return A3( + $elm$core$List$foldr, + $elm$core$Task$map2($elm$core$List$cons), + $elm$core$Task$succeed(_List_Nil), + tasks); +}; +var $elm$core$Platform$sendToApp = _Platform_sendToApp; +var $elm$core$Task$spawnCmd = F2( + function (router, _v0) { + var task = _v0; + return _Scheduler_spawn( + A2( + $elm$core$Task$andThen, + $elm$core$Platform$sendToApp(router), + task)); + }); +var $elm$core$Task$onEffects = F3( + function (router, commands, state) { + return A2( + $elm$core$Task$map, + function (_v0) { + return 0; + }, + $elm$core$Task$sequence( + A2( + $elm$core$List$map, + $elm$core$Task$spawnCmd(router), + commands))); + }); +var $elm$core$Task$onSelfMsg = F3( + function (_v0, _v1, _v2) { + return $elm$core$Task$succeed(0); + }); +var $elm$core$Task$cmdMap = F2( + function (tagger, _v0) { + var task = _v0; + return A2($elm$core$Task$map, tagger, task); + }); +_Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap); +var $elm$core$Task$command = _Platform_leaf('Task'); +var $elm$core$Task$perform = F2( + function (toMessage, task) { + return $elm$core$Task$command( + A2($elm$core$Task$map, toMessage, task)); + }); +var $elm$browser$Browser$application = _Browser_application; +var $author$project$Main$AboutModel = F2( + function (a, b) { + return {$: 0, a: a, b: b}; + }); +var $author$project$About$Main$NoModel = 0; +var $author$project$About$Main$initModel = 0; +var $author$project$Main$ContactModel = F2( + function (a, b) { + return {$: 1, a: a, b: b}; + }); +var $author$project$Main$GotAboutMsg = function (a) { + return {$: 0, a: a}; +}; +var $author$project$Main$GotContactMsg = function (a) { + return {$: 1, a: a}; +}; +var $author$project$Main$GotVshMsg = function (a) { + return {$: 2, a: a}; +}; +var $author$project$Main$VshModel = F2( + function (a, b) { + return {$: 2, a: a, b: b}; + }); +var $author$project$Route$AboutRoute = 0; +var $elm$core$Maybe$withDefault = F2( + function (_default, maybe) { + if (!maybe.$) { + var value = maybe.a; + return value; + } else { + return _default; + } + }); +var $author$project$Route$fake = function (path) { + return { + T: $elm$core$Maybe$Nothing, + ar: 'sharpvik.github.com', + ay: A2($elm$core$Maybe$withDefault, '/about', path.T), + az: $elm$core$Maybe$Nothing, + aA: 1, + aB: $elm$core$Maybe$Nothing + }; +}; +var $elm$url$Url$Parser$State = F5( + function (visited, unvisited, params, frag, value) { + return {s: frag, t: params, r: unvisited, m: value, w: visited}; + }); +var $elm$url$Url$Parser$getFirstMatch = function (states) { + getFirstMatch: + while (true) { + if (!states.b) { + return $elm$core$Maybe$Nothing; + } else { + var state = states.a; + var rest = states.b; + var _v1 = state.r; + if (!_v1.b) { + return $elm$core$Maybe$Just(state.m); + } else { + if ((_v1.a === '') && (!_v1.b.b)) { + return $elm$core$Maybe$Just(state.m); + } else { + var $temp$states = rest; + states = $temp$states; + continue getFirstMatch; + } + } + } + } +}; +var $elm$url$Url$Parser$removeFinalEmpty = function (segments) { + if (!segments.b) { + return _List_Nil; + } else { + if ((segments.a === '') && (!segments.b.b)) { + return _List_Nil; + } else { + var segment = segments.a; + var rest = segments.b; + return A2( + $elm$core$List$cons, + segment, + $elm$url$Url$Parser$removeFinalEmpty(rest)); + } + } +}; +var $elm$url$Url$Parser$preparePath = function (path) { + var _v0 = A2($elm$core$String$split, '/', path); + if (_v0.b && (_v0.a === '')) { + var segments = _v0.b; + return $elm$url$Url$Parser$removeFinalEmpty(segments); + } else { + var segments = _v0; + return $elm$url$Url$Parser$removeFinalEmpty(segments); + } +}; +var $elm$url$Url$Parser$addToParametersHelp = F2( + function (value, maybeList) { + if (maybeList.$ === 1) { + return $elm$core$Maybe$Just( + _List_fromArray( + [value])); + } else { + var list = maybeList.a; + return $elm$core$Maybe$Just( + A2($elm$core$List$cons, value, list)); + } + }); +var $elm$url$Url$percentDecode = _Url_percentDecode; +var $elm$core$Basics$compare = _Utils_compare; +var $elm$core$Dict$get = F2( + function (targetKey, dict) { + get: + while (true) { + if (dict.$ === -2) { + return $elm$core$Maybe$Nothing; + } else { + var key = dict.b; + var value = dict.c; + var left = dict.d; + var right = dict.e; + var _v1 = A2($elm$core$Basics$compare, targetKey, key); + switch (_v1) { + case 0: + var $temp$targetKey = targetKey, + $temp$dict = left; + targetKey = $temp$targetKey; + dict = $temp$dict; + continue get; + case 1: + return $elm$core$Maybe$Just(value); + default: + var $temp$targetKey = targetKey, + $temp$dict = right; + targetKey = $temp$targetKey; + dict = $temp$dict; + continue get; + } + } + } + }); +var $elm$core$Dict$Black = 1; +var $elm$core$Dict$RBNode_elm_builtin = F5( + function (a, b, c, d, e) { + return {$: -1, a: a, b: b, c: c, d: d, e: e}; + }); +var $elm$core$Dict$RBEmpty_elm_builtin = {$: -2}; +var $elm$core$Dict$Red = 0; +var $elm$core$Dict$balance = F5( + function (color, key, value, left, right) { + if ((right.$ === -1) && (!right.a)) { + var _v1 = right.a; + var rK = right.b; + var rV = right.c; + var rLeft = right.d; + var rRight = right.e; + if ((left.$ === -1) && (!left.a)) { + var _v3 = left.a; + var lK = left.b; + var lV = left.c; + var lLeft = left.d; + var lRight = left.e; + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 0, + key, + value, + A5($elm$core$Dict$RBNode_elm_builtin, 1, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rLeft, rRight)); + } else { + return A5( + $elm$core$Dict$RBNode_elm_builtin, + color, + rK, + rV, + A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, left, rLeft), + rRight); + } + } else { + if ((((left.$ === -1) && (!left.a)) && (left.d.$ === -1)) && (!left.d.a)) { + var _v5 = left.a; + var lK = left.b; + var lV = left.c; + var _v6 = left.d; + var _v7 = _v6.a; + var llK = _v6.b; + var llV = _v6.c; + var llLeft = _v6.d; + var llRight = _v6.e; + var lRight = left.e; + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 0, + lK, + lV, + A5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight), + A5($elm$core$Dict$RBNode_elm_builtin, 1, key, value, lRight, right)); + } else { + return A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right); + } + } + }); +var $elm$core$Dict$insertHelp = F3( + function (key, value, dict) { + if (dict.$ === -2) { + return A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin); + } else { + var nColor = dict.a; + var nKey = dict.b; + var nValue = dict.c; + var nLeft = dict.d; + var nRight = dict.e; + var _v1 = A2($elm$core$Basics$compare, key, nKey); + switch (_v1) { + case 0: + return A5( + $elm$core$Dict$balance, + nColor, + nKey, + nValue, + A3($elm$core$Dict$insertHelp, key, value, nLeft), + nRight); + case 1: + return A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight); + default: + return A5( + $elm$core$Dict$balance, + nColor, + nKey, + nValue, + nLeft, + A3($elm$core$Dict$insertHelp, key, value, nRight)); + } + } + }); +var $elm$core$Dict$insert = F3( + function (key, value, dict) { + var _v0 = A3($elm$core$Dict$insertHelp, key, value, dict); + if ((_v0.$ === -1) && (!_v0.a)) { + var _v1 = _v0.a; + var k = _v0.b; + var v = _v0.c; + var l = _v0.d; + var r = _v0.e; + return A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r); + } else { + var x = _v0; + return x; + } + }); +var $elm$core$Dict$getMin = function (dict) { + getMin: + while (true) { + if ((dict.$ === -1) && (dict.d.$ === -1)) { + var left = dict.d; + var $temp$dict = left; + dict = $temp$dict; + continue getMin; + } else { + return dict; + } + } +}; +var $elm$core$Dict$moveRedLeft = function (dict) { + if (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) { + if ((dict.e.d.$ === -1) && (!dict.e.d.a)) { + var clr = dict.a; + var k = dict.b; + var v = dict.c; + var _v1 = dict.d; + var lClr = _v1.a; + var lK = _v1.b; + var lV = _v1.c; + var lLeft = _v1.d; + var lRight = _v1.e; + var _v2 = dict.e; + var rClr = _v2.a; + var rK = _v2.b; + var rV = _v2.c; + var rLeft = _v2.d; + var _v3 = rLeft.a; + var rlK = rLeft.b; + var rlV = rLeft.c; + var rlL = rLeft.d; + var rlR = rLeft.e; + var rRight = _v2.e; + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 0, + rlK, + rlV, + A5( + $elm$core$Dict$RBNode_elm_builtin, + 1, + k, + v, + A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), + rlL), + A5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rlR, rRight)); + } else { + var clr = dict.a; + var k = dict.b; + var v = dict.c; + var _v4 = dict.d; + var lClr = _v4.a; + var lK = _v4.b; + var lV = _v4.c; + var lLeft = _v4.d; + var lRight = _v4.e; + var _v5 = dict.e; + var rClr = _v5.a; + var rK = _v5.b; + var rV = _v5.c; + var rLeft = _v5.d; + var rRight = _v5.e; + if (clr === 1) { + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 1, + k, + v, + A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)); + } else { + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 1, + k, + v, + A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)); + } + } + } else { + return dict; + } +}; +var $elm$core$Dict$moveRedRight = function (dict) { + if (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) { + if ((dict.d.d.$ === -1) && (!dict.d.d.a)) { + var clr = dict.a; + var k = dict.b; + var v = dict.c; + var _v1 = dict.d; + var lClr = _v1.a; + var lK = _v1.b; + var lV = _v1.c; + var _v2 = _v1.d; + var _v3 = _v2.a; + var llK = _v2.b; + var llV = _v2.c; + var llLeft = _v2.d; + var llRight = _v2.e; + var lRight = _v1.e; + var _v4 = dict.e; + var rClr = _v4.a; + var rK = _v4.b; + var rV = _v4.c; + var rLeft = _v4.d; + var rRight = _v4.e; + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 0, + lK, + lV, + A5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight), + A5( + $elm$core$Dict$RBNode_elm_builtin, + 1, + k, + v, + lRight, + A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight))); + } else { + var clr = dict.a; + var k = dict.b; + var v = dict.c; + var _v5 = dict.d; + var lClr = _v5.a; + var lK = _v5.b; + var lV = _v5.c; + var lLeft = _v5.d; + var lRight = _v5.e; + var _v6 = dict.e; + var rClr = _v6.a; + var rK = _v6.b; + var rV = _v6.c; + var rLeft = _v6.d; + var rRight = _v6.e; + if (clr === 1) { + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 1, + k, + v, + A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)); + } else { + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 1, + k, + v, + A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)); + } + } + } else { + return dict; + } +}; +var $elm$core$Dict$removeHelpPrepEQGT = F7( + function (targetKey, dict, color, key, value, left, right) { + if ((left.$ === -1) && (!left.a)) { + var _v1 = left.a; + var lK = left.b; + var lV = left.c; + var lLeft = left.d; + var lRight = left.e; + return A5( + $elm$core$Dict$RBNode_elm_builtin, + color, + lK, + lV, + lLeft, + A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, lRight, right)); + } else { + _v2$2: + while (true) { + if ((right.$ === -1) && (right.a === 1)) { + if (right.d.$ === -1) { + if (right.d.a === 1) { + var _v3 = right.a; + var _v4 = right.d; + var _v5 = _v4.a; + return $elm$core$Dict$moveRedRight(dict); + } else { + break _v2$2; + } + } else { + var _v6 = right.a; + var _v7 = right.d; + return $elm$core$Dict$moveRedRight(dict); + } + } else { + break _v2$2; + } + } + return dict; + } + }); +var $elm$core$Dict$removeMin = function (dict) { + if ((dict.$ === -1) && (dict.d.$ === -1)) { + var color = dict.a; + var key = dict.b; + var value = dict.c; + var left = dict.d; + var lColor = left.a; + var lLeft = left.d; + var right = dict.e; + if (lColor === 1) { + if ((lLeft.$ === -1) && (!lLeft.a)) { + var _v3 = lLeft.a; + return A5( + $elm$core$Dict$RBNode_elm_builtin, + color, + key, + value, + $elm$core$Dict$removeMin(left), + right); + } else { + var _v4 = $elm$core$Dict$moveRedLeft(dict); + if (_v4.$ === -1) { + var nColor = _v4.a; + var nKey = _v4.b; + var nValue = _v4.c; + var nLeft = _v4.d; + var nRight = _v4.e; + return A5( + $elm$core$Dict$balance, + nColor, + nKey, + nValue, + $elm$core$Dict$removeMin(nLeft), + nRight); + } else { + return $elm$core$Dict$RBEmpty_elm_builtin; + } + } + } else { + return A5( + $elm$core$Dict$RBNode_elm_builtin, + color, + key, + value, + $elm$core$Dict$removeMin(left), + right); + } + } else { + return $elm$core$Dict$RBEmpty_elm_builtin; + } +}; +var $elm$core$Dict$removeHelp = F2( + function (targetKey, dict) { + if (dict.$ === -2) { + return $elm$core$Dict$RBEmpty_elm_builtin; + } else { + var color = dict.a; + var key = dict.b; + var value = dict.c; + var left = dict.d; + var right = dict.e; + if (_Utils_cmp(targetKey, key) < 0) { + if ((left.$ === -1) && (left.a === 1)) { + var _v4 = left.a; + var lLeft = left.d; + if ((lLeft.$ === -1) && (!lLeft.a)) { + var _v6 = lLeft.a; + return A5( + $elm$core$Dict$RBNode_elm_builtin, + color, + key, + value, + A2($elm$core$Dict$removeHelp, targetKey, left), + right); + } else { + var _v7 = $elm$core$Dict$moveRedLeft(dict); + if (_v7.$ === -1) { + var nColor = _v7.a; + var nKey = _v7.b; + var nValue = _v7.c; + var nLeft = _v7.d; + var nRight = _v7.e; + return A5( + $elm$core$Dict$balance, + nColor, + nKey, + nValue, + A2($elm$core$Dict$removeHelp, targetKey, nLeft), + nRight); + } else { + return $elm$core$Dict$RBEmpty_elm_builtin; + } + } + } else { + return A5( + $elm$core$Dict$RBNode_elm_builtin, + color, + key, + value, + A2($elm$core$Dict$removeHelp, targetKey, left), + right); + } + } else { + return A2( + $elm$core$Dict$removeHelpEQGT, + targetKey, + A7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right)); + } + } + }); +var $elm$core$Dict$removeHelpEQGT = F2( + function (targetKey, dict) { + if (dict.$ === -1) { + var color = dict.a; + var key = dict.b; + var value = dict.c; + var left = dict.d; + var right = dict.e; + if (_Utils_eq(targetKey, key)) { + var _v1 = $elm$core$Dict$getMin(right); + if (_v1.$ === -1) { + var minKey = _v1.b; + var minValue = _v1.c; + return A5( + $elm$core$Dict$balance, + color, + minKey, + minValue, + left, + $elm$core$Dict$removeMin(right)); + } else { + return $elm$core$Dict$RBEmpty_elm_builtin; + } + } else { + return A5( + $elm$core$Dict$balance, + color, + key, + value, + left, + A2($elm$core$Dict$removeHelp, targetKey, right)); + } + } else { + return $elm$core$Dict$RBEmpty_elm_builtin; + } + }); +var $elm$core$Dict$remove = F2( + function (key, dict) { + var _v0 = A2($elm$core$Dict$removeHelp, key, dict); + if ((_v0.$ === -1) && (!_v0.a)) { + var _v1 = _v0.a; + var k = _v0.b; + var v = _v0.c; + var l = _v0.d; + var r = _v0.e; + return A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r); + } else { + var x = _v0; + return x; + } + }); +var $elm$core$Dict$update = F3( + function (targetKey, alter, dictionary) { + var _v0 = alter( + A2($elm$core$Dict$get, targetKey, dictionary)); + if (!_v0.$) { + var value = _v0.a; + return A3($elm$core$Dict$insert, targetKey, value, dictionary); + } else { + return A2($elm$core$Dict$remove, targetKey, dictionary); + } + }); +var $elm$url$Url$Parser$addParam = F2( + function (segment, dict) { + var _v0 = A2($elm$core$String$split, '=', segment); + if ((_v0.b && _v0.b.b) && (!_v0.b.b.b)) { + var rawKey = _v0.a; + var _v1 = _v0.b; + var rawValue = _v1.a; + var _v2 = $elm$url$Url$percentDecode(rawKey); + if (_v2.$ === 1) { + return dict; + } else { + var key = _v2.a; + var _v3 = $elm$url$Url$percentDecode(rawValue); + if (_v3.$ === 1) { + return dict; + } else { + var value = _v3.a; + return A3( + $elm$core$Dict$update, + key, + $elm$url$Url$Parser$addToParametersHelp(value), + dict); + } + } + } else { + return dict; + } + }); +var $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin; +var $elm$url$Url$Parser$prepareQuery = function (maybeQuery) { + if (maybeQuery.$ === 1) { + return $elm$core$Dict$empty; + } else { + var qry = maybeQuery.a; + return A3( + $elm$core$List$foldr, + $elm$url$Url$Parser$addParam, + $elm$core$Dict$empty, + A2($elm$core$String$split, '&', qry)); + } +}; +var $elm$url$Url$Parser$parse = F2( + function (_v0, url) { + var parser = _v0; + return $elm$url$Url$Parser$getFirstMatch( + parser( + A5( + $elm$url$Url$Parser$State, + _List_Nil, + $elm$url$Url$Parser$preparePath(url.ay), + $elm$url$Url$Parser$prepareQuery(url.aB), + url.T, + $elm$core$Basics$identity))); + }); +var $elm$url$Url$Parser$Parser = $elm$core$Basics$identity; +var $elm$url$Url$Parser$mapState = F2( + function (func, _v0) { + var visited = _v0.w; + var unvisited = _v0.r; + var params = _v0.t; + var frag = _v0.s; + var value = _v0.m; + return A5( + $elm$url$Url$Parser$State, + visited, + unvisited, + params, + frag, + func(value)); + }); +var $elm$url$Url$Parser$map = F2( + function (subValue, _v0) { + var parseArg = _v0; + return function (_v1) { + var visited = _v1.w; + var unvisited = _v1.r; + var params = _v1.t; + var frag = _v1.s; + var value = _v1.m; + return A2( + $elm$core$List$map, + $elm$url$Url$Parser$mapState(value), + parseArg( + A5($elm$url$Url$Parser$State, visited, unvisited, params, frag, subValue))); + }; + }); +var $elm$core$List$append = F2( + function (xs, ys) { + if (!ys.b) { + return xs; + } else { + return A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs); + } + }); +var $elm$core$List$concat = function (lists) { + return A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists); +}; +var $elm$core$List$concatMap = F2( + function (f, list) { + return $elm$core$List$concat( + A2($elm$core$List$map, f, list)); + }); +var $elm$url$Url$Parser$oneOf = function (parsers) { + return function (state) { + return A2( + $elm$core$List$concatMap, + function (_v0) { + var parser = _v0; + return parser(state); + }, + parsers); + }; +}; +var $author$project$Route$repr = function (route) { + switch (route) { + case 0: + return 'about'; + case 1: + return 'contact'; + default: + return 'vsh'; + } +}; +var $author$project$Route$SkillsRoute = 1; +var $author$project$Route$VshRoute = 2; +var $author$project$Route$routes = function () { + var check = function (route) { + switch (route) { + case 0: + return 0; + case 1: + return 0; + default: + return 0; + } + }; + return _List_fromArray( + [0, 1, 2]); +}(); +var $elm$url$Url$Parser$s = function (str) { + return function (_v0) { + var visited = _v0.w; + var unvisited = _v0.r; + var params = _v0.t; + var frag = _v0.s; + var value = _v0.m; + if (!unvisited.b) { + return _List_Nil; + } else { + var next = unvisited.a; + var rest = unvisited.b; + return _Utils_eq(next, str) ? _List_fromArray( + [ + A5( + $elm$url$Url$Parser$State, + A2($elm$core$List$cons, next, visited), + rest, + params, + frag, + value) + ]) : _List_Nil; + } + }; +}; +var $elm$url$Url$Parser$top = function (state) { + return _List_fromArray( + [state]); +}; +var $author$project$Route$urlParser = function () { + var mapper = function (route) { + return A2( + $elm$url$Url$Parser$map, + route, + $elm$url$Url$Parser$s( + $author$project$Route$repr(route))); + }; + return $elm$url$Url$Parser$oneOf( + A2( + $elm$core$List$cons, + A2($elm$url$Url$Parser$map, 0, $elm$url$Url$Parser$top), + A2($elm$core$List$map, mapper, $author$project$Route$routes))); +}(); +var $author$project$Route$fromUrl = function (url) { + return A2( + $elm$core$Maybe$withDefault, + 0, + A2( + $elm$url$Url$Parser$parse, + $author$project$Route$urlParser, + $author$project$Route$fake(url))); +}; +var $elm$core$Platform$Cmd$batch = _Platform_batch; +var $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil); +var $author$project$About$Main$init = _Utils_Tuple2($author$project$About$Main$initModel, $elm$core$Platform$Cmd$none); +var $author$project$Skills$Main$NoModel = 0; +var $author$project$Skills$Main$initModel = 0; +var $author$project$Skills$Main$init = _Utils_Tuple2($author$project$Skills$Main$initModel, $elm$core$Platform$Cmd$none); +var $author$project$Vsh$History$History = F2( + function (history, ptr) { + return {o: history, u: ptr}; + }); +var $author$project$Vsh$History$empty = A2($author$project$Vsh$History$History, $elm$core$Array$empty, 0); +var $author$project$Vsh$Text$Green = 1; +var $author$project$Vsh$Text$Yellow = 0; +var $elm$json$Json$Encode$string = _Json_wrap; +var $elm$html$Html$Attributes$stringProperty = F2( + function (key, string) { + return A2( + _VirtualDom_property, + key, + $elm$json$Json$Encode$string(string)); + }); +var $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className'); +var $author$project$Vsh$Text$colorToClass = function (c) { + return 'vsh-' + function () { + switch (c) { + case 0: + return 'yellow'; + case 1: + return 'green'; + default: + return 'magenta'; + } + }(); +}; +var $elm$html$Html$span = _VirtualDom_node('span'); +var $elm$virtual_dom$VirtualDom$text = _VirtualDom_text; +var $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text; +var $author$project$Vsh$Text$ctext = F2( + function (color, message) { + return A2( + $elm$html$Html$span, + _List_fromArray( + [ + $elm$html$Html$Attributes$class( + 'vsh-text ' + $author$project$Vsh$Text$colorToClass(color)) + ]), + _List_fromArray( + [ + $elm$html$Html$text(message) + ])); + }); +var $author$project$Vsh$Text$Magenta = 2; +var $author$project$Vsh$Main$prompt = _List_fromArray( + [ + A2($author$project$Vsh$Text$ctext, 0, 'guest'), + $elm$html$Html$text(' at '), + A2($author$project$Vsh$Text$ctext, 2, 'sharpvik'), + $elm$html$Html$text('\n❯ ') + ]); +var $author$project$Vsh$Command$version = F2( + function (_v0, display) { + return _Utils_ap( + display, + _List_fromArray( + [ + $elm$html$Html$text('vsh v0.1.3 by Viktor A. Rozenko Voitenko ') + ])); + }); +var $author$project$Vsh$Main$greeting = _Utils_ap( + A2($author$project$Vsh$Command$version, 'version', _List_Nil), + _Utils_ap( + _List_fromArray( + [ + $elm$html$Html$text('\nEnter '), + A2($author$project$Vsh$Text$ctext, 1, 'help'), + $elm$html$Html$text(' to see available commands!\n'), + A2($author$project$Vsh$Text$ctext, 0, 'VSH does not support mobile devices.\n\n') + ]), + $author$project$Vsh$Main$prompt)); +var $author$project$Vsh$Main$initModel = {k: '', B: $author$project$Vsh$Main$greeting, o: $author$project$Vsh$History$empty}; +var $author$project$Vsh$Main$init = _Utils_Tuple2($author$project$Vsh$Main$initModel, $elm$core$Platform$Cmd$none); +var $elm$core$Platform$Cmd$map = _Platform_map; +var $author$project$Main$toKey = function (model) { + switch (model.$) { + case 0: + var key = model.a; + return key; + case 1: + var key = model.a; + return key; + default: + var key = model.a; + return key; + } +}; +var $author$project$Main$mux = F2( + function (model, url) { + var route = $author$project$Route$fromUrl(url); + var norm = F3( + function (toModel, toMsg, _v1) { + var subModel = _v1.a; + var cmd = _v1.b; + return _Utils_Tuple2( + toModel(subModel), + A2($elm$core$Platform$Cmd$map, toMsg, cmd)); + }); + var key = $author$project$Main$toKey(model); + switch (route) { + case 0: + return A3( + norm, + $author$project$Main$AboutModel(key), + $author$project$Main$GotAboutMsg, + $author$project$About$Main$init); + case 1: + return A3( + norm, + $author$project$Main$ContactModel(key), + $author$project$Main$GotContactMsg, + $author$project$Skills$Main$init); + default: + return A3( + norm, + $author$project$Main$VshModel(key), + $author$project$Main$GotVshMsg, + $author$project$Vsh$Main$init); + } + }); +var $author$project$Main$init = F3( + function (_v0, url, key) { + return A2( + $author$project$Main$mux, + A2($author$project$Main$AboutModel, key, $author$project$About$Main$initModel), + url); + }); +var $elm$core$Platform$Sub$map = _Platform_map; +var $elm$core$Platform$Sub$batch = _Platform_batch; +var $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil); +var $author$project$About$Main$subscriptions = function (_v0) { + return $elm$core$Platform$Sub$none; +}; +var $author$project$Skills$Main$subscriptions = function (_v0) { + return $elm$core$Platform$Sub$none; +}; +var $elm$json$Json$Decode$bool = _Json_decodeBool; +var $author$project$Vsh$Main$Alt = function (a) { + return {$: 7, a: a}; +}; +var $author$project$Vsh$Main$ArrowDown = {$: 5}; +var $author$project$Vsh$Main$ArrowUp = {$: 4}; +var $author$project$Vsh$Main$Backspace = {$: 3}; +var $author$project$Vsh$Main$Ctrl = function (a) { + return {$: 6, a: a}; +}; +var $author$project$Vsh$Main$Enter = {$: 2}; +var $author$project$Vsh$Main$Symbol = function (a) { + return {$: 0, a: a}; +}; +var $author$project$Vsh$Main$Tab = {$: 1}; +var $author$project$Vsh$Main$Other = {$: 8}; +var $elm$core$Basics$neq = _Utils_notEqual; +var $author$project$Vsh$Main$specialKeyEvent = F2( + function (event, key) { + if ($elm$core$String$length(key) !== 1) { + return $author$project$Vsh$Main$Other; + } else { + var _v0 = $elm$core$String$uncons(key); + if (!_v0.$) { + var _v1 = _v0.a; + var _char = _v1.a; + return event(_char); + } else { + return $author$project$Vsh$Main$Other; + } + } + }); +var $author$project$Vsh$Main$eventConstructor = F3( + function (ctrl, alt, key) { + if (ctrl) { + return A2($author$project$Vsh$Main$specialKeyEvent, $author$project$Vsh$Main$Ctrl, key); + } else { + if (alt) { + return A2($author$project$Vsh$Main$specialKeyEvent, $author$project$Vsh$Main$Alt, key); + } else { + switch (key) { + case 'Tab': + return $author$project$Vsh$Main$Tab; + case 'Enter': + return $author$project$Vsh$Main$Enter; + case 'Backspace': + return $author$project$Vsh$Main$Backspace; + case 'ArrowUp': + return $author$project$Vsh$Main$ArrowUp; + case 'ArrowDown': + return $author$project$Vsh$Main$ArrowDown; + default: + var _char = key; + return A2($author$project$Vsh$Main$specialKeyEvent, $author$project$Vsh$Main$Symbol, _char); + } + } + } + }); +var $elm$json$Json$Decode$field = _Json_decodeField; +var $elm$json$Json$Decode$map3 = _Json_map3; +var $elm$json$Json$Decode$string = _Json_decodeString; +var $author$project$Vsh$Main$eventDecoder = A4( + $elm$json$Json$Decode$map3, + $author$project$Vsh$Main$eventConstructor, + A2($elm$json$Json$Decode$field, 'ctrlKey', $elm$json$Json$Decode$bool), + A2($elm$json$Json$Decode$field, 'altKey', $elm$json$Json$Decode$bool), + A2($elm$json$Json$Decode$field, 'key', $elm$json$Json$Decode$string)); +var $author$project$Vsh$Main$Clear = {$: 1}; +var $author$project$Vsh$Main$Exit = {$: 2}; +var $author$project$Vsh$Main$Ignore = {$: 3}; +var $author$project$Vsh$Main$KeyDown = function (a) { + return {$: 0, a: a}; +}; +var $author$project$Vsh$Main$toKeyDownMsg = function (event) { + _v0$3: + while (true) { + switch (event.$) { + case 6: + switch (event.a) { + case ';': + return $author$project$Vsh$Main$Clear; + case 'e': + return $author$project$Vsh$Main$Exit; + default: + break _v0$3; + } + case 8: + return $author$project$Vsh$Main$Ignore; + default: + break _v0$3; + } + } + var e = event; + return $author$project$Vsh$Main$KeyDown(e); +}; +var $author$project$Vsh$Main$keydownHandler = A2($elm$json$Json$Decode$map, $author$project$Vsh$Main$toKeyDownMsg, $author$project$Vsh$Main$eventDecoder); +var $elm$browser$Browser$Events$Document = 0; +var $elm$browser$Browser$Events$MySub = F3( + function (a, b, c) { + return {$: 0, a: a, b: b, c: c}; + }); +var $elm$browser$Browser$Events$State = F2( + function (subs, pids) { + return {Y: pids, ad: subs}; + }); +var $elm$browser$Browser$Events$init = $elm$core$Task$succeed( + A2($elm$browser$Browser$Events$State, _List_Nil, $elm$core$Dict$empty)); +var $elm$browser$Browser$Events$nodeToKey = function (node) { + if (!node) { + return 'd_'; + } else { + return 'w_'; + } +}; +var $elm$browser$Browser$Events$addKey = function (sub) { + var node = sub.a; + var name = sub.b; + return _Utils_Tuple2( + _Utils_ap( + $elm$browser$Browser$Events$nodeToKey(node), + name), + sub); +}; +var $elm$core$Dict$fromList = function (assocs) { + return A3( + $elm$core$List$foldl, + F2( + function (_v0, dict) { + var key = _v0.a; + var value = _v0.b; + return A3($elm$core$Dict$insert, key, value, dict); + }), + $elm$core$Dict$empty, + assocs); +}; +var $elm$core$Process$kill = _Scheduler_kill; +var $elm$core$Dict$foldl = F3( + function (func, acc, dict) { + foldl: + while (true) { + if (dict.$ === -2) { + return acc; + } else { + var key = dict.b; + var value = dict.c; + var left = dict.d; + var right = dict.e; + var $temp$func = func, + $temp$acc = A3( + func, + key, + value, + A3($elm$core$Dict$foldl, func, acc, left)), + $temp$dict = right; + func = $temp$func; + acc = $temp$acc; + dict = $temp$dict; + continue foldl; + } + } + }); +var $elm$core$Dict$merge = F6( + function (leftStep, bothStep, rightStep, leftDict, rightDict, initialResult) { + var stepState = F3( + function (rKey, rValue, _v0) { + stepState: + while (true) { + var list = _v0.a; + var result = _v0.b; + if (!list.b) { + return _Utils_Tuple2( + list, + A3(rightStep, rKey, rValue, result)); + } else { + var _v2 = list.a; + var lKey = _v2.a; + var lValue = _v2.b; + var rest = list.b; + if (_Utils_cmp(lKey, rKey) < 0) { + var $temp$rKey = rKey, + $temp$rValue = rValue, + $temp$_v0 = _Utils_Tuple2( + rest, + A3(leftStep, lKey, lValue, result)); + rKey = $temp$rKey; + rValue = $temp$rValue; + _v0 = $temp$_v0; + continue stepState; + } else { + if (_Utils_cmp(lKey, rKey) > 0) { + return _Utils_Tuple2( + list, + A3(rightStep, rKey, rValue, result)); + } else { + return _Utils_Tuple2( + rest, + A4(bothStep, lKey, lValue, rValue, result)); + } + } + } + } + }); + var _v3 = A3( + $elm$core$Dict$foldl, + stepState, + _Utils_Tuple2( + $elm$core$Dict$toList(leftDict), + initialResult), + rightDict); + var leftovers = _v3.a; + var intermediateResult = _v3.b; + return A3( + $elm$core$List$foldl, + F2( + function (_v4, result) { + var k = _v4.a; + var v = _v4.b; + return A3(leftStep, k, v, result); + }), + intermediateResult, + leftovers); + }); +var $elm$browser$Browser$Events$Event = F2( + function (key, event) { + return {S: event, V: key}; + }); +var $elm$core$Platform$sendToSelf = _Platform_sendToSelf; +var $elm$browser$Browser$Events$spawn = F3( + function (router, key, _v0) { + var node = _v0.a; + var name = _v0.b; + var actualNode = function () { + if (!node) { + return _Browser_doc; + } else { + return _Browser_window; + } + }(); + return A2( + $elm$core$Task$map, + function (value) { + return _Utils_Tuple2(key, value); + }, + A3( + _Browser_on, + actualNode, + name, + function (event) { + return A2( + $elm$core$Platform$sendToSelf, + router, + A2($elm$browser$Browser$Events$Event, key, event)); + })); + }); +var $elm$core$Dict$union = F2( + function (t1, t2) { + return A3($elm$core$Dict$foldl, $elm$core$Dict$insert, t2, t1); + }); +var $elm$browser$Browser$Events$onEffects = F3( + function (router, subs, state) { + var stepRight = F3( + function (key, sub, _v6) { + var deads = _v6.a; + var lives = _v6.b; + var news = _v6.c; + return _Utils_Tuple3( + deads, + lives, + A2( + $elm$core$List$cons, + A3($elm$browser$Browser$Events$spawn, router, key, sub), + news)); + }); + var stepLeft = F3( + function (_v4, pid, _v5) { + var deads = _v5.a; + var lives = _v5.b; + var news = _v5.c; + return _Utils_Tuple3( + A2($elm$core$List$cons, pid, deads), + lives, + news); + }); + var stepBoth = F4( + function (key, pid, _v2, _v3) { + var deads = _v3.a; + var lives = _v3.b; + var news = _v3.c; + return _Utils_Tuple3( + deads, + A3($elm$core$Dict$insert, key, pid, lives), + news); + }); + var newSubs = A2($elm$core$List$map, $elm$browser$Browser$Events$addKey, subs); + var _v0 = A6( + $elm$core$Dict$merge, + stepLeft, + stepBoth, + stepRight, + state.Y, + $elm$core$Dict$fromList(newSubs), + _Utils_Tuple3(_List_Nil, $elm$core$Dict$empty, _List_Nil)); + var deadPids = _v0.a; + var livePids = _v0.b; + var makeNewPids = _v0.c; + return A2( + $elm$core$Task$andThen, + function (pids) { + return $elm$core$Task$succeed( + A2( + $elm$browser$Browser$Events$State, + newSubs, + A2( + $elm$core$Dict$union, + livePids, + $elm$core$Dict$fromList(pids)))); + }, + A2( + $elm$core$Task$andThen, + function (_v1) { + return $elm$core$Task$sequence(makeNewPids); + }, + $elm$core$Task$sequence( + A2($elm$core$List$map, $elm$core$Process$kill, deadPids)))); + }); +var $elm$core$List$maybeCons = F3( + function (f, mx, xs) { + var _v0 = f(mx); + if (!_v0.$) { + var x = _v0.a; + return A2($elm$core$List$cons, x, xs); + } else { + return xs; + } + }); +var $elm$core$List$filterMap = F2( + function (f, xs) { + return A3( + $elm$core$List$foldr, + $elm$core$List$maybeCons(f), + _List_Nil, + xs); + }); +var $elm$browser$Browser$Events$onSelfMsg = F3( + function (router, _v0, state) { + var key = _v0.V; + var event = _v0.S; + var toMessage = function (_v2) { + var subKey = _v2.a; + var _v3 = _v2.b; + var node = _v3.a; + var name = _v3.b; + var decoder = _v3.c; + return _Utils_eq(subKey, key) ? A2(_Browser_decodeEvent, decoder, event) : $elm$core$Maybe$Nothing; + }; + var messages = A2($elm$core$List$filterMap, toMessage, state.ad); + return A2( + $elm$core$Task$andThen, + function (_v1) { + return $elm$core$Task$succeed(state); + }, + $elm$core$Task$sequence( + A2( + $elm$core$List$map, + $elm$core$Platform$sendToApp(router), + messages))); + }); +var $elm$browser$Browser$Events$subMap = F2( + function (func, _v0) { + var node = _v0.a; + var name = _v0.b; + var decoder = _v0.c; + return A3( + $elm$browser$Browser$Events$MySub, + node, + name, + A2($elm$json$Json$Decode$map, func, decoder)); + }); +_Platform_effectManagers['Browser.Events'] = _Platform_createManager($elm$browser$Browser$Events$init, $elm$browser$Browser$Events$onEffects, $elm$browser$Browser$Events$onSelfMsg, 0, $elm$browser$Browser$Events$subMap); +var $elm$browser$Browser$Events$subscription = _Platform_leaf('Browser.Events'); +var $elm$browser$Browser$Events$on = F3( + function (node, name, decoder) { + return $elm$browser$Browser$Events$subscription( + A3($elm$browser$Browser$Events$MySub, node, name, decoder)); + }); +var $elm$browser$Browser$Events$onKeyDown = A2($elm$browser$Browser$Events$on, 0, 'keydown'); +var $author$project$Vsh$Main$subscriptions = function (_v0) { + return $elm$browser$Browser$Events$onKeyDown($author$project$Vsh$Main$keydownHandler); +}; +var $author$project$Main$subscriptions = function (model) { + switch (model.$) { + case 0: + var mo = model.b; + return A2( + $elm$core$Platform$Sub$map, + $author$project$Main$GotAboutMsg, + $author$project$About$Main$subscriptions(mo)); + case 1: + var mo = model.b; + return A2( + $elm$core$Platform$Sub$map, + $author$project$Main$GotContactMsg, + $author$project$Skills$Main$subscriptions(mo)); + default: + var mo = model.b; + return A2( + $elm$core$Platform$Sub$map, + $author$project$Main$GotVshMsg, + $author$project$Vsh$Main$subscriptions(mo)); + } +}; +var $elm$browser$Browser$Navigation$load = _Browser_load; +var $elm$browser$Browser$Navigation$pushUrl = _Browser_pushUrl; +var $elm$url$Url$addPort = F2( + function (maybePort, starter) { + if (maybePort.$ === 1) { + return starter; + } else { + var port_ = maybePort.a; + return starter + (':' + $elm$core$String$fromInt(port_)); + } + }); +var $elm$url$Url$addPrefixed = F3( + function (prefix, maybeSegment, starter) { + if (maybeSegment.$ === 1) { + return starter; + } else { + var segment = maybeSegment.a; + return _Utils_ap( + starter, + _Utils_ap(prefix, segment)); + } + }); +var $elm$url$Url$toString = function (url) { + var http = function () { + var _v0 = url.aA; + if (!_v0) { + return 'http://'; + } else { + return 'https://'; + } + }(); + return A3( + $elm$url$Url$addPrefixed, + '#', + url.T, + A3( + $elm$url$Url$addPrefixed, + '?', + url.aB, + _Utils_ap( + A2( + $elm$url$Url$addPort, + url.az, + _Utils_ap(http, url.ar)), + url.ay))); +}; +var $author$project$About$Main$update = F2( + function (_v0, model) { + return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); + }); +var $elm$core$Basics$negate = function (n) { + return -n; +}; +var $elm$core$String$dropRight = F2( + function (n, string) { + return (n < 1) ? string : A3($elm$core$String$slice, 0, -n, string); + }); +var $elm$core$String$cons = _String_cons; +var $elm$core$String$fromChar = function (_char) { + return A2($elm$core$String$cons, _char, ''); +}; +var $elm$core$Bitwise$and = _Bitwise_and; +var $elm$core$Bitwise$shiftRightZfBy = _Bitwise_shiftRightZfBy; +var $elm$core$Array$bitMask = 4294967295 >>> (32 - $elm$core$Array$shiftStep); +var $elm$core$Basics$ge = _Utils_ge; +var $elm$core$Elm$JsArray$unsafeGet = _JsArray_unsafeGet; +var $elm$core$Array$getHelp = F3( + function (shift, index, tree) { + getHelp: + while (true) { + var pos = $elm$core$Array$bitMask & (index >>> shift); + var _v0 = A2($elm$core$Elm$JsArray$unsafeGet, pos, tree); + if (!_v0.$) { + var subTree = _v0.a; + var $temp$shift = shift - $elm$core$Array$shiftStep, + $temp$index = index, + $temp$tree = subTree; + shift = $temp$shift; + index = $temp$index; + tree = $temp$tree; + continue getHelp; + } else { + var values = _v0.a; + return A2($elm$core$Elm$JsArray$unsafeGet, $elm$core$Array$bitMask & index, values); + } + } + }); +var $elm$core$Bitwise$shiftLeftBy = _Bitwise_shiftLeftBy; +var $elm$core$Array$tailIndex = function (len) { + return (len >>> 5) << 5; +}; +var $elm$core$Array$get = F2( + function (index, _v0) { + var len = _v0.a; + var startShift = _v0.b; + var tree = _v0.c; + var tail = _v0.d; + return ((index < 0) || (_Utils_cmp(index, len) > -1)) ? $elm$core$Maybe$Nothing : ((_Utils_cmp( + index, + $elm$core$Array$tailIndex(len)) > -1) ? $elm$core$Maybe$Just( + A2($elm$core$Elm$JsArray$unsafeGet, $elm$core$Array$bitMask & index, tail)) : $elm$core$Maybe$Just( + A3($elm$core$Array$getHelp, startShift, index, tree))); + }); +var $elm$core$Array$isEmpty = function (_v0) { + var len = _v0.a; + return !len; +}; +var $author$project$Vsh$History$lookup = F2( + function (getptr, history) { + var ptr = getptr(history); + return $elm$core$Array$isEmpty(history.o) ? $elm$core$Maybe$Nothing : $elm$core$Maybe$Just( + _Utils_Tuple2( + A2( + $elm$core$Maybe$withDefault, + '', + A2($elm$core$Array$get, ptr, history.o)), + _Utils_update( + history, + {u: ptr}))); + }); +var $author$project$Vsh$Main$maybeLookupHistory = F2( + function (getptr, model) { + var _v0 = A2($author$project$Vsh$History$lookup, getptr, model.o); + if (_v0.$ === 1) { + return model; + } else { + var _v1 = _v0.a; + var command = _v1.a; + var history = _v1.b; + return _Utils_update( + model, + {k: command, o: history}); + } + }); +var $elm$core$Array$length = function (_v0) { + var len = _v0.a; + return len; +}; +var $author$project$Vsh$History$next = function (history) { + return (_Utils_cmp( + $elm$core$Array$length(history.o), + history.u + 1) > 0) ? (history.u + 1) : 0; +}; +var $author$project$Vsh$History$prev = function (history) { + return (!history.u) ? ($elm$core$Array$length(history.o) - 1) : (history.u - 1); +}; +var $elm$json$Json$Encode$null = _Json_encodeNull; +var $author$project$Vsh$Main$scroll = _Platform_outgoingPort( + 'scroll', + function ($) { + return $elm$json$Json$Encode$null; + }); +var $elm$url$Url$Builder$toQueryPair = function (_v0) { + var key = _v0.a; + var value = _v0.b; + return key + ('=' + value); +}; +var $elm$url$Url$Builder$toQuery = function (parameters) { + if (!parameters.b) { + return ''; + } else { + return '?' + A2( + $elm$core$String$join, + '&', + A2($elm$core$List$map, $elm$url$Url$Builder$toQueryPair, parameters)); + } +}; +var $elm$url$Url$Builder$absolute = F2( + function (pathSegments, parameters) { + return '/' + (A2($elm$core$String$join, '/', pathSegments) + $elm$url$Url$Builder$toQuery(parameters)); + }); +var $author$project$Route$toString = function (route) { + return '/#' + A2( + $elm$url$Url$Builder$absolute, + _List_fromArray( + [ + $author$project$Route$repr(route) + ]), + _List_Nil); +}; +var $author$project$Vsh$Command$clear = F2( + function (_v0, _v1) { + return _List_Nil; + }); +var $elm$core$Bitwise$shiftRightBy = _Bitwise_shiftRightBy; +var $elm$core$String$repeatHelp = F3( + function (n, chunk, result) { + return (n <= 0) ? result : A3( + $elm$core$String$repeatHelp, + n >> 1, + _Utils_ap(chunk, chunk), + (!(n & 1)) ? result : _Utils_ap(result, chunk)); + }); +var $elm$core$String$repeat = F2( + function (n, chunk) { + return A3($elm$core$String$repeatHelp, n, chunk, ''); + }); +var $elm$core$String$padRight = F3( + function (n, _char, string) { + return _Utils_ap( + string, + A2( + $elm$core$String$repeat, + n - $elm$core$String$length(string), + $elm$core$String$fromChar(_char))); + }); +var $author$project$Vsh$Command$cut = F2( + function (_v0, display) { + var entry = F2( + function (command, description) { + return _List_fromArray( + [ + $elm$html$Html$text('\n '), + A2( + $author$project$Vsh$Text$ctext, + 1, + A3($elm$core$String$padRight, 8, ' ', command)), + $elm$html$Html$text('-- ' + description) + ]); + }); + return _Utils_ap( + display, + _Utils_ap( + A2(entry, 'CTRL+e', 'quit vsh'), + A2(entry, 'CTRL+;', 'clear screen'))); + }); +var $elm$html$Html$a = _VirtualDom_node('a'); +var $elm$html$Html$Attributes$href = function (url) { + return A2( + $elm$html$Html$Attributes$stringProperty, + 'href', + _VirtualDom_noJavaScriptUri(url)); +}; +var $author$project$Vsh$Command$cv = F2( + function (_v0, display) { + return _Utils_ap( + display, + _List_fromArray( + [ + $elm$html$Html$text('My curriculum vitae: '), + A2( + $elm$html$Html$a, + _List_fromArray( + [ + $elm$html$Html$Attributes$href('https://docs.google.com/document/d/1stYuixTXS9gbvcs2KKHLZBax8JRrnxkKxXqT7A9d9RA/edit?usp=sharing') + ]), + _List_fromArray( + [ + $elm$html$Html$text('Google Docs') + ])) + ])); + }); +var $author$project$Vsh$Command$exit = F2( + function (_v0, display) { + return _Utils_ap( + display, + _List_fromArray( + [ + $elm$html$Html$text('Shutting down...') + ])); + }); +var $author$project$Vsh$Command$git = F2( + function (_v0, display) { + return _Utils_ap( + display, + _List_fromArray( + [ + $elm$html$Html$text('vsh on GitHub: '), + A2( + $elm$html$Html$a, + _List_fromArray( + [ + $elm$html$Html$Attributes$href('https://github.com/sharpvik/sharpvik.github.io') + ]), + _List_fromArray( + [ + $elm$html$Html$text('https://github.com/sharpvik/sharpvik.github.io') + ])) + ])); + }); +var $author$project$Vsh$Command$help = F2( + function (_v0, display) { + var entry = F2( + function (command, description) { + return _List_fromArray( + [ + $elm$html$Html$text('\n '), + A2( + $author$project$Vsh$Text$ctext, + 1, + A3($elm$core$String$padRight, 8, ' ', command)), + $elm$html$Html$text('-- ' + description) + ]); + }); + return _Utils_ap( + display, + _Utils_ap( + _List_fromArray( + [ + $elm$html$Html$text('VSH is a terminal emulator that helps you learn about me.\nUse up and down arrow keys to browse command history (unless it\'s empty).\nAnd most importantly -- have fun!\n\nAvailable commands:\n') + ]), + _Utils_ap( + A2(entry, 'whoami', 'a bit about myself'), + _Utils_ap( + A2(entry, 'top', 'my top skills'), + _Utils_ap( + A2(entry, 'cv', 'my curriculum vitae'), + _Utils_ap( + A2(entry, 'jobs', 'hire me if you\'re really impressed'), + _Utils_ap( + A2(entry, 'touch', 'ways to get in touch\n'), + _Utils_ap( + A2(entry, 'help', 'display this message again'), + _Utils_ap( + A2(entry, 'version', 'display vsh version'), + _Utils_ap( + A2(entry, 'cut', 'keyboard shortcuts cheatsheet'), + _Utils_ap( + A2(entry, 'git', 'explore vsh source code'), + _Utils_ap( + A2(entry, 'clear', 'clear screen'), + A2(entry, 'exit', 'exit vsh session'))))))))))))); + }); +var $author$project$Vsh$Command$jobs = F2( + function (_v0, display) { + return _Utils_ap( + display, + _List_fromArray( + [ + $elm$html$Html$text('Before you offer me a job, I\'d like to tell you a few things:\n\n 1. I specialise in cloud services and web development, but I\'m open to\n interesting offers!\n 2. I am a uni student; during my term time, I can only work 20 hr./week.\n 3. Nevertheless, full-time work is possible during the term breaks.\n \nUse the '), + A2($author$project$Vsh$Text$ctext, 1, 'touch'), + $elm$html$Html$text(' command to get in touch.') + ])); + }); +var $elm$core$Basics$min = F2( + function (x, y) { + return (_Utils_cmp(x, y) < 0) ? x : y; + }); +var $elm$core$List$repeatHelp = F3( + function (result, n, value) { + repeatHelp: + while (true) { + if (n <= 0) { + return result; + } else { + var $temp$result = A2($elm$core$List$cons, value, result), + $temp$n = n - 1, + $temp$value = value; + result = $temp$result; + n = $temp$n; + value = $temp$value; + continue repeatHelp; + } + } + }); +var $elm$core$List$repeat = F2( + function (n, value) { + return A3($elm$core$List$repeatHelp, _List_Nil, n, value); + }); +var $author$project$Vsh$Command$top = F2( + function (_v0, display) { + var bars = F2( + function (m, n) { + return A2($elm$core$Basics$min, m, n); + }); + var coloredLevel = F3( + function (color, m, n) { + return A2( + $author$project$Vsh$Text$ctext, + color, + A2( + $elm$core$String$join, + '', + A2( + $elm$core$List$repeat, + A2(bars, n, m), + '|'))); + }); + var elementary = A2(coloredLevel, 1, 12); + var intermediate = function (n20) { + return A3(coloredLevel, 0, 5, n20 - 12); + }; + var advanced = function (n20) { + return A3(coloredLevel, 2, 3, n20 - 17); + }; + var level = function (n) { + var n20 = A2($elm$core$Basics$min, n, 20); + var offset = A2( + $elm$core$String$join, + '', + A2($elm$core$List$repeat, 20 - n20, ' ')); + return _List_fromArray( + [ + elementary(n20), + intermediate(n20), + advanced(n20), + $elm$html$Html$text(offset) + ]); + }; + var skill = F2( + function (name, lvl) { + return A2( + $elm$core$List$cons, + $elm$html$Html$text( + '\n ' + (A3($elm$core$String$padRight, 11, ' ', name) + '[')), + _Utils_ap( + level(lvl), + _List_fromArray( + [ + $elm$html$Html$text(']') + ]))); + }); + return _Utils_ap( + display, + _Utils_ap( + _List_fromArray( + [ + $elm$html$Html$text('My top skills:\n') + ]), + _Utils_ap( + A2(skill, 'Go', 20), + _Utils_ap( + A2(skill, 'Python', 19), + _Utils_ap( + A2(skill, 'Docker', 18), + _Utils_ap( + A2(skill, 'Vue.js', 16), + _Utils_ap( + A2(skill, 'JavaScript', 14), + _Utils_ap( + A2(skill, 'Haskell', 12), + A2(skill, 'Elm', 9))))))))); + }); +var $author$project$Vsh$Command$touch = F2( + function (_v0, display) { + var linkWithTheSameText = function (url) { + return A2( + $elm$html$Html$a, + _List_fromArray( + [ + $elm$html$Html$Attributes$href(url) + ]), + _List_fromArray( + [ + $elm$html$Html$text(url) + ])); + }; + var entry = F2( + function (description, link) { + return _List_fromArray( + [ + $elm$html$Html$text('\n '), + $elm$html$Html$text( + A3($elm$core$String$padRight, 11, ' ', description + ':')), + link + ]); + }); + return _Utils_ap( + display, + _Utils_ap( + _List_fromArray( + [ + $elm$html$Html$text('Ways to get in touch:\n') + ]), + _Utils_ap( + A2( + entry, + 'email', + A2( + $elm$html$Html$a, + _List_fromArray( + [ + $elm$html$Html$Attributes$href('mailto:sharp.vik@gmail.com') + ]), + _List_fromArray( + [ + $elm$html$Html$text('sharp.vik@gmail.com') + ]))), + _Utils_ap( + A2( + entry, + 'github', + linkWithTheSameText('https://github.com/sharpvik')), + A2( + entry, + 'linkedin', + linkWithTheSameText('https://www.linkedin.com/in/sharpvik')))))); + }); +var $author$project$Vsh$Command$whoami = F2( + function (_v0, display) { + return _Utils_ap( + display, + _List_fromArray( + [ + $elm$html$Html$text('Hey, my name is Viktor! \nI study Computer Science in the University of Southampton.\n\nAt work, I currently specialise in high-throughput microservices. I build them\nwith Go and Python. However, I also enjoy playing around with Haskell, Elm,\nVue.js, and Rust.\n\nIn my spare time, I dabble in compiler design and implementation. I love\ncreating new programming languages! Given a chance, I\'d like to do some\nprofessional research into deterministic garbage collection within pure\nfunctional languages.') + ])); + }); +var $author$project$Vsh$Command$eval = function (command) { + switch (command) { + case 'whoami': + return $elm$core$Maybe$Just($author$project$Vsh$Command$whoami); + case 'top': + return $elm$core$Maybe$Just($author$project$Vsh$Command$top); + case 'cv': + return $elm$core$Maybe$Just($author$project$Vsh$Command$cv); + case 'jobs': + return $elm$core$Maybe$Just($author$project$Vsh$Command$jobs); + case 'touch': + return $elm$core$Maybe$Just($author$project$Vsh$Command$touch); + case 'help': + return $elm$core$Maybe$Just($author$project$Vsh$Command$help); + case 'version': + return $elm$core$Maybe$Just($author$project$Vsh$Command$version); + case 'cut': + return $elm$core$Maybe$Just($author$project$Vsh$Command$cut); + case 'git': + return $elm$core$Maybe$Just($author$project$Vsh$Command$git); + case 'clear': + return $elm$core$Maybe$Just($author$project$Vsh$Command$clear); + case 'exit': + return $elm$core$Maybe$Just($author$project$Vsh$Command$exit); + default: + return $elm$core$Maybe$Nothing; + } +}; +var $elm$core$List$head = function (list) { + if (list.b) { + var x = list.a; + var xs = list.b; + return $elm$core$Maybe$Just(x); + } else { + return $elm$core$Maybe$Nothing; + } +}; +var $elm$core$String$words = _String_words; +var $author$project$Vsh$Command$exec = F2( + function (command, display) { + var wrongCommand = F2( + function (label, string) { + return _List_fromArray( + [ + $elm$html$Html$text(label + ' command: '), + A2($author$project$Vsh$Text$ctext, 2, string) + ]); + }); + var maybeCommand = $elm$core$List$head( + $elm$core$String$words(command)); + if (maybeCommand.$ === 1) { + return _Utils_ap( + display, + A2(wrongCommand, 'Weird', command)); + } else { + var cmd = maybeCommand.a; + var _v1 = $author$project$Vsh$Command$eval(cmd); + if (_v1.$ === 1) { + return _Utils_ap( + display, + A2(wrongCommand, 'Unknown', command)); + } else { + var c = _v1.a; + return A2(c, command, display); + } + } + }); +var $elm$core$List$isEmpty = function (xs) { + if (!xs.b) { + return true; + } else { + return false; + } +}; +var $elm$core$Elm$JsArray$push = _JsArray_push; +var $elm$core$Elm$JsArray$singleton = _JsArray_singleton; +var $elm$core$Elm$JsArray$unsafeSet = _JsArray_unsafeSet; +var $elm$core$Array$insertTailInTree = F4( + function (shift, index, tail, tree) { + var pos = $elm$core$Array$bitMask & (index >>> shift); + if (_Utils_cmp( + pos, + $elm$core$Elm$JsArray$length(tree)) > -1) { + if (shift === 5) { + return A2( + $elm$core$Elm$JsArray$push, + $elm$core$Array$Leaf(tail), + tree); + } else { + var newSub = $elm$core$Array$SubTree( + A4($elm$core$Array$insertTailInTree, shift - $elm$core$Array$shiftStep, index, tail, $elm$core$Elm$JsArray$empty)); + return A2($elm$core$Elm$JsArray$push, newSub, tree); + } + } else { + var value = A2($elm$core$Elm$JsArray$unsafeGet, pos, tree); + if (!value.$) { + var subTree = value.a; + var newSub = $elm$core$Array$SubTree( + A4($elm$core$Array$insertTailInTree, shift - $elm$core$Array$shiftStep, index, tail, subTree)); + return A3($elm$core$Elm$JsArray$unsafeSet, pos, newSub, tree); + } else { + var newSub = $elm$core$Array$SubTree( + A4( + $elm$core$Array$insertTailInTree, + shift - $elm$core$Array$shiftStep, + index, + tail, + $elm$core$Elm$JsArray$singleton(value))); + return A3($elm$core$Elm$JsArray$unsafeSet, pos, newSub, tree); + } + } + }); +var $elm$core$Array$unsafeReplaceTail = F2( + function (newTail, _v0) { + var len = _v0.a; + var startShift = _v0.b; + var tree = _v0.c; + var tail = _v0.d; + var originalTailLen = $elm$core$Elm$JsArray$length(tail); + var newTailLen = $elm$core$Elm$JsArray$length(newTail); + var newArrayLen = len + (newTailLen - originalTailLen); + if (_Utils_eq(newTailLen, $elm$core$Array$branchFactor)) { + var overflow = _Utils_cmp(newArrayLen >>> $elm$core$Array$shiftStep, 1 << startShift) > 0; + if (overflow) { + var newShift = startShift + $elm$core$Array$shiftStep; + var newTree = A4( + $elm$core$Array$insertTailInTree, + newShift, + len, + newTail, + $elm$core$Elm$JsArray$singleton( + $elm$core$Array$SubTree(tree))); + return A4($elm$core$Array$Array_elm_builtin, newArrayLen, newShift, newTree, $elm$core$Elm$JsArray$empty); + } else { + return A4( + $elm$core$Array$Array_elm_builtin, + newArrayLen, + startShift, + A4($elm$core$Array$insertTailInTree, startShift, len, newTail, tree), + $elm$core$Elm$JsArray$empty); + } + } else { + return A4($elm$core$Array$Array_elm_builtin, newArrayLen, startShift, tree, newTail); + } + }); +var $elm$core$Array$push = F2( + function (a, array) { + var tail = array.d; + return A2( + $elm$core$Array$unsafeReplaceTail, + A2($elm$core$Elm$JsArray$push, a, tail), + array); + }); +var $author$project$Vsh$History$update = F2( + function (command, history) { + return _Utils_update( + history, + { + o: A2($elm$core$Array$push, command, history.o), + u: $elm$core$Array$length(history.o) + 1 + }); + }); +var $author$project$Vsh$Main$updateOnCommand = F2( + function (model, command) { + var display = A2( + $author$project$Vsh$Command$exec, + command, + _Utils_ap( + model.B, + _List_fromArray( + [ + $elm$html$Html$text(command + '\n') + ]))); + var promptWithOffset = A2( + $elm$core$List$cons, + $elm$html$Html$text( + $elm$core$List$isEmpty(display) ? '' : '\n\n'), + $author$project$Vsh$Main$prompt); + return { + k: '', + B: _Utils_ap(display, promptWithOffset), + o: A2($author$project$Vsh$History$update, command, model.o) + }; + }); +var $author$project$Vsh$Main$updateOnKeydown = F3( + function (msg, model, command) { + _v0$8: + while (true) { + switch (msg.$) { + case 0: + switch (msg.a.$) { + case 0: + var _char = msg.a.a; + return _Utils_Tuple2( + _Utils_update( + model, + { + k: _Utils_ap( + command, + $elm$core$String$fromChar(_char)) + }), + $elm$core$Platform$Cmd$none); + case 1: + var _v1 = msg.a; + return _Utils_Tuple2( + _Utils_update( + model, + {k: command + ' '}), + $elm$core$Platform$Cmd$none); + case 2: + var _v2 = msg.a; + return _Utils_Tuple2( + A2($author$project$Vsh$Main$updateOnCommand, model, command), + $author$project$Vsh$Main$scroll(0)); + case 3: + var _v3 = msg.a; + return _Utils_Tuple2( + _Utils_update( + model, + { + k: A2($elm$core$String$dropRight, 1, command) + }), + $elm$core$Platform$Cmd$none); + case 4: + var _v4 = msg.a; + return _Utils_Tuple2( + A2($author$project$Vsh$Main$maybeLookupHistory, $author$project$Vsh$History$prev, model), + $elm$core$Platform$Cmd$none); + case 5: + var _v5 = msg.a; + return _Utils_Tuple2( + A2($author$project$Vsh$Main$maybeLookupHistory, $author$project$Vsh$History$next, model), + $elm$core$Platform$Cmd$none); + default: + break _v0$8; + } + case 1: + return _Utils_Tuple2( + A2($author$project$Vsh$Main$updateOnCommand, model, 'clear'), + $elm$core$Platform$Cmd$none); + case 2: + return _Utils_Tuple2( + model, + $elm$browser$Browser$Navigation$load( + $author$project$Route$toString(0))); + default: + break _v0$8; + } + } + return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); + }); +var $author$project$Vsh$Main$update = F2( + function (msg, model) { + return A3($author$project$Vsh$Main$updateOnKeydown, msg, model, model.k); + }); +var $author$project$Main$update = F2( + function (msg, model) { + var norm = F3( + function (toModel, toMsg, _v4) { + var subModel = _v4.a; + var cmd = _v4.b; + return _Utils_Tuple2( + toModel(subModel), + A2($elm$core$Platform$Cmd$map, toMsg, cmd)); + }); + var key = $author$project$Main$toKey(model); + var _v0 = _Utils_Tuple2(msg, model); + _v0$4: + while (true) { + switch (_v0.a.$) { + case 2: + if (_v0.b.$ === 2) { + var ms = _v0.a.a; + var _v1 = _v0.b; + var mo = _v1.b; + return A3( + norm, + $author$project$Main$VshModel(key), + $author$project$Main$GotVshMsg, + A2($author$project$Vsh$Main$update, ms, mo)); + } else { + break _v0$4; + } + case 0: + if (!_v0.b.$) { + var ms = _v0.a.a; + var _v2 = _v0.b; + var mo = _v2.b; + return A3( + norm, + $author$project$Main$AboutModel(key), + $author$project$Main$GotAboutMsg, + A2($author$project$About$Main$update, ms, mo)); + } else { + break _v0$4; + } + case 4: + var url = _v0.a.a; + return A2($author$project$Main$mux, model, url); + case 3: + var urlRequest = _v0.a.a; + if (!urlRequest.$) { + var url = urlRequest.a; + return _Utils_Tuple2( + model, + A2( + $elm$browser$Browser$Navigation$pushUrl, + key, + $elm$url$Url$toString(url))); + } else { + var href = urlRequest.a; + return _Utils_Tuple2( + model, + $elm$browser$Browser$Navigation$load(href)); + } + default: + break _v0$4; + } + } + return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); + }); +var $elm$virtual_dom$VirtualDom$map = _VirtualDom_map; +var $elm$html$Html$map = $elm$virtual_dom$VirtualDom$map; +var $elm$html$Html$nav = _VirtualDom_node('nav'); +var $author$project$Common$Class$navbar = 'navbar'; +var $author$project$Common$Class$navbarIcon = 'navbar-icon'; +var $author$project$Common$Class$navbarIconActive = 'navbar-icon-active'; +var $elm$core$Tuple$second = function (_v0) { + var y = _v0.b; + return y; +}; +var $author$project$Common$Element$navbar = function (active) { + var sections = _List_fromArray( + [ + _Utils_Tuple2(0, '👽'), + _Utils_Tuple2(1, '💡'), + _Utils_Tuple2(2, '⌨️') + ]); + var mark = F2( + function (id, s) { + return A2( + $elm$html$Html$a, + _Utils_ap( + _Utils_eq(id, active) ? _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Common$Class$navbarIconActive) + ]) : _List_Nil, + _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Common$Class$navbarIcon), + $elm$html$Html$Attributes$href( + $author$project$Route$toString(s.a)) + ])), + _List_fromArray( + [ + $elm$html$Html$text(s.b) + ])); + }); + var result = A2($elm$core$List$indexedMap, mark, sections); + return A2( + $elm$html$Html$nav, + _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Common$Class$navbar) + ]), + result); +}; +var $author$project$Main$toActiveIndex = function (model) { + switch (model.$) { + case 0: + return 0; + case 1: + return 1; + default: + return 2; + } +}; +var $elm$browser$Browser$Document = F2( + function (title, body) { + return {O: body, af: title}; + }); +var $author$project$Common$Class$appCenter = 'app-center'; +var $author$project$Common$Class$bg = 'bg'; +var $author$project$About$Class$bg = _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Common$Class$bg), + $elm$html$Html$Attributes$class('about-bg') + ]); +var $author$project$Common$Class$button = 'button'; +var $author$project$About$Class$button = _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Common$Class$button), + $elm$html$Html$Attributes$class('about-button') + ]); +var $author$project$Common$Element$button_ = F3( + function (elem, attrs, txt) { + return A2( + elem, + A2( + $elm$core$List$cons, + $elm$html$Html$Attributes$class($author$project$Common$Class$button), + attrs), + _List_fromArray( + [ + $elm$html$Html$text(txt) + ])); + }); +var $elm$html$Html$div = _VirtualDom_node('div'); +var $author$project$About$Asset$asset = function (path) { + return A2( + $elm$url$Url$Builder$absolute, + A2($elm$core$List$cons, 'assets', path), + _List_Nil); +}; +var $author$project$About$Asset$github = $author$project$About$Asset$asset( + _List_fromArray( + ['github.svg'])); +var $author$project$About$Class$github = $elm$html$Html$Attributes$class('about-github'); +var $author$project$Common$Link$github = $elm$html$Html$Attributes$href('https://github.com/sharpvik'); +var $author$project$Common$Class$h1 = 'h1'; +var $author$project$About$Class$h1 = _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Common$Class$h1), + $elm$html$Html$Attributes$class('about-h1') + ]); +var $elm$html$Html$h1 = _VirtualDom_node('h1'); +var $author$project$Common$Class$h3 = 'h3'; +var $author$project$About$Class$h3 = _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Common$Class$h3), + $elm$html$Html$Attributes$class('about-h3') + ]); +var $elm$html$Html$h3 = _VirtualDom_node('h3'); +var $elm$html$Html$img = _VirtualDom_node('img'); +var $author$project$Common$Link$mailto = $elm$html$Html$Attributes$href('mailto:sharp.vik@gmail.com'); +var $elm$html$Html$Attributes$src = function (url) { + return A2( + $elm$html$Html$Attributes$stringProperty, + 'src', + _VirtualDom_noJavaScriptOrHtmlUri(url)); +}; +var $elm$html$Html$Attributes$target = $elm$html$Html$Attributes$stringProperty('target'); +var $author$project$About$Main$view = function (_v0) { + var general = $elm$core$Basics$append( + _List_fromArray( + [ + A2( + $elm$html$Html$h1, + $author$project$About$Class$h1, + _List_fromArray( + [ + $elm$html$Html$text('Hey, I\'m Viktor!') + ])), + A2( + $elm$html$Html$h3, + $author$project$About$Class$h3, + _List_fromArray( + [ + $elm$html$Html$text('💻 Full Stack Web Developer') + ])), + A2( + $elm$html$Html$h3, + $author$project$About$Class$h3, + _List_fromArray( + [ + $elm$html$Html$text('🎓 University of Southampton') + ])) + ])); + var entitled = $elm$browser$Browser$Document('👽 About Me'); + var app = function (items) { + return _List_fromArray( + [ + A2( + $elm$html$Html$div, + A2( + $elm$core$List$cons, + $elm$html$Html$Attributes$class($author$project$Common$Class$appCenter), + $author$project$About$Class$bg), + general(items)) + ]); + }; + return entitled( + app( + _List_fromArray( + [ + A2( + $elm$html$Html$a, + _List_fromArray( + [ + $author$project$Common$Link$github, + $elm$html$Html$Attributes$target('_blank'), + $author$project$About$Class$github + ]), + _List_fromArray( + [ + A2( + $elm$html$Html$img, + _List_fromArray( + [ + $elm$html$Html$Attributes$src($author$project$About$Asset$github) + ]), + _List_Nil) + ])), + A3( + $author$project$Common$Element$button_, + $elm$html$Html$a, + _Utils_ap( + _List_fromArray( + [ + $author$project$Common$Link$mailto, + $elm$html$Html$Attributes$target('_blank') + ]), + $author$project$About$Class$button), + 'SAY HI!') + ]))); +}; +var $author$project$Common$Link$ansible = $elm$html$Html$Attributes$href('https://www.ansible.com/'); +var $author$project$Common$Class$appTop = 'app-top'; +var $author$project$Skills$Class$bg = _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Common$Class$bg), + $elm$html$Html$Attributes$class('skills-bg') + ]); +var $author$project$Skills$Class$card = $elm$html$Html$Attributes$class('skills-card'); +var $author$project$Common$Link$docker = $elm$html$Html$Attributes$href('https://www.docker.com'); +var $author$project$Common$Link$elm = $elm$html$Html$Attributes$href('https://elm-lang.org'); +var $author$project$Common$Link$go = $elm$html$Html$Attributes$href('https://golang.org'); +var $author$project$Skills$Class$h1 = _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Common$Class$h1), + $elm$html$Html$Attributes$class('skills-h1') + ]); +var $elm$html$Html$h2 = _VirtualDom_node('h2'); +var $elm$html$Html$p = _VirtualDom_node('p'); +var $author$project$Skills$Class$pill = $elm$html$Html$Attributes$class('skills-pill'); +var $author$project$Common$Link$python = $elm$html$Html$Attributes$href('https://www.python.org/about'); +var $author$project$Skills$Class$row = $elm$html$Html$Attributes$class('skills-row'); +var $author$project$Common$Link$vuejs = $elm$html$Html$Attributes$href('https://vuejs.org'); +var $author$project$Skills$Main$view = function (_v0) { + var entitled = $elm$browser$Browser$Document('💡 My Skills'); + var app = function (items) { + return _List_fromArray( + [ + A2( + $elm$html$Html$div, + A2( + $elm$core$List$cons, + $elm$html$Html$Attributes$class($author$project$Common$Class$appTop), + $author$project$Skills$Class$bg), + items) + ]); + }; + return entitled( + app( + _List_fromArray( + [ + A2( + $elm$html$Html$h1, + $author$project$Skills$Class$h1, + _List_fromArray( + [ + $elm$html$Html$text('What I Do') + ])), + A2( + $elm$html$Html$div, + _List_fromArray( + [$author$project$Skills$Class$row]), + _List_fromArray( + [ + A2( + $elm$html$Html$div, + _List_fromArray( + [$author$project$Skills$Class$card]), + _List_fromArray( + [ + A2( + $elm$html$Html$h2, + _List_Nil, + _List_fromArray( + [ + $elm$html$Html$text('Back End') + ])), + A2( + $elm$html$Html$p, + _List_Nil, + _List_fromArray( + [ + $elm$html$Html$text('RESTful Microservices') + ])), + A2( + $elm$html$Html$p, + _List_Nil, + _List_fromArray( + [ + A2( + $elm$html$Html$a, + _List_fromArray( + [$author$project$Common$Link$go, $author$project$Skills$Class$pill]), + _List_fromArray( + [ + $elm$html$Html$text('Go') + ])), + A2( + $elm$html$Html$a, + _List_fromArray( + [$author$project$Common$Link$python, $author$project$Skills$Class$pill]), + _List_fromArray( + [ + $elm$html$Html$text('Python') + ])) + ])) + ])), + A2( + $elm$html$Html$div, + _List_fromArray( + [$author$project$Skills$Class$card]), + _List_fromArray( + [ + A2( + $elm$html$Html$h2, + _List_Nil, + _List_fromArray( + [ + $elm$html$Html$text('DevOps ') + ])), + A2( + $elm$html$Html$p, + _List_Nil, + _List_fromArray( + [ + $elm$html$Html$text('CI/CD, Server Management') + ])), + A2( + $elm$html$Html$p, + _List_Nil, + _List_fromArray( + [ + A2( + $elm$html$Html$a, + _List_fromArray( + [$author$project$Common$Link$docker, $author$project$Skills$Class$pill]), + _List_fromArray( + [ + $elm$html$Html$text('Docker') + ])), + A2( + $elm$html$Html$a, + _List_fromArray( + [$author$project$Common$Link$ansible, $author$project$Skills$Class$pill]), + _List_fromArray( + [ + $elm$html$Html$text('Ansible') + ])) + ])) + ])) + ])), + A2( + $elm$html$Html$div, + _List_fromArray( + [$author$project$Skills$Class$row]), + _List_fromArray( + [ + A2( + $elm$html$Html$div, + _List_fromArray( + [$author$project$Skills$Class$card]), + _List_fromArray( + [ + A2( + $elm$html$Html$h2, + _List_Nil, + _List_fromArray( + [ + $elm$html$Html$text('Front End') + ])), + A2( + $elm$html$Html$p, + _List_Nil, + _List_fromArray( + [ + $elm$html$Html$text('Web Apps') + ])), + A2( + $elm$html$Html$p, + _List_Nil, + _List_fromArray( + [ + A2( + $elm$html$Html$a, + _List_fromArray( + [$author$project$Common$Link$elm, $author$project$Skills$Class$pill]), + _List_fromArray( + [ + $elm$html$Html$text('Elm') + ])), + A2( + $elm$html$Html$a, + _List_fromArray( + [$author$project$Common$Link$vuejs, $author$project$Skills$Class$pill]), + _List_fromArray( + [ + $elm$html$Html$text('Vue.js') + ])) + ])) + ])), + A2( + $elm$html$Html$div, + _List_fromArray( + [$author$project$Skills$Class$card]), + _List_fromArray( + [ + A2( + $elm$html$Html$h2, + _List_Nil, + _List_fromArray( + [ + $elm$html$Html$text('Tutoring') + ])), + A2( + $elm$html$Html$p, + _List_Nil, + _List_fromArray( + [ + $elm$html$Html$text('Zero-to-hero in programming') + ])), + A2( + $elm$html$Html$p, + _List_Nil, + _List_fromArray( + [ + A2( + $elm$html$Html$a, + _List_fromArray( + [$author$project$Common$Link$go, $author$project$Skills$Class$pill]), + _List_fromArray( + [ + $elm$html$Html$text('Go') + ])), + A2( + $elm$html$Html$a, + _List_fromArray( + [$author$project$Common$Link$python, $author$project$Skills$Class$pill]), + _List_fromArray( + [ + $elm$html$Html$text('Python') + ])) + ])) + ])) + ])) + ]))); +}; +var $author$project$Vsh$Class$bg = _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Common$Class$bg), + $elm$html$Html$Attributes$class('vsh-bg') + ]); +var $author$project$Vsh$Class$h1 = _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Common$Class$h1), + $elm$html$Html$Attributes$class('vsh-h1') + ]); +var $author$project$Vsh$Class$close = 'vsh-close'; +var $elm$html$Html$header = _VirtualDom_node('header'); +var $elm$html$Html$pre = _VirtualDom_node('pre'); +var $author$project$Vsh$Class$textarea = 'vsh-textarea'; +var $author$project$Vsh$Class$topbar = 'vsh-topbar'; +var $author$project$Vsh$Class$window = 'vsh-window'; +var $author$project$Vsh$Main$vshDisplay = function (display) { + return A2( + $elm$html$Html$div, + _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Vsh$Class$window) + ]), + _List_fromArray( + [ + A2( + $elm$html$Html$header, + _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Vsh$Class$topbar) + ]), + _List_fromArray( + [ + A2( + $elm$html$Html$p, + _List_Nil, + _List_fromArray( + [ + $elm$html$Html$text('vsh shell') + ])), + A2( + $elm$html$Html$a, + _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Vsh$Class$close), + $elm$html$Html$Attributes$href( + $author$project$Route$toString(0)) + ]), + _List_Nil) + ])), + A2( + $elm$html$Html$pre, + _List_fromArray( + [ + $elm$html$Html$Attributes$class($author$project$Vsh$Class$textarea) + ]), + _Utils_ap( + display, + _List_fromArray( + [ + $elm$html$Html$text('█') + ]))) + ])); +}; +var $author$project$Vsh$Main$view = function (model) { + return { + O: _List_fromArray( + [ + A2( + $elm$html$Html$div, + A2( + $elm$core$List$cons, + $elm$html$Html$Attributes$class($author$project$Common$Class$appTop), + $author$project$Vsh$Class$bg), + _List_fromArray( + [ + A2( + $elm$html$Html$h1, + $author$project$Vsh$Class$h1, + _List_fromArray( + [ + $elm$html$Html$text('Hack Me 🤓') + ])), + $author$project$Vsh$Main$vshDisplay( + _Utils_ap( + model.B, + _List_fromArray( + [ + $elm$html$Html$text(model.k) + ]))) + ])) + ]), + af: '💻 ️VSH Shell' + }; +}; +var $author$project$Main$view = function (model) { + var norm = F2( + function (toMsg, _v1) { + var title = _v1.af; + var body = _v1.O; + return { + O: A2( + $elm$core$List$cons, + $author$project$Common$Element$navbar( + $author$project$Main$toActiveIndex(model)), + A2( + $elm$core$List$map, + $elm$html$Html$map(toMsg), + body)), + af: title + }; + }); + switch (model.$) { + case 0: + var mo = model.b; + return A2( + norm, + $author$project$Main$GotAboutMsg, + $author$project$About$Main$view(mo)); + case 1: + var mo = model.b; + return A2( + norm, + $author$project$Main$GotContactMsg, + $author$project$Skills$Main$view(mo)); + default: + var mo = model.b; + return A2( + norm, + $author$project$Main$GotVshMsg, + $author$project$Vsh$Main$view(mo)); + } +}; +var $author$project$Main$main = $elm$browser$Browser$application( + {at: $author$project$Main$init, av: $author$project$Main$LinkChanged, aw: $author$project$Main$LinkClicked, aD: $author$project$Main$subscriptions, aE: $author$project$Main$update, aF: $author$project$Main$view}); +_Platform_export({'Main':{'init':$author$project$Main$main( + $elm$json$Json$Decode$succeed(0))(0)}});}(this)); \ No newline at end of file diff --git a/release b/release deleted file mode 100755 index effd651..0000000 --- a/release +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -LOCAL_DIST_DIR=dist - -elm make src/Main.elm --optimize --output $LOCAL_DIST_DIR/js/main.js \ No newline at end of file diff --git a/src/About/Asset.elm b/src/About/Asset.elm deleted file mode 100644 index 25cfebd..0000000 --- a/src/About/Asset.elm +++ /dev/null @@ -1,13 +0,0 @@ -module About.Asset exposing (github) - -import Url.Builder exposing (absolute) - - -asset : List String -> String -asset path = - absolute ("assets" :: path) [] - - -github : String -github = - asset [ "github.svg" ] diff --git a/src/About/Class.elm b/src/About/Class.elm deleted file mode 100644 index 5649223..0000000 --- a/src/About/Class.elm +++ /dev/null @@ -1,30 +0,0 @@ -module About.Class exposing (..) - -import Common.Class as Class -import Html exposing (Attribute) -import Html.Attributes exposing (class) - - -bg : List (Attribute msg) -bg = - [ class Class.bg, class "about-bg" ] - - -h1 : List (Attribute msg) -h1 = - [ class Class.h1, class "about-h1" ] - - -h3 : List (Attribute msg) -h3 = - [ class Class.h3, class "about-h3" ] - - -button : List (Attribute msg) -button = - [ class Class.button, class "about-button" ] - - -github : Attribute msg -github = - class "about-github" diff --git a/src/About/Main.elm b/src/About/Main.elm deleted file mode 100644 index e026bd9..0000000 --- a/src/About/Main.elm +++ /dev/null @@ -1,106 +0,0 @@ -module About.Main exposing (..) - -import About.Asset as Asset -import About.Class -import Browser exposing (Document) -import Common.Class as Class -import Common.Element as Element -import Common.Link as Link -import Html exposing (..) -import Html.Attributes exposing (..) -import Html.Events exposing (..) -import Route exposing (Route(..)) - - - --- FLAGS - - -type alias Flags = - () - - - --- MODEL - - -type Model - = NoModel - - - --- MSG - - -type Msg - = NoMsg - - - --- INIT - - -init : ( Model, Cmd Msg ) -init = - ( initModel, Cmd.none ) - - -initModel : Model -initModel = - NoModel - - - ---VIEW - - -view : Model -> Document Msg -view _ = - let - entitled = - Document "👽 About Me" - - app items = - [ div (class Class.appCenter :: About.Class.bg) <| general items ] - - general = - (++) - [ h1 About.Class.h1 [ text "Hey, I'm Viktor!" ] - , h3 About.Class.h3 [ text "💻 Full Stack Web Developer" ] - , h3 About.Class.h3 [ text "🎓 University of Southampton" ] - ] - in - entitled <| - app - [ a - [ Link.github - , target "_blank" - , About.Class.github - ] - [ img [ src Asset.github ] [] ] - , Element.button_ a - ([ Link.mailto - , target "_blank" - ] - ++ About.Class.button - ) - "SAY HI!" - ] - - - --- UPDATE - - -update : Msg -> Model -> ( Model, Cmd Msg ) -update _ model = - ( model, Cmd.none ) - - - --- SUBSCRIPTIONS - - -subscriptions : Model -> Sub Msg -subscriptions _ = - Sub.none diff --git a/src/Common/Class.elm b/src/Common/Class.elm deleted file mode 100644 index dd0486d..0000000 --- a/src/Common/Class.elm +++ /dev/null @@ -1,60 +0,0 @@ -module Common.Class exposing (..) - --- APP - - -appCenter : String -appCenter = - "app-center" - - -appTop : String -appTop = - "app-top" - - - --- ELEMENTS - - -bg : String -bg = - "bg" - - -h1 : String -h1 = - "h1" - - -h3 : String -h3 = - "h3" - - - --- BUTTON - - -button : String -button = - "button" - - - --- NAVBAR - - -navbar : String -navbar = - "navbar" - - -navbarIcon : String -navbarIcon = - "navbar-icon" - - -navbarIconActive : String -navbarIconActive = - "navbar-icon-active" diff --git a/src/Common/Element.elm b/src/Common/Element.elm deleted file mode 100644 index ba4652f..0000000 --- a/src/Common/Element.elm +++ /dev/null @@ -1,47 +0,0 @@ -module Common.Element exposing (..) - -import Common.Class as Class -import Html exposing (..) -import Html.Attributes exposing (..) -import Route exposing (Route(..)) - - -navbar : Int -> Html msg -navbar active = - let - sections = - [ ( AboutRoute, "👽" ) - , ( SkillsRoute, "💡" ) - , ( VshRoute, "⌨️" ) - ] - - mark id s = - a - ((if id == active then - [ class Class.navbarIconActive ] - - else - [] - ) - ++ [ class Class.navbarIcon - , href <| Route.toString <| Tuple.first s - ] - ) - [ text <| Tuple.second s ] - - result = - List.indexedMap mark sections - in - nav [ class Class.navbar ] result - - -button_ : - (List (Attribute msg) - -> List (Html msg) - -> Html msg - ) - -> List (Attribute msg) - -> String - -> Html msg -button_ elem attrs txt = - elem (class Class.button :: attrs) [ text txt ] diff --git a/src/Common/Link.elm b/src/Common/Link.elm deleted file mode 100644 index 4f4b845..0000000 --- a/src/Common/Link.elm +++ /dev/null @@ -1,42 +0,0 @@ -module Common.Link exposing (..) - -import Html exposing (Attribute) -import Html.Attributes exposing (href) - - -mailto : Attribute msg -mailto = - href "mailto:sharp.vik@gmail.com" - - -github : Attribute msg -github = - href "https://github.com/sharpvik" - - -go : Attribute msg -go = - href "https://golang.org" - - -python : Attribute msg -python = - href "https://www.python.org/about" - - -elm : Attribute msg -elm = - href "https://elm-lang.org" - - -vuejs : Attribute msg -vuejs = - href "https://vuejs.org" - - -docker = - href "https://www.docker.com" - - -ansible = - href "https://www.ansible.com/" diff --git a/src/Main.elm b/src/Main.elm deleted file mode 100644 index 06cd8bd..0000000 --- a/src/Main.elm +++ /dev/null @@ -1,209 +0,0 @@ -module Main exposing (..) - -import About.Main as About -import Browser exposing (Document, UrlRequest(..)) -import Browser.Navigation as Nav -import Common.Element as Element -import Html exposing (..) -import Html.Attributes exposing (..) -import Html.Events exposing (..) -import Route exposing (Route(..)) -import Skills.Main as Contact -import Url exposing (Url) -import Vsh.Main as Vsh - - - --- MAIN - - -main : Program Flags Model Msg -main = - Browser.application - { init = init - , view = view - , update = update - , subscriptions = subscriptions - , onUrlRequest = LinkClicked - , onUrlChange = LinkChanged - } - - - --- FLAGS - - -type alias Flags = - () - - - --- MODEL - - -type Model - = AboutModel Nav.Key About.Model - | ContactModel Nav.Key Contact.Model - | VshModel Nav.Key Vsh.Model - - -toKey : Model -> Nav.Key -toKey model = - case model of - AboutModel key _ -> - key - - ContactModel key _ -> - key - - VshModel key _ -> - key - - -toActiveIndex : Model -> Int -toActiveIndex model = - case model of - AboutModel _ _ -> - 0 - - ContactModel _ _ -> - 1 - - VshModel _ _ -> - 2 - - - --- MSG - - -type Msg - = GotAboutMsg About.Msg - | GotContactMsg Contact.Msg - | GotVshMsg Vsh.Msg - | LinkClicked UrlRequest - | LinkChanged Url - - - --- INIT - - -init : Flags -> Url -> Nav.Key -> ( Model, Cmd Msg ) -init _ url key = - mux (AboutModel key About.initModel) url - - -mux : Model -> Url -> ( Model, Cmd Msg ) -mux model url = - let - norm : - (subModel -> model) - -> (subMsg -> msg) - -> ( subModel, Cmd subMsg ) - -> ( model, Cmd msg ) - norm toModel toMsg ( subModel, cmd ) = - ( toModel subModel, Cmd.map toMsg cmd ) - - key = - toKey model - - route = - Route.fromUrl url - in - case route of - AboutRoute -> - norm (AboutModel key) GotAboutMsg About.init - - SkillsRoute -> - norm (ContactModel key) GotContactMsg Contact.init - - VshRoute -> - norm (VshModel key) GotVshMsg Vsh.init - - - --- VIEW - - -view : Model -> Document Msg -view model = - let - norm : (msg -> a) -> Document msg -> Document a - norm toMsg { title, body } = - { title = title - , body = - Element.navbar (toActiveIndex model) - :: List.map (Html.map toMsg) body - } - in - case model of - AboutModel _ mo -> - norm GotAboutMsg <| About.view mo - - ContactModel _ mo -> - norm GotContactMsg <| Contact.view mo - - VshModel _ mo -> - norm GotVshMsg <| Vsh.view mo - - - --- UPDATE - - -update : Msg -> Model -> ( Model, Cmd Msg ) -update msg model = - let - norm : - (subModel -> model) - -> (subMsg -> msg) - -> ( subModel, Cmd subMsg ) - -> ( model, Cmd msg ) - norm toModel toMsg ( subModel, cmd ) = - ( toModel subModel, Cmd.map toMsg cmd ) - - key = - toKey model - in - case ( msg, model ) of - ( GotVshMsg ms, VshModel _ mo ) -> - norm (VshModel key) GotVshMsg <| Vsh.update ms mo - - ( GotAboutMsg ms, AboutModel _ mo ) -> - norm (AboutModel key) GotAboutMsg <| About.update ms mo - - ( LinkChanged url, _ ) -> - mux model url - - ( LinkClicked urlRequest, _ ) -> - case urlRequest of - Internal url -> - ( model - , Nav.pushUrl key (Url.toString url) - ) - - External href -> - ( model - , Nav.load href - ) - - ( _, _ ) -> - ( model, Cmd.none ) - - - --- SUBSCRIPTIONS - - -subscriptions : Model -> Sub Msg -subscriptions model = - case model of - AboutModel _ mo -> - Sub.map GotAboutMsg <| About.subscriptions mo - - ContactModel _ mo -> - Sub.map GotContactMsg <| Contact.subscriptions mo - - VshModel _ mo -> - Sub.map GotVshMsg <| Vsh.subscriptions mo diff --git a/src/Route.elm b/src/Route.elm deleted file mode 100644 index a33676c..0000000 --- a/src/Route.elm +++ /dev/null @@ -1,93 +0,0 @@ -module Route exposing (Route(..), fromUrl, toString) - -import Url exposing (Protocol(..), Url) -import Url.Builder exposing (absolute) -import Url.Parser exposing (Parser, map, oneOf, parse, s, top) - - -type alias UrlParser a = - Parser (Route -> a) a - - -type Route - = AboutRoute - | SkillsRoute - | VshRoute - - -repr : Route -> String -repr route = - case route of - AboutRoute -> - "about" - - SkillsRoute -> - "contact" - - VshRoute -> - "vsh" - - -routes : List Route -routes = - let - {- This check will prevent you from forgetting to update routes - upon new Route creation. - -} - check route = - case route of - AboutRoute -> - () - - SkillsRoute -> - () - - VshRoute -> - () - in - [ AboutRoute - , SkillsRoute - , VshRoute - ] - - - --- EXPOSED - - -fromUrl : Url -> Route -fromUrl url = - Maybe.withDefault AboutRoute <| - parse urlParser <| - fake url - - -toString : Route -> String -toString route = - "/#" ++ absolute [ repr route ] [] - - - --- LOCAL - - -urlParser : UrlParser a -urlParser = - let - mapper route = - map route <| s <| repr route - in - oneOf <| - map AboutRoute top - :: List.map mapper routes - - -fake : Url -> Url -fake path = - { protocol = Https - , host = "sharpvik.github.com" - , port_ = Nothing - , path = Maybe.withDefault "/about" path.fragment - , query = Nothing - , fragment = Nothing - } diff --git a/src/Skills/Asset.elm b/src/Skills/Asset.elm deleted file mode 100644 index 624834c..0000000 --- a/src/Skills/Asset.elm +++ /dev/null @@ -1,18 +0,0 @@ -module Skills.Asset exposing (github, gmail) - -import Url.Builder exposing (absolute) - - -asset : List String -> String -asset path = - absolute ("assets" :: path) [] - - -github : String -github = - asset [ "github.svg" ] - - -gmail : String -gmail = - asset [ "gmail.svg" ] diff --git a/src/Skills/Class.elm b/src/Skills/Class.elm deleted file mode 100644 index ea78ec8..0000000 --- a/src/Skills/Class.elm +++ /dev/null @@ -1,35 +0,0 @@ -module Skills.Class exposing (..) - -import Common.Class as Class -import Html exposing (Attribute) -import Html.Attributes exposing (class) - - -bg : List (Attribute msg) -bg = - [ class Class.bg, class "skills-bg" ] - - -h1 : List (Attribute msg) -h1 = - [ class Class.h1, class "skills-h1" ] - - -h3 : List (Attribute msg) -h3 = - [ class Class.h3, class "skills-h3" ] - - -row : Attribute msg -row = - class "skills-row" - - -card : Attribute msg -card = - class "skills-card" - - -pill : Attribute msg -pill = - class "skills-pill" diff --git a/src/Skills/Main.elm b/src/Skills/Main.elm deleted file mode 100644 index 6391478..0000000 --- a/src/Skills/Main.elm +++ /dev/null @@ -1,123 +0,0 @@ -module Skills.Main exposing (..) - -import Browser exposing (Document) -import Common.Class as Class -import Common.Link as Link -import Html exposing (..) -import Html.Attributes exposing (..) -import Html.Events exposing (..) -import Route exposing (Route(..)) -import Skills.Class - - - --- FLAGS - - -type alias Flags = - () - - - --- MODEL - - -type Model - = NoModel - - - --- MSG - - -type Msg - = NoMsg - - - --- INIT - - -init : ( Model, Cmd Msg ) -init = - ( initModel, Cmd.none ) - - -initModel : Model -initModel = - NoModel - - - ---VIEW - - -view : Model -> Document Msg -view _ = - let - entitled = - Document "💡 My Skills" - - app items = - [ div (class Class.appTop :: Skills.Class.bg) - items - ] - in - entitled <| - app - [ h1 Skills.Class.h1 [ text "What I Do" ] - , div [ Skills.Class.row ] - [ div [ Skills.Class.card ] - [ h2 [] [ text "Back End" ] - , p [] [ text "RESTful Microservices" ] - , p [] - [ a [ Link.go, Skills.Class.pill ] [ text "Go" ] - , a [ Link.python, Skills.Class.pill ] [ text "Python" ] - ] - ] - , div [ Skills.Class.card ] - [ h2 [] [ text "DevOps " ] - , p [] [ text "CI/CD, Server Management" ] - , p [] - [ a [ Link.docker, Skills.Class.pill ] [ text "Docker" ] - , a [ Link.ansible, Skills.Class.pill ] [ text "Ansible" ] - ] - ] - ] - , div [ Skills.Class.row ] - [ div [ Skills.Class.card ] - [ h2 [] [ text "Front End" ] - , p [] [ text "Web Apps" ] - , p [] - [ a [ Link.elm, Skills.Class.pill ] [ text "Elm" ] - , a [ Link.vuejs, Skills.Class.pill ] [ text "Vue.js" ] - ] - ] - , div [ Skills.Class.card ] - [ h2 [] [ text "Tutoring" ] - , p [] [ text "Zero-to-hero in programming" ] - , p [] - [ a [ Link.go, Skills.Class.pill ] [ text "Go" ] - , a [ Link.python, Skills.Class.pill ] [ text "Python" ] - ] - ] - ] - ] - - - --- UPDATE - - -update : Msg -> Model -> ( Model, Cmd Msg ) -update _ model = - ( model, Cmd.none ) - - - --- SUBSCRIPTIONS - - -subscriptions : Model -> Sub Msg -subscriptions _ = - Sub.none diff --git a/src/Vsh/Class.elm b/src/Vsh/Class.elm deleted file mode 100644 index 048baa9..0000000 --- a/src/Vsh/Class.elm +++ /dev/null @@ -1,40 +0,0 @@ -module Vsh.Class exposing (..) - -import Common.Class as Class -import Html exposing (Attribute) -import Html.Attributes exposing (class) - - -h1 : List (Attribute msg) -h1 = - [ class Class.h1, class "vsh-h1" ] - - -bg : List (Attribute msg) -bg = - [ class Class.bg, class "vsh-bg" ] - - -window : String -window = - "vsh-window" - - -topbar : String -topbar = - "vsh-topbar" - - -close : String -close = - "vsh-close" - - -textarea : String -textarea = - "vsh-textarea" - - -text : String -text = - "vsh-text" diff --git a/src/Vsh/Command.elm b/src/Vsh/Command.elm deleted file mode 100644 index eb0a9ac..0000000 --- a/src/Vsh/Command.elm +++ /dev/null @@ -1,258 +0,0 @@ -module Vsh.Command exposing (..) - -import Html exposing (..) -import Html.Attributes exposing (href) -import Vsh.Text exposing (Color(..), ctext) - - -type alias Command msg = - String -> List (Html msg) -> List (Html msg) - - -exec : Command msg -exec command display = - let - maybeCommand = - List.head <| String.words command - - wrongCommand label string = - [ text <| label ++ " command: ", ctext Magenta string ] - in - case maybeCommand of - Nothing -> - display ++ wrongCommand "Weird" command - - Just cmd -> - case eval cmd of - Nothing -> - display ++ wrongCommand "Unknown" command - - Just c -> - c command display - - -eval : String -> Maybe (Command msg) -eval command = - case command of - "whoami" -> - Just whoami - - "top" -> - Just top - - "cv" -> - Just cv - - "jobs" -> - Just jobs - - "touch" -> - Just touch - - "help" -> - Just help - - "version" -> - Just version - - "cut" -> - Just cut - - "git" -> - Just git - - "clear" -> - Just clear - - "exit" -> - Just exit - - _ -> - Nothing - - -whoami : Command msg -whoami _ display = - display - ++ [ text - """Hey, my name is Viktor! -I study Computer Science in the University of Southampton. - -At work, I currently specialise in high-throughput microservices. I build them -with Go and Python. However, I also enjoy playing around with Haskell, Elm, -Vue.js, and Rust. - -In my spare time, I dabble in compiler design and implementation. I love -creating new programming languages! Given a chance, I'd like to do some -professional research into deterministic garbage collection within pure -functional languages.""" - ] - - -top : Command msg -top _ display = - let - bars m n = - -- m = max bars for this level; n = actual bars - min m n - - coloredLevel color m n = - Vsh.Text.ctext color <| - String.join "" <| - List.repeat (bars n m) "|" - - elementary = - coloredLevel Green 12 - - intermediate n20 = - coloredLevel Yellow 5 (n20 - 12) - - advanced n20 = - coloredLevel Magenta 3 (n20 - 17) - - level n = - let - n20 = - min n 20 - - offset = - String.join "" <| List.repeat (20 - n20) " " - in - [ elementary n20, intermediate n20, advanced n20, text offset ] - - skill name lvl = - (text <| - "\n " - ++ String.padRight 11 ' ' name - ++ "[" - ) - :: level lvl - ++ [ text "]" ] - in - display - ++ [ text "My top skills:\n" ] - ++ skill "Go" 20 - ++ skill "Python" 19 - ++ skill "Docker" 18 - ++ skill "Vue.js" 16 - ++ skill "JavaScript" 14 - ++ skill "Haskell" 12 - ++ skill "Elm" 9 - - -cv : Command msg -cv _ display = - display - ++ [ text "My curriculum vitae: " - , a - [ href "https://docs.google.com/document/d/1stYuixTXS9gbvcs2KKHLZBax8JRrnxkKxXqT7A9d9RA/edit?usp=sharing" ] - [ text "Google Docs" ] - ] - - -jobs : Command msg -jobs _ display = - display - ++ [ text - """Before you offer me a job, I'd like to tell you a few things: - - 1. I specialise in cloud services and web development, but I'm open to - interesting offers! - 2. I am a uni student; during my term time, I can only work 20 hr./week. - 3. Nevertheless, full-time work is possible during the term breaks. - -Use the """ - , Vsh.Text.ctext Green "touch" - , text " command to get in touch." - ] - - -touch : Command msg -touch _ display = - let - linkWithTheSameText url = - a [ href url ] [ text <| url ] - - entry description link = - [ text "\n " - , text <| String.padRight 11 ' ' <| description ++ ":" - , link - ] - in - display - ++ [ text "Ways to get in touch:\n" ] - ++ entry "email" - (a [ href "mailto:sharp.vik@gmail.com" ] [ text "sharp.vik@gmail.com" ]) - ++ entry "github" - (linkWithTheSameText "https://github.com/sharpvik") - ++ entry "linkedin" - (linkWithTheSameText "https://www.linkedin.com/in/sharpvik") - - -help : Command msg -help _ display = - let - entry command description = - [ text "\n " - , Vsh.Text.ctext Green <| String.padRight 8 ' ' command - , text <| "-- " ++ description - ] - in - display - ++ [ text """VSH is a terminal emulator that helps you learn about me. -Use up and down arrow keys to browse command history (unless it's empty). -And most importantly -- have fun! - -Available commands: -""" ] - ++ entry "whoami" "a bit about myself" - ++ entry "top" "my top skills" - ++ entry "cv" "my curriculum vitae" - ++ entry "jobs" "hire me if you're really impressed" - ++ entry "touch" "ways to get in touch\n" - ++ entry "help" "display this message again" - ++ entry "version" "display vsh version" - ++ entry "cut" "keyboard shortcuts cheatsheet" - ++ entry "git" "explore vsh source code" - ++ entry "clear" "clear screen" - ++ entry "exit" "exit vsh session" - - -version : Command msg -version _ display = - display - ++ [ text "vsh v0.1.3 by Viktor A. Rozenko Voitenko " ] - - -cut : Command msg -cut _ display = - let - entry command description = - [ text "\n " - , Vsh.Text.ctext Green <| String.padRight 8 ' ' command - , text <| "-- " ++ description - ] - in - display - ++ entry "CTRL+e" "quit vsh" - ++ entry "CTRL+;" "clear screen" - - -git : Command msg -git _ display = - display - ++ [ text "vsh on GitHub: " - , a - [ href "https://github.com/sharpvik/sharpvik.github.io" ] - [ text "https://github.com/sharpvik/sharpvik.github.io" ] - ] - - -clear : Command msg -clear _ _ = - [] - - -exit : Command msg -exit _ display = - display ++ [ text "Shutting down..." ] diff --git a/src/Vsh/History.elm b/src/Vsh/History.elm deleted file mode 100644 index 2d0dce5..0000000 --- a/src/Vsh/History.elm +++ /dev/null @@ -1,54 +0,0 @@ -module Vsh.History exposing (..) - -import Array exposing (Array) - - -type alias History = - { history : Array String, ptr : Int } - - -empty : History -empty = - History Array.empty 0 - - -update : String -> History -> History -update command history = - { history - | history = Array.push command history.history - , ptr = Array.length history.history + 1 - } - - -lookup : (History -> Int) -> History -> Maybe ( String, History ) -lookup getptr history = - let - ptr = - getptr history - in - if Array.isEmpty history.history then - Nothing - - else - Just <| - ( Maybe.withDefault "" <| Array.get ptr history.history - , { history | ptr = ptr } - ) - - -next : History -> Int -next history = - if Array.length history.history > history.ptr + 1 then - history.ptr + 1 - - else - 0 - - -prev : History -> Int -prev history = - if history.ptr == 0 then - Array.length history.history - 1 - - else - history.ptr - 1 diff --git a/src/Vsh/Main.elm b/src/Vsh/Main.elm deleted file mode 100644 index 9871d4e..0000000 --- a/src/Vsh/Main.elm +++ /dev/null @@ -1,296 +0,0 @@ -port module Vsh.Main exposing (..) - -import Browser exposing (Document) -import Browser.Events as Events -import Browser.Navigation as Nav -import Common.Class as Class -import Html exposing (..) -import Html.Attributes exposing (..) -import Html.Events exposing (..) -import Json.Decode as Decode -import Route exposing (Route(..)) -import Vsh.Class -import Vsh.Command -import Vsh.History exposing (History) -import Vsh.Text exposing (Color(..), ctext) - - - --- FLAGS - - -type alias Flags = - () - - - --- MODEL - - -type alias Model = - { display : List (Html Msg) - , command : String - , history : History - } - - - --- MSG - - -type Msg - = KeyDown KeyboardEvent - | Clear - | Exit - | Ignore - - -type KeyboardEvent - = Symbol Char - | Tab - | Enter - | Backspace - | ArrowUp - | ArrowDown - | Ctrl Char - | Alt Char - | Other - - - --- INIT - - -init : ( Model, Cmd Msg ) -init = - ( initModel, Cmd.none ) - - -initModel : Model -initModel = - { display = greeting - , command = "" - , history = Vsh.History.empty - } - - -greeting : List (Html Msg) -greeting = - Vsh.Command.version "version" [] - ++ [ text "\nEnter " - , ctext Green "help" - , text " to see available commands!\n" - , ctext Yellow "VSH does not support mobile devices.\n\n" - ] - ++ prompt - - -prompt : List (Html Msg) -prompt = - [ ctext Yellow "guest" - , text " at " - , ctext Magenta "sharpvik" - , text "\n❯ " - ] - - - --- VIEW - - -view : Model -> Document Msg -view model = - { title = "💻 ️VSH Shell" - , body = - [ div (class Class.appTop :: Vsh.Class.bg) - [ h1 Vsh.Class.h1 [ text "Hack Me 🤓" ] - , vshDisplay <| model.display ++ [ text model.command ] - ] - ] - } - - -vshDisplay : List (Html Msg) -> Html Msg -vshDisplay display = - div - [ class Vsh.Class.window - ] - [ header - [ class Vsh.Class.topbar ] - [ p [] - [ text "vsh shell" ] - , a - [ class Vsh.Class.close - , href <| Route.toString AboutRoute - ] - [] - ] - , pre - [ class Vsh.Class.textarea ] - (display ++ [ text "█" ]) - ] - - - --- UPDATE - - -update : Msg -> Model -> ( Model, Cmd Msg ) -update msg model = - updateOnKeydown msg model model.command - - -updateOnKeydown : Msg -> Model -> String -> ( Model, Cmd Msg ) -updateOnKeydown msg model command = - case msg of - KeyDown (Symbol char) -> - ( { model | command = command ++ String.fromChar char }, Cmd.none ) - - KeyDown Tab -> - ( { model | command = command ++ " " }, Cmd.none ) - - KeyDown Enter -> - ( updateOnCommand model command, scroll () ) - - KeyDown Backspace -> - ( { model | command = String.dropRight 1 command }, Cmd.none ) - - KeyDown ArrowUp -> - ( maybeLookupHistory Vsh.History.prev model, Cmd.none ) - - KeyDown ArrowDown -> - ( maybeLookupHistory Vsh.History.next model, Cmd.none ) - - Clear -> - ( updateOnCommand model "clear", Cmd.none ) - - Exit -> - ( model - , Nav.load <| Route.toString AboutRoute - ) - - _ -> - ( model, Cmd.none ) - - -maybeLookupHistory : (History -> Int) -> Model -> Model -maybeLookupHistory getptr model = - case Vsh.History.lookup getptr model.history of - Nothing -> - model - - Just ( command, history ) -> - { model | command = command, history = history } - - -updateOnCommand : Model -> String -> Model -updateOnCommand model command = - let - display = - Vsh.Command.exec command <| - model.display - ++ [ text (command ++ "\n") ] - - promptWithOffset = - (text <| - if List.isEmpty display then - "" - - else - "\n\n" - ) - :: prompt - in - { display = display ++ promptWithOffset - , command = "" - , history = Vsh.History.update command model.history - } - - - --- SUBSCRIPTIONS - - -subscriptions : Model -> Sub Msg -subscriptions _ = - Events.onKeyDown keydownHandler - - -eventDecoder : Decode.Decoder KeyboardEvent -eventDecoder = - Decode.map3 - eventConstructor - (Decode.field "ctrlKey" Decode.bool) - (Decode.field "altKey" Decode.bool) - (Decode.field "key" Decode.string) - - -eventConstructor : Bool -> Bool -> String -> KeyboardEvent -eventConstructor ctrl alt key = - if ctrl then - specialKeyEvent Ctrl key - - else if alt then - specialKeyEvent Alt key - - else - case key of - "Tab" -> - Tab - - "Enter" -> - Enter - - "Backspace" -> - Backspace - - "ArrowUp" -> - ArrowUp - - "ArrowDown" -> - ArrowDown - - char -> - specialKeyEvent Symbol char - - -specialKeyEvent : (Char -> KeyboardEvent) -> String -> KeyboardEvent -specialKeyEvent event key = - if String.length key /= 1 then - Other - - else - case String.uncons key of - Just ( char, _ ) -> - event char - - Nothing -> - Other - - -keydownHandler : Decode.Decoder Msg -keydownHandler = - Decode.map toKeyDownMsg eventDecoder - - -toKeyDownMsg : KeyboardEvent -> Msg -toKeyDownMsg event = - case event of - Ctrl ';' -> - Clear - - Ctrl 'e' -> - Exit - - Other -> - Ignore - - e -> - KeyDown e - - - --- PORTS - - -port scroll : () -> Cmd msg diff --git a/src/Vsh/Text.elm b/src/Vsh/Text.elm deleted file mode 100644 index eff3780..0000000 --- a/src/Vsh/Text.elm +++ /dev/null @@ -1,32 +0,0 @@ -module Vsh.Text exposing (..) - -import Html exposing (..) -import Html.Attributes exposing (..) - - -ctext : Color -> String -> Html msg -ctext color message = - span - [ class <| "vsh-text " ++ colorToClass color ] - [ Html.text message ] - - -type Color - = Yellow - | Green - | Magenta - - -colorToClass : Color -> String -colorToClass c = - "vsh-" - ++ (case c of - Yellow -> - "yellow" - - Green -> - "green" - - Magenta -> - "magenta" - ) From ff430764945dcdd8c2e4ee7fc0902a521f461ca9 Mon Sep 17 00:00:00 2001 From: sharpvik Date: Tue, 12 Oct 2021 01:58:28 +0000 Subject: [PATCH 03/15] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sh?= =?UTF-8?q?arpvik/sharpvik.github.io@7510ebcdb5500d8928eb55f63e77381f2ded2?= =?UTF-8?q?21e=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/main.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/js/main.js b/js/main.js index 9c6db61..ed505dd 100644 --- a/js/main.js +++ b/js/main.js @@ -6896,7 +6896,8 @@ var $author$project$Vsh$Command$jobs = F2( display, _List_fromArray( [ - $elm$html$Html$text('Before you offer me a job, I\'d like to tell you a few things:\n\n 1. I specialise in cloud services and web development, but I\'m open to\n interesting offers!\n 2. I am a uni student; during my term time, I can only work 20 hr./week.\n 3. Nevertheless, full-time work is possible during the term breaks.\n \nUse the '), + A2($author$project$Vsh$Text$ctext, 0, 'I am currenly looking for a graduate role starting June 2022!'), + $elm$html$Html$text('\n \nHere\'s a few things you should know:\n\n 1. I specialise in cloud services and web development, but I\'m open to\n interesting offers!\n 2. I am a uni student; during my term time, I can only work 20 hr./week.\n 3. Nevertheless, full-time work is possible during the term breaks.\n \nUse the '), A2($author$project$Vsh$Text$ctext, 1, 'touch'), $elm$html$Html$text(' command to get in touch.') ])); @@ -6995,10 +6996,10 @@ var $author$project$Vsh$Command$top = F2( _Utils_ap( A2(skill, 'Vue.js', 16), _Utils_ap( - A2(skill, 'JavaScript', 14), + A2(skill, 'Haskell', 12), _Utils_ap( - A2(skill, 'Haskell', 12), - A2(skill, 'Elm', 9))))))))); + A2(skill, 'Elm', 9), + A2(skill, 'Ansible', 7))))))))); }); var $author$project$Vsh$Command$touch = F2( function (_v0, display) { From 22b6d96d28d333e72de5cf4717ee15a228a0435c Mon Sep 17 00:00:00 2001 From: sharpvik Date: Sat, 5 Mar 2022 15:58:27 +0000 Subject: [PATCH 04/15] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sh?= =?UTF-8?q?arpvik/sharpvik.github.io@f9c0884341ab9a0fb62d7689491f131745282?= =?UTF-8?q?dff=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/main.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/js/main.js b/js/main.js index ed505dd..46ba15a 100644 --- a/js/main.js +++ b/js/main.js @@ -5204,10 +5204,6 @@ var $author$project$Main$AboutModel = F2( }); var $author$project$About$Main$NoModel = 0; var $author$project$About$Main$initModel = 0; -var $author$project$Main$ContactModel = F2( - function (a, b) { - return {$: 1, a: a, b: b}; - }); var $author$project$Main$GotAboutMsg = function (a) { return {$: 0, a: a}; }; @@ -5217,6 +5213,10 @@ var $author$project$Main$GotContactMsg = function (a) { var $author$project$Main$GotVshMsg = function (a) { return {$: 2, a: a}; }; +var $author$project$Main$SkillsModel = F2( + function (a, b) { + return {$: 1, a: a, b: b}; + }); var $author$project$Main$VshModel = F2( function (a, b) { return {$: 2, a: a, b: b}; @@ -6129,7 +6129,7 @@ var $author$project$Main$mux = F2( case 1: return A3( norm, - $author$project$Main$ContactModel(key), + $author$project$Main$SkillsModel(key), $author$project$Main$GotContactMsg, $author$project$Skills$Main$init); default: @@ -7578,7 +7578,7 @@ var $author$project$About$Main$view = function (_v0) { $elm$html$Html$Attributes$target('_blank') ]), $author$project$About$Class$button), - 'SAY HI!') + 'EMAIL ME!') ]))); }; var $author$project$Common$Link$ansible = $elm$html$Html$Attributes$href('https://www.ansible.com/'); From 51d121d3f359db9fab0c05e0f9efc80a90795f9a Mon Sep 17 00:00:00 2001 From: sharpvik Date: Sat, 2 Apr 2022 17:08:48 +0000 Subject: [PATCH 05/15] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sh?= =?UTF-8?q?arpvik/sharpvik.github.io@e4d97d94a773b9702f8df42b8966829ee4154?= =?UTF-8?q?5f5=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/main.js | 56 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/js/main.js b/js/main.js index 46ba15a..41cdb6c 100644 --- a/js/main.js +++ b/js/main.js @@ -5234,8 +5234,8 @@ var $elm$core$Maybe$withDefault = F2( var $author$project$Route$fake = function (path) { return { T: $elm$core$Maybe$Nothing, - ar: 'sharpvik.github.com', - ay: A2($elm$core$Maybe$withDefault, '/about', path.T), + ar: 'sharpvik.github.io', + ay: A2($elm$core$Maybe$withDefault, '/#/about', path.T), az: $elm$core$Maybe$Nothing, aA: 1, aB: $elm$core$Maybe$Nothing @@ -5939,7 +5939,7 @@ var $author$project$Route$repr = function (route) { case 0: return 'about'; case 1: - return 'contact'; + return 'skills'; default: return 'vsh'; } @@ -6828,6 +6828,7 @@ var $author$project$Vsh$Command$exit = F2( $elm$html$Html$text('Shutting down...') ])); }); +var $author$project$Common$Link$repo = 'https://github.com/sharpvik/sharpvik.github.io'; var $author$project$Vsh$Command$git = F2( function (_v0, display) { return _Utils_ap( @@ -6839,11 +6840,11 @@ var $author$project$Vsh$Command$git = F2( $elm$html$Html$a, _List_fromArray( [ - $elm$html$Html$Attributes$href('https://github.com/sharpvik/sharpvik.github.io') + $elm$html$Html$Attributes$href($author$project$Common$Link$repo) ]), _List_fromArray( [ - $elm$html$Html$text('https://github.com/sharpvik/sharpvik.github.io') + $elm$html$Html$text($author$project$Common$Link$repo) ])) ])); }); @@ -7001,14 +7002,31 @@ var $author$project$Vsh$Command$top = F2( A2(skill, 'Elm', 9), A2(skill, 'Ansible', 7))))))))); }); +var $author$project$Common$Link$email = 'sharp.vik@gmail.com'; +var $author$project$Common$Link$github = 'https://github.com/sharpvik'; +var $author$project$Common$Link$linkedin = 'https://www.linkedin.com/in/sharpvik'; +var $elm$html$Html$Attributes$target = $elm$html$Html$Attributes$stringProperty('target'); var $author$project$Vsh$Command$touch = F2( function (_v0, display) { - var linkWithTheSameText = function (url) { + var mailTo = function (email) { return A2( $elm$html$Html$a, _List_fromArray( [ - $elm$html$Html$Attributes$href(url) + $elm$html$Html$Attributes$href('mailto:' + email) + ]), + _List_fromArray( + [ + $elm$html$Html$text(email) + ])); + }; + var linkTo = function (url) { + return A2( + $elm$html$Html$a, + _List_fromArray( + [ + $elm$html$Html$Attributes$href(url), + $elm$html$Html$Attributes$target('_blank') ]), _List_fromArray( [ @@ -7036,25 +7054,16 @@ var $author$project$Vsh$Command$touch = F2( A2( entry, 'email', - A2( - $elm$html$Html$a, - _List_fromArray( - [ - $elm$html$Html$Attributes$href('mailto:sharp.vik@gmail.com') - ]), - _List_fromArray( - [ - $elm$html$Html$text('sharp.vik@gmail.com') - ]))), + mailTo($author$project$Common$Link$email)), _Utils_ap( A2( entry, 'github', - linkWithTheSameText('https://github.com/sharpvik')), + linkTo($author$project$Common$Link$github)), A2( entry, 'linkedin', - linkWithTheSameText('https://www.linkedin.com/in/sharpvik')))))); + linkTo($author$project$Common$Link$linkedin)))))); }); var $author$project$Vsh$Command$whoami = F2( function (_v0, display) { @@ -7447,6 +7456,7 @@ var $elm$browser$Browser$Document = F2( return {O: body, af: title}; }); var $author$project$Common$Class$appCenter = 'app-center'; +var $author$project$Common$Link$attr = $elm$html$Html$Attributes$href; var $author$project$Common$Class$bg = 'bg'; var $author$project$About$Class$bg = _List_fromArray( [ @@ -7483,7 +7493,6 @@ var $author$project$About$Asset$github = $author$project$About$Asset$asset( _List_fromArray( ['github.svg'])); var $author$project$About$Class$github = $elm$html$Html$Attributes$class('about-github'); -var $author$project$Common$Link$github = $elm$html$Html$Attributes$href('https://github.com/sharpvik'); var $author$project$Common$Class$h1 = 'h1'; var $author$project$About$Class$h1 = _List_fromArray( [ @@ -7499,14 +7508,13 @@ var $author$project$About$Class$h3 = _List_fromArray( ]); var $elm$html$Html$h3 = _VirtualDom_node('h3'); var $elm$html$Html$img = _VirtualDom_node('img'); -var $author$project$Common$Link$mailto = $elm$html$Html$Attributes$href('mailto:sharp.vik@gmail.com'); +var $author$project$Common$Link$mailto = 'mailto:' + $author$project$Common$Link$email; var $elm$html$Html$Attributes$src = function (url) { return A2( $elm$html$Html$Attributes$stringProperty, 'src', _VirtualDom_noJavaScriptOrHtmlUri(url)); }; -var $elm$html$Html$Attributes$target = $elm$html$Html$Attributes$stringProperty('target'); var $author$project$About$Main$view = function (_v0) { var general = $elm$core$Basics$append( _List_fromArray( @@ -7554,7 +7562,7 @@ var $author$project$About$Main$view = function (_v0) { $elm$html$Html$a, _List_fromArray( [ - $author$project$Common$Link$github, + $author$project$Common$Link$attr($author$project$Common$Link$github), $elm$html$Html$Attributes$target('_blank'), $author$project$About$Class$github ]), @@ -7574,7 +7582,7 @@ var $author$project$About$Main$view = function (_v0) { _Utils_ap( _List_fromArray( [ - $author$project$Common$Link$mailto, + $author$project$Common$Link$attr($author$project$Common$Link$mailto), $elm$html$Html$Attributes$target('_blank') ]), $author$project$About$Class$button), From 077570bb58734b0d64a54f3ae4b4cf3915b541c4 Mon Sep 17 00:00:00 2001 From: sharpvik Date: Sun, 17 Apr 2022 21:30:26 +0000 Subject: [PATCH 06/15] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sh?= =?UTF-8?q?arpvik/sharpvik.github.io@3190889d6fa374dbc6664486f4217c8d6545e?= =?UTF-8?q?469=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/main.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/js/main.js b/js/main.js index 41cdb6c..f953f15 100644 --- a/js/main.js +++ b/js/main.js @@ -6747,6 +6747,15 @@ var $author$project$Route$toString = function (route) { ]), _List_Nil); }; +var $author$project$Vsh$Command$ahegao = F2( + function (_v0, display) { + return _Utils_ap( + display, + _List_fromArray( + [ + $elm$html$Html$text('⠄⠄⠄⢰⣧⣼⣯⠄⣸⣠⣶⣶⣦⣾⠄⠄⠄⠄⡀⠄⢀⣿⣿⠄⠄⠄⢸⡇⠄⠄\n⠄⠄⠄⣾⣿⠿⠿⠶⠿⢿⣿⣿⣿⣿⣦⣤⣄⢀⡅⢠⣾⣛⡉⠄⠄⠄⠸⢀⣿⠄\n⠄⠄⢀⡋⣡⣴⣶⣶⡀⠄⠄⠙⢿⣿⣿⣿⣿⣿⣴⣿⣿⣿⢃⣤⣄⣀⣥⣿⣿⠄\n⠄⠄⢸⣇⠻⣿⣿⣿⣧⣀⢀⣠⡌⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⣿⣿⣿⠄\n⠄⢀⢸⣿⣷⣤⣤⣤⣬⣙⣛⢿⣿⣿⣿⣿⣿⣿⡿⣿⣿⡍⠄⠄⢀⣤⣄⠉⠋⣰\n⠄⣼⣖⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⢇⣿⣿⡷⠶⠶⢿⣿⣿⠇⢀⣤\n⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣷⣶⣥⣴⣿⡗\n⢀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄\n⢸⣿⣦⣌⣛⣻⣿⣿⣧⠙⠛⠛⡭⠅⠒⠦⠭⣭⡻⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠄\n⠘⣿⣿⣿⣿⣿⣿⣿⣿⡆⠄⠄⠄⠄⠄⠄⠄⠄⠹⠈⢋⣽⣿⣿⣿⣿⣵⣾⠃⠄\n⠄⠘⣿⣿⣿⣿⣿⣿⣿⣿⠄⣴⣿⣶⣄⠄⣴⣶⠄⢀⣾⣿⣿⣿⣿⣿⣿⠃⠄⠄\n⠄⠄⠈⠻⣿⣿⣿⣿⣿⣿⡄⢻⣿⣿⣿⠄⣿⣿⡀⣾⣿⣿⣿⣿⣛⠛⠁⠄⠄⠄\n⠄⠄⠄⠄⠈⠛⢿⣿⣿⣿⠁⠞⢿⣿⣿⡄⢿⣿⡇⣸⣿⣿⠿⠛⠁⠄⠄⠄⠄⠄\n⠄⠄⠄⠄⠄⠄⠄⠉⠻⣿⣿⣾⣦⡙⠻⣷⣾⣿⠃⠿⠋⠁⠄⠄⠄⠄⠄⢀⣠⣴\n⣿⣿⣿⣶⣶⣮⣥⣒⠲⢮⣝⡿⣿⣿⡆⣿⡿⠃⠄⠄⠄⠄⠄⠄⠄⣠⣴⣿⣿⣿') + ])); + }); var $author$project$Vsh$Command$clear = F2( function (_v0, _v1) { return _List_Nil; @@ -7098,6 +7107,8 @@ var $author$project$Vsh$Command$eval = function (command) { return $elm$core$Maybe$Just($author$project$Vsh$Command$clear); case 'exit': return $elm$core$Maybe$Just($author$project$Vsh$Command$exit); + case 'ahegao': + return $elm$core$Maybe$Just($author$project$Vsh$Command$ahegao); default: return $elm$core$Maybe$Nothing; } From fe62f1ab3764fae1d2772ca4baf2960779296912 Mon Sep 17 00:00:00 2001 From: sharpvik Date: Wed, 20 Apr 2022 19:43:56 +0000 Subject: [PATCH 07/15] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sh?= =?UTF-8?q?arpvik/sharpvik.github.io@d6a9b4d1c67c84ee8bbe20264e7a769c33002?= =?UTF-8?q?8f2=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/main.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/main.js b/js/main.js index f953f15..2637c85 100644 --- a/js/main.js +++ b/js/main.js @@ -7006,10 +7006,10 @@ var $author$project$Vsh$Command$top = F2( _Utils_ap( A2(skill, 'Vue.js', 16), _Utils_ap( - A2(skill, 'Haskell', 12), + A2(skill, 'Elm', 13), _Utils_ap( - A2(skill, 'Elm', 9), - A2(skill, 'Ansible', 7))))))))); + A2(skill, 'Haskell', 12), + A2(skill, 'Ansible', 8))))))))); }); var $author$project$Common$Link$email = 'sharp.vik@gmail.com'; var $author$project$Common$Link$github = 'https://github.com/sharpvik'; From 0356b964a8f197d5817a8793d33eb11430932665 Mon Sep 17 00:00:00 2001 From: sharpvik Date: Tue, 4 Oct 2022 14:41:01 +0000 Subject: [PATCH 08/15] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sh?= =?UTF-8?q?arpvik/sharpvik.github.io@ceccefdf70ae632145893ebf41fb8896ad181?= =?UTF-8?q?de9=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/cv.pdf | Bin 0 -> 66628 bytes css/about.css | 2 + js/main.js | 529 +++++++++++--------------------------------------- 3 files changed, 114 insertions(+), 417 deletions(-) create mode 100644 assets/cv.pdf diff --git a/assets/cv.pdf b/assets/cv.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4da679da60357b3963c5e710be6b5dddc84bae53 GIT binary patch literal 66628 zcma&O1z23mvIdGnAh`QLaCdiicXxN!;I0W4T!Xv21$UR=?hriq8?yJk`<#2iUL%{%%qQ5iwduIu=;c*^{F!SVjN?z~0CTmWPL4#nQ#b6hNV5>g;N3 zN(oD^;AC&&YHaERpis89G^7XG0c;r=H~`}I_U1rE5qo22fRd@5iK&yR6D1!XEKqzO ziTR%qjST^eu=GN*0D3ulCtE|Cf0P&*{?QT^eAoI*S4J4X081|;_2;iTfRT>*uNONk zy{rs?5!k0J2yk(7HT@66{%bg%4yFKlK|4Ep7oe4^k;|XYGM0AMu=HX87T^H(PQbYX zwBM(~pbJZ{WNPdJ&}L!aq+{gdGk~3ujgB4I#t76G z1iUBhFE7R}miBf)HvoE7B}v%#KL83_LrWVMdoE`SLnjA1H%n^)^Y<1yV|!a*w*Dm* zO#h@p3}^wI61|v>p^K@AsjAL&;Z(2(C_yk_Eh)jtMifblR`3 z)vkqH2_%({)G2^$N6xWL?!xax8)ct(05^Igd_Xi>hj!&()!iR?a@ODa{*;m7=bbTRPtRg0WY$`-pws=eK)Iun zMcx3BA8~G&)-&0vrAS4~4~UL>BB4$na*GHSAyc+J+F<**i$Ee%zInkM@u|&gLH6o+ z@q2v7H=!E3@60b>3tBYSD4k6magd)}@qcZvA~Dg*(S8%k2aL-{h-Ecpf5w!L=v0D4 zIeYHN;?IViUdNn-D=0(7jx8{38u}GBgv5e=6xPMV>Y4p|WscZ?!1$8B@_WP0uXNok zU|NNHE2GOL?KR%6R#(r53HuOtsHR+yut>E3Cwasu8=34UrzC>r37y@G+iZUL4Q4yq zh!*#FDRX1SW@uyELAdU-R_JZ*gH+~R^Kg{~J+7T$oP-C|!h_-CAHI!9sKHk=AD~^6 zT;x&JU6|<83d;y)E}S%~s7_ZTElmZxS9`wrIzA85pOJb_0yGB_@QvunP17=@*P}a& zhAE=Sba@c?sFB(#E}gD$ycl#%zyp)Lu0V(Bf676exF#CQ%Lmba>bN1(sJZ&Q3rO+4W*ov>Zv*2399nu-zh-W=B3R?1k;!1|wY}{LF!B zH7oKx)2&%w%<|h#Bp2pAO>iOcQDQq0W^1m*Nh`^;f}}Dm-hHS+f^W$?=cxH)xRS36 z<$1~Q0ZXd}XqMXjJG8&jLlSs>#2^WA zQ2K^9Uph!sdjb|gykyyO5)bo>4r?b0Dpi6EpGBGG8*TDg-d7XiIi*CB|Qg~It8wZJtDL- zN_oM8VV0^&)hPoof?*mkNbX75)$5`Y?s|d>>hsxSw&vP%{5BqjS^{Wf)K1*_+t5A8 zMd{j!63Qg{`0AkF9dklfee_|*P#`cg%XNC1}lhkg=p`UQ9549f?TcAh*WD8q$Sqln*pS7V|V=JGDD9v(-dla z*tZkPnVjzMk~f!_gG+7}Zk@dln8nYbLES*-axk?t6^c zm7ySw_tiLb zRBOJNS4Bp$dgNIyHaFD$5YhGW*?d(^2M9ULnJ^3kw&mP}tO7JO%`w+}p|05YF--;Q z88hMipJ_2e{BBaA#LJV+q=GO9Lv6GzBEy|=Sq1efW+g)-%#%QeKMH0b^#&k;s+oP%2%>T#T%8rpO1#y3jQRGP6IuMGFLjDR#2mRyFXdd2R@!ltShekG%FWdw^MQNT34#PfR)E|gY;xgR}G& z0fSXy;c<4;SikR$`T1M1E2{hCk2v#u+!iMg?gHwrNYWIUzDKrg9GmZ^MBS+-4Q-}t zV>FTiY+X|!oPC-z&<)VCO|UUjKQm%A){C6s0{O@X^+Y^Ag=1J!mKZS-Q7}V#)XYv; z(W^%%`2d7*D~ELsdthtEK7*)fRA&2o9O)&U&9EUEA6s^VvtoJSJEm7X`K97 zw;6Ld81~n~YYB?eL}ez^yw@m2{pyr|(n9o$rn%0~)qM}d6TANE_hsaIzjP3spr#|O z5uv)v*7-PfL5i`Ylo#}exQlI2VAnivK$wnDesK@F03X#-5R%J&`gu9Y54~#tG+SY1Au4MFRq`R=7?B+EvPq-!t06z1# z+SP192(_L>F~oa`Vr9gw6M+|HH}tB^9`(=7n0fs6_E^MN6I;xM$#budbG~0XGDE8Q z_BT1>D~}tLM2`If30t&Ct>c-^u5%>i#~-`z#E8g+91XWDnR}@Q;fp-c34_-Fff-J> ztf6qA?e!hV6kfOM$1g-k5-}yXjE9zKBV4xWYbM&xt2BcW0RNM;l;Ov67N0O#rT>)RLdCx)z?Iy$>9|)zU z(xXNy4ca8+Bx=bq#?e))o`Z`i>a5M}oF9@i)FaB1(-utTSvd;}ZMjFyEWtVT3(uQP z5Ye!VJafE;z{7_lsDD9u>Nr;YY-m}8=Wux21~-AtIcLReGCEm;joN}Wv@l21h`Szp zi1w1LTU&xW>-hc)@)d{`B3lTsn#w-9=jSBVi0XyRi&mU`Jv3PEiROF zE54J9Me|~VI7v}#HKaw09ayC*a-b?_8^Gl$yr z(CsOhR@Vq`30+5g1$R@9k@m<LA>+bCMY04tegvJWXvy;YCX6rQ^pf?aY}jU&FT7Z7&oO<}V$ra$kYt2Aa`a247d ztu7kv(LZCd>Ga5=H@Kkh{*3c#Wf2nfVUn(^lHrH`%k@b%pO1&%+c^E(!(-Uw#_N5` zXjqZFynMk~0hqpz8yfexfmCJ`UPk-sm!FaK& zT)r0MarKR(DT3F`p)$&a)NJ}0V*A|cIu@!^e#0vlOa>-954gOJ&d5CL)`pjA;h*ri zCwMcLco5$_$|uIvFpl0*`Klhg&`#mBtu-B6cv;YAd(8XAoQ$}*))Y-2l3Z-X8xb^L zeKNG~a%JOjx7nZNng?Tm}05&D)$}#cUElaeq$A8B_}EatUy8 z3Hg&Qwbw*=g8d-U`JhzXY3DuKozA}ai)GMdJ=?jb*>&B|&^ERYYTO@PXXLDOT`!YA z`I1Y@L#L)|-e<|`zOm#)%R*H7@MXUNsdZ&x)_X98xBblreA>pZ2V6vUx;*Vd!utMm zl{b3YD5j`YtU%<6wSm#%XYLF(bn9XEPPU_|p6_O7+zta(4@uZJ#3-@_UkZP z{@3lsa%a$3liC;1&(7D5CO)F1b^&m&r0by9C`F@GN>sFZ+q^jRmqw9pNtXR$E2stg zs`r79PP()v4{DJq+y{O0AooW_vgTP--85$+xD3^bXboMCGryVq@4(pGy(6S04Av0R zRCPVWsHuLN?cw()8+e~lRuTrmSC=i8httx>m9jkA?GV|@~9lE3S*Zeq$L|@T| za@V8vdh*3&AnLlbRo}}Tht?wuuAFN67YQV~zqj(#ul>0Y#Y(vysDkyS=j z=(9%*dkjA{2F}A7H|CI|Sc2D$3I6Z#GpkCov~S`gDp|44QD2h932X-G6&>c3dGl&` zE~j+1ob!lm=|Uy@-2SMBb6`4aa$20MH6ySlyo+~72-=&?+H+DUS%u*TZqaySs| zN*%FLy$F4o@;vxBp}ccsMXXo&vx+G%hHFus*Ke+LbIGGzzpI|XEmYK6ROJarJ!u;U ze+6NhK*~|ODI2j}Wk=K@;;u=qS1R=mH_%{pI<}I%t^oggniVOjc2xEy>R5A6V?Hb6AdL`g>PjiW1|cA3d|_h!}rd$cV`X+U0dFznzjDG6dN2b5HpU zAS7QERzsw5qc-bkXg5jg(=D%o)W7{&L-ZR{X#8GM^D5`uM!3rKW9~VPgilA|66)7= z^?@c4!wk~4;0k95Jp30gapBDxB9Ct+Eh8PAA1P6?Y~iJmdepb`+;@{6mck2dv0dT93}sdie+VSJgL^pa6dZstPCj|j2~G1BO%%@FTI z>2XcxbAgEe#nAo*CgGdIy(<6Z8>n+gzwA3A_cvVhH#YY#P}5()m4cx;5McsBe)g_T z#-`5ih!zm`GgdYQB4K|JKYA5Y4;KKvq%BZU=x1q2f5*nrp~CoobLCOW2fAn_0MXhG*`YstXDX=4dY zv+;j0VdG@_3w!)86Lu434-*eNCl(gl|760(_-|gE%*@@a&6zCCEX+*)lL-sMznR#v zv6z{AxiZ_hyL$d76GjF)PS$^7akpY{aJ67#wDxcY!mEE$^*_UBWnug`6AlY&R!(L! zXJ%(Z^Z#VR`0wE}T6h>cI2$us7~3=b2NM=n_J8x@Y2@i(Vry!`!pQNTGRDHh@$X5t z=CE-!v$1w?x3u~XUYJ=q|J+sJBMW@=Ea=$WJ#FnQEbTlv9a;aA3FCi(%zv4%ySW&9 zdYKw~S=j>@-v4XHm^e7;I9c9t>Ay^j4H*pGtvDE%m`wjY{C@y!w*PVWU0gjZ*lpcS z3_aeL(7$;3$ApFb-ych34-acoXC_u7Cbs`z!OYC@-_ifedU#*mf3JtX){(HGi=mCZ z`TNQ<2Ns&Y79K3Uh^h1YGW}B){>A*gB>Zju7yQi#U}9k8-~iT={{tfD|sNS=w)Ex6v5%1|At1?ytF{ zm6esPs;*6~(oH16$UvGFwKTbld`>qkLL>&@pS9^c6P zmSf`gQGz8L3{+juAm<6Ya0mS0cZ^YIciJN5VdIGU@Iwy>?tWn$#hQvB#Y>>ze~ z7{R$%WT|HRACzsi_>A7HOP@b{-}lr28;EgTahHp>=jCz(AzI`0&-e0r{;KiEslgWm7OSIg$lJ5c9cqF5ovCCK*r?(HxLAcZ#ixnsi)m z2UlhOi)Btx&jrWnHiM9u2Zp>5_z&ZeB~NVMwAV#&&JkU9IVWS;+~{5L16ry|JBQ&w z%0M;twujetCA(q2sA+t;@joG7 zq3mg7)!w(C`_BY$9nzqH%6%IutF!-FxXfQObcND4w67s=p=7I}C6;ck9HA^qwfsl? zYbZMQ7laaopi`GAV>v(Y?@l4N4#m!ec=}yVDpI=qTt8&pCLoSxQGfn`xh^>&4;81B zz@Te&>)^_9EBhT-n&5GV6Y;kDQ81HSCBbTLx#U-DP1Vvs5k zMme0ihhX(^x+C>+0_YTh$sqb(Qyf2exw)UTugEoyor{KNf)5|Aa-izd?0Q=`Sj+Vy zeJCL6+NNPyf(NF=rdBLl*;*mjVq5bUXbLMd*`HRv{i zoD)`HFkptd6{EnaP6PhC3k!AXCg=-P)K~|*Wu(Az=zu$Z0%|@W7iWhCf?glwe1?aG zf?fB2w59l_7p}Au{4-`vA;qX0UVU4t_{0H!PBJ676~9S1bHK9r$$@ZA*#q{t!h?El z7ONWU=e@8mWGC2h`sKI+;SYcGPWHhM@LIy(M@|F)UN;RoxIrR(>DH)IGb>KE2)izZ zmE)iIt%e&^i(#@78*#K?XvLK+*b^%bLFxyl_3A@zMHF$)L{o^*uH6>-YwsjR4ibG&<0V;g9fe#a&g#G5$Y8xpQ=xdFI5`i`K)SUzosM z9M2`;57uJaTgcJBG2&XpUiJMbsn6?OMGgBnMmI%nWqdQldoWv!K0~w^XnstRQEcKg zIAM9S{jj*wWJe&*?@f3+5pi~it>%|9FJJd4spe-p*m<-j!S$AQsnKuMYsF)Zjvg0{ z9WtjrqXo}GkVTEz^H8%l(C~}D=bQ=+f_p#U3)nLfu>mpZBxAYvpQU}6SkC)t*-dT4#Iq}2E<)^Z1)xIx{IHI@{Y zt(c{&A#-$1<1G_6o}_s_g}oQ$EXu@h`dagVxzF#T!be3YSF=PzJ&~`ILj84b?_Rx} z6i(`ibENqehT8qjPxBStDTOhuXSXtisNwhiY1u)l_iGB>mF_8yJr zlSI9bzr;rUj&><*h1{1 zNcR0>JkU`VQ#Y+WC;%+ljLRd5bFlU zMMhrx!%wMb&%xT|a?I+ao74{<;A5nUJR$`-=k=fv-C6}!$2Xsc^SxD@X-fLNU+1cq(}*(wELS7NXHj(te4mratykZ z;F%F!@L0l;ql;h(4#ImO%>AH#tX1tSHi;fXnjw{qbr&O5h5&&SWHR$Qavy=`V7V;PrN1)H%Iqo&Z6GYwE!KcIy)Sq%2cd(4fsJ$V^0W+*T zRGNMDQ>5trSJ)y7&GigWEBsb0C6vJg2wd>39O^ym(0&U$A8^=r)-< z+CDMkb$Amq^K@W}nW^09p`|L$wy`ti=iYA*MJKOI6EkypRYiw;c1j;JZdOzDk+f$K z#22eH7)-IUd(<#t=`mns;I3ADOcskb`RE7oIO5-_)GZD2c(?|AGu=jbnD35!n1An- z6Sod7K-d8tz~_Ys>U*OHdNb`!LR`ELCEk7)!4jJ z(ycNc#}+bZ!O8j6W;;dg|WjNOrDaduQB6&)!-AhPkGZs7n^z0bD9U8E77sx zb4Z_?;AfFb7=6$j^0}ZyGEvbWa1x9dKK+m=e8g7a;HNw4uNUG{RX~oF|0tJL`=)w$<%RNhZ$28@LKa2t1>(RGtsMGJ8-z(ZhHm&R9`)9(62?`9YCN~4?_L)7Vg)3tj}(|~{%b<)9IHG{kDpX>zw=qp#oTka~j3!(NX zmizt2loGG7f)y>cVL^#wK}&o~!hi- z)Bs6HZVY9pI*wL4mR@~B>XxXs_PdY-6fhavEv#{WL^U=t0|gw9RTlDY{8LG*pnbXT z%LwDTiASfDkn)&8RpULUYH4U@h(SG^-#QptJniOvPb0>cs#uPq!KD%c^}$YdK@g~9 zVI4|l3P4goZAMqUQtHT|K8MT{Y=$M0LB3&)je+6;huD<*E(ux*wzSZ48(R%jXaFiK zQpm!7rUfeK6tPft-%2Hb`S3Ui4JP=Aq$5cGq>P{@Y$v(MTaJXQ6I7|&mqJreP~ zS8eQ5f?$=Rvz3el{WfwB&oV?#03X6GYTpZ8+nSxCCEO1VJ9lp1+u?Y5@OuT6Fcuv= z?F)|*$}KxrfA9jsR73pqynrUUhGHA<+q(c z9sXU_o@>ZB5DzLJD3Tz>vP-C`$zQ~WHf*X2=T%YeiQLvNT(*)+1f_9{WT+7y6{ANA z)+qHDFGPL{XeSAc9_?(3`j}`hIAyk-Eq?tKufa8|&QCq3GZ9htpE+>m7SY!E98$Vk z8@}6?bo8$=&TP!HpOUy^uXxCag?f{J^jMop7RH0t(O%q0vfJA08g7EWqqio%l6F{< zGTR`*Oi=$4eyk)N$v9MuY1oTAhA$MH122F))#LaKg}(m)vw?_De3cS4;jeY_p)K&% zH5#Icx)NDfuv_WOr5R+$WTrx~Y%BYBLX};!pS4MGZX|m-H8V-67@K`NLu(%nwi^ev zD!Oh%D4~QmVars`ERS=3kIQ{U_G{XFt)@3Qqe0M@R}oW-JK8I__!_u}X@!x^`<4u> z5>A49s%ub{4_ zq;ja}$a9qW1EE^!x^z6sMY2OMX#O}n?O2HurrG(&@t5vy7 zX7!GeEZ?7(#Lw!*=${&ma>LklH<2(?q(_xgUlZ*&Y z-HO)il)>}dLJ_g(A?eKq%K7#_=U^^=+)3NxnAxCza|wCgF?>kW<0 zI&}O>{|MhL5>$&DQrkRq zD#z|ERF#jS#-S?vI8UC8NRLmu?2_?SN=>ga!bSz*)E-16mypzUx#TlF+S4NjF$hbMR9=In(PiU~nVMRiAx~n2Zs@<u_#(|2Ol^08H9Ao*EsMl@|j59 zwK{xuJc_&1!Q0s&>OK27vD1Kbx>iy<1i4{9oWgHI!cTWw^vXUTRbo2tmb!+lo=>Xy z$nKe3m5L9>{4-Hi3&7;U=8epxLKHzkPtnRbAgPPiEO&Zhm8rwm0AD$(1^RL`s1Tnq z)LF|vTR#Xsc&{m6ZD5n{Hm?1SizZ6=9a1L$qPUEXz^@Th6~xMrCxj-cI>Vg6f7N{l z&r>W4ai1;&lL{+K5C#td*B!=j;0sgNMdH3+a_M_~{ppR#bHf*Nm9@b|*KK~pHNWg5 zf8w3bL+^!;=|x1$ZhH3H>YBdC@AbCxoHpeMeMvnidZIiLDmtU%IvOlzx}tH|!ti`0 z(7{l4W%n=4@zIcbd7r8s1IR%{oGLY@XFc!BFe;!Q?cBxEN}KSaH++R>oGW~6HhWCW z_G&w~l@ijJ!hT)Ck0SU6K4qVV=ijb`rCf`2rWk3kt@NycJzwThj1(ws_NkE0nHj}` zIElz!pkA*_1*uXEbio|oKOtXw^@ozx7AJ3He6s2jnc8xsZZiWp=OTx>|>JswzRk9kX!q>A!l& zkfNm|Un*7|R3$DZ9*j{7-_m&Ofs~5QQi`(zs?;L?@uAM5yJ$>Wr?Jw z@|d?|lg8tiB8pWwubh#V6FIRyExtWjYi)V^_)j~K%yZV~eg#UQ}`O66Wo&{z_ zr3VkolzRfNn!>?`kEgJ`yJ)(`A?qVSZFqkt&c(j#)$DJ9QeRI;306l{h-J{um%n^1&CNHQq60DInu?c&UHHQ za3H$C#1hB-+5;%nf~wHU*v47~;q2llDz<4vC5KOhAI|xow}4zLFin_gXdf||^`^>*x}TID74nuP--t#=9}5=IZCP8!6t?0(rGHhA#pcQX%H_=lR4Y>&WULUuem z9@%|~ULW6sI(@0!T6&YJ8^&5kFb|8j!xF6-Occld6WSsi&kozJki}*ybW7%*+_7}G z)h<4kspf=BPs_^=ttB3=r^Ec_u{)PNe>v|RWIK9!l4R#r(x}^Z&{($bapg*JwvXwZ z?G^sgN}x}P5}XGEx;V=<8Pfqi55_S*hgoHUTO&N{BAX7gleOd)Ih3CK%WJn^V|*;k;TN}A z)^cp=lPw(ZRa*cs5s3=HNZP_yxnmSOkp>cJwTC@>I4 z0ma+^uE0ID%mrLIfsdMl6Y*qoV&Ar^2Qsb9cutmSH4qgQJB(;v;?_)JLQ~3%shIC= z%C$cWGHe~v-nDgEMePgIP(k23CJr5rr{_ylK%3=RNGv8aY@qm2pf7_mmF%LBugq z3MN>3saB1+02v|0U;+r64$8Q~|M2B3nvC;{zoF?f{5=UKX(z3%z; z6_I%0?8>PtXit%?UxQIwboq41n`pCo%60EJvhWJ!7Bb}cG1P5!V?Emm)7F~XhjiV` zRzE=R=~rxCjJDfpSvhs(!>Qq>Cg(33)?Z_ApI>76h9Pmbrvq4Nsc!{T?0(E;|Bz%l z3~*jgRL3T!B5JP~bb2=)xhN#Fmz6+Hd5Nv>4lTBFjy`#uDI!wnU?R&o{!~Bsu1X|y9XMgS`+8_+Y z={0xL{h6NOGZAXPO#K>``Vr+r-lfJslN1t;ADN4lEv?=s9$FgQswUFOG(DgC_pQ}z zOu8<^f2B0D{4yurn*sj}g){9x;lNV2tr{K{o)azx;R%U&t7zU^0qt5k#ED8T0s9GN zc4(h@pq4Uo&59n8N#8gOk9W|gsMnm_q&9M6nU`m^q3MTysXc~JXPmE1+4C*v^C*;f zfw6bnYxO#EDS;-P{Y+#1)CT{}a8-hA0i;na$+3{Wl;$Z?Jd9Vbr4m)%o+a82Xa*`& zIcQhq*1kRzBi|&er`~YG6Ku6y(a#)c$kN>1z5}vekeg!_)QcLh@rC}-P%M)WcwP9+ zGuj#x8f1MiEHNrDQ_>KErdcyaD||!TBqODgt4J91>YhE9>EEj3iS&A-VQ`5J3y*ks#C^$xVVqt5`OH8hXx&=_z zOSc&r#8~WUxjU$c-T;36m09bI?W9u)GA`))*yyr8x2uQ46;wH*lLZDnULi@*qfd7| zq3O0~sr!bigS?PvYi)NyCpT=*o(i^SiXT#ORRVS87yTjSMI94uQ6&z3g#JVTvbv+P zq`8l10}N4%G_ISn5*D2TIbsn0p`zc0={Ot(!Z1{w0uv9g>jYNZnGwblIxJi>kyorp z1NP(4K~+{%R8%;Y z4+iOTqIbS&SLE%Yd+8vE4;R;d`dIWHU8xfRa^I zoC@>aAI@~)lzXx3?;j7gXVGYk-hMh`fr6N;gsh+tWG%6fWIR2BNMb-gtj9r(fxt#p ziT;4@E20P!S4NRiugt?DxkoE>9#T6{QDA4Cl0~9-9@e4Ja8+AHve&fTwixgBKqwnY zFck23@G&N4;N_|=(UxBq_aYBR@U|YJ6r=mlXRo^D-f>%(?9IEW_KK2`d=iA=Ed?;? zHTT7eST4Z=K=-j`qT?(A&WW3Csrbew^~G7*1sFmCU{95Mj8pHo7G>jyUzA{bF~k_lLNQ1JM*8 z+9`{Og&+05E@ z;UMu)Y@0H6*qT+qYE^xoO<=rc46^tJTcGxiw`Fl!l&&J(dDN6j5$wHp$9g=w2D013 z(bKIH>6G(i2UGq>u^}to2>tzt8hkJ$ls$&R7(~kC zs5MOQj%mzEjX0kUkn(TP$gaOxZnHE)#bqQIuw=F-Q15cct_h5pQo_?qpC)xpm-mZP zLRBWk?iW9@nM?4M7~7v&5kbAcn~<>*DOaBUX_2r^A3Oy!~d^b~`YeSr0x*Zn#0_4v53a=UV(Z$QPBY;y{+d0usWg!DC1 zB(KQp!o|n5!+KsJfSKesl{B1GC|4dYI;0mo-%M3gxM@FV*otma$&s!(vvnmD6|DJN zEWd0gBwGRJJjg*B8W_4L);GydmOjCw4$1olcri_5t;NIy2UM{W8rP%`+AJ@K&TaAZ|oK6_~lrB z->m1{u`+YYgE{xr!(T{&f_dm3)ekwqU_+F%#+6UGtwm%4*X^ouWpWi@Oa zYQM}@{1or|*8R#zzL4cV{}fHHSzCgj<^G(ye_1uz*>4Ll^r}_f6P1gq5kT}l+;{pN z>4R`l-KG=e^!s<-xQ1zOLEGYvma{|e&XL}o&ht_hWs~j8y0?`?bB)03$_+xh5MQS; z&PjAk4AgQYHzHnqc3%}v;{AjP9tCaw1*%ks=q9Bt1`xkfEerR|+Fl*ijT<#qKc%^j zwR2}0W(dG=P9U=2B#M1q^L1TXWK>Y8ue}Z#nB@DK=r`ZqKF3`D+xVy)|3_gSB$T_4eXbJTClN`gJtj~2{jZO3J5aTDh;ImwDEu30Zq67nf9H$%
- - - + + + + + + Loading... + + + + + +
+ + + + \ No newline at end of file diff --git a/js/main.js b/js/main.js index 99b2d50..5b242a4 100644 --- a/js/main.js +++ b/js/main.js @@ -784,11 +784,11 @@ function _Debug_crash_UNUSED(identifier, fact1, fact2, fact3, fact4) function _Debug_regionToString(region) { - if (region.L.C === region.R.C) + if (region.O.N === region.M.N) { - return 'on line ' + region.L.C; + return 'on line ' + region.O.N; } - return 'on lines ' + region.L.C + ' through ' + region.R.C; + return 'on lines ' + region.O.N + ' through ' + region.M.N; } @@ -1857,9 +1857,9 @@ var _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args) return _Platform_initialize( flagDecoder, args, - impl.at, - impl.aE, - impl.aD, + impl.a6, + impl.bo, + impl.bm, function() { return function() {} } ); }); @@ -2704,9 +2704,9 @@ var _VirtualDom_mapEventTuple = F2(function(func, tuple) var _VirtualDom_mapEventRecord = F2(function(func, record) { return { - p: func(record.p), - M: record.M, - J: record.J + x: func(record.x), + aa: record.aa, + Z: record.Z } }); @@ -2974,11 +2974,11 @@ function _VirtualDom_makeCallback(eventNode, initialHandler) // 3 = Custom var value = result.a; - var message = !tag ? value : tag < 3 ? value.a : value.p; - var stopPropagation = tag == 1 ? value.b : tag == 3 && value.M; + var message = !tag ? value : tag < 3 ? value.a : value.x; + var stopPropagation = tag == 1 ? value.b : tag == 3 && value.aa; var currentEventNode = ( stopPropagation && event.stopPropagation(), - (tag == 2 ? value.b : tag == 3 && value.J) && event.preventDefault(), + (tag == 2 ? value.b : tag == 3 && value.Z) && event.preventDefault(), eventNode ); var tagger; @@ -3928,11 +3928,11 @@ var _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debug return _Platform_initialize( flagDecoder, args, - impl.at, - impl.aE, - impl.aD, + impl.a6, + impl.bo, + impl.bm, function(sendToApp, initialModel) { - var view = impl.aF; + var view = impl.bq; /**/ var domNode = args['node']; //*/ @@ -3964,12 +3964,12 @@ var _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, deb return _Platform_initialize( flagDecoder, args, - impl.at, - impl.aE, - impl.aD, + impl.a6, + impl.bo, + impl.bm, function(sendToApp, initialModel) { - var divertHrefToApp = impl.K && impl.K(sendToApp) - var view = impl.aF; + var divertHrefToApp = impl._ && impl._(sendToApp) + var view = impl.bq; var title = _VirtualDom_doc.title; var bodyNode = _VirtualDom_doc.body; var currNode = _VirtualDom_virtualize(bodyNode); @@ -3977,12 +3977,12 @@ var _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, deb { _VirtualDom_divertHrefToApp = divertHrefToApp; var doc = view(model); - var nextNode = _VirtualDom_node('body')(_List_Nil)(doc.O); + var nextNode = _VirtualDom_node('body')(_List_Nil)(doc.ae); var patches = _VirtualDom_diff(currNode, nextNode); bodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp); currNode = nextNode; _VirtualDom_divertHrefToApp = 0; - (title !== doc.af) && (_VirtualDom_doc.title = title = doc.af); + (title !== doc.aL) && (_VirtualDom_doc.title = title = doc.aL); }); } ); @@ -4038,12 +4038,12 @@ function _Browser_makeAnimator(model, draw) function _Browser_application(impl) { - var onUrlChange = impl.av; - var onUrlRequest = impl.aw; + var onUrlChange = impl.ba; + var onUrlRequest = impl.bb; var key = function() { key.a(onUrlChange(_Browser_getUrl())); }; return _Browser_document({ - K: function(sendToApp) + _: function(sendToApp) { key.a = sendToApp; _Browser_window.addEventListener('popstate', key); @@ -4059,9 +4059,9 @@ function _Browser_application(impl) var next = $elm$url$Url$fromString(href).a; sendToApp(onUrlRequest( (next - && curr.aA === next.aA - && curr.ar === next.ar - && curr.az.a === next.az.a + && curr.bf === next.bf + && curr.a4 === next.a4 + && curr.be.a === next.be.a ) ? $elm$browser$Browser$Internal(next) : $elm$browser$Browser$External(href) @@ -4069,13 +4069,13 @@ function _Browser_application(impl) } }); }, - at: function(flags) + a6: function(flags) { - return A3(impl.at, flags, _Browser_getUrl(), key); + return A3(impl.a6, flags, _Browser_getUrl(), key); }, - aF: impl.aF, - aE: impl.aE, - aD: impl.aD + bq: impl.bq, + bo: impl.bo, + bm: impl.bm }); } @@ -4141,17 +4141,17 @@ var _Browser_decodeEvent = F2(function(decoder, event) function _Browser_visibilityInfo() { return (typeof _VirtualDom_doc.hidden !== 'undefined') - ? { aq: 'hidden', am: 'visibilitychange' } + ? { a3: 'hidden', aX: 'visibilitychange' } : (typeof _VirtualDom_doc.mozHidden !== 'undefined') - ? { aq: 'mozHidden', am: 'mozvisibilitychange' } + ? { a3: 'mozHidden', aX: 'mozvisibilitychange' } : (typeof _VirtualDom_doc.msHidden !== 'undefined') - ? { aq: 'msHidden', am: 'msvisibilitychange' } + ? { a3: 'msHidden', aX: 'msvisibilitychange' } : (typeof _VirtualDom_doc.webkitHidden !== 'undefined') - ? { aq: 'webkitHidden', am: 'webkitvisibilitychange' } - : { aq: 'hidden', am: 'visibilitychange' }; + ? { a3: 'webkitHidden', aX: 'webkitvisibilitychange' } + : { a3: 'hidden', aX: 'visibilitychange' }; } @@ -4232,12 +4232,12 @@ var _Browser_call = F2(function(functionName, id) function _Browser_getViewport() { return { - ac: _Browser_getScene(), - ag: { - ai: _Browser_window.pageXOffset, - aj: _Browser_window.pageYOffset, - ah: _Browser_doc.documentElement.clientWidth, - U: _Browser_doc.documentElement.clientHeight + aF: _Browser_getScene(), + aO: { + aS: _Browser_window.pageXOffset, + aT: _Browser_window.pageYOffset, + aR: _Browser_doc.documentElement.clientWidth, + an: _Browser_doc.documentElement.clientHeight } }; } @@ -4247,8 +4247,8 @@ function _Browser_getScene() var body = _Browser_doc.body; var elem = _Browser_doc.documentElement; return { - ah: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth), - U: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight) + aR: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth), + an: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight) }; } @@ -4271,15 +4271,15 @@ function _Browser_getViewportOf(id) return _Browser_withNode(id, function(node) { return { - ac: { - ah: node.scrollWidth, - U: node.scrollHeight + aF: { + aR: node.scrollWidth, + an: node.scrollHeight }, - ag: { - ai: node.scrollLeft, - aj: node.scrollTop, - ah: node.clientWidth, - U: node.clientHeight + aO: { + aS: node.scrollLeft, + aT: node.scrollTop, + aR: node.clientWidth, + an: node.clientHeight } }; }); @@ -4309,18 +4309,18 @@ function _Browser_getElement(id) var x = _Browser_window.pageXOffset; var y = _Browser_window.pageYOffset; return { - ac: _Browser_getScene(), - ag: { - ai: x, - aj: y, - ah: _Browser_doc.documentElement.clientWidth, - U: _Browser_doc.documentElement.clientHeight + aF: _Browser_getScene(), + aO: { + aS: x, + aT: y, + aR: _Browser_doc.documentElement.clientWidth, + an: _Browser_doc.documentElement.clientHeight }, - ao: { - ai: x + rect.left, - aj: y + rect.top, - ah: rect.width, - U: rect.height + a0: { + aS: x + rect.left, + aT: y + rect.top, + aR: rect.width, + an: rect.height } }; }); @@ -4409,11 +4409,232 @@ var _Bitwise_shiftRightZfBy = F2(function(offset, a) { return a >>> offset; }); -var $author$project$Main$LinkChanged = function (a) { - return {$: 3, a: a}; + + + +function _Time_now(millisToPosix) +{ + return _Scheduler_binding(function(callback) + { + callback(_Scheduler_succeed(millisToPosix(Date.now()))); + }); +} + +var _Time_setInterval = F2(function(interval, task) +{ + return _Scheduler_binding(function(callback) + { + var id = setInterval(function() { _Scheduler_rawSpawn(task); }, interval); + return function() { clearInterval(id); }; + }); +}); + +function _Time_here() +{ + return _Scheduler_binding(function(callback) + { + callback(_Scheduler_succeed( + A2($elm$time$Time$customZone, -(new Date().getTimezoneOffset()), _List_Nil) + )); + }); +} + + +function _Time_getZoneName() +{ + return _Scheduler_binding(function(callback) + { + try + { + var name = $elm$time$Time$Name(Intl.DateTimeFormat().resolvedOptions().timeZone); + } + catch (e) + { + var name = $elm$time$Time$Offset(new Date().getTimezoneOffset()); + } + callback(_Scheduler_succeed(name)); + }); +} + + + +// SEND REQUEST + +var _Http_toTask = F3(function(router, toTask, request) +{ + return _Scheduler_binding(function(callback) + { + function done(response) { + callback(toTask(request.a1.a(response))); + } + + var xhr = new XMLHttpRequest(); + xhr.addEventListener('error', function() { done($elm$http$Http$NetworkError_); }); + xhr.addEventListener('timeout', function() { done($elm$http$Http$Timeout_); }); + xhr.addEventListener('load', function() { done(_Http_toResponse(request.a1.b, xhr)); }); + $elm$core$Maybe$isJust(request.aM) && _Http_track(router, xhr, request.aM.a); + + try { + xhr.open(request.a8, request.bp, true); + } catch (e) { + return done($elm$http$Http$BadUrl_(request.bp)); + } + + _Http_configureRequest(xhr, request); + + request.ae.a && xhr.setRequestHeader('Content-Type', request.ae.a); + xhr.send(request.ae.b); + + return function() { xhr.c = true; xhr.abort(); }; + }); +}); + + +// CONFIGURE + +function _Http_configureRequest(xhr, request) +{ + for (var headers = request.am; headers.b; headers = headers.b) // WHILE_CONS + { + xhr.setRequestHeader(headers.a.a, headers.a.b); + } + xhr.timeout = request.bn.a || 0; + xhr.responseType = request.a1.d; + xhr.withCredentials = request.aV; +} + + +// RESPONSES + +function _Http_toResponse(toBody, xhr) +{ + return A2( + 200 <= xhr.status && xhr.status < 300 ? $elm$http$Http$GoodStatus_ : $elm$http$Http$BadStatus_, + _Http_toMetadata(xhr), + toBody(xhr.response) + ); +} + + +// METADATA + +function _Http_toMetadata(xhr) +{ + return { + bp: xhr.responseURL, + bk: xhr.status, + bl: xhr.statusText, + am: _Http_parseHeaders(xhr.getAllResponseHeaders()) + }; +} + + +// HEADERS + +function _Http_parseHeaders(rawHeaders) +{ + if (!rawHeaders) + { + return $elm$core$Dict$empty; + } + + var headers = $elm$core$Dict$empty; + var headerPairs = rawHeaders.split('\r\n'); + for (var i = headerPairs.length; i--; ) + { + var headerPair = headerPairs[i]; + var index = headerPair.indexOf(': '); + if (index > 0) + { + var key = headerPair.substring(0, index); + var value = headerPair.substring(index + 2); + + headers = A3($elm$core$Dict$update, key, function(oldValue) { + return $elm$core$Maybe$Just($elm$core$Maybe$isJust(oldValue) + ? value + ', ' + oldValue.a + : value + ); + }, headers); + } + } + return headers; +} + + +// EXPECT + +var _Http_expect = F3(function(type, toBody, toValue) +{ + return { + $: 0, + d: type, + b: toBody, + a: toValue + }; +}); + +var _Http_mapExpect = F2(function(func, expect) +{ + return { + $: 0, + d: expect.d, + b: expect.b, + a: function(x) { return func(expect.a(x)); } + }; +}); + +function _Http_toDataView(arrayBuffer) +{ + return new DataView(arrayBuffer); +} + + +// BODY and PARTS + +var _Http_emptyBody = { $: 0 }; +var _Http_pair = F2(function(a, b) { return { $: 0, a: a, b: b }; }); + +function _Http_toFormData(parts) +{ + for (var formData = new FormData(); parts.b; parts = parts.b) // WHILE_CONS + { + var part = parts.a; + formData.append(part.a, part.b); + } + return formData; +} + +var _Http_bytesToBlob = F2(function(mime, bytes) +{ + return new Blob([bytes], { type: mime }); +}); + + +// PROGRESS + +function _Http_track(router, xhr, tracker) +{ + // TODO check out lengthComputable on loadstart event + + xhr.upload.addEventListener('progress', function(event) { + if (xhr.c) { return; } + _Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Sending({ + bj: event.loaded, + aH: event.total + })))); + }); + xhr.addEventListener('progress', function(event) { + if (xhr.c) { return; } + _Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Receiving({ + bh: event.loaded, + aH: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing + })))); + }); +}var $author$project$Main$LinkChanged = function (a) { + return {$: 4, a: a}; }; var $author$project$Main$LinkClicked = function (a) { - return {$: 2, a: a}; + return {$: 3, a: a}; }; var $elm$core$Basics$EQ = 1; var $elm$core$Basics$GT = 2; @@ -4821,25 +5042,25 @@ var $elm$core$Array$treeFromBuilder = F2( }); var $elm$core$Array$builderToArray = F2( function (reverseNodeList, builder) { - if (!builder.a) { + if (!builder.e) { return A4( $elm$core$Array$Array_elm_builtin, - $elm$core$Elm$JsArray$length(builder.c), + $elm$core$Elm$JsArray$length(builder.g), $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, - builder.c); + builder.g); } else { - var treeLen = builder.a * $elm$core$Array$branchFactor; + var treeLen = builder.e * $elm$core$Array$branchFactor; var depth = $elm$core$Basics$floor( A2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1)); - var correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.d) : builder.d; - var tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.a); + var correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.h) : builder.h; + var tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.e); return A4( $elm$core$Array$Array_elm_builtin, - $elm$core$Elm$JsArray$length(builder.c) + treeLen, + $elm$core$Elm$JsArray$length(builder.g) + treeLen, A2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep), tree, - builder.c); + builder.g); } }); var $elm$core$Basics$idiv = _Basics_idiv; @@ -4852,7 +5073,7 @@ var $elm$core$Array$initializeHelp = F5( return A2( $elm$core$Array$builderToArray, false, - {d: nodeList, a: (len / $elm$core$Array$branchFactor) | 0, c: tail}); + {h: nodeList, e: (len / $elm$core$Array$branchFactor) | 0, g: tail}); } else { var leaf = $elm$core$Array$Leaf( A3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn)); @@ -4919,7 +5140,7 @@ var $elm$url$Url$Http = 0; var $elm$url$Url$Https = 1; var $elm$url$Url$Url = F6( function (protocol, host, port_, path, query, fragment) { - return {T: fragment, ar: host, ay: path, az: port_, aA: protocol, aB: query}; + return {al: fragment, a4: host, bd: path, be: port_, bf: protocol, bg: query}; }); var $elm$core$String$contains = _String_contains; var $elm$core$String$length = _String_length; @@ -5207,9 +5428,16 @@ var $author$project$About$Main$initModel = 0; var $author$project$Main$GotAboutMsg = function (a) { return {$: 0, a: a}; }; +var $author$project$Main$GotTyperMsg = function (a) { + return {$: 2, a: a}; +}; var $author$project$Main$GotVshMsg = function (a) { return {$: 1, a: a}; }; +var $author$project$Main$TyperModel = F2( + function (a, b) { + return {$: 2, a: a, b: b}; + }); var $author$project$Main$VshModel = F2( function (a, b) { return {$: 1, a: a, b: b}; @@ -5226,17 +5454,17 @@ var $elm$core$Maybe$withDefault = F2( }); var $author$project$Route$fake = function (path) { return { - T: $elm$core$Maybe$Nothing, - ar: 'sharpvik.github.io', - ay: A2($elm$core$Maybe$withDefault, '/#/about', path.T), - az: $elm$core$Maybe$Nothing, - aA: 1, - aB: $elm$core$Maybe$Nothing + al: $elm$core$Maybe$Nothing, + a4: 'sharpvik.github.io', + bd: A2($elm$core$Maybe$withDefault, '/#/about', path.al), + be: $elm$core$Maybe$Nothing, + bf: 1, + bg: $elm$core$Maybe$Nothing }; }; var $elm$url$Url$Parser$State = F5( function (visited, unvisited, params, frag, value) { - return {s: frag, t: params, r: unvisited, m: value, w: visited}; + return {B: frag, C: params, z: unvisited, u: value, F: visited}; }); var $elm$url$Url$Parser$getFirstMatch = function (states) { getFirstMatch: @@ -5246,12 +5474,12 @@ var $elm$url$Url$Parser$getFirstMatch = function (states) { } else { var state = states.a; var rest = states.b; - var _v1 = state.r; + var _v1 = state.z; if (!_v1.b) { - return $elm$core$Maybe$Just(state.m); + return $elm$core$Maybe$Just(state.u); } else { if ((_v1.a === '') && (!_v1.b.b)) { - return $elm$core$Maybe$Just(state.m); + return $elm$core$Maybe$Just(state.u); } else { var $temp$states = rest; states = $temp$states; @@ -5863,19 +6091,19 @@ var $elm$url$Url$Parser$parse = F2( A5( $elm$url$Url$Parser$State, _List_Nil, - $elm$url$Url$Parser$preparePath(url.ay), - $elm$url$Url$Parser$prepareQuery(url.aB), - url.T, + $elm$url$Url$Parser$preparePath(url.bd), + $elm$url$Url$Parser$prepareQuery(url.bg), + url.al, $elm$core$Basics$identity))); }); var $elm$url$Url$Parser$Parser = $elm$core$Basics$identity; var $elm$url$Url$Parser$mapState = F2( function (func, _v0) { - var visited = _v0.w; - var unvisited = _v0.r; - var params = _v0.t; - var frag = _v0.s; - var value = _v0.m; + var visited = _v0.F; + var unvisited = _v0.z; + var params = _v0.C; + var frag = _v0.B; + var value = _v0.u; return A5( $elm$url$Url$Parser$State, visited, @@ -5888,11 +6116,11 @@ var $elm$url$Url$Parser$map = F2( function (subValue, _v0) { var parseArg = _v0; return function (_v1) { - var visited = _v1.w; - var unvisited = _v1.r; - var params = _v1.t; - var frag = _v1.s; - var value = _v1.m; + var visited = _v1.F; + var unvisited = _v1.z; + var params = _v1.C; + var frag = _v1.B; + var value = _v1.u; return A2( $elm$core$List$map, $elm$url$Url$Parser$mapState(value), @@ -5928,22 +6156,26 @@ var $elm$url$Url$Parser$oneOf = function (parsers) { }; }; var $author$project$Route$repr = function (route) { - if (!route) { - return 'about'; - } else { - return 'vsh'; + switch (route) { + case 0: + return 'about'; + case 1: + return 'vsh'; + default: + return 'typer'; } }; +var $author$project$Route$TyperRoute = 2; var $author$project$Route$VshRoute = 1; var $author$project$Route$routes = _List_fromArray( - [0, 1]); + [0, 1, 2]); var $elm$url$Url$Parser$s = function (str) { return function (_v0) { - var visited = _v0.w; - var unvisited = _v0.r; - var params = _v0.t; - var frag = _v0.s; - var value = _v0.m; + var visited = _v0.F; + var unvisited = _v0.z; + var params = _v0.C; + var frag = _v0.B; + var value = _v0.u; if (!unvisited.b) { return _List_Nil; } else { @@ -5992,266 +6224,728 @@ var $author$project$Route$fromUrl = function (url) { var $elm$core$Platform$Cmd$batch = _Platform_batch; var $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil); var $author$project$About$Main$init = _Utils_Tuple2($author$project$About$Main$initModel, $elm$core$Platform$Cmd$none); -var $author$project$Vsh$History$History = F2( - function (history, ptr) { - return {o: history, u: ptr}; - }); -var $author$project$Vsh$History$empty = A2($author$project$Vsh$History$History, $elm$core$Array$empty, 0); -var $author$project$Vsh$Text$Green = 1; -var $author$project$Vsh$Text$Yellow = 0; -var $elm$json$Json$Encode$string = _Json_wrap; -var $elm$html$Html$Attributes$stringProperty = F2( - function (key, string) { - return A2( - _VirtualDom_property, - key, - $elm$json$Json$Encode$string(string)); - }); -var $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className'); -var $author$project$Vsh$Text$colorToClass = function (c) { - return 'vsh-' + function () { - switch (c) { - case 0: - return 'yellow'; - case 1: - return 'green'; - default: - return 'magenta'; - } - }(); +var $author$project$Typer$Main$Loading = {$: 0}; +var $author$project$Typer$Main$Failure = {$: 1}; +var $author$project$Typer$Main$Words = function (a) { + return {$: 2, a: a}; }; -var $elm$html$Html$span = _VirtualDom_node('span'); -var $elm$virtual_dom$VirtualDom$text = _VirtualDom_text; -var $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text; -var $author$project$Vsh$Text$ctext = F2( - function (color, message) { - return A2( - $elm$html$Html$span, - _List_fromArray( - [ - $elm$html$Html$Attributes$class( - 'vsh-text ' + $author$project$Vsh$Text$colorToClass(color)) - ]), - _List_fromArray( - [ - $elm$html$Html$text(message) - ])); +var $author$project$Typer$Text$Text = F3( + function (pointer, correct, symbols) { + return {aZ: correct, s: pointer, t: symbols}; }); -var $author$project$Vsh$Text$Magenta = 2; -var $author$project$Vsh$Main$prompt = _List_fromArray( - [ - A2($author$project$Vsh$Text$ctext, 0, 'guest'), - $elm$html$Html$text(' at '), - A2($author$project$Vsh$Text$ctext, 2, 'sharpvik'), - $elm$html$Html$text('\n❯ ') - ]); -var $author$project$Vsh$Command$version = F2( - function (_v0, display) { - return _Utils_ap( - display, - _List_fromArray( - [ - $elm$html$Html$text('vsh v0.1.3 by Viktor A. Rozenko Voitenko ') - ])); +var $author$project$Typer$Text$Unknown = function (a) { + return {$: 0, a: a}; +}; +var $elm$core$Basics$composeR = F3( + function (f, g, x) { + return g( + f(x)); + }); +var $elm$core$Array$fromListHelp = F3( + function (list, nodeList, nodeListSize) { + fromListHelp: + while (true) { + var _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, list); + var jsArray = _v0.a; + var remainingItems = _v0.b; + if (_Utils_cmp( + $elm$core$Elm$JsArray$length(jsArray), + $elm$core$Array$branchFactor) < 0) { + return A2( + $elm$core$Array$builderToArray, + true, + {h: nodeList, e: nodeListSize, g: jsArray}); + } else { + var $temp$list = remainingItems, + $temp$nodeList = A2( + $elm$core$List$cons, + $elm$core$Array$Leaf(jsArray), + nodeList), + $temp$nodeListSize = nodeListSize + 1; + list = $temp$list; + nodeList = $temp$nodeList; + nodeListSize = $temp$nodeListSize; + continue fromListHelp; + } + } }); -var $author$project$Vsh$Main$greeting = _Utils_ap( - A2($author$project$Vsh$Command$version, 'version', _List_Nil), - _Utils_ap( - _List_fromArray( - [ - $elm$html$Html$text('\nEnter '), - A2($author$project$Vsh$Text$ctext, 1, 'help'), - $elm$html$Html$text(' to see available commands!\n'), - A2($author$project$Vsh$Text$ctext, 0, 'VSH does not support mobile devices.\n\n') - ]), - $author$project$Vsh$Main$prompt)); -var $author$project$Vsh$Main$initModel = {k: '', B: $author$project$Vsh$Main$greeting, o: $author$project$Vsh$History$empty}; -var $author$project$Vsh$Main$init = _Utils_Tuple2($author$project$Vsh$Main$initModel, $elm$core$Platform$Cmd$none); -var $elm$core$Platform$Cmd$map = _Platform_map; -var $author$project$Main$toKey = function (model) { - if (!model.$) { - var key = model.a; - return key; +var $elm$core$Array$fromList = function (list) { + if (!list.b) { + return $elm$core$Array$empty; } else { - var key = model.a; - return key; + return A3($elm$core$Array$fromListHelp, list, _List_Nil, 0); } }; -var $author$project$Main$mux = F2( - function (model, url) { - var route = $author$project$Route$fromUrl(url); - var norm = F3( - function (toModel, toMsg, _v1) { - var subModel = _v1.a; - var cmd = _v1.b; - return _Utils_Tuple2( - toModel(subModel), - A2($elm$core$Platform$Cmd$map, toMsg, cmd)); - }); - var key = $author$project$Main$toKey(model); - if (!route) { - return A3( - norm, - $author$project$Main$AboutModel(key), - $author$project$Main$GotAboutMsg, - $author$project$About$Main$init); - } else { - return A3( - norm, - $author$project$Main$VshModel(key), - $author$project$Main$GotVshMsg, - $author$project$Vsh$Main$init); - } - }); -var $author$project$Main$init = F3( - function (_v0, url, key) { - return A2( - $author$project$Main$mux, - A2($author$project$Main$AboutModel, key, $author$project$About$Main$initModel), - url); +var $elm$core$String$foldr = _String_foldr; +var $elm$core$String$toList = function (string) { + return A3($elm$core$String$foldr, $elm$core$List$cons, _List_Nil, string); +}; +var $author$project$Typer$Text$fromString = A2( + $elm$core$Basics$composeR, + $elm$core$String$toList, + A2( + $elm$core$Basics$composeR, + $elm$core$List$map($author$project$Typer$Text$Unknown), + A2( + $elm$core$Basics$composeR, + $elm$core$Array$fromList, + A2($author$project$Typer$Text$Text, 0, 0)))); +var $author$project$Typer$Main$GotWordIndices = function (a) { + return {$: 8, a: a}; +}; +var $elm$random$Random$Generate = $elm$core$Basics$identity; +var $elm$random$Random$Seed = F2( + function (a, b) { + return {$: 0, a: a, b: b}; }); -var $elm$core$Platform$Sub$map = _Platform_map; -var $elm$core$Platform$Sub$batch = _Platform_batch; -var $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil); -var $author$project$About$Main$subscriptions = function (_v0) { - return $elm$core$Platform$Sub$none; +var $elm$core$Bitwise$shiftRightZfBy = _Bitwise_shiftRightZfBy; +var $elm$random$Random$next = function (_v0) { + var state0 = _v0.a; + var incr = _v0.b; + return A2($elm$random$Random$Seed, ((state0 * 1664525) + incr) >>> 0, incr); }; -var $elm$json$Json$Decode$bool = _Json_decodeBool; -var $author$project$Vsh$Main$Alt = function (a) { - return {$: 7, a: a}; +var $elm$random$Random$initialSeed = function (x) { + var _v0 = $elm$random$Random$next( + A2($elm$random$Random$Seed, 0, 1013904223)); + var state1 = _v0.a; + var incr = _v0.b; + var state2 = (state1 + x) >>> 0; + return $elm$random$Random$next( + A2($elm$random$Random$Seed, state2, incr)); }; -var $author$project$Vsh$Main$ArrowDown = {$: 5}; -var $author$project$Vsh$Main$ArrowUp = {$: 4}; -var $author$project$Vsh$Main$Backspace = {$: 3}; -var $author$project$Vsh$Main$Ctrl = function (a) { - return {$: 6, a: a}; -}; -var $author$project$Vsh$Main$Enter = {$: 2}; -var $author$project$Vsh$Main$Symbol = function (a) { +var $elm$time$Time$Name = function (a) { return {$: 0, a: a}; }; -var $author$project$Vsh$Main$Tab = {$: 1}; -var $author$project$Vsh$Main$Other = {$: 8}; -var $elm$core$Basics$neq = _Utils_notEqual; -var $author$project$Vsh$Main$specialKeyEvent = F2( - function (event, key) { - if ($elm$core$String$length(key) !== 1) { - return $author$project$Vsh$Main$Other; +var $elm$time$Time$Offset = function (a) { + return {$: 1, a: a}; +}; +var $elm$time$Time$Zone = F2( + function (a, b) { + return {$: 0, a: a, b: b}; + }); +var $elm$time$Time$customZone = $elm$time$Time$Zone; +var $elm$time$Time$Posix = $elm$core$Basics$identity; +var $elm$time$Time$millisToPosix = $elm$core$Basics$identity; +var $elm$time$Time$now = _Time_now($elm$time$Time$millisToPosix); +var $elm$time$Time$posixToMillis = function (_v0) { + var millis = _v0; + return millis; +}; +var $elm$random$Random$init = A2( + $elm$core$Task$andThen, + function (time) { + return $elm$core$Task$succeed( + $elm$random$Random$initialSeed( + $elm$time$Time$posixToMillis(time))); + }, + $elm$time$Time$now); +var $elm$random$Random$step = F2( + function (_v0, seed) { + var generator = _v0; + return generator(seed); + }); +var $elm$random$Random$onEffects = F3( + function (router, commands, seed) { + if (!commands.b) { + return $elm$core$Task$succeed(seed); } else { - var _v0 = $elm$core$String$uncons(key); - if (!_v0.$) { - var _v1 = _v0.a; - var _char = _v1.a; - return event(_char); + var generator = commands.a; + var rest = commands.b; + var _v1 = A2($elm$random$Random$step, generator, seed); + var value = _v1.a; + var newSeed = _v1.b; + return A2( + $elm$core$Task$andThen, + function (_v2) { + return A3($elm$random$Random$onEffects, router, rest, newSeed); + }, + A2($elm$core$Platform$sendToApp, router, value)); + } + }); +var $elm$random$Random$onSelfMsg = F3( + function (_v0, _v1, seed) { + return $elm$core$Task$succeed(seed); + }); +var $elm$random$Random$Generator = $elm$core$Basics$identity; +var $elm$random$Random$map = F2( + function (func, _v0) { + var genA = _v0; + return function (seed0) { + var _v1 = genA(seed0); + var a = _v1.a; + var seed1 = _v1.b; + return _Utils_Tuple2( + func(a), + seed1); + }; + }); +var $elm$random$Random$cmdMap = F2( + function (func, _v0) { + var generator = _v0; + return A2($elm$random$Random$map, func, generator); + }); +_Platform_effectManagers['Random'] = _Platform_createManager($elm$random$Random$init, $elm$random$Random$onEffects, $elm$random$Random$onSelfMsg, $elm$random$Random$cmdMap); +var $elm$random$Random$command = _Platform_leaf('Random'); +var $elm$random$Random$generate = F2( + function (tagger, generator) { + return $elm$random$Random$command( + A2($elm$random$Random$map, tagger, generator)); + }); +var $elm$core$Bitwise$and = _Bitwise_and; +var $elm$core$Basics$negate = function (n) { + return -n; +}; +var $elm$core$Bitwise$xor = _Bitwise_xor; +var $elm$random$Random$peel = function (_v0) { + var state = _v0.a; + var word = (state ^ (state >>> ((state >>> 28) + 4))) * 277803737; + return ((word >>> 22) ^ word) >>> 0; +}; +var $elm$random$Random$int = F2( + function (a, b) { + return function (seed0) { + var _v0 = (_Utils_cmp(a, b) < 0) ? _Utils_Tuple2(a, b) : _Utils_Tuple2(b, a); + var lo = _v0.a; + var hi = _v0.b; + var range = (hi - lo) + 1; + if (!((range - 1) & range)) { + return _Utils_Tuple2( + (((range - 1) & $elm$random$Random$peel(seed0)) >>> 0) + lo, + $elm$random$Random$next(seed0)); } else { - return $author$project$Vsh$Main$Other; + var threshhold = (((-range) >>> 0) % range) >>> 0; + var accountForBias = function (seed) { + accountForBias: + while (true) { + var x = $elm$random$Random$peel(seed); + var seedN = $elm$random$Random$next(seed); + if (_Utils_cmp(x, threshhold) < 0) { + var $temp$seed = seedN; + seed = $temp$seed; + continue accountForBias; + } else { + return _Utils_Tuple2((x % range) + lo, seedN); + } + } + }; + return accountForBias(seed0); + } + }; + }); +var $elm$core$Array$length = function (_v0) { + var len = _v0.a; + return len; +}; +var $elm$random$Random$listHelp = F4( + function (revList, n, gen, seed) { + listHelp: + while (true) { + if (n < 1) { + return _Utils_Tuple2(revList, seed); + } else { + var _v0 = gen(seed); + var value = _v0.a; + var newSeed = _v0.b; + var $temp$revList = A2($elm$core$List$cons, value, revList), + $temp$n = n - 1, + $temp$gen = gen, + $temp$seed = newSeed; + revList = $temp$revList; + n = $temp$n; + gen = $temp$gen; + seed = $temp$seed; + continue listHelp; } } }); -var $author$project$Vsh$Main$eventConstructor = F3( - function (ctrl, alt, key) { - if (ctrl) { - return A2($author$project$Vsh$Main$specialKeyEvent, $author$project$Vsh$Main$Ctrl, key); +var $elm$random$Random$list = F2( + function (n, _v0) { + var gen = _v0; + return function (seed) { + return A4($elm$random$Random$listHelp, _List_Nil, n, gen, seed); + }; + }); +var $author$project$Typer$Config$wordsPerBatch = 25; +var $author$project$Typer$Main$getRandomWordIndices = function (words) { + return A2( + $elm$random$Random$generate, + $author$project$Typer$Main$GotWordIndices, + A2( + $elm$random$Random$list, + $author$project$Typer$Config$wordsPerBatch, + A2( + $elm$random$Random$int, + 0, + $elm$core$Array$length(words)))); +}; +var $author$project$Typer$Main$GotWords = function (a) { + return {$: 7, a: a}; +}; +var $elm$http$Http$BadStatus_ = F2( + function (a, b) { + return {$: 3, a: a, b: b}; + }); +var $elm$http$Http$BadUrl_ = function (a) { + return {$: 0, a: a}; +}; +var $elm$http$Http$GoodStatus_ = F2( + function (a, b) { + return {$: 4, a: a, b: b}; + }); +var $elm$http$Http$NetworkError_ = {$: 2}; +var $elm$http$Http$Receiving = function (a) { + return {$: 1, a: a}; +}; +var $elm$http$Http$Sending = function (a) { + return {$: 0, a: a}; +}; +var $elm$http$Http$Timeout_ = {$: 1}; +var $elm$core$Maybe$isJust = function (maybe) { + if (!maybe.$) { + return true; + } else { + return false; + } +}; +var $elm$core$Platform$sendToSelf = _Platform_sendToSelf; +var $elm$http$Http$expectStringResponse = F2( + function (toMsg, toResult) { + return A3( + _Http_expect, + '', + $elm$core$Basics$identity, + A2($elm$core$Basics$composeR, toResult, toMsg)); + }); +var $elm$http$Http$BadBody = function (a) { + return {$: 4, a: a}; +}; +var $elm$http$Http$BadStatus = function (a) { + return {$: 3, a: a}; +}; +var $elm$http$Http$BadUrl = function (a) { + return {$: 0, a: a}; +}; +var $elm$http$Http$NetworkError = {$: 2}; +var $elm$http$Http$Timeout = {$: 1}; +var $elm$core$Result$mapError = F2( + function (f, result) { + if (!result.$) { + var v = result.a; + return $elm$core$Result$Ok(v); } else { - if (alt) { - return A2($author$project$Vsh$Main$specialKeyEvent, $author$project$Vsh$Main$Alt, key); + var e = result.a; + return $elm$core$Result$Err( + f(e)); + } + }); +var $elm$http$Http$resolve = F2( + function (toResult, response) { + switch (response.$) { + case 0: + var url = response.a; + return $elm$core$Result$Err( + $elm$http$Http$BadUrl(url)); + case 1: + return $elm$core$Result$Err($elm$http$Http$Timeout); + case 2: + return $elm$core$Result$Err($elm$http$Http$NetworkError); + case 3: + var metadata = response.a; + return $elm$core$Result$Err( + $elm$http$Http$BadStatus(metadata.bk)); + default: + var body = response.b; + return A2( + $elm$core$Result$mapError, + $elm$http$Http$BadBody, + toResult(body)); + } + }); +var $elm$http$Http$expectString = function (toMsg) { + return A2( + $elm$http$Http$expectStringResponse, + toMsg, + $elm$http$Http$resolve($elm$core$Result$Ok)); +}; +var $elm$http$Http$emptyBody = _Http_emptyBody; +var $elm$http$Http$Request = function (a) { + return {$: 1, a: a}; +}; +var $elm$http$Http$State = F2( + function (reqs, subs) { + return {aA: reqs, aJ: subs}; + }); +var $elm$http$Http$init = $elm$core$Task$succeed( + A2($elm$http$Http$State, $elm$core$Dict$empty, _List_Nil)); +var $elm$core$Process$kill = _Scheduler_kill; +var $elm$core$Process$spawn = _Scheduler_spawn; +var $elm$http$Http$updateReqs = F3( + function (router, cmds, reqs) { + updateReqs: + while (true) { + if (!cmds.b) { + return $elm$core$Task$succeed(reqs); } else { - switch (key) { - case 'Tab': - return $author$project$Vsh$Main$Tab; - case 'Enter': - return $author$project$Vsh$Main$Enter; - case 'Backspace': - return $author$project$Vsh$Main$Backspace; - case 'ArrowUp': - return $author$project$Vsh$Main$ArrowUp; - case 'ArrowDown': - return $author$project$Vsh$Main$ArrowDown; - default: - var _char = key; - return A2($author$project$Vsh$Main$specialKeyEvent, $author$project$Vsh$Main$Symbol, _char); + var cmd = cmds.a; + var otherCmds = cmds.b; + if (!cmd.$) { + var tracker = cmd.a; + var _v2 = A2($elm$core$Dict$get, tracker, reqs); + if (_v2.$ === 1) { + var $temp$router = router, + $temp$cmds = otherCmds, + $temp$reqs = reqs; + router = $temp$router; + cmds = $temp$cmds; + reqs = $temp$reqs; + continue updateReqs; + } else { + var pid = _v2.a; + return A2( + $elm$core$Task$andThen, + function (_v3) { + return A3( + $elm$http$Http$updateReqs, + router, + otherCmds, + A2($elm$core$Dict$remove, tracker, reqs)); + }, + $elm$core$Process$kill(pid)); + } + } else { + var req = cmd.a; + return A2( + $elm$core$Task$andThen, + function (pid) { + var _v4 = req.aM; + if (_v4.$ === 1) { + return A3($elm$http$Http$updateReqs, router, otherCmds, reqs); + } else { + var tracker = _v4.a; + return A3( + $elm$http$Http$updateReqs, + router, + otherCmds, + A3($elm$core$Dict$insert, tracker, pid, reqs)); + } + }, + $elm$core$Process$spawn( + A3( + _Http_toTask, + router, + $elm$core$Platform$sendToApp(router), + req))); } } } }); -var $elm$json$Json$Decode$field = _Json_decodeField; -var $elm$json$Json$Decode$map3 = _Json_map3; -var $elm$json$Json$Decode$string = _Json_decodeString; -var $author$project$Vsh$Main$eventDecoder = A4( - $elm$json$Json$Decode$map3, - $author$project$Vsh$Main$eventConstructor, - A2($elm$json$Json$Decode$field, 'ctrlKey', $elm$json$Json$Decode$bool), - A2($elm$json$Json$Decode$field, 'altKey', $elm$json$Json$Decode$bool), - A2($elm$json$Json$Decode$field, 'key', $elm$json$Json$Decode$string)); -var $author$project$Vsh$Main$Clear = {$: 1}; -var $author$project$Vsh$Main$Exit = {$: 2}; -var $author$project$Vsh$Main$Ignore = {$: 3}; -var $author$project$Vsh$Main$KeyDown = function (a) { +var $elm$http$Http$onEffects = F4( + function (router, cmds, subs, state) { + return A2( + $elm$core$Task$andThen, + function (reqs) { + return $elm$core$Task$succeed( + A2($elm$http$Http$State, reqs, subs)); + }, + A3($elm$http$Http$updateReqs, router, cmds, state.aA)); + }); +var $elm$core$List$maybeCons = F3( + function (f, mx, xs) { + var _v0 = f(mx); + if (!_v0.$) { + var x = _v0.a; + return A2($elm$core$List$cons, x, xs); + } else { + return xs; + } + }); +var $elm$core$List$filterMap = F2( + function (f, xs) { + return A3( + $elm$core$List$foldr, + $elm$core$List$maybeCons(f), + _List_Nil, + xs); + }); +var $elm$http$Http$maybeSend = F4( + function (router, desiredTracker, progress, _v0) { + var actualTracker = _v0.a; + var toMsg = _v0.b; + return _Utils_eq(desiredTracker, actualTracker) ? $elm$core$Maybe$Just( + A2( + $elm$core$Platform$sendToApp, + router, + toMsg(progress))) : $elm$core$Maybe$Nothing; + }); +var $elm$http$Http$onSelfMsg = F3( + function (router, _v0, state) { + var tracker = _v0.a; + var progress = _v0.b; + return A2( + $elm$core$Task$andThen, + function (_v1) { + return $elm$core$Task$succeed(state); + }, + $elm$core$Task$sequence( + A2( + $elm$core$List$filterMap, + A3($elm$http$Http$maybeSend, router, tracker, progress), + state.aJ))); + }); +var $elm$http$Http$Cancel = function (a) { return {$: 0, a: a}; }; -var $author$project$Vsh$Main$toKeyDownMsg = function (event) { - _v0$3: - while (true) { - switch (event.$) { - case 6: - switch (event.a) { - case ';': - return $author$project$Vsh$Main$Clear; - case 'e': - return $author$project$Vsh$Main$Exit; - default: - break _v0$3; - } - case 8: - return $author$project$Vsh$Main$Ignore; - default: - break _v0$3; +var $elm$http$Http$cmdMap = F2( + function (func, cmd) { + if (!cmd.$) { + var tracker = cmd.a; + return $elm$http$Http$Cancel(tracker); + } else { + var r = cmd.a; + return $elm$http$Http$Request( + { + aV: r.aV, + ae: r.ae, + a1: A2(_Http_mapExpect, func, r.a1), + am: r.am, + a8: r.a8, + bn: r.bn, + aM: r.aM, + bp: r.bp + }); } + }); +var $elm$http$Http$MySub = F2( + function (a, b) { + return {$: 0, a: a, b: b}; + }); +var $elm$http$Http$subMap = F2( + function (func, _v0) { + var tracker = _v0.a; + var toMsg = _v0.b; + return A2( + $elm$http$Http$MySub, + tracker, + A2($elm$core$Basics$composeR, toMsg, func)); + }); +_Platform_effectManagers['Http'] = _Platform_createManager($elm$http$Http$init, $elm$http$Http$onEffects, $elm$http$Http$onSelfMsg, $elm$http$Http$cmdMap, $elm$http$Http$subMap); +var $elm$http$Http$command = _Platform_leaf('Http'); +var $elm$http$Http$subscription = _Platform_leaf('Http'); +var $elm$http$Http$request = function (r) { + return $elm$http$Http$command( + $elm$http$Http$Request( + {aV: false, ae: r.ae, a1: r.a1, am: r.am, a8: r.a8, bn: r.bn, aM: r.aM, bp: r.bp})); +}; +var $elm$http$Http$get = function (r) { + return $elm$http$Http$request( + {ae: $elm$http$Http$emptyBody, a1: r.a1, am: _List_Nil, a8: 'GET', bn: $elm$core$Maybe$Nothing, aM: $elm$core$Maybe$Nothing, bp: r.bp}); +}; +var $author$project$Typer$Link$words = 'https://gist.githubusercontent.com/deekayen/4148741/raw/98d35708fa344717d8eee15d11987de6c8e26d7d/1-1000.txt'; +var $author$project$Typer$Main$getWords = $elm$http$Http$get( + { + a1: $elm$http$Http$expectString($author$project$Typer$Main$GotWords), + bp: $author$project$Typer$Link$words + }); +var $author$project$Typer$Stopwatch$init = {a_: 0, M: $elm$core$Maybe$Nothing, O: $elm$core$Maybe$Nothing}; +var $author$project$Typer$Main$initModel = { + p: $author$project$Typer$Stopwatch$init, + j: $author$project$Typer$Text$fromString('Loading words...'), + A: $author$project$Typer$Main$Loading +}; +var $author$project$Typer$Main$initModelWithWords = function (words) { + switch (words.$) { + case 0: + return _Utils_Tuple2($author$project$Typer$Main$initModel, $author$project$Typer$Main$getWords); + case 1: + return _Utils_Tuple2( + _Utils_update( + $author$project$Typer$Main$initModel, + { + j: $author$project$Typer$Text$fromString('Failed to load words...'), + A: $author$project$Typer$Main$Failure + }), + $elm$core$Platform$Cmd$none); + default: + var list = words.a; + return _Utils_Tuple2( + _Utils_update( + $author$project$Typer$Main$initModel, + { + A: $author$project$Typer$Main$Words(list) + }), + $author$project$Typer$Main$getRandomWordIndices(list)); } - var e = event; - return $author$project$Vsh$Main$KeyDown(e); }; -var $author$project$Vsh$Main$keydownHandler = A2($elm$json$Json$Decode$map, $author$project$Vsh$Main$toKeyDownMsg, $author$project$Vsh$Main$eventDecoder); -var $elm$browser$Browser$Events$Document = 0; -var $elm$browser$Browser$Events$MySub = F3( - function (a, b, c) { - return {$: 0, a: a, b: b, c: c}; +var $author$project$Typer$Main$init = $author$project$Typer$Main$initModelWithWords($author$project$Typer$Main$Loading); +var $author$project$Vsh$History$History = F2( + function (history, ptr) { + return {w: history, D: ptr}; }); -var $elm$browser$Browser$Events$State = F2( - function (subs, pids) { - return {Y: pids, ad: subs}; +var $author$project$Vsh$History$empty = A2($author$project$Vsh$History$History, $elm$core$Array$empty, 0); +var $author$project$Vsh$Text$Green = 1; +var $author$project$Vsh$Text$Yellow = 0; +var $elm$json$Json$Encode$string = _Json_wrap; +var $elm$html$Html$Attributes$stringProperty = F2( + function (key, string) { + return A2( + _VirtualDom_property, + key, + $elm$json$Json$Encode$string(string)); }); -var $elm$browser$Browser$Events$init = $elm$core$Task$succeed( - A2($elm$browser$Browser$Events$State, _List_Nil, $elm$core$Dict$empty)); -var $elm$browser$Browser$Events$nodeToKey = function (node) { - if (!node) { - return 'd_'; - } else { - return 'w_'; +var $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className'); +var $author$project$Vsh$Text$colorToClass = function (c) { + return 'vsh-' + function () { + switch (c) { + case 0: + return 'yellow'; + case 1: + return 'green'; + default: + return 'magenta'; + } + }(); +}; +var $elm$html$Html$span = _VirtualDom_node('span'); +var $elm$virtual_dom$VirtualDom$text = _VirtualDom_text; +var $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text; +var $author$project$Vsh$Text$ctext = F2( + function (color, message) { + return A2( + $elm$html$Html$span, + _List_fromArray( + [ + $elm$html$Html$Attributes$class( + 'vsh-text ' + $author$project$Vsh$Text$colorToClass(color)) + ]), + _List_fromArray( + [ + $elm$html$Html$text(message) + ])); + }); +var $author$project$Vsh$Text$Magenta = 2; +var $author$project$Vsh$Main$prompt = _List_fromArray( + [ + A2($author$project$Vsh$Text$ctext, 0, 'guest'), + $elm$html$Html$text(' at '), + A2($author$project$Vsh$Text$ctext, 2, 'sharpvik'), + $elm$html$Html$text('\n❯ ') + ]); +var $author$project$Vsh$Command$version = F2( + function (_v0, display) { + return _Utils_ap( + display, + _List_fromArray( + [ + $elm$html$Html$text('vsh v0.1.3 by Viktor A. Rozenko Voitenko ') + ])); + }); +var $author$project$Vsh$Main$greeting = _Utils_ap( + A2($author$project$Vsh$Command$version, 'version', _List_Nil), + _Utils_ap( + _List_fromArray( + [ + $elm$html$Html$text('\nEnter '), + A2($author$project$Vsh$Text$ctext, 1, 'help'), + $elm$html$Html$text(' to see available commands!\n'), + A2($author$project$Vsh$Text$ctext, 0, 'VSH does not support mobile devices.\n\n') + ]), + $author$project$Vsh$Main$prompt)); +var $author$project$Vsh$Main$initModel = {q: '', L: $author$project$Vsh$Main$greeting, w: $author$project$Vsh$History$empty}; +var $author$project$Vsh$Main$init = _Utils_Tuple2($author$project$Vsh$Main$initModel, $elm$core$Platform$Cmd$none); +var $elm$core$Platform$Cmd$map = _Platform_map; +var $author$project$Main$toKey = function (model) { + switch (model.$) { + case 0: + var key = model.a; + return key; + case 1: + var key = model.a; + return key; + default: + var key = model.a; + return key; } }; -var $elm$browser$Browser$Events$addKey = function (sub) { - var node = sub.a; - var name = sub.b; - return _Utils_Tuple2( - _Utils_ap( - $elm$browser$Browser$Events$nodeToKey(node), - name), - sub); +var $author$project$Main$mux = F2( + function (model, url) { + var route = $author$project$Route$fromUrl(url); + var norm = F3( + function (toModel, toMsg, _v1) { + var subModel = _v1.a; + var cmd = _v1.b; + return _Utils_Tuple2( + toModel(subModel), + A2($elm$core$Platform$Cmd$map, toMsg, cmd)); + }); + var key = $author$project$Main$toKey(model); + switch (route) { + case 0: + return A3( + norm, + $author$project$Main$AboutModel(key), + $author$project$Main$GotAboutMsg, + $author$project$About$Main$init); + case 1: + return A3( + norm, + $author$project$Main$VshModel(key), + $author$project$Main$GotVshMsg, + $author$project$Vsh$Main$init); + default: + return A3( + norm, + $author$project$Main$TyperModel(key), + $author$project$Main$GotTyperMsg, + $author$project$Typer$Main$init); + } + }); +var $author$project$Main$init = F3( + function (_v0, url, key) { + return A2( + $author$project$Main$mux, + A2($author$project$Main$AboutModel, key, $author$project$About$Main$initModel), + url); + }); +var $elm$core$Platform$Sub$map = _Platform_map; +var $elm$core$Platform$Sub$batch = _Platform_batch; +var $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil); +var $author$project$About$Main$subscriptions = function (_v0) { + return $elm$core$Platform$Sub$none; }; -var $elm$core$Dict$fromList = function (assocs) { - return A3( - $elm$core$List$foldl, - F2( - function (_v0, dict) { - var key = _v0.a; - var value = _v0.b; - return A3($elm$core$Dict$insert, key, value, dict); - }), - $elm$core$Dict$empty, - assocs); +var $author$project$Typer$Main$Tick = function (a) { + return {$: 4, a: a}; }; -var $elm$core$Process$kill = _Scheduler_kill; +var $elm$time$Time$Every = F2( + function (a, b) { + return {$: 0, a: a, b: b}; + }); +var $elm$time$Time$State = F2( + function (taggers, processes) { + return {ay: processes, aK: taggers}; + }); +var $elm$time$Time$init = $elm$core$Task$succeed( + A2($elm$time$Time$State, $elm$core$Dict$empty, $elm$core$Dict$empty)); +var $elm$time$Time$addMySub = F2( + function (_v0, state) { + var interval = _v0.a; + var tagger = _v0.b; + var _v1 = A2($elm$core$Dict$get, interval, state); + if (_v1.$ === 1) { + return A3( + $elm$core$Dict$insert, + interval, + _List_fromArray( + [tagger]), + state); + } else { + var taggers = _v1.a; + return A3( + $elm$core$Dict$insert, + interval, + A2($elm$core$List$cons, tagger, taggers), + state); + } + }); var $elm$core$Dict$foldl = F3( function (func, acc, dict) { foldl: @@ -6338,11 +7032,277 @@ var $elm$core$Dict$merge = F6( intermediateResult, leftovers); }); +var $elm$time$Time$setInterval = _Time_setInterval; +var $elm$time$Time$spawnHelp = F3( + function (router, intervals, processes) { + if (!intervals.b) { + return $elm$core$Task$succeed(processes); + } else { + var interval = intervals.a; + var rest = intervals.b; + var spawnTimer = $elm$core$Process$spawn( + A2( + $elm$time$Time$setInterval, + interval, + A2($elm$core$Platform$sendToSelf, router, interval))); + var spawnRest = function (id) { + return A3( + $elm$time$Time$spawnHelp, + router, + rest, + A3($elm$core$Dict$insert, interval, id, processes)); + }; + return A2($elm$core$Task$andThen, spawnRest, spawnTimer); + } + }); +var $elm$time$Time$onEffects = F3( + function (router, subs, _v0) { + var processes = _v0.ay; + var rightStep = F3( + function (_v6, id, _v7) { + var spawns = _v7.a; + var existing = _v7.b; + var kills = _v7.c; + return _Utils_Tuple3( + spawns, + existing, + A2( + $elm$core$Task$andThen, + function (_v5) { + return kills; + }, + $elm$core$Process$kill(id))); + }); + var newTaggers = A3($elm$core$List$foldl, $elm$time$Time$addMySub, $elm$core$Dict$empty, subs); + var leftStep = F3( + function (interval, taggers, _v4) { + var spawns = _v4.a; + var existing = _v4.b; + var kills = _v4.c; + return _Utils_Tuple3( + A2($elm$core$List$cons, interval, spawns), + existing, + kills); + }); + var bothStep = F4( + function (interval, taggers, id, _v3) { + var spawns = _v3.a; + var existing = _v3.b; + var kills = _v3.c; + return _Utils_Tuple3( + spawns, + A3($elm$core$Dict$insert, interval, id, existing), + kills); + }); + var _v1 = A6( + $elm$core$Dict$merge, + leftStep, + bothStep, + rightStep, + newTaggers, + processes, + _Utils_Tuple3( + _List_Nil, + $elm$core$Dict$empty, + $elm$core$Task$succeed(0))); + var spawnList = _v1.a; + var existingDict = _v1.b; + var killTask = _v1.c; + return A2( + $elm$core$Task$andThen, + function (newProcesses) { + return $elm$core$Task$succeed( + A2($elm$time$Time$State, newTaggers, newProcesses)); + }, + A2( + $elm$core$Task$andThen, + function (_v2) { + return A3($elm$time$Time$spawnHelp, router, spawnList, existingDict); + }, + killTask)); + }); +var $elm$time$Time$onSelfMsg = F3( + function (router, interval, state) { + var _v0 = A2($elm$core$Dict$get, interval, state.aK); + if (_v0.$ === 1) { + return $elm$core$Task$succeed(state); + } else { + var taggers = _v0.a; + var tellTaggers = function (time) { + return $elm$core$Task$sequence( + A2( + $elm$core$List$map, + function (tagger) { + return A2( + $elm$core$Platform$sendToApp, + router, + tagger(time)); + }, + taggers)); + }; + return A2( + $elm$core$Task$andThen, + function (_v1) { + return $elm$core$Task$succeed(state); + }, + A2($elm$core$Task$andThen, tellTaggers, $elm$time$Time$now)); + } + }); +var $elm$core$Basics$composeL = F3( + function (g, f, x) { + return g( + f(x)); + }); +var $elm$time$Time$subMap = F2( + function (f, _v0) { + var interval = _v0.a; + var tagger = _v0.b; + return A2( + $elm$time$Time$Every, + interval, + A2($elm$core$Basics$composeL, f, tagger)); + }); +_Platform_effectManagers['Time'] = _Platform_createManager($elm$time$Time$init, $elm$time$Time$onEffects, $elm$time$Time$onSelfMsg, 0, $elm$time$Time$subMap); +var $elm$time$Time$subscription = _Platform_leaf('Time'); +var $elm$time$Time$every = F2( + function (interval, tagger) { + return $elm$time$Time$subscription( + A2($elm$time$Time$Every, interval, tagger)); + }); +var $elm$core$Basics$ge = _Utils_ge; +var $author$project$Typer$Text$isComplete = function (txt) { + return _Utils_cmp( + txt.s, + $elm$core$Array$length(txt.t)) > -1; +}; +var $author$project$Typer$Text$isUntouched = function (txt) { + return !txt.s; +}; +var $elm$json$Json$Decode$bool = _Json_decodeBool; +var $author$project$Typer$Main$Alt = function (a) { + return {$: 5, a: a}; +}; +var $author$project$Typer$Main$Backspace = {$: 3}; +var $author$project$Typer$Main$Ctrl = function (a) { + return {$: 4, a: a}; +}; +var $author$project$Typer$Main$Enter = {$: 2}; +var $author$project$Typer$Main$Symbol = function (a) { + return {$: 0, a: a}; +}; +var $author$project$Typer$Main$Tab = {$: 1}; +var $author$project$Typer$Main$Other = {$: 6}; +var $elm$core$Basics$neq = _Utils_notEqual; +var $author$project$Typer$Main$specialKeyEvent = F2( + function (event, key) { + if ($elm$core$String$length(key) !== 1) { + return $author$project$Typer$Main$Other; + } else { + var _v0 = $elm$core$String$uncons(key); + if (!_v0.$) { + var _v1 = _v0.a; + var _char = _v1.a; + return event(_char); + } else { + return $author$project$Typer$Main$Other; + } + } + }); +var $author$project$Typer$Main$eventConstructor = F3( + function (ctrl, alt, key) { + if (ctrl) { + return A2($author$project$Typer$Main$specialKeyEvent, $author$project$Typer$Main$Ctrl, key); + } else { + if (alt) { + return A2($author$project$Typer$Main$specialKeyEvent, $author$project$Typer$Main$Alt, key); + } else { + switch (key) { + case 'Tab': + return $author$project$Typer$Main$Tab; + case 'Enter': + return $author$project$Typer$Main$Enter; + case 'Backspace': + return $author$project$Typer$Main$Backspace; + default: + var _char = key; + return A2($author$project$Typer$Main$specialKeyEvent, $author$project$Typer$Main$Symbol, _char); + } + } + } + }); +var $elm$json$Json$Decode$field = _Json_decodeField; +var $elm$json$Json$Decode$map3 = _Json_map3; +var $elm$json$Json$Decode$string = _Json_decodeString; +var $author$project$Typer$Main$eventDecoder = A4( + $elm$json$Json$Decode$map3, + $author$project$Typer$Main$eventConstructor, + A2($elm$json$Json$Decode$field, 'ctrlKey', $elm$json$Json$Decode$bool), + A2($elm$json$Json$Decode$field, 'altKey', $elm$json$Json$Decode$bool), + A2($elm$json$Json$Decode$field, 'key', $elm$json$Json$Decode$string)); +var $author$project$Typer$Main$GotEraseSignal = {$: 6}; +var $author$project$Typer$Main$GotResetSignal = {$: 5}; +var $author$project$Typer$Main$GotSymbol = function (a) { + return {$: 1, a: a}; +}; +var $author$project$Typer$Main$Ignore = {$: 0}; +var $author$project$Typer$Main$toKeyDownMsg = function (event) { + switch (event.$) { + case 0: + var letter = event.a; + return $author$project$Typer$Main$GotSymbol(letter); + case 1: + return $author$project$Typer$Main$GotResetSignal; + case 3: + return $author$project$Typer$Main$GotEraseSignal; + default: + return $author$project$Typer$Main$Ignore; + } +}; +var $author$project$Typer$Main$keydownHandler = A2($elm$json$Json$Decode$map, $author$project$Typer$Main$toKeyDownMsg, $author$project$Typer$Main$eventDecoder); +var $author$project$Typer$Config$millisBetweenTicks = 100; +var $elm$browser$Browser$Events$Document = 0; +var $elm$browser$Browser$Events$MySub = F3( + function (a, b, c) { + return {$: 0, a: a, b: b, c: c}; + }); +var $elm$browser$Browser$Events$State = F2( + function (subs, pids) { + return {av: pids, aJ: subs}; + }); +var $elm$browser$Browser$Events$init = $elm$core$Task$succeed( + A2($elm$browser$Browser$Events$State, _List_Nil, $elm$core$Dict$empty)); +var $elm$browser$Browser$Events$nodeToKey = function (node) { + if (!node) { + return 'd_'; + } else { + return 'w_'; + } +}; +var $elm$browser$Browser$Events$addKey = function (sub) { + var node = sub.a; + var name = sub.b; + return _Utils_Tuple2( + _Utils_ap( + $elm$browser$Browser$Events$nodeToKey(node), + name), + sub); +}; +var $elm$core$Dict$fromList = function (assocs) { + return A3( + $elm$core$List$foldl, + F2( + function (_v0, dict) { + var key = _v0.a; + var value = _v0.b; + return A3($elm$core$Dict$insert, key, value, dict); + }), + $elm$core$Dict$empty, + assocs); +}; var $elm$browser$Browser$Events$Event = F2( function (key, event) { - return {S: event, V: key}; + return {ai: event, as: key}; }); -var $elm$core$Platform$sendToSelf = _Platform_sendToSelf; var $elm$browser$Browser$Events$spawn = F3( function (router, key, _v0) { var node = _v0.a; @@ -6415,7 +7375,7 @@ var $elm$browser$Browser$Events$onEffects = F3( stepLeft, stepBoth, stepRight, - state.Y, + state.av, $elm$core$Dict$fromList(newSubs), _Utils_Tuple3(_List_Nil, $elm$core$Dict$empty, _List_Nil)); var deadPids = _v0.a; @@ -6441,28 +7401,10 @@ var $elm$browser$Browser$Events$onEffects = F3( $elm$core$Task$sequence( A2($elm$core$List$map, $elm$core$Process$kill, deadPids)))); }); -var $elm$core$List$maybeCons = F3( - function (f, mx, xs) { - var _v0 = f(mx); - if (!_v0.$) { - var x = _v0.a; - return A2($elm$core$List$cons, x, xs); - } else { - return xs; - } - }); -var $elm$core$List$filterMap = F2( - function (f, xs) { - return A3( - $elm$core$List$foldr, - $elm$core$List$maybeCons(f), - _List_Nil, - xs); - }); var $elm$browser$Browser$Events$onSelfMsg = F3( function (router, _v0, state) { - var key = _v0.V; - var event = _v0.S; + var key = _v0.as; + var event = _v0.ai; var toMessage = function (_v2) { var subKey = _v2.a; var _v3 = _v2.b; @@ -6471,7 +7413,7 @@ var $elm$browser$Browser$Events$onSelfMsg = F3( var decoder = _v3.c; return _Utils_eq(subKey, key) ? A2(_Browser_decodeEvent, decoder, event) : $elm$core$Maybe$Nothing; }; - var messages = A2($elm$core$List$filterMap, toMessage, state.ad); + var messages = A2($elm$core$List$filterMap, toMessage, state.aJ); return A2( $elm$core$Task$andThen, function (_v1) { @@ -6502,22 +7444,129 @@ var $elm$browser$Browser$Events$on = F3( A3($elm$browser$Browser$Events$MySub, node, name, decoder)); }); var $elm$browser$Browser$Events$onKeyDown = A2($elm$browser$Browser$Events$on, 0, 'keydown'); +var $author$project$Typer$Main$subscriptions = function (model) { + var handleKeydownEvents = $elm$browser$Browser$Events$onKeyDown($author$project$Typer$Main$keydownHandler); + return ($author$project$Typer$Text$isUntouched(model.j) || $author$project$Typer$Text$isComplete(model.j)) ? handleKeydownEvents : $elm$core$Platform$Sub$batch( + _List_fromArray( + [ + handleKeydownEvents, + A2($elm$time$Time$every, $author$project$Typer$Config$millisBetweenTicks, $author$project$Typer$Main$Tick) + ])); +}; +var $author$project$Vsh$Main$Alt = function (a) { + return {$: 7, a: a}; +}; +var $author$project$Vsh$Main$ArrowDown = {$: 5}; +var $author$project$Vsh$Main$ArrowUp = {$: 4}; +var $author$project$Vsh$Main$Backspace = {$: 3}; +var $author$project$Vsh$Main$Ctrl = function (a) { + return {$: 6, a: a}; +}; +var $author$project$Vsh$Main$Enter = {$: 2}; +var $author$project$Vsh$Main$Symbol = function (a) { + return {$: 0, a: a}; +}; +var $author$project$Vsh$Main$Tab = {$: 1}; +var $author$project$Vsh$Main$Other = {$: 8}; +var $author$project$Vsh$Main$specialKeyEvent = F2( + function (event, key) { + if ($elm$core$String$length(key) !== 1) { + return $author$project$Vsh$Main$Other; + } else { + var _v0 = $elm$core$String$uncons(key); + if (!_v0.$) { + var _v1 = _v0.a; + var _char = _v1.a; + return event(_char); + } else { + return $author$project$Vsh$Main$Other; + } + } + }); +var $author$project$Vsh$Main$eventConstructor = F3( + function (ctrl, alt, key) { + if (ctrl) { + return A2($author$project$Vsh$Main$specialKeyEvent, $author$project$Vsh$Main$Ctrl, key); + } else { + if (alt) { + return A2($author$project$Vsh$Main$specialKeyEvent, $author$project$Vsh$Main$Alt, key); + } else { + switch (key) { + case 'Tab': + return $author$project$Vsh$Main$Tab; + case 'Enter': + return $author$project$Vsh$Main$Enter; + case 'Backspace': + return $author$project$Vsh$Main$Backspace; + case 'ArrowUp': + return $author$project$Vsh$Main$ArrowUp; + case 'ArrowDown': + return $author$project$Vsh$Main$ArrowDown; + default: + var _char = key; + return A2($author$project$Vsh$Main$specialKeyEvent, $author$project$Vsh$Main$Symbol, _char); + } + } + } + }); +var $author$project$Vsh$Main$eventDecoder = A4( + $elm$json$Json$Decode$map3, + $author$project$Vsh$Main$eventConstructor, + A2($elm$json$Json$Decode$field, 'ctrlKey', $elm$json$Json$Decode$bool), + A2($elm$json$Json$Decode$field, 'altKey', $elm$json$Json$Decode$bool), + A2($elm$json$Json$Decode$field, 'key', $elm$json$Json$Decode$string)); +var $author$project$Vsh$Main$Clear = {$: 1}; +var $author$project$Vsh$Main$Exit = {$: 2}; +var $author$project$Vsh$Main$Ignore = {$: 3}; +var $author$project$Vsh$Main$KeyDown = function (a) { + return {$: 0, a: a}; +}; +var $author$project$Vsh$Main$toKeyDownMsg = function (event) { + _v0$3: + while (true) { + switch (event.$) { + case 6: + switch (event.a) { + case ';': + return $author$project$Vsh$Main$Clear; + case 'e': + return $author$project$Vsh$Main$Exit; + default: + break _v0$3; + } + case 8: + return $author$project$Vsh$Main$Ignore; + default: + break _v0$3; + } + } + var e = event; + return $author$project$Vsh$Main$KeyDown(e); +}; +var $author$project$Vsh$Main$keydownHandler = A2($elm$json$Json$Decode$map, $author$project$Vsh$Main$toKeyDownMsg, $author$project$Vsh$Main$eventDecoder); var $author$project$Vsh$Main$subscriptions = function (_v0) { return $elm$browser$Browser$Events$onKeyDown($author$project$Vsh$Main$keydownHandler); }; -var $author$project$Main$subscriptions = function (model) { - if (!model.$) { - var mo = model.b; - return A2( - $elm$core$Platform$Sub$map, - $author$project$Main$GotAboutMsg, - $author$project$About$Main$subscriptions(mo)); - } else { - var mo = model.b; - return A2( - $elm$core$Platform$Sub$map, - $author$project$Main$GotVshMsg, - $author$project$Vsh$Main$subscriptions(mo)); +var $author$project$Main$subscriptions = function (model) { + switch (model.$) { + case 0: + var mo = model.b; + return A2( + $elm$core$Platform$Sub$map, + $author$project$Main$GotAboutMsg, + $author$project$About$Main$subscriptions(mo)); + case 1: + var mo = model.b; + return A2( + $elm$core$Platform$Sub$map, + $author$project$Main$GotVshMsg, + $author$project$Vsh$Main$subscriptions(mo)); + default: + var mo = model.b; + return A2( + $elm$core$Platform$Sub$map, + $author$project$Main$GotTyperMsg, + $author$project$Typer$Main$subscriptions(mo)); } }; var $elm$browser$Browser$Navigation$load = _Browser_load; @@ -6544,7 +7593,7 @@ var $elm$url$Url$addPrefixed = F3( }); var $elm$url$Url$toString = function (url) { var http = function () { - var _v0 = url.aA; + var _v0 = url.bf; if (!_v0) { return 'http://'; } else { @@ -6554,37 +7603,45 @@ var $elm$url$Url$toString = function (url) { return A3( $elm$url$Url$addPrefixed, '#', - url.T, + url.al, A3( $elm$url$Url$addPrefixed, '?', - url.aB, + url.bg, _Utils_ap( A2( $elm$url$Url$addPort, - url.az, - _Utils_ap(http, url.ar)), - url.ay))); + url.be, + _Utils_ap(http, url.a4)), + url.bd))); }; var $author$project$About$Main$update = F2( function (_v0, model) { return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); }); -var $elm$core$Basics$negate = function (n) { - return -n; -}; -var $elm$core$String$dropRight = F2( - function (n, string) { - return (n < 1) ? string : A3($elm$core$String$slice, 0, -n, string); +var $author$project$Typer$Stopwatch$diff = F2( + function (a, b) { + return $elm$time$Time$posixToMillis(b) - $elm$time$Time$posixToMillis(a); }); -var $elm$core$String$cons = _String_cons; -var $elm$core$String$fromChar = function (_char) { - return A2($elm$core$String$cons, _char, ''); +var $author$project$Typer$Stopwatch$end = F2( + function (stopwatch, time) { + var _v0 = stopwatch.O; + if (!_v0.$) { + var from = _v0.a; + return _Utils_update( + stopwatch, + { + a_: A2($author$project$Typer$Stopwatch$diff, from, time), + M: $elm$core$Maybe$Just(time) + }); + } else { + return stopwatch; + } + }); +var $author$project$Typer$Text$boolToInt = function (bool) { + return bool ? 1 : 0; }; -var $elm$core$Bitwise$and = _Bitwise_and; -var $elm$core$Bitwise$shiftRightZfBy = _Bitwise_shiftRightZfBy; var $elm$core$Array$bitMask = 4294967295 >>> (32 - $elm$core$Array$shiftStep); -var $elm$core$Basics$ge = _Utils_ge; var $elm$core$Elm$JsArray$unsafeGet = _JsArray_unsafeGet; var $elm$core$Array$getHelp = F3( function (shift, index, tree) { @@ -6623,6 +7680,292 @@ var $elm$core$Array$get = F2( A2($elm$core$Elm$JsArray$unsafeGet, $elm$core$Array$bitMask & index, tail)) : $elm$core$Maybe$Just( A3($elm$core$Array$getHelp, startShift, index, tree))); }); +var $elm$core$Elm$JsArray$unsafeSet = _JsArray_unsafeSet; +var $elm$core$Array$setHelp = F4( + function (shift, index, value, tree) { + var pos = $elm$core$Array$bitMask & (index >>> shift); + var _v0 = A2($elm$core$Elm$JsArray$unsafeGet, pos, tree); + if (!_v0.$) { + var subTree = _v0.a; + var newSub = A4($elm$core$Array$setHelp, shift - $elm$core$Array$shiftStep, index, value, subTree); + return A3( + $elm$core$Elm$JsArray$unsafeSet, + pos, + $elm$core$Array$SubTree(newSub), + tree); + } else { + var values = _v0.a; + var newLeaf = A3($elm$core$Elm$JsArray$unsafeSet, $elm$core$Array$bitMask & index, value, values); + return A3( + $elm$core$Elm$JsArray$unsafeSet, + pos, + $elm$core$Array$Leaf(newLeaf), + tree); + } + }); +var $elm$core$Array$set = F3( + function (index, value, array) { + var len = array.a; + var startShift = array.b; + var tree = array.c; + var tail = array.d; + return ((index < 0) || (_Utils_cmp(index, len) > -1)) ? array : ((_Utils_cmp( + index, + $elm$core$Array$tailIndex(len)) > -1) ? A4( + $elm$core$Array$Array_elm_builtin, + len, + startShift, + tree, + A3($elm$core$Elm$JsArray$unsafeSet, $elm$core$Array$bitMask & index, value, tail)) : A4( + $elm$core$Array$Array_elm_builtin, + len, + startShift, + A4($elm$core$Array$setHelp, startShift, index, value, tree), + tail)); + }); +var $author$project$Typer$Text$symbolIsGood = function (symbol) { + if (symbol.$ === 1) { + return true; + } else { + return false; + } +}; +var $author$project$Typer$Text$symbolToChar = function (symbol) { + switch (symbol.$) { + case 0: + var _char = symbol.a; + return _char; + case 1: + var _char = symbol.a; + return _char; + default: + var _char = symbol.a; + return _char; + } +}; +var $author$project$Typer$Text$symbolToUnknown = A2($elm$core$Basics$composeR, $author$project$Typer$Text$symbolToChar, $author$project$Typer$Text$Unknown); +var $author$project$Typer$Text$erase = function (txt) { + var pointerLeftShift = txt.s - 1; + var lastEnteredSymbol = A2( + $elm$core$Maybe$withDefault, + $author$project$Typer$Text$Unknown('?'), + A2($elm$core$Array$get, pointerLeftShift, txt.t)); + var lastEnteredSymbolAsUnkown = $author$project$Typer$Text$symbolToUnknown(lastEnteredSymbol); + return ($author$project$Typer$Text$isUntouched(txt) || $author$project$Typer$Text$isComplete(txt)) ? txt : { + aZ: txt.aZ - $author$project$Typer$Text$boolToInt( + $author$project$Typer$Text$symbolIsGood(lastEnteredSymbol)), + s: pointerLeftShift, + t: A3($elm$core$Array$set, pointerLeftShift, lastEnteredSymbolAsUnkown, txt.t) + }; +}; +var $pilatch$flip$Flip$flip = F3( + function (_function, argB, argA) { + return A2(_function, argA, argB); + }); +var $author$project$Typer$Text$fromWords = function (words) { + var pick = A2( + $elm$core$Basics$composeR, + A2($pilatch$flip$Flip$flip, $elm$core$Array$get, words), + $elm$core$Maybe$withDefault('default')); + return A2( + $elm$core$Basics$composeR, + $elm$core$List$map(pick), + A2( + $elm$core$Basics$composeR, + $elm$core$String$join(' '), + $author$project$Typer$Text$fromString)); +}; +var $elm$core$String$lines = _String_lines; +var $author$project$Typer$Stopwatch$start = F2( + function (stopwatch, time) { + return _Utils_update( + stopwatch, + { + O: $elm$core$Maybe$Just(time) + }); + }); +var $author$project$Typer$Stopwatch$update = F2( + function (stopwatch, time) { + var _v0 = _Utils_Tuple2(stopwatch.O, stopwatch.M); + if ((!_v0.a.$) && (_v0.b.$ === 1)) { + var from = _v0.a.a; + var _v1 = _v0.b; + return _Utils_update( + stopwatch, + { + a_: A2($author$project$Typer$Stopwatch$diff, from, time) + }); + } else { + return stopwatch; + } + }); +var $author$project$Typer$Main$GotEndTime = function (a) { + return {$: 3, a: a}; +}; +var $author$project$Typer$Main$GotStartTime = function (a) { + return {$: 2, a: a}; +}; +var $elm_community$maybe_extra$Maybe$Extra$isNothing = function (m) { + if (m.$ === 1) { + return true; + } else { + return false; + } +}; +var $author$project$Typer$Stopwatch$isRunning = function (stopwatch) { + return $elm_community$maybe_extra$Maybe$Extra$isNothing(stopwatch.M); +}; +var $elm$core$Maybe$map = F2( + function (f, maybe) { + if (!maybe.$) { + var value = maybe.a; + return $elm$core$Maybe$Just( + f(value)); + } else { + return $elm$core$Maybe$Nothing; + } + }); +var $author$project$Typer$Text$expectedChar = function (txt) { + return A2( + $elm$core$Maybe$map, + $author$project$Typer$Text$symbolToChar, + A2($elm$core$Array$get, txt.s, txt.t)); +}; +var $author$project$Typer$Text$Bad = function (a) { + return {$: 2, a: a}; +}; +var $author$project$Typer$Text$Good = function (a) { + return {$: 1, a: a}; +}; +var $author$project$Typer$Text$symbolFromBool = function (isGood) { + return isGood ? $author$project$Typer$Text$Good : $author$project$Typer$Text$Bad; +}; +var $author$project$Typer$Text$updateWithRatedSymbol = F3( + function (txt, expect, isGood) { + return { + aZ: txt.aZ + $author$project$Typer$Text$boolToInt(isGood), + s: txt.s + 1, + t: A3( + $elm$core$Array$set, + txt.s, + A2($author$project$Typer$Text$symbolFromBool, isGood, expect), + txt.t) + }; + }); +var $author$project$Typer$Text$update = F2( + function (txt, _char) { + var _v0 = $author$project$Typer$Text$expectedChar(txt); + if (_v0.$ === 1) { + return txt; + } else { + var expect = _v0.a; + return A3( + $author$project$Typer$Text$updateWithRatedSymbol, + txt, + expect, + _Utils_eq(expect, _char)); + } + }); +var $author$project$Typer$Main$updateWithSymbol = F2( + function (model, _char) { + var newText = A2($author$project$Typer$Text$update, model.j, _char); + var maybeRequestTime = $author$project$Typer$Text$isUntouched(model.j) ? A2($elm$core$Task$perform, $author$project$Typer$Main$GotStartTime, $elm$time$Time$now) : (($author$project$Typer$Stopwatch$isRunning(model.p) && $author$project$Typer$Text$isComplete(newText)) ? A2($elm$core$Task$perform, $author$project$Typer$Main$GotEndTime, $elm$time$Time$now) : $elm$core$Platform$Cmd$none); + return _Utils_Tuple2( + _Utils_update( + model, + {j: newText}), + maybeRequestTime); + }); +var $author$project$Typer$Main$update = F2( + function (msg, model) { + switch (msg.$) { + case 1: + var _char = msg.a; + return A2($author$project$Typer$Main$updateWithSymbol, model, _char); + case 0: + return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); + case 2: + var time = msg.a; + return _Utils_Tuple2( + _Utils_update( + model, + { + p: A2($author$project$Typer$Stopwatch$start, model.p, time) + }), + $elm$core$Platform$Cmd$none); + case 3: + var time = msg.a; + return _Utils_Tuple2( + _Utils_update( + model, + { + p: A2($author$project$Typer$Stopwatch$end, model.p, time) + }), + $elm$core$Platform$Cmd$none); + case 4: + var time = msg.a; + return _Utils_Tuple2( + _Utils_update( + model, + { + p: A2($author$project$Typer$Stopwatch$update, model.p, time) + }), + $elm$core$Platform$Cmd$none); + case 5: + return $author$project$Typer$Main$initModelWithWords(model.A); + case 6: + return _Utils_Tuple2( + _Utils_update( + model, + { + j: $author$project$Typer$Text$erase(model.j) + }), + $elm$core$Platform$Cmd$none); + case 7: + var resp = msg.a; + if (!resp.$) { + var body = resp.a; + var words = $elm$core$Array$fromList( + $elm$core$String$lines(body)); + return _Utils_Tuple2( + _Utils_update( + model, + { + A: $author$project$Typer$Main$Words(words) + }), + $author$project$Typer$Main$getRandomWordIndices(words)); + } else { + return _Utils_Tuple2( + _Utils_update( + model, + {A: $author$project$Typer$Main$Failure}), + $elm$core$Platform$Cmd$none); + } + default: + var indices = msg.a; + var _v2 = model.A; + if (_v2.$ === 2) { + var words = _v2.a; + return _Utils_Tuple2( + _Utils_update( + model, + { + j: A2($author$project$Typer$Text$fromWords, words, indices) + }), + $elm$core$Platform$Cmd$none); + } else { + return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); + } + } + }); +var $elm$core$String$dropRight = F2( + function (n, string) { + return (n < 1) ? string : A3($elm$core$String$slice, 0, -n, string); + }); +var $elm$core$String$cons = _String_cons; +var $elm$core$String$fromChar = function (_char) { + return A2($elm$core$String$cons, _char, ''); +}; var $elm$core$Array$isEmpty = function (_v0) { var len = _v0.a; return !len; @@ -6630,19 +7973,19 @@ var $elm$core$Array$isEmpty = function (_v0) { var $author$project$Vsh$History$lookup = F2( function (getptr, history) { var ptr = getptr(history); - return $elm$core$Array$isEmpty(history.o) ? $elm$core$Maybe$Nothing : $elm$core$Maybe$Just( + return $elm$core$Array$isEmpty(history.w) ? $elm$core$Maybe$Nothing : $elm$core$Maybe$Just( _Utils_Tuple2( A2( $elm$core$Maybe$withDefault, '', - A2($elm$core$Array$get, ptr, history.o)), + A2($elm$core$Array$get, ptr, history.w)), _Utils_update( history, - {u: ptr}))); + {D: ptr}))); }); var $author$project$Vsh$Main$maybeLookupHistory = F2( function (getptr, model) { - var _v0 = A2($author$project$Vsh$History$lookup, getptr, model.o); + var _v0 = A2($author$project$Vsh$History$lookup, getptr, model.w); if (_v0.$ === 1) { return model; } else { @@ -6651,20 +7994,16 @@ var $author$project$Vsh$Main$maybeLookupHistory = F2( var history = _v1.b; return _Utils_update( model, - {k: command, o: history}); + {q: command, w: history}); } }); -var $elm$core$Array$length = function (_v0) { - var len = _v0.a; - return len; -}; var $author$project$Vsh$History$next = function (history) { return (_Utils_cmp( - $elm$core$Array$length(history.o), - history.u + 1) > 0) ? (history.u + 1) : 0; + $elm$core$Array$length(history.w), + history.D + 1) > 0) ? (history.D + 1) : 0; }; var $author$project$Vsh$History$prev = function (history) { - return (!history.u) ? ($elm$core$Array$length(history.o) - 1) : (history.u - 1); + return (!history.D) ? ($elm$core$Array$length(history.w) - 1) : (history.D - 1); }; var $elm$json$Json$Encode$null = _Json_encodeNull; var $author$project$Vsh$Main$scroll = _Platform_outgoingPort( @@ -7075,7 +8414,6 @@ var $elm$core$List$isEmpty = function (xs) { }; var $elm$core$Elm$JsArray$push = _JsArray_push; var $elm$core$Elm$JsArray$singleton = _JsArray_singleton; -var $elm$core$Elm$JsArray$unsafeSet = _JsArray_unsafeSet; var $elm$core$Array$insertTailInTree = F4( function (shift, index, tail, tree) { var pos = $elm$core$Array$bitMask & (index >>> shift); @@ -7157,8 +8495,8 @@ var $author$project$Vsh$History$update = F2( return _Utils_update( history, { - o: A2($elm$core$Array$push, command, history.o), - u: $elm$core$Array$length(history.o) + 1 + w: A2($elm$core$Array$push, command, history.w), + D: $elm$core$Array$length(history.w) + 1 }); }); var $author$project$Vsh$Main$updateOnCommand = F2( @@ -7167,7 +8505,7 @@ var $author$project$Vsh$Main$updateOnCommand = F2( $author$project$Vsh$Command$exec, command, _Utils_ap( - model.B, + model.L, _List_fromArray( [ $elm$html$Html$text(command + '\n') @@ -7178,9 +8516,9 @@ var $author$project$Vsh$Main$updateOnCommand = F2( $elm$core$List$isEmpty(display) ? '' : '\n\n'), $author$project$Vsh$Main$prompt); return { - k: '', - B: _Utils_ap(display, promptWithOffset), - o: A2($author$project$Vsh$History$update, command, model.o) + q: '', + L: _Utils_ap(display, promptWithOffset), + w: A2($author$project$Vsh$History$update, command, model.w) }; }); var $author$project$Vsh$Main$updateOnKeydown = F3( @@ -7196,7 +8534,7 @@ var $author$project$Vsh$Main$updateOnKeydown = F3( _Utils_update( model, { - k: _Utils_ap( + q: _Utils_ap( command, $elm$core$String$fromChar(_char)) }), @@ -7206,7 +8544,7 @@ var $author$project$Vsh$Main$updateOnKeydown = F3( return _Utils_Tuple2( _Utils_update( model, - {k: command + ' '}), + {q: command + ' '}), $elm$core$Platform$Cmd$none); case 2: var _v2 = msg.a; @@ -7219,7 +8557,7 @@ var $author$project$Vsh$Main$updateOnKeydown = F3( _Utils_update( model, { - k: A2($elm$core$String$dropRight, 1, command) + q: A2($elm$core$String$dropRight, 1, command) }), $elm$core$Platform$Cmd$none); case 4: @@ -7252,50 +8590,63 @@ var $author$project$Vsh$Main$updateOnKeydown = F3( }); var $author$project$Vsh$Main$update = F2( function (msg, model) { - return A3($author$project$Vsh$Main$updateOnKeydown, msg, model, model.k); + return A3($author$project$Vsh$Main$updateOnKeydown, msg, model, model.q); }); var $author$project$Main$update = F2( function (msg, model) { var norm = F3( - function (toModel, toMsg, _v4) { - var subModel = _v4.a; - var cmd = _v4.b; + function (toModel, toMsg, _v5) { + var subModel = _v5.a; + var cmd = _v5.b; return _Utils_Tuple2( toModel(subModel), A2($elm$core$Platform$Cmd$map, toMsg, cmd)); }); var key = $author$project$Main$toKey(model); var _v0 = _Utils_Tuple2(msg, model); - _v0$4: + _v0$5: while (true) { switch (_v0.a.$) { - case 1: - if (_v0.b.$ === 1) { + case 0: + if (!_v0.b.$) { var ms = _v0.a.a; var _v1 = _v0.b; var mo = _v1.b; + return A3( + norm, + $author$project$Main$AboutModel(key), + $author$project$Main$GotAboutMsg, + A2($author$project$About$Main$update, ms, mo)); + } else { + break _v0$5; + } + case 1: + if (_v0.b.$ === 1) { + var ms = _v0.a.a; + var _v2 = _v0.b; + var mo = _v2.b; return A3( norm, $author$project$Main$VshModel(key), $author$project$Main$GotVshMsg, A2($author$project$Vsh$Main$update, ms, mo)); } else { - break _v0$4; + break _v0$5; } - case 0: - if (!_v0.b.$) { + case 2: + if (_v0.b.$ === 2) { var ms = _v0.a.a; - var _v2 = _v0.b; - var mo = _v2.b; + var _v3 = _v0.b; + var mo = _v3.b; return A3( norm, - $author$project$Main$AboutModel(key), - $author$project$Main$GotAboutMsg, - A2($author$project$About$Main$update, ms, mo)); + $author$project$Main$TyperModel(key), + $author$project$Main$GotTyperMsg, + A2($author$project$Typer$Main$update, ms, mo)); } else { - break _v0$4; + break _v0$5; } - case 3: + case 4: var url = _v0.a.a; return A2($author$project$Main$mux, model, url); default: @@ -7332,7 +8683,8 @@ var $author$project$Common$Element$navbar = function (active) { var sections = _List_fromArray( [ _Utils_Tuple2(0, '👽'), - _Utils_Tuple2(1, '⌨️') + _Utils_Tuple2(1, '⌨️'), + _Utils_Tuple2(2, '⚡') ]); var activated = function (id) { return _Utils_eq(id, active) ? _List_fromArray( @@ -7363,15 +8715,18 @@ var $author$project$Common$Element$navbar = function (active) { result); }; var $author$project$Main$toActiveIndex = function (model) { - if (!model.$) { - return 0; - } else { - return 1; + switch (model.$) { + case 0: + return 0; + case 1: + return 1; + default: + return 2; } }; var $elm$browser$Browser$Document = F2( function (title, body) { - return {O: body, af: title}; + return {ae: body, aL: title}; }); var $author$project$Common$Class$appCenter = $elm$html$Html$Attributes$class('app-center'); var $author$project$Common$Link$attr = $elm$html$Html$Attributes$href; @@ -7556,6 +8911,171 @@ var $author$project$About$Main$view = function (_v0) { ])) ]))); }; +var $author$project$Typer$Class$bg = _List_fromArray( + [ + $author$project$Common$Class$bg, + $elm$html$Html$Attributes$class('typer-bg') + ]); +var $elm$core$List$singleton = function (value) { + return _List_fromArray( + [value]); +}; +var $author$project$Typer$Class$Black = 1; +var $author$project$Typer$Class$colorToClass = function (color) { + switch (color) { + case 0: + return $elm$html$Html$Attributes$class('typer-text-grey'); + case 1: + return $elm$html$Html$Attributes$class('typer-text-black'); + default: + return $elm$html$Html$Attributes$class('typer-text-red'); + } +}; +var $elm$html$Html$footer = _VirtualDom_node('footer'); +var $author$project$Typer$Class$h1 = _List_fromArray( + [ + $author$project$Common$Class$h1, + $elm$html$Html$Attributes$class('typer-h1') + ]); +var $author$project$Typer$Class$h3 = _List_fromArray( + [ + $author$project$Common$Class$h3, + $elm$html$Html$Attributes$class('typer-h3') + ]); +var $elm$html$Html$header = _VirtualDom_node('header'); +var $author$project$Typer$Class$highlight = $elm$html$Html$Attributes$class('typer-highlight'); +var $author$project$Typer$Class$info = $elm$html$Html$Attributes$class('typer-info'); +var $elm$html$Html$p = _VirtualDom_node('p'); +var $elm$core$Basics$round = _Basics_round; +var $author$project$Typer$Class$text = $elm$html$Html$Attributes$class('typer-text'); +var $author$project$Common$Class$transparent = $elm$html$Html$Attributes$class('transparent'); +var $author$project$Typer$Text$symbols = function (txt) { + return $elm$core$Array$toList(txt.t); +}; +var $author$project$Typer$Class$Grey = 0; +var $author$project$Typer$Class$Red = 2; +var $author$project$Typer$Text$symbolToColor = function (symbol) { + switch (symbol.$) { + case 0: + return 0; + case 1: + return 1; + default: + return 2; + } +}; +var $author$project$Typer$Text$viewSymbol = function (symbol) { + var symbolBody = $elm$html$Html$text( + $elm$core$String$fromChar( + $author$project$Typer$Text$symbolToChar(symbol))); + var colorClass = $author$project$Typer$Class$colorToClass( + $author$project$Typer$Text$symbolToColor(symbol)); + return A2( + $elm$html$Html$span, + _List_fromArray( + [colorClass]), + _List_fromArray( + [symbolBody])); +}; +var $author$project$Typer$Text$view = A2( + $elm$core$Basics$composeL, + $elm$core$List$map($author$project$Typer$Text$viewSymbol), + $author$project$Typer$Text$symbols); +var $author$project$Typer$Main$viewBody = function (model) { + var isTransparent = $author$project$Typer$Text$isUntouched(model.j) ? _List_Nil : _List_fromArray( + [$author$project$Common$Class$transparent]); + var header_ = _List_fromArray( + [ + A2( + $elm$html$Html$h1, + $author$project$Typer$Class$h1, + _List_fromArray( + [ + $elm$html$Html$text('Type Fast') + ])), + A2( + $elm$html$Html$h3, + $author$project$Typer$Class$h3, + _List_fromArray( + [ + $elm$html$Html$text('Physical keyboards only') + ])) + ]); + var footer_ = _List_fromArray( + [ + A2( + $elm$html$Html$h3, + $author$project$Typer$Class$h3, + _List_fromArray( + [ + A2( + $elm$html$Html$span, + _List_fromArray( + [$author$project$Typer$Class$highlight]), + _List_fromArray( + [ + $elm$html$Html$text('tab ⇥') + ])), + $elm$html$Html$text(' to restart') + ])), + A2( + $elm$html$Html$h3, + $author$project$Typer$Class$h3, + _List_fromArray( + [ + A2( + $elm$html$Html$span, + _List_fromArray( + [$author$project$Typer$Class$highlight]), + _List_fromArray( + [ + $elm$html$Html$text('❮ backspace') + ])), + $elm$html$Html$text(' to erase last symbol') + ])) + ]); + var charsPerMinute = $elm$core$Basics$round(((model.j.aZ / model.p.a_) * 1000) * 60); + var txt = $author$project$Typer$Text$isComplete(model.j) ? A2( + $elm$html$Html$p, + _List_fromArray( + [ + $author$project$Typer$Class$text, + $author$project$Typer$Class$colorToClass(1) + ]), + _List_fromArray( + [ + $elm$html$Html$text( + $elm$core$String$fromInt(charsPerMinute) + ' chars/min.') + ])) : A2( + $elm$html$Html$p, + _List_fromArray( + [$author$project$Typer$Class$text]), + $author$project$Typer$Text$view(model.j)); + return _List_fromArray( + [ + A2( + $elm$html$Html$header, + A2($elm$core$List$cons, $author$project$Typer$Class$info, isTransparent), + header_), + txt, + A2( + $elm$html$Html$footer, + A2($elm$core$List$cons, $author$project$Typer$Class$info, isTransparent), + footer_) + ]); +}; +var $author$project$Typer$Main$view = function () { + var entitled = $elm$browser$Browser$Document('⚡ Typer'); + var app = A2( + $elm$core$Basics$composeR, + $elm$html$Html$div( + A2($elm$core$List$cons, $author$project$Common$Class$appCenter, $author$project$Typer$Class$bg)), + $elm$core$List$singleton); + return A2( + $elm$core$Basics$composeR, + $author$project$Typer$Main$viewBody, + A2($elm$core$Basics$composeR, app, entitled)); +}(); var $author$project$Common$Class$appTop = $elm$html$Html$Attributes$class('app-top'); var $author$project$Vsh$Class$bg = _List_fromArray( [ @@ -7568,8 +9088,6 @@ var $author$project$Vsh$Class$h1 = _List_fromArray( $elm$html$Html$Attributes$class('vsh-h1') ]); var $author$project$Vsh$Class$close = $elm$html$Html$Attributes$class('vsh-close'); -var $elm$html$Html$header = _VirtualDom_node('header'); -var $elm$html$Html$p = _VirtualDom_node('p'); var $elm$html$Html$pre = _VirtualDom_node('pre'); var $author$project$Vsh$Class$textarea = $elm$html$Html$Attributes$class('vsh-textarea'); var $author$project$Vsh$Class$topbar = $elm$html$Html$Attributes$class('vsh-topbar'); @@ -7618,7 +9136,7 @@ var $author$project$Vsh$Main$vshDisplay = function (display) { }; var $author$project$Vsh$Main$view = function (model) { return { - O: _List_fromArray( + ae: _List_fromArray( [ A2( $elm$html$Html$div, @@ -7634,23 +9152,23 @@ var $author$project$Vsh$Main$view = function (model) { ])), $author$project$Vsh$Main$vshDisplay( _Utils_ap( - model.B, + model.L, _List_fromArray( [ - $elm$html$Html$text(model.k) + $elm$html$Html$text(model.q) ]))) ])) ]), - af: '💻 ️VSH Shell' + aL: '💻 ️VSH Shell' }; }; var $author$project$Main$view = function (model) { var norm = F2( function (toMsg, _v1) { - var title = _v1.af; - var body = _v1.O; + var title = _v1.aL; + var body = _v1.ae; return { - O: A2( + ae: A2( $elm$core$List$cons, $author$project$Common$Element$navbar( $author$project$Main$toActiveIndex(model)), @@ -7658,24 +9176,31 @@ var $author$project$Main$view = function (model) { $elm$core$List$map, $elm$html$Html$map(toMsg), body)), - af: title + aL: title }; }); - if (!model.$) { - var mo = model.b; - return A2( - norm, - $author$project$Main$GotAboutMsg, - $author$project$About$Main$view(mo)); - } else { - var mo = model.b; - return A2( - norm, - $author$project$Main$GotVshMsg, - $author$project$Vsh$Main$view(mo)); + switch (model.$) { + case 0: + var mo = model.b; + return A2( + norm, + $author$project$Main$GotAboutMsg, + $author$project$About$Main$view(mo)); + case 1: + var mo = model.b; + return A2( + norm, + $author$project$Main$GotVshMsg, + $author$project$Vsh$Main$view(mo)); + default: + var mo = model.b; + return A2( + norm, + $author$project$Main$GotTyperMsg, + $author$project$Typer$Main$view(mo)); } }; var $author$project$Main$main = $elm$browser$Browser$application( - {at: $author$project$Main$init, av: $author$project$Main$LinkChanged, aw: $author$project$Main$LinkClicked, aD: $author$project$Main$subscriptions, aE: $author$project$Main$update, aF: $author$project$Main$view}); + {a6: $author$project$Main$init, ba: $author$project$Main$LinkChanged, bb: $author$project$Main$LinkClicked, bm: $author$project$Main$subscriptions, bo: $author$project$Main$update, bq: $author$project$Main$view}); _Platform_export({'Main':{'init':$author$project$Main$main( $elm$json$Json$Decode$succeed(0))(0)}});}(this)); \ No newline at end of file diff --git a/js/setup.js b/js/setup.js new file mode 100644 index 0000000..c1c0a5a --- /dev/null +++ b/js/setup.js @@ -0,0 +1,12 @@ +document.onkeydown = e => { + if (!e.altKey && !e.ctrlKey) e.preventDefault() +} +const app = Elm.Main.init({ + node: document.getElementById("app") +}) +app.ports.scroll.subscribe(e => + setTimeout(() => { + const area = document.querySelector(".vsh-textarea") + area.scrollTop = area.scrollHeight + }, 50) +) From da21ff897eb6ce1bfbce7a1b3386619f952e51bf Mon Sep 17 00:00:00 2001 From: sharpvik Date: Sat, 31 Dec 2022 17:21:39 +0000 Subject: [PATCH 13/15] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sh?= =?UTF-8?q?arpvik/sharpvik.github.io@8d2ed651677d0940f18f384b564d939516c83?= =?UTF-8?q?017=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/common.css | 1 + 1 file changed, 1 insertion(+) diff --git a/css/common.css b/css/common.css index b999d1d..a876af1 100644 --- a/css/common.css +++ b/css/common.css @@ -25,6 +25,7 @@ -webkit-box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.5); -moz-box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.5); box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.5); + z-index: 500; } .navbar-icon { From 330068028569c41ea7c09b3a2c83852f2cc63226 Mon Sep 17 00:00:00 2001 From: sharpvik Date: Sun, 1 Jan 2023 03:13:14 +0000 Subject: [PATCH 14/15] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sh?= =?UTF-8?q?arpvik/sharpvik.github.io@9fbd92ed9bdec309b056b9f1b4d07acdd5ed1?= =?UTF-8?q?01c=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/main.js | 277 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 164 insertions(+), 113 deletions(-) diff --git a/js/main.js b/js/main.js index 5b242a4..b274a73 100644 --- a/js/main.js +++ b/js/main.js @@ -3982,7 +3982,7 @@ var _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, deb bodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp); currNode = nextNode; _VirtualDom_divertHrefToApp = 0; - (title !== doc.aL) && (_VirtualDom_doc.title = title = doc.aL); + (title !== doc.aM) && (_VirtualDom_doc.title = title = doc.aM); }); } ); @@ -4141,17 +4141,17 @@ var _Browser_decodeEvent = F2(function(decoder, event) function _Browser_visibilityInfo() { return (typeof _VirtualDom_doc.hidden !== 'undefined') - ? { a3: 'hidden', aX: 'visibilitychange' } + ? { a3: 'hidden', aY: 'visibilitychange' } : (typeof _VirtualDom_doc.mozHidden !== 'undefined') - ? { a3: 'mozHidden', aX: 'mozvisibilitychange' } + ? { a3: 'mozHidden', aY: 'mozvisibilitychange' } : (typeof _VirtualDom_doc.msHidden !== 'undefined') - ? { a3: 'msHidden', aX: 'msvisibilitychange' } + ? { a3: 'msHidden', aY: 'msvisibilitychange' } : (typeof _VirtualDom_doc.webkitHidden !== 'undefined') - ? { a3: 'webkitHidden', aX: 'webkitvisibilitychange' } - : { a3: 'hidden', aX: 'visibilitychange' }; + ? { a3: 'webkitHidden', aY: 'webkitvisibilitychange' } + : { a3: 'hidden', aY: 'visibilitychange' }; } @@ -4232,12 +4232,12 @@ var _Browser_call = F2(function(functionName, id) function _Browser_getViewport() { return { - aF: _Browser_getScene(), - aO: { - aS: _Browser_window.pageXOffset, - aT: _Browser_window.pageYOffset, - aR: _Browser_doc.documentElement.clientWidth, - an: _Browser_doc.documentElement.clientHeight + aG: _Browser_getScene(), + aP: { + aT: _Browser_window.pageXOffset, + aU: _Browser_window.pageYOffset, + aS: _Browser_doc.documentElement.clientWidth, + ao: _Browser_doc.documentElement.clientHeight } }; } @@ -4247,8 +4247,8 @@ function _Browser_getScene() var body = _Browser_doc.body; var elem = _Browser_doc.documentElement; return { - aR: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth), - an: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight) + aS: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth), + ao: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight) }; } @@ -4271,15 +4271,15 @@ function _Browser_getViewportOf(id) return _Browser_withNode(id, function(node) { return { - aF: { - aR: node.scrollWidth, - an: node.scrollHeight + aG: { + aS: node.scrollWidth, + ao: node.scrollHeight }, - aO: { - aS: node.scrollLeft, - aT: node.scrollTop, - aR: node.clientWidth, - an: node.clientHeight + aP: { + aT: node.scrollLeft, + aU: node.scrollTop, + aS: node.clientWidth, + ao: node.clientHeight } }; }); @@ -4309,18 +4309,18 @@ function _Browser_getElement(id) var x = _Browser_window.pageXOffset; var y = _Browser_window.pageYOffset; return { - aF: _Browser_getScene(), - aO: { - aS: x, - aT: y, - aR: _Browser_doc.documentElement.clientWidth, - an: _Browser_doc.documentElement.clientHeight + aG: _Browser_getScene(), + aP: { + aT: x, + aU: y, + aS: _Browser_doc.documentElement.clientWidth, + ao: _Browser_doc.documentElement.clientHeight }, a0: { - aS: x + rect.left, - aT: y + rect.top, - aR: rect.width, - an: rect.height + aT: x + rect.left, + aU: y + rect.top, + aS: rect.width, + ao: rect.height } }; }); @@ -4472,7 +4472,7 @@ var _Http_toTask = F3(function(router, toTask, request) xhr.addEventListener('error', function() { done($elm$http$Http$NetworkError_); }); xhr.addEventListener('timeout', function() { done($elm$http$Http$Timeout_); }); xhr.addEventListener('load', function() { done(_Http_toResponse(request.a1.b, xhr)); }); - $elm$core$Maybe$isJust(request.aM) && _Http_track(router, xhr, request.aM.a); + $elm$core$Maybe$isJust(request.aN) && _Http_track(router, xhr, request.aN.a); try { xhr.open(request.a8, request.bp, true); @@ -4494,13 +4494,13 @@ var _Http_toTask = F3(function(router, toTask, request) function _Http_configureRequest(xhr, request) { - for (var headers = request.am; headers.b; headers = headers.b) // WHILE_CONS + for (var headers = request.an; headers.b; headers = headers.b) // WHILE_CONS { xhr.setRequestHeader(headers.a.a, headers.a.b); } xhr.timeout = request.bn.a || 0; xhr.responseType = request.a1.d; - xhr.withCredentials = request.aV; + xhr.withCredentials = request.aW; } @@ -4524,7 +4524,7 @@ function _Http_toMetadata(xhr) bp: xhr.responseURL, bk: xhr.status, bl: xhr.statusText, - am: _Http_parseHeaders(xhr.getAllResponseHeaders()) + an: _Http_parseHeaders(xhr.getAllResponseHeaders()) }; } @@ -4620,14 +4620,14 @@ function _Http_track(router, xhr, tracker) if (xhr.c) { return; } _Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Sending({ bj: event.loaded, - aH: event.total + aI: event.total })))); }); xhr.addEventListener('progress', function(event) { if (xhr.c) { return; } _Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Receiving({ bh: event.loaded, - aH: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing + aI: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing })))); }); }var $author$project$Main$LinkChanged = function (a) { @@ -5140,7 +5140,7 @@ var $elm$url$Url$Http = 0; var $elm$url$Url$Https = 1; var $elm$url$Url$Url = F6( function (protocol, host, port_, path, query, fragment) { - return {al: fragment, a4: host, bd: path, be: port_, bf: protocol, bg: query}; + return {am: fragment, a4: host, bd: path, be: port_, bf: protocol, bg: query}; }); var $elm$core$String$contains = _String_contains; var $elm$core$String$length = _String_length; @@ -5454,9 +5454,9 @@ var $elm$core$Maybe$withDefault = F2( }); var $author$project$Route$fake = function (path) { return { - al: $elm$core$Maybe$Nothing, + am: $elm$core$Maybe$Nothing, a4: 'sharpvik.github.io', - bd: A2($elm$core$Maybe$withDefault, '/#/about', path.al), + bd: A2($elm$core$Maybe$withDefault, '/#/about', path.am), be: $elm$core$Maybe$Nothing, bf: 1, bg: $elm$core$Maybe$Nothing @@ -6093,7 +6093,7 @@ var $elm$url$Url$Parser$parse = F2( _List_Nil, $elm$url$Url$Parser$preparePath(url.bd), $elm$url$Url$Parser$prepareQuery(url.bg), - url.al, + url.am, $elm$core$Basics$identity))); }); var $elm$url$Url$Parser$Parser = $elm$core$Basics$identity; @@ -6231,7 +6231,7 @@ var $author$project$Typer$Main$Words = function (a) { }; var $author$project$Typer$Text$Text = F3( function (pointer, correct, symbols) { - return {aZ: correct, s: pointer, t: symbols}; + return {ah: correct, t: pointer, q: symbols}; }); var $author$project$Typer$Text$Unknown = function (a) { return {$: 0, a: a}; @@ -6573,7 +6573,7 @@ var $elm$http$Http$Request = function (a) { }; var $elm$http$Http$State = F2( function (reqs, subs) { - return {aA: reqs, aJ: subs}; + return {aB: reqs, aK: subs}; }); var $elm$http$Http$init = $elm$core$Task$succeed( A2($elm$http$Http$State, $elm$core$Dict$empty, _List_Nil)); @@ -6617,7 +6617,7 @@ var $elm$http$Http$updateReqs = F3( return A2( $elm$core$Task$andThen, function (pid) { - var _v4 = req.aM; + var _v4 = req.aN; if (_v4.$ === 1) { return A3($elm$http$Http$updateReqs, router, otherCmds, reqs); } else { @@ -6647,7 +6647,7 @@ var $elm$http$Http$onEffects = F4( return $elm$core$Task$succeed( A2($elm$http$Http$State, reqs, subs)); }, - A3($elm$http$Http$updateReqs, router, cmds, state.aA)); + A3($elm$http$Http$updateReqs, router, cmds, state.aB)); }); var $elm$core$List$maybeCons = F3( function (f, mx, xs) { @@ -6690,7 +6690,7 @@ var $elm$http$Http$onSelfMsg = F3( A2( $elm$core$List$filterMap, A3($elm$http$Http$maybeSend, router, tracker, progress), - state.aJ))); + state.aK))); }); var $elm$http$Http$Cancel = function (a) { return {$: 0, a: a}; @@ -6704,13 +6704,13 @@ var $elm$http$Http$cmdMap = F2( var r = cmd.a; return $elm$http$Http$Request( { - aV: r.aV, + aW: r.aW, ae: r.ae, a1: A2(_Http_mapExpect, func, r.a1), - am: r.am, + an: r.an, a8: r.a8, bn: r.bn, - aM: r.aM, + aN: r.aN, bp: r.bp }); } @@ -6734,11 +6734,11 @@ var $elm$http$Http$subscription = _Platform_leaf('Http'); var $elm$http$Http$request = function (r) { return $elm$http$Http$command( $elm$http$Http$Request( - {aV: false, ae: r.ae, a1: r.a1, am: r.am, a8: r.a8, bn: r.bn, aM: r.aM, bp: r.bp})); + {aW: false, ae: r.ae, a1: r.a1, an: r.an, a8: r.a8, bn: r.bn, aN: r.aN, bp: r.bp})); }; var $elm$http$Http$get = function (r) { return $elm$http$Http$request( - {ae: $elm$http$Http$emptyBody, a1: r.a1, am: _List_Nil, a8: 'GET', bn: $elm$core$Maybe$Nothing, aM: $elm$core$Maybe$Nothing, bp: r.bp}); + {ae: $elm$http$Http$emptyBody, a1: r.a1, an: _List_Nil, a8: 'GET', bn: $elm$core$Maybe$Nothing, aN: $elm$core$Maybe$Nothing, bp: r.bp}); }; var $author$project$Typer$Link$words = 'https://gist.githubusercontent.com/deekayen/4148741/raw/98d35708fa344717d8eee15d11987de6c8e26d7d/1-1000.txt'; var $author$project$Typer$Main$getWords = $elm$http$Http$get( @@ -6748,8 +6748,8 @@ var $author$project$Typer$Main$getWords = $elm$http$Http$get( }); var $author$project$Typer$Stopwatch$init = {a_: 0, M: $elm$core$Maybe$Nothing, O: $elm$core$Maybe$Nothing}; var $author$project$Typer$Main$initModel = { - p: $author$project$Typer$Stopwatch$init, - j: $author$project$Typer$Text$fromString('Loading words...'), + n: $author$project$Typer$Stopwatch$init, + i: $author$project$Typer$Text$fromString('Loading words...'), A: $author$project$Typer$Main$Loading }; var $author$project$Typer$Main$initModelWithWords = function (words) { @@ -6761,7 +6761,7 @@ var $author$project$Typer$Main$initModelWithWords = function (words) { _Utils_update( $author$project$Typer$Main$initModel, { - j: $author$project$Typer$Text$fromString('Failed to load words...'), + i: $author$project$Typer$Text$fromString('Failed to load words...'), A: $author$project$Typer$Main$Failure }), $elm$core$Platform$Cmd$none); @@ -6850,7 +6850,7 @@ var $author$project$Vsh$Main$greeting = _Utils_ap( A2($author$project$Vsh$Text$ctext, 0, 'VSH does not support mobile devices.\n\n') ]), $author$project$Vsh$Main$prompt)); -var $author$project$Vsh$Main$initModel = {q: '', L: $author$project$Vsh$Main$greeting, w: $author$project$Vsh$History$empty}; +var $author$project$Vsh$Main$initModel = {r: '', L: $author$project$Vsh$Main$greeting, w: $author$project$Vsh$History$empty}; var $author$project$Vsh$Main$init = _Utils_Tuple2($author$project$Vsh$Main$initModel, $elm$core$Platform$Cmd$none); var $elm$core$Platform$Cmd$map = _Platform_map; var $author$project$Main$toKey = function (model) { @@ -6921,7 +6921,7 @@ var $elm$time$Time$Every = F2( }); var $elm$time$Time$State = F2( function (taggers, processes) { - return {ay: processes, aK: taggers}; + return {az: processes, aL: taggers}; }); var $elm$time$Time$init = $elm$core$Task$succeed( A2($elm$time$Time$State, $elm$core$Dict$empty, $elm$core$Dict$empty)); @@ -7057,7 +7057,7 @@ var $elm$time$Time$spawnHelp = F3( }); var $elm$time$Time$onEffects = F3( function (router, subs, _v0) { - var processes = _v0.ay; + var processes = _v0.az; var rightStep = F3( function (_v6, id, _v7) { var spawns = _v7.a; @@ -7123,7 +7123,7 @@ var $elm$time$Time$onEffects = F3( }); var $elm$time$Time$onSelfMsg = F3( function (router, interval, state) { - var _v0 = A2($elm$core$Dict$get, interval, state.aK); + var _v0 = A2($elm$core$Dict$get, interval, state.aL); if (_v0.$ === 1) { return $elm$core$Task$succeed(state); } else { @@ -7172,11 +7172,11 @@ var $elm$time$Time$every = F2( var $elm$core$Basics$ge = _Utils_ge; var $author$project$Typer$Text$isComplete = function (txt) { return _Utils_cmp( - txt.s, - $elm$core$Array$length(txt.t)) > -1; + txt.t, + $elm$core$Array$length(txt.q)) > -1; }; var $author$project$Typer$Text$isUntouched = function (txt) { - return !txt.s; + return !txt.t; }; var $elm$json$Json$Decode$bool = _Json_decodeBool; var $author$project$Typer$Main$Alt = function (a) { @@ -7267,7 +7267,7 @@ var $elm$browser$Browser$Events$MySub = F3( }); var $elm$browser$Browser$Events$State = F2( function (subs, pids) { - return {av: pids, aJ: subs}; + return {aw: pids, aK: subs}; }); var $elm$browser$Browser$Events$init = $elm$core$Task$succeed( A2($elm$browser$Browser$Events$State, _List_Nil, $elm$core$Dict$empty)); @@ -7301,7 +7301,7 @@ var $elm$core$Dict$fromList = function (assocs) { }; var $elm$browser$Browser$Events$Event = F2( function (key, event) { - return {ai: event, as: key}; + return {aj: event, at: key}; }); var $elm$browser$Browser$Events$spawn = F3( function (router, key, _v0) { @@ -7375,7 +7375,7 @@ var $elm$browser$Browser$Events$onEffects = F3( stepLeft, stepBoth, stepRight, - state.av, + state.aw, $elm$core$Dict$fromList(newSubs), _Utils_Tuple3(_List_Nil, $elm$core$Dict$empty, _List_Nil)); var deadPids = _v0.a; @@ -7403,8 +7403,8 @@ var $elm$browser$Browser$Events$onEffects = F3( }); var $elm$browser$Browser$Events$onSelfMsg = F3( function (router, _v0, state) { - var key = _v0.as; - var event = _v0.ai; + var key = _v0.at; + var event = _v0.aj; var toMessage = function (_v2) { var subKey = _v2.a; var _v3 = _v2.b; @@ -7413,7 +7413,7 @@ var $elm$browser$Browser$Events$onSelfMsg = F3( var decoder = _v3.c; return _Utils_eq(subKey, key) ? A2(_Browser_decodeEvent, decoder, event) : $elm$core$Maybe$Nothing; }; - var messages = A2($elm$core$List$filterMap, toMessage, state.aJ); + var messages = A2($elm$core$List$filterMap, toMessage, state.aK); return A2( $elm$core$Task$andThen, function (_v1) { @@ -7446,7 +7446,7 @@ var $elm$browser$Browser$Events$on = F3( var $elm$browser$Browser$Events$onKeyDown = A2($elm$browser$Browser$Events$on, 0, 'keydown'); var $author$project$Typer$Main$subscriptions = function (model) { var handleKeydownEvents = $elm$browser$Browser$Events$onKeyDown($author$project$Typer$Main$keydownHandler); - return ($author$project$Typer$Text$isUntouched(model.j) || $author$project$Typer$Text$isComplete(model.j)) ? handleKeydownEvents : $elm$core$Platform$Sub$batch( + return ($author$project$Typer$Text$isUntouched(model.i) || $author$project$Typer$Text$isComplete(model.i)) ? handleKeydownEvents : $elm$core$Platform$Sub$batch( _List_fromArray( [ handleKeydownEvents, @@ -7603,7 +7603,7 @@ var $elm$url$Url$toString = function (url) { return A3( $elm$url$Url$addPrefixed, '#', - url.al, + url.am, A3( $elm$url$Url$addPrefixed, '?', @@ -7745,17 +7745,17 @@ var $author$project$Typer$Text$symbolToChar = function (symbol) { }; var $author$project$Typer$Text$symbolToUnknown = A2($elm$core$Basics$composeR, $author$project$Typer$Text$symbolToChar, $author$project$Typer$Text$Unknown); var $author$project$Typer$Text$erase = function (txt) { - var pointerLeftShift = txt.s - 1; + var pointerLeftShift = txt.t - 1; var lastEnteredSymbol = A2( $elm$core$Maybe$withDefault, $author$project$Typer$Text$Unknown('?'), - A2($elm$core$Array$get, pointerLeftShift, txt.t)); + A2($elm$core$Array$get, pointerLeftShift, txt.q)); var lastEnteredSymbolAsUnkown = $author$project$Typer$Text$symbolToUnknown(lastEnteredSymbol); return ($author$project$Typer$Text$isUntouched(txt) || $author$project$Typer$Text$isComplete(txt)) ? txt : { - aZ: txt.aZ - $author$project$Typer$Text$boolToInt( + ah: txt.ah - $author$project$Typer$Text$boolToInt( $author$project$Typer$Text$symbolIsGood(lastEnteredSymbol)), - s: pointerLeftShift, - t: A3($elm$core$Array$set, pointerLeftShift, lastEnteredSymbolAsUnkown, txt.t) + t: pointerLeftShift, + q: A3($elm$core$Array$set, pointerLeftShift, lastEnteredSymbolAsUnkown, txt.q) }; }; var $pilatch$flip$Flip$flip = F3( @@ -7829,7 +7829,7 @@ var $author$project$Typer$Text$expectedChar = function (txt) { return A2( $elm$core$Maybe$map, $author$project$Typer$Text$symbolToChar, - A2($elm$core$Array$get, txt.s, txt.t)); + A2($elm$core$Array$get, txt.t, txt.q)); }; var $author$project$Typer$Text$Bad = function (a) { return {$: 2, a: a}; @@ -7843,13 +7843,13 @@ var $author$project$Typer$Text$symbolFromBool = function (isGood) { var $author$project$Typer$Text$updateWithRatedSymbol = F3( function (txt, expect, isGood) { return { - aZ: txt.aZ + $author$project$Typer$Text$boolToInt(isGood), - s: txt.s + 1, - t: A3( + ah: txt.ah + $author$project$Typer$Text$boolToInt(isGood), + t: txt.t + 1, + q: A3( $elm$core$Array$set, - txt.s, + txt.t, A2($author$project$Typer$Text$symbolFromBool, isGood, expect), - txt.t) + txt.q) }; }); var $author$project$Typer$Text$update = F2( @@ -7868,12 +7868,12 @@ var $author$project$Typer$Text$update = F2( }); var $author$project$Typer$Main$updateWithSymbol = F2( function (model, _char) { - var newText = A2($author$project$Typer$Text$update, model.j, _char); - var maybeRequestTime = $author$project$Typer$Text$isUntouched(model.j) ? A2($elm$core$Task$perform, $author$project$Typer$Main$GotStartTime, $elm$time$Time$now) : (($author$project$Typer$Stopwatch$isRunning(model.p) && $author$project$Typer$Text$isComplete(newText)) ? A2($elm$core$Task$perform, $author$project$Typer$Main$GotEndTime, $elm$time$Time$now) : $elm$core$Platform$Cmd$none); + var newText = A2($author$project$Typer$Text$update, model.i, _char); + var maybeRequestTime = $author$project$Typer$Text$isUntouched(model.i) ? A2($elm$core$Task$perform, $author$project$Typer$Main$GotStartTime, $elm$time$Time$now) : (($author$project$Typer$Stopwatch$isRunning(model.n) && $author$project$Typer$Text$isComplete(newText)) ? A2($elm$core$Task$perform, $author$project$Typer$Main$GotEndTime, $elm$time$Time$now) : $elm$core$Platform$Cmd$none); return _Utils_Tuple2( _Utils_update( model, - {j: newText}), + {i: newText}), maybeRequestTime); }); var $author$project$Typer$Main$update = F2( @@ -7890,7 +7890,7 @@ var $author$project$Typer$Main$update = F2( _Utils_update( model, { - p: A2($author$project$Typer$Stopwatch$start, model.p, time) + n: A2($author$project$Typer$Stopwatch$start, model.n, time) }), $elm$core$Platform$Cmd$none); case 3: @@ -7899,7 +7899,7 @@ var $author$project$Typer$Main$update = F2( _Utils_update( model, { - p: A2($author$project$Typer$Stopwatch$end, model.p, time) + n: A2($author$project$Typer$Stopwatch$end, model.n, time) }), $elm$core$Platform$Cmd$none); case 4: @@ -7908,7 +7908,7 @@ var $author$project$Typer$Main$update = F2( _Utils_update( model, { - p: A2($author$project$Typer$Stopwatch$update, model.p, time) + n: A2($author$project$Typer$Stopwatch$update, model.n, time) }), $elm$core$Platform$Cmd$none); case 5: @@ -7918,7 +7918,7 @@ var $author$project$Typer$Main$update = F2( _Utils_update( model, { - j: $author$project$Typer$Text$erase(model.j) + i: $author$project$Typer$Text$erase(model.i) }), $elm$core$Platform$Cmd$none); case 7: @@ -7950,7 +7950,7 @@ var $author$project$Typer$Main$update = F2( _Utils_update( model, { - j: A2($author$project$Typer$Text$fromWords, words, indices) + i: A2($author$project$Typer$Text$fromWords, words, indices) }), $elm$core$Platform$Cmd$none); } else { @@ -7994,7 +7994,7 @@ var $author$project$Vsh$Main$maybeLookupHistory = F2( var history = _v1.b; return _Utils_update( model, - {q: command, w: history}); + {r: command, w: history}); } }); var $author$project$Vsh$History$next = function (history) { @@ -8516,7 +8516,7 @@ var $author$project$Vsh$Main$updateOnCommand = F2( $elm$core$List$isEmpty(display) ? '' : '\n\n'), $author$project$Vsh$Main$prompt); return { - q: '', + r: '', L: _Utils_ap(display, promptWithOffset), w: A2($author$project$Vsh$History$update, command, model.w) }; @@ -8534,7 +8534,7 @@ var $author$project$Vsh$Main$updateOnKeydown = F3( _Utils_update( model, { - q: _Utils_ap( + r: _Utils_ap( command, $elm$core$String$fromChar(_char)) }), @@ -8544,7 +8544,7 @@ var $author$project$Vsh$Main$updateOnKeydown = F3( return _Utils_Tuple2( _Utils_update( model, - {q: command + ' '}), + {r: command + ' '}), $elm$core$Platform$Cmd$none); case 2: var _v2 = msg.a; @@ -8557,7 +8557,7 @@ var $author$project$Vsh$Main$updateOnKeydown = F3( _Utils_update( model, { - q: A2($elm$core$String$dropRight, 1, command) + r: A2($elm$core$String$dropRight, 1, command) }), $elm$core$Platform$Cmd$none); case 4: @@ -8590,7 +8590,7 @@ var $author$project$Vsh$Main$updateOnKeydown = F3( }); var $author$project$Vsh$Main$update = F2( function (msg, model) { - return A3($author$project$Vsh$Main$updateOnKeydown, msg, model, model.q); + return A3($author$project$Vsh$Main$updateOnKeydown, msg, model, model.r); }); var $author$project$Main$update = F2( function (msg, model) { @@ -8726,7 +8726,7 @@ var $author$project$Main$toActiveIndex = function (model) { }; var $elm$browser$Browser$Document = F2( function (title, body) { - return {ae: body, aL: title}; + return {ae: body, aM: title}; }); var $author$project$Common$Class$appCenter = $elm$html$Html$Attributes$class('app-center'); var $author$project$Common$Link$attr = $elm$html$Html$Attributes$href; @@ -8931,7 +8931,14 @@ var $author$project$Typer$Class$colorToClass = function (color) { return $elm$html$Html$Attributes$class('typer-text-red'); } }; +var $author$project$Typer$Stopwatch$deltaInSeconds = function (stopwatch) { + return stopwatch.a_ / 1000; +}; +var $author$project$Typer$Text$errors = function (txt) { + return $elm$core$Array$length(txt.q) - txt.ah; +}; var $elm$html$Html$footer = _VirtualDom_node('footer'); +var $elm$core$String$fromFloat = _String_fromNumber; var $author$project$Typer$Class$h1 = _List_fromArray( [ $author$project$Common$Class$h1, @@ -8950,7 +8957,7 @@ var $elm$core$Basics$round = _Basics_round; var $author$project$Typer$Class$text = $elm$html$Html$Attributes$class('typer-text'); var $author$project$Common$Class$transparent = $elm$html$Html$Attributes$class('transparent'); var $author$project$Typer$Text$symbols = function (txt) { - return $elm$core$Array$toList(txt.t); + return $elm$core$Array$toList(txt.q); }; var $author$project$Typer$Class$Grey = 0; var $author$project$Typer$Class$Red = 2; @@ -8982,7 +8989,7 @@ var $author$project$Typer$Text$view = A2( $elm$core$List$map($author$project$Typer$Text$viewSymbol), $author$project$Typer$Text$symbols); var $author$project$Typer$Main$viewBody = function (model) { - var isTransparent = $author$project$Typer$Text$isUntouched(model.j) ? _List_Nil : _List_fromArray( + var isTransparent = $author$project$Typer$Text$isUntouched(model.i) ? _List_Nil : _List_fromArray( [$author$project$Common$Class$transparent]); var header_ = _List_fromArray( [ @@ -9034,23 +9041,67 @@ var $author$project$Typer$Main$viewBody = function (model) { $elm$html$Html$text(' to erase last symbol') ])) ]); - var charsPerMinute = $elm$core$Basics$round(((model.j.aZ / model.p.a_) * 1000) * 60); - var txt = $author$project$Typer$Text$isComplete(model.j) ? A2( - $elm$html$Html$p, - _List_fromArray( - [ - $author$project$Typer$Class$text, - $author$project$Typer$Class$colorToClass(1) - ]), + var charsPerMinute = $elm$core$Basics$round(((model.i.ah / model.n.a_) * 1000) * 60); + var txt = $author$project$Typer$Text$isComplete(model.i) ? A2( + $elm$html$Html$div, + _List_Nil, _List_fromArray( [ - $elm$html$Html$text( - $elm$core$String$fromInt(charsPerMinute) + ' chars/min.') + A2( + $elm$html$Html$p, + _List_fromArray( + [ + $author$project$Typer$Class$text, + $author$project$Typer$Class$colorToClass(1) + ]), + _List_fromArray( + [ + $elm$html$Html$text( + $elm$core$String$fromInt(charsPerMinute) + ' chars/min.') + ])), + A2( + $elm$html$Html$p, + _List_fromArray( + [ + $author$project$Typer$Class$text, + $author$project$Typer$Class$colorToClass(1) + ]), + _List_fromArray( + [ + $elm$html$Html$text( + $elm$core$String$fromInt(model.i.ah) + ' correct') + ])), + A2( + $elm$html$Html$p, + _List_fromArray( + [ + $author$project$Typer$Class$text, + $author$project$Typer$Class$colorToClass(1) + ]), + _List_fromArray( + [ + $elm$html$Html$text( + $elm$core$String$fromInt( + $author$project$Typer$Text$errors(model.i)) + ' incorrect') + ])), + A2( + $elm$html$Html$p, + _List_fromArray( + [ + $author$project$Typer$Class$text, + $author$project$Typer$Class$colorToClass(1) + ]), + _List_fromArray( + [ + $elm$html$Html$text( + $elm$core$String$fromFloat( + $author$project$Typer$Stopwatch$deltaInSeconds(model.n)) + ' sec. in total') + ])) ])) : A2( $elm$html$Html$p, _List_fromArray( [$author$project$Typer$Class$text]), - $author$project$Typer$Text$view(model.j)); + $author$project$Typer$Text$view(model.i)); return _List_fromArray( [ A2( @@ -9155,17 +9206,17 @@ var $author$project$Vsh$Main$view = function (model) { model.L, _List_fromArray( [ - $elm$html$Html$text(model.q) + $elm$html$Html$text(model.r) ]))) ])) ]), - aL: '💻 ️VSH Shell' + aM: '💻 ️VSH Shell' }; }; var $author$project$Main$view = function (model) { var norm = F2( function (toMsg, _v1) { - var title = _v1.aL; + var title = _v1.aM; var body = _v1.ae; return { ae: A2( @@ -9176,7 +9227,7 @@ var $author$project$Main$view = function (model) { $elm$core$List$map, $elm$html$Html$map(toMsg), body)), - aL: title + aM: title }; }); switch (model.$) { From a5e1c1467abb0f271badc9cb381faf5d30e84477 Mon Sep 17 00:00:00 2001 From: sharpvik Date: Wed, 8 Feb 2023 11:07:47 +0000 Subject: [PATCH 15/15] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sh?= =?UTF-8?q?arpvik/sharpvik.github.io@5036c69b0945428e688d63ebb8c39fc6e2dc4?= =?UTF-8?q?747=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + assets/cv.pdf | Bin 68893 -> 68621 bytes js/main.js | 12 ++++++------ 3 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ec42c0a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +js/main.js \ No newline at end of file diff --git a/assets/cv.pdf b/assets/cv.pdf index f29f00a6b15598a0d33067b1064966f6fe17395a..c8ceb7fcb38931739754e6e77d7cc1e41976089e 100644 GIT binary patch delta 13712 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

h@EKuyvg2Lh5wz!DAuZ+oKmH@YW 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 Date: Wed, 9 Nov 2022 11:27:36 +0000 Subject: [PATCH 09/15] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sh?= =?UTF-8?q?arpvik/sharpvik.github.io@20c80979795c488b1eb304a000fdd303b9790?= =?UTF-8?q?b38=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/cv.pdf | Bin 66628 -> 68902 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/cv.pdf b/assets/cv.pdf index 4da679da60357b3963c5e710be6b5dddc84bae53..c85d2443950942c14ba6ae4c216a404d3fe3e2ab 100644 GIT binary patch delta 44967 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 {d20Hd|CR#EAUh| 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 WHc;9#G88G`)h-)=hDKab;(r03^)8_R From 9cf574bfd05549ff72608a0ae2dd00bc6d98af8d Mon Sep 17 00:00:00 2001 From: sharpvik Date: Wed, 9 Nov 2022 22:59:23 +0000 Subject: [PATCH 10/15] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sh?= =?UTF-8?q?arpvik/sharpvik.github.io@faf06c6be0672abdf17022808fbdd233fe27f?= =?UTF-8?q?64b=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/cv.pdf | Bin 68902 -> 68893 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/cv.pdf b/assets/cv.pdf index c85d2443950942c14ba6ae4c216a404d3fe3e2ab..f29f00a6b15598a0d33067b1064966f6fe17395a 100644 GIT binary patch delta 6119 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 W3rU#9M;FIM3J4%@Sy)g?lK%reQA5!H delta 6202 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 S82d4y=--xvY;5wH3jYJGi$jY5 From 4b8cf59ca42c7625db882084d1ebd8a82c53a218 Mon Sep 17 00:00:00 2001 From: sharpvik Date: Fri, 25 Nov 2022 21:26:49 +0000 Subject: [PATCH 11/15] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sh?= =?UTF-8?q?arpvik/sharpvik.github.io@51e13153a4cce00146056d27475a67bf64f4a?= =?UTF-8?q?0c7=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/common.css | 17 ++++++- js/main.js | 126 +++++++++++++++++++++++++++---------------------- 2 files changed, 85 insertions(+), 58 deletions(-) diff --git a/css/common.css b/css/common.css index 4328b22..1f586f5 100644 --- a/css/common.css +++ b/css/common.css @@ -4,6 +4,7 @@ flex-direction: column; justify-content: center; } + .app-top { padding-top: 25px; min-height: calc(100% - 25px); @@ -25,6 +26,7 @@ -moz-box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.5); box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.5); } + .navbar-icon { display: inline-block; line-height: 60px; @@ -38,10 +40,12 @@ text-decoration: none; position: relative; } + .navbar-icon:hover { background-color: #efefef; transition: background 0.3s; } + .navbar-icon-active::after { content: ""; height: 5px; @@ -54,6 +58,7 @@ background-color: #ccc; transition: background 0.3s; } + .navbar-icon-active:hover::after { background: transparent; transition: background 0.3s; @@ -71,6 +76,16 @@ line-height: 2rem; } +.link { + color: #006b47; + font-weight: 600; + text-decoration: none; +} + +.link:hover { + text-decoration: underline; +} + @media screen and (max-width: 550px) { .h1 { font-size: 32px; @@ -91,4 +106,4 @@ -webkit-box-shadow: 0px 3px 7px 0px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0px 3px 7px 0px rgba(0, 0, 0, 0.3); box-shadow: 0px 3px 7px 0px rgba(0, 0, 0, 0.3); -} +} \ No newline at end of file diff --git a/js/main.js b/js/main.js index 3aafa8d..99b2d50 100644 --- a/js/main.js +++ b/js/main.js @@ -4410,10 +4410,10 @@ var _Bitwise_shiftRightZfBy = F2(function(offset, a) return a >>> offset; }); var $author$project$Main$LinkChanged = function (a) { - return {$: 4, a: a}; + return {$: 3, a: a}; }; var $author$project$Main$LinkClicked = function (a) { - return {$: 3, a: a}; + return {$: 2, a: a}; }; var $elm$core$Basics$EQ = 1; var $elm$core$Basics$GT = 2; @@ -5208,7 +5208,7 @@ var $author$project$Main$GotAboutMsg = function (a) { return {$: 0, a: a}; }; var $author$project$Main$GotVshMsg = function (a) { - return {$: 2, a: a}; + return {$: 1, a: a}; }; var $author$project$Main$VshModel = F2( function (a, b) { @@ -7269,7 +7269,7 @@ var $author$project$Main$update = F2( _v0$4: while (true) { switch (_v0.a.$) { - case 2: + case 1: if (_v0.b.$ === 1) { var ms = _v0.a.a; var _v1 = _v0.b; @@ -7295,10 +7295,10 @@ var $author$project$Main$update = F2( } else { break _v0$4; } - case 4: + case 3: var url = _v0.a.a; return A2($author$project$Main$mux, model, url); - case 3: + default: var urlRequest = _v0.a.a; if (!urlRequest.$) { var url = urlRequest.a; @@ -7314,8 +7314,6 @@ var $author$project$Main$update = F2( model, $elm$browser$Browser$Navigation$load(href)); } - default: - break _v0$4; } } return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); @@ -7323,9 +7321,9 @@ var $author$project$Main$update = F2( var $elm$virtual_dom$VirtualDom$map = _VirtualDom_map; var $elm$html$Html$map = $elm$virtual_dom$VirtualDom$map; var $elm$html$Html$nav = _VirtualDom_node('nav'); -var $author$project$Common$Class$navbar = 'navbar'; -var $author$project$Common$Class$navbarIcon = 'navbar-icon'; -var $author$project$Common$Class$navbarIconActive = 'navbar-icon-active'; +var $author$project$Common$Class$navbar = $elm$html$Html$Attributes$class('navbar'); +var $author$project$Common$Class$navbarIcon = $elm$html$Html$Attributes$class('navbar-icon'); +var $author$project$Common$Class$navbarIconActive = $elm$html$Html$Attributes$class('navbar-icon-active'); var $elm$core$Tuple$second = function (_v0) { var y = _v0.b; return y; @@ -7336,18 +7334,19 @@ var $author$project$Common$Element$navbar = function (active) { _Utils_Tuple2(0, '👽'), _Utils_Tuple2(1, '⌨️') ]); + var activated = function (id) { + return _Utils_eq(id, active) ? _List_fromArray( + [$author$project$Common$Class$navbarIconActive]) : _List_Nil; + }; var mark = F2( function (id, s) { return A2( $elm$html$Html$a, _Utils_ap( - _Utils_eq(id, active) ? _List_fromArray( - [ - $elm$html$Html$Attributes$class($author$project$Common$Class$navbarIconActive) - ]) : _List_Nil, + activated(id), _List_fromArray( [ - $elm$html$Html$Attributes$class($author$project$Common$Class$navbarIcon), + $author$project$Common$Class$navbarIcon, $elm$html$Html$Attributes$href( $author$project$Route$toString(s.a)) ])), @@ -7360,9 +7359,7 @@ var $author$project$Common$Element$navbar = function (active) { return A2( $elm$html$Html$nav, _List_fromArray( - [ - $elm$html$Html$Attributes$class($author$project$Common$Class$navbar) - ]), + [$author$project$Common$Class$navbar]), result); }; var $author$project$Main$toActiveIndex = function (model) { @@ -7376,28 +7373,25 @@ var $elm$browser$Browser$Document = F2( function (title, body) { return {O: body, af: title}; }); -var $author$project$Common$Class$appCenter = 'app-center'; +var $author$project$Common$Class$appCenter = $elm$html$Html$Attributes$class('app-center'); var $author$project$Common$Link$attr = $elm$html$Html$Attributes$href; -var $author$project$Common$Class$bg = 'bg'; +var $author$project$Common$Class$bg = $elm$html$Html$Attributes$class('bg'); var $author$project$About$Class$bg = _List_fromArray( [ - $elm$html$Html$Attributes$class($author$project$Common$Class$bg), + $author$project$Common$Class$bg, $elm$html$Html$Attributes$class('about-bg') ]); -var $author$project$Common$Class$button = 'button'; +var $author$project$Common$Class$button = $elm$html$Html$Attributes$class('button'); var $author$project$About$Class$button = _List_fromArray( [ - $elm$html$Html$Attributes$class($author$project$Common$Class$button), + $author$project$Common$Class$button, $elm$html$Html$Attributes$class('about-button') ]); var $author$project$Common$Element$button_ = F3( function (elem, attrs, txt) { return A2( elem, - A2( - $elm$core$List$cons, - $elm$html$Html$Attributes$class($author$project$Common$Class$button), - attrs), + A2($elm$core$List$cons, $author$project$Common$Class$button, attrs), _List_fromArray( [ $elm$html$Html$text(txt) @@ -7417,21 +7411,22 @@ var $author$project$About$Asset$github = $author$project$About$Asset$asset( _List_fromArray( ['github.svg'])); var $author$project$About$Class$github = $elm$html$Html$Attributes$class('about-github'); -var $author$project$Common$Class$h1 = 'h1'; +var $author$project$Common$Class$h1 = $elm$html$Html$Attributes$class('h1'); var $author$project$About$Class$h1 = _List_fromArray( [ - $elm$html$Html$Attributes$class($author$project$Common$Class$h1), + $author$project$Common$Class$h1, $elm$html$Html$Attributes$class('about-h1') ]); var $elm$html$Html$h1 = _VirtualDom_node('h1'); -var $author$project$Common$Class$h3 = 'h3'; +var $author$project$Common$Class$h3 = $elm$html$Html$Attributes$class('h3'); var $author$project$About$Class$h3 = _List_fromArray( [ - $elm$html$Html$Attributes$class($author$project$Common$Class$h3), + $author$project$Common$Class$h3, $elm$html$Html$Attributes$class('about-h3') ]); var $elm$html$Html$h3 = _VirtualDom_node('h3'); var $elm$html$Html$img = _VirtualDom_node('img'); +var $author$project$Common$Class$link = $elm$html$Html$Attributes$class('link'); var $author$project$Common$Link$mailto = 'mailto:' + $author$project$Common$Link$email; var $elm$html$Html$Attributes$src = function (url) { return A2( @@ -7470,6 +7465,35 @@ var $author$project$About$Main$view = function (_v0) { _List_fromArray( [ $elm$html$Html$text('🎓 University of Southampton') + ])), + A2( + $elm$html$Html$h3, + $author$project$About$Class$h3, + _List_fromArray( + [ + A2( + $elm$html$Html$a, + _List_fromArray( + [ + $author$project$Common$Class$link, + $elm$html$Html$Attributes$href('https://uw.co.uk/') + ]), + _List_fromArray( + [ + $elm$html$Html$text('@utilitywarehouse') + ])), + $elm$html$Html$text(' '), + A2( + $elm$html$Html$a, + _List_fromArray( + [ + $author$project$Common$Class$link, + $elm$html$Html$Attributes$href('https://aquilex.org/') + ]), + _List_fromArray( + [ + $elm$html$Html$text('@aquilex') + ])) ])) ])); var entitled = $elm$browser$Browser$Document('👽 About Me'); @@ -7478,10 +7502,7 @@ var $author$project$About$Main$view = function (_v0) { [ A2( $elm$html$Html$div, - A2( - $elm$core$List$cons, - $elm$html$Html$Attributes$class($author$project$Common$Class$appCenter), - $author$project$About$Class$bg), + A2($elm$core$List$cons, $author$project$Common$Class$appCenter, $author$project$About$Class$bg), general(items)) ]); }; @@ -7535,39 +7556,35 @@ var $author$project$About$Main$view = function (_v0) { ])) ]))); }; -var $author$project$Common$Class$appTop = 'app-top'; +var $author$project$Common$Class$appTop = $elm$html$Html$Attributes$class('app-top'); var $author$project$Vsh$Class$bg = _List_fromArray( [ - $elm$html$Html$Attributes$class($author$project$Common$Class$bg), + $author$project$Common$Class$bg, $elm$html$Html$Attributes$class('vsh-bg') ]); var $author$project$Vsh$Class$h1 = _List_fromArray( [ - $elm$html$Html$Attributes$class($author$project$Common$Class$h1), + $author$project$Common$Class$h1, $elm$html$Html$Attributes$class('vsh-h1') ]); -var $author$project$Vsh$Class$close = 'vsh-close'; +var $author$project$Vsh$Class$close = $elm$html$Html$Attributes$class('vsh-close'); var $elm$html$Html$header = _VirtualDom_node('header'); var $elm$html$Html$p = _VirtualDom_node('p'); var $elm$html$Html$pre = _VirtualDom_node('pre'); -var $author$project$Vsh$Class$textarea = 'vsh-textarea'; -var $author$project$Vsh$Class$topbar = 'vsh-topbar'; -var $author$project$Vsh$Class$window = 'vsh-window'; +var $author$project$Vsh$Class$textarea = $elm$html$Html$Attributes$class('vsh-textarea'); +var $author$project$Vsh$Class$topbar = $elm$html$Html$Attributes$class('vsh-topbar'); +var $author$project$Vsh$Class$window = $elm$html$Html$Attributes$class('vsh-window'); var $author$project$Vsh$Main$vshDisplay = function (display) { return A2( $elm$html$Html$div, _List_fromArray( - [ - $elm$html$Html$Attributes$class($author$project$Vsh$Class$window) - ]), + [$author$project$Vsh$Class$window]), _List_fromArray( [ A2( $elm$html$Html$header, _List_fromArray( - [ - $elm$html$Html$Attributes$class($author$project$Vsh$Class$topbar) - ]), + [$author$project$Vsh$Class$topbar]), _List_fromArray( [ A2( @@ -7581,7 +7598,7 @@ var $author$project$Vsh$Main$vshDisplay = function (display) { $elm$html$Html$a, _List_fromArray( [ - $elm$html$Html$Attributes$class($author$project$Vsh$Class$close), + $author$project$Vsh$Class$close, $elm$html$Html$Attributes$href( $author$project$Route$toString(0)) ]), @@ -7590,9 +7607,7 @@ var $author$project$Vsh$Main$vshDisplay = function (display) { A2( $elm$html$Html$pre, _List_fromArray( - [ - $elm$html$Html$Attributes$class($author$project$Vsh$Class$textarea) - ]), + [$author$project$Vsh$Class$textarea]), _Utils_ap( display, _List_fromArray( @@ -7607,10 +7622,7 @@ var $author$project$Vsh$Main$view = function (model) { [ A2( $elm$html$Html$div, - A2( - $elm$core$List$cons, - $elm$html$Html$Attributes$class($author$project$Common$Class$appTop), - $author$project$Vsh$Class$bg), + A2($elm$core$List$cons, $author$project$Common$Class$appTop, $author$project$Vsh$Class$bg), _List_fromArray( [ A2( From 135a95db37183f91cf0b52ef36b22f892a35ac52 Mon Sep 17 00:00:00 2001 From: sharpvik Date: Sat, 31 Dec 2022 17:15:31 +0000 Subject: [PATCH 12/15] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sh?= =?UTF-8?q?arpvik/sharpvik.github.io@1ad0382515a079946883483e8ba730da5224f?= =?UTF-8?q?0b4=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/common.css | 7 +- css/main.css | 6 +- css/skills.css | 55 -- css/typer.css | 54 ++ css/vsh.css | 2 - index.html | 42 +- js/main.js | 2449 +++++++++++++++++++++++++++++++++++++++--------- js/setup.js | 12 + 8 files changed, 2079 insertions(+), 548 deletions(-) delete mode 100644 css/skills.css create mode 100644 css/typer.css create mode 100644 js/setup.js diff --git a/css/common.css b/css/common.css index 1f586f5..b999d1d 100644 --- a/css/common.css +++ b/css/common.css @@ -106,4 +106,9 @@ -webkit-box-shadow: 0px 3px 7px 0px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0px 3px 7px 0px rgba(0, 0, 0, 0.3); box-shadow: 0px 3px 7px 0px rgba(0, 0, 0, 0.3); -} \ No newline at end of file +} + +.transparent { + opacity: 0 !important; + transition: opacity 0.3s; +} diff --git a/css/main.css b/css/main.css index ede3745..1638642 100644 --- a/css/main.css +++ b/css/main.css @@ -1,16 +1,18 @@ @import url("https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@500&display=swap"); + @import "common.css"; @import "about.css"; -@import "skills.css"; @import "vsh.css"; +@import "typer.css"; * { padding: 0; margin: 0; outline: none; - font-family: "Open Sans", Helvetica, Tahoma, Geneva, Verdana, sans-serif; } body { height: 100vh; + font-family: "Open Sans", Helvetica, Tahoma, Geneva, Verdana, sans-serif; } diff --git a/css/skills.css b/css/skills.css deleted file mode 100644 index caa0329..0000000 --- a/css/skills.css +++ /dev/null @@ -1,55 +0,0 @@ -.skills-bg { - background-color: #fff4c4; -} - -.skills-h1 { - color: #ff7700; -} - -.skills-h3 { - color: #ff851b; -} - -.skills-row { - display: flex; - justify-content: space-evenly; -} - -.skills-card { - width: 40%; - min-width: max-content; - max-width: 350px; - padding: 15px; - background-color: white; - border-radius: 10px; - -webkit-box-shadow: 0px 3px 7px 0px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0px 3px 7px 0px rgba(0, 0, 0, 0.3); - box-shadow: 0px 3px 7px 0px rgba(0, 0, 0, 0.3); - margin: 15px 0; -} -.skills-card h2 { - color: #ff7700; -} -.skills-card h3 { - color: #ff851b; - margin-top: 10px; -} -.skills-pill { - display: inline-block; - margin: 15px 10px 0 0; - background-color: #fff4c4; - color: #ff7700; - padding: 5px 10px; - border-radius: 20px; - text-decoration: none; -} - -@media screen and (max-width: 550px) { - .skills-row { - flex-direction: column; - } - .skills-card { - width: 80%; - margin: 10px auto; - } -} diff --git a/css/typer.css b/css/typer.css new file mode 100644 index 0000000..a85f5bd --- /dev/null +++ b/css/typer.css @@ -0,0 +1,54 @@ +.typer-bg { + padding: 25px 0; + background-color: #efead0; + min-height: calc(100% - 50px); +} + +.typer-info { + height: 140px; + opacity: 1; + transition: opacity 0.3s; +} + +.typer-h1 { + color: #333538; +} + +.typer-h3 { + color: #8f8e84; + line-height: 1.8rem; + margin: 5px 0; +} + +.typer-url { + color: #333538; + text-decoration: underline; +} + +.typer-highlight { + display: inline-block; + padding: 0 8px; + background-color: #333538; + color: #efead0; + border-radius: 5px; +} + +.typer-text { + font-family: "Roboto Mono", monospace; + font-size: 28px; + text-align: left; + width: 95%; + max-width: 750px; + margin: auto; + line-height: 1.5em; +} +.typer-text-grey { + color: #8f8e84; +} +.typer-text-black { + color: #333538; +} +.typer-text-red { + color: #c43c53; + background-color: #ffced3; +} diff --git a/css/vsh.css b/css/vsh.css index 2d3aed9..3148f7b 100644 --- a/css/vsh.css +++ b/css/vsh.css @@ -1,5 +1,3 @@ -@import url("https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@500&display=swap"); - .vsh-bg { background-color: #dce7ff; } diff --git a/index.html b/index.html index a32ab63..9b69e21 100644 --- a/index.html +++ b/index.html @@ -1,28 +1,18 @@ - - - - - Loading... - - - - -