{"componentChunkName":"component---src-templates-post-post-jsx","path":"/blog/music-generation","result":{"data":{"markdownRemark":{"html":"<p>On 20th October the new version of React was released which was a major release for ReactJS after two long years. But surprisingly there were no major developer features that were introduced in this release, rather features related to backward compatibility were introduced to make it easier to upgrade React.</p>\n<h2>Why no new features in React 17 ?</h2>\n<p>The new version of React doesn't add any new developer features to it rather it focuses on adding backward compatibility with old versions of react. React 17 will serve as the bridge between the older and upcoming versions of ReactJS. The team is working on the new features like concurrent mode but they are not a part of this release.</p>\n<p>React 17 allows multiple versions of React to be embedded inside the DOM tree. This is one of the major benifits of React 17.</p>\n<h2>Gradual React Upgrades</h2>\n<p>With React 17 you can do gradual React updates. You can update the entire app from the older version to the new version completely or part by part.</p>\n<p>React 17 provides two options to upgrade your app to the next version of React, say React 18. Either you can upgrade your entire app at once or migrate your app piece by piece.</p>\n<h2>How is it possible to embed different versions of react with React 17 ?</h2>\n<p>In React 17 changes have been made to event delegation. It was possible even before to embed multiple versions of React inside a DOM tree but it was a very delicate move considering how the React event system worked.</p>\n<p>In React we write a click event like:</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\">    <span class=\"token operator\">&lt;</span>button onClick<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>handleClick<span class=\"token punctuation\">}</span><span class=\"token operator\">></span></code></pre></div>\n<p>This event does not attach itself to the document node on which it is written rather it attaches itself to the document root in React 16 and previous versions of React. In React 17 the event is attached to the root dom container in which your tree is rendered. </p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\">    <span class=\"token keyword\">const</span> rootNode <span class=\"token operator\">=</span> document<span class=\"token punctuation\">.</span><span class=\"token function\">getElementById</span><span class=\"token punctuation\">(</span><span class=\"token string\">'root'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ReactDOM<span class=\"token punctuation\">.</span><span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&lt;</span>App <span class=\"token operator\">/</span><span class=\"token operator\">></span><span class=\"token punctuation\">,</span> rootNode<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>The below diagram shows us how the event progation works in React 16 vs React 17.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 510px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 72.8%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC7UlEQVQ4y21UyXLTQBDVb7FcuHKEI3wgF5aiyE4WKl6SkJUEm0SJbSTL2vfNtkb96JGdQAGHrlF1v3nT77nbyqOVCs/WK7z+IvBiR+D55hwy92RVcFT/xGOOl4x7xfjnWxWeLnP3daVtELocpxbh2KxxZAMdE2iPa8ja/+LYlHjGTgidv2oKZoAMmhIw509dhfAdQCzykPkl5jeWo6kt44+aEsQClj9H4OfwvRxm5z2cs11E5gRZViPPgSyn5kwzarA+3wmCEkkiHur3oRQFEEUz6EaA8WAE72QTqRch1gdIDA0FgyTm/pQknl9A+2nzvSnKcllbhlJwF76XwXESGIaPKvCZMEAe5kyoI3N9lNPFpSlfltgknkHTbMRBjopl5kuykh9U0rRupKTxFLqV4kJPEU0MyIcS00LqOA2wlJIYl6SC8YBnh7g0SugBoWbSexVKGFXwIgHbYxnuDBdagtiyucMMecw+sZdFXjekIXvnM94NK5zeRDjUBC71Obr9bEEoO/TjGle2wB4DWmpIF3c2uTpL9WOShKntND6VBTVKRp7AkTHHu6MJ3rRdDN0KA3OO4WSGOVujXFszrPd87Nxm1DaALz0L6rczSvi1PIiRul7joZRsRYR9NcJqP8T2dYa1foqtXoSALRgyqbRE6YwKbI0ErY0Ie6Mpdc/7dHhtgq2kyHKQR8XCQ+7wh0vYvsuxMiCs3NXY0oG35yGuLIGBXS0kfx6U2FBz2lFjrN4W1P0+pNbPEhfjgiwreiBLuIvjSYWP6hQr6hyfhoQP1xW21RwH+gw/zIp/sBrKWj/AgVaibYH21ADdYYz9CajnLIa6bMaBCfn7xBRYvXJxyuu5MaqxxsQtXje5gm7MY8U4pW+WOBmX1GLprduQ9gzQV95VO+YNK34P7JQ7HYeEMy1FR6+wfjPDrsb7PgFUT44MFnMowVogcGgI7oDQY5/kxWZQGzI8DK08w6TGGf+JHHJXlzbh1udcuuhO1n8BejNYs946D/8AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"react 17 delegation\"\n        title=\"react 17 delegation\"\n        src=\"/static/8f258b26b71ab5fd92c2690d3eb0e0fa/527fd/react_17_delegation.png\"\n        srcset=\"/static/8f258b26b71ab5fd92c2690d3eb0e0fa/3e256/react_17_delegation.png 250w,\n/static/8f258b26b71ab5fd92c2690d3eb0e0fa/b30f8/react_17_delegation.png 500w,\n/static/8f258b26b71ab5fd92c2690d3eb0e0fa/527fd/react_17_delegation.png 510w\"\n        sizes=\"(max-width: 510px) 100vw, 510px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>This is why we can nest muliple versions of React in React 17.</p>\n<h2>Changelog in React 17</h2>\n<h3>The new JSX transform</h3>\n<p>With the new React 17 you don't need to import React while writing a React component.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> <span class=\"token function-variable function\">MyComponent</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n    <span class=\"token operator\">&lt;</span>div<span class=\"token operator\">></span><span class=\"token string\">\"some text man\"</span><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>div<span class=\"token operator\">></span>\n<span class=\"token punctuation\">)</span></code></pre></div>\n<p>The above code will turn into </p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> jsx <span class=\"token keyword\">as</span> _jsx <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">\"react/jsx-runtime\"</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">MyComponent</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token function\">_jsx</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"div\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"some text man\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>The react team has worked closely with the babel developers to introduce this feature. There is a chance that this feature may reduce the bundle size according to the react docs.</p>","timeToRead":2,"frontmatter":{"title":"Music Generation","date":"18 Dec 2020","tags":["keras","python","flask"],"path":"blog/music-generation","excerpt":"A deep Neural Network tuned for jazz music generation, with a comparative study on multiple network architectures like LSTM and Transformers. A front end developed on React that allows users to feed in their own input notes while the model generates some infinite music!","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='217'%20viewBox='0%200%20400%20217'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%2051v51h12l13%201H0v6h12l13%201H12c-11%200-12%200-12%202s1%202%207%202l7%201H0v3c0%203%200%203%207%203l7%201H0v95h401V0H0v51m151-36c-8%204-10%2014-6%2023%204%208%201%208%2063%208h55l3-3c8-8%206-23-3-28-5-3-107-3-112%200m180%202c-9%206-8%2021%202%2026%205%203%2054%203%2059%201%206-3%208-6%208-14%200-15-1-15-37-15-27%200-29%200-32%202M104%2092v19H71l16%201h17v30a824%20824%200%20000-51m-86%2091c-15%205-15%2026-1%2031%2017%206%2031-16%2017-28-5-5-10-6-16-3m51-1c-13%204-16%2021-5%2030%204%203%2014%204%2019%200%2015-11%204-36-14-30m48%201c-13%206-13%2024-1%2030%2014%206%2029-6%2024-21-4-9-14-13-23-9m52%200c-12%203-15%2017-7%2026%209%2011%2027%206%2029-9%200-6%200-8-5-13-5-6-10-7-17-4m51-1c-8%202-12%209-12%2018%202%2021%2033%2020%2033-2%200-11-11-19-21-16m48%201c-13%206-13%2024-1%2030%206%203%2011%203%2016%200%2018-10%204-39-15-30m52-1c-20%208-12%2036%209%2033%2010-2%2016-15%2011-25-4-7-13-10-20-8m51%200c-8%202-12%2010-12%2018%202%2019%2028%2020%2033%202%203-12-9-24-21-20'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.838235294117647,"src":"/static/79b0b87a20e4d8ff7f7f9809c0d3fac6/31987/musicgen.png","srcSet":"/static/79b0b87a20e4d8ff7f7f9809c0d3fac6/e1953/musicgen.png 250w,\n/static/79b0b87a20e4d8ff7f7f9809c0d3fac6/46604/musicgen.png 500w,\n/static/79b0b87a20e4d8ff7f7f9809c0d3fac6/31987/musicgen.png 1000w,\n/static/79b0b87a20e4d8ff7f7f9809c0d3fac6/0dadc/musicgen.png 1500w,\n/static/79b0b87a20e4d8ff7f7f9809c0d3fac6/ed396/musicgen.png 2000w,\n/static/79b0b87a20e4d8ff7f7f9809c0d3fac6/d004a/musicgen.png 3622w","sizes":"(max-width: 1000px) 100vw, 1000px"}}}}},"allMarkdownRemark":{"edges":[{"node":{"frontmatter":{"path":"blog/icbs","title":"Consultation Booking System","tags":["python","firebase","raspberrypi"],"excerpt":"An integrated professor-student realtime consultation booking system.","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='234'%20viewBox='0%200%20400%20234'%20preserveAspectRatio='none'%3e%3cpath%20d='M171%2046c-14%202-26%206-26%208h2c2-6%2041-8%2085-6%2021%201%2023%202%2026%209%204%207%203%2045-1%2052-3%205-15%206-57%206-35%200-43%200-51-5l-3-1c0%201%204%204%2011%206%2011%203%2091%202%2098-2%205-3%207-12%207-35%201-24-3-30-17-31-12-1-66-2-74-1m-31%2012a332%20332%200%20002%2044c3%200%203-2%203-15%200-20-1-29-3-30l-2%201m54%200c-2%201%200%2041%202%2043h8c9-1%2013-5%2012-11-1-4-5-9-8-11-2%200-1-1%202-4%206-6%206-9%202-14-4-3-4-3-11-4l-7%201m-29%202c-9%206-13%2022-8%2032%204%207%206%208%2016%209%208%200%208%200%208-2s-2-3-8-3c-8%200-12-4-14-13-1-9%208-23%2013-20%202%202%204%201%204-1%200-4-6-5-11-2m67%200c-3%202-6%207-6%2010%200%204%202%206%208%209%2010%204%2014%2010%209%2014-2%203-6%202-11-1-4-2-5-2-6-1-5%205%2014%2012%2020%207%208-6%203-17-9-23-6-3-7-5-6-8%202-4%206-5%2011-5h5c0-4-11-5-15-2m-35%203l1%207v5h3c7-2%2011-7%208-11-2-3-13-4-12-1m2%2025c0%209%200%209%204%208%2010-1%2011-9%201-13-6-3-6-3-5%205m-59%2048v7h3c3%200%206-3%205-5v-4c0-3-1-4-4-4h-4v6'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.7045454545454546,"src":"/static/fba3ec7bc8986a5670124b1e4f67f29f/4fe8c/icbs.jpg","srcSet":"/static/fba3ec7bc8986a5670124b1e4f67f29f/aabdf/icbs.jpg 150w,\n/static/fba3ec7bc8986a5670124b1e4f67f29f/9dc27/icbs.jpg 300w,\n/static/fba3ec7bc8986a5670124b1e4f67f29f/4fe8c/icbs.jpg 600w,\n/static/fba3ec7bc8986a5670124b1e4f67f29f/9842e/icbs.jpg 900w,\n/static/fba3ec7bc8986a5670124b1e4f67f29f/50ba2/icbs.jpg 1109w","sizes":"(max-width: 600px) 100vw, 600px"}}}}}},{"node":{"frontmatter":{"path":"blog/stagecraft","title":"StageCraft - a neural network based game that helps actors build acting skills","tags":["tensorflow","opencv","tkinter"],"excerpt":"Winner for HackNRoll 2019, a gamified application that allows users to improve their acting skills by thriving on a deep neural network emotion classifier.","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='253'%20viewBox='0%200%20400%20253'%20preserveAspectRatio='none'%3e%3cpath%20d='M164%205c-3%203-3%205-3%208l-3%202-2%201h2c5-1%204%201-2%206l-5%206%206-5%207-4-1%202c-2%201-3%203-1%203l-1%204c-2%204-2%205-1%205l-1%205c-2%204-4%207-4%204h-2l-3-1-1-1c-2%202-9-1-8-3h-7l-5-1c-2%200%208%204%2012%204%206%202%207%202%203%207l-3%206%204-5c4-6%2010-7%206-1l-1%204%203-3c1-4%203-5%203-2h1c1-1%201-1%201%201l-1%203-1%201v-2c0-2%200-2-1%200-1%203-5%205-5%203h-1c-2%202-8%204-8%202h-1c-1%202-2%202-2%201l-2-1v1c2%202-7%204-9%203h-1c1%201%200%202-1%202-1%201-1%201%201%201l3%201h1c-1-2%205-5%206-3l3-1%205-2c3-1%203-1%203%202l1-1c1-3%205-5%205-3h4c0-2%203-3%204-2v2c-1%202%200%203%202%201l-4%207c-5%207-5%207-7%205l-1-2c0-1%201-1%201%201h1l2-4c2-2%202-3%200-3h-1l-2%203h-1c2-5%202-7%200-3-2%205-4%206-5%203%200-1-1-2-2-1l-1%201c1%200-3%2010-5%2011l-2-2h-1c1%202%200%202-1%202-2%200-2%200%200%201l3%202-2%201-3%201-1%202c-1%203%202%203%203%200h1c1%202%201%202%202-1l1-3%202%202%202%204%201%201v2c-1%201-1%201-1-1l-2%203-2%205-1-3c0-2-1-3-2-3v3l1%202c1%202%201%202-1%202-3%200-5-3-3-4%201%200%202-1%201-2l1-1%201-2c0-3-2-3-2%200-1%202-1%202-2%201l-1-2-1-1c-1%200-3-5-2-7l2%201c1%202%202%202%202%201l-1-3c-1%200-1-1%201-1v-1c-2%200-3-2-1-2l1-2h-1c-2%202-2%202-3%200l-2-2%201%202c0%203-3%203-4-1v-5l2%202%201%202-6-13c-1-1-1-1-1%201h-1l-1-3h2c0-2-2-3-2-2l-1-2%201-3%201-1-1-1h-1c0%202-1%200-2-3%200-2%201-3%203%200l2%201-1-2c-3-4-2-5%204-3l6%201-5-2c-8-3-8-5%200-8l5-2-6%201c-5%202-5%202-6%200-5-7-17-4-17%204%200%202-1%203-3%204l-2%201h2c3-1%203%200%204%201l1%202%201%203-1%201-2%201c-3%204-2%205%200%202l2-1c1%201%201%200%202-1%201-3%208-4%208-2l3%2010c2%208%202%2010-1%208-4-2-9-1-11%202-2%202-5%203-7%201l1-5%202-5-3%204-4%205c-2%200-2%200-1-2%200-2%200-2-2-1-1%201-3%202-5%201h-3l3%201c2%201%203%202%202%203h1c2-2%205-1%205%201h1c1-2%206%200%207%203l-4%203c-5%201-6%201-5-1%200-2%200-2-2%201l-5%204c-4%201-5%200-3-1l1-2-2%201-3%202-2%202v3h1c2-2%202-2%204-1%202%203%204%202%202%200s-2-2%201-3l4-1h2l6-3c7-1%208%200%203%204l-3%204%205-3c2-3%203-3%203-1-1%202%200%205%202%203%200-2%202-2%204-2%203%200%203%201%205%205l2%203c0-2%203%202%203%204l-1-1c-2-2-2-2-2%202%200%203%201%204%202%203v1c0%203%201%202%204%200%202-2%202-2%200-3s-2-4%200-3l1-1c-1-1%200-2%201-3h1l1%201c1-1%203%200%202%201h-1c-1-1-1-1-1%201l-1%202-1%202h2c1-1%201-1%201%201v3c3%202%202%203%200%203l-3-2-2-2%201%203v2h-2l-2%201-2-1c0-4-10-6-13-3h-2c-2-2-3-1-2%201l1%203c-1%201-6-1-6-3h-1c-1%202-4%201-4-1v-1l-3%202-1%201-1%203-2%202-5%208-2-2c0-2%200-2-1-1h-1c-1-1%202-9%204-12l2%202h1c-1-2%200-2%202-1h4l-4-1c-3-1-3-3%200-9%201-3%202-4%203-3s1%202-1%204l-1%202%202-1%203-2%201-1%202-3%203-3-4%202c-3%203-5%203-6-1l-4%205-3%207-3-3c-2-4-3-6-1-6l1-2h-2c-1%202-2%202-3%201h-1l1%201v3l1%201c0-1%202%200%203%202l2%203h-2l-4-1v-2c0-2%200-2-1-1s-2%200-3-3l-3-3%201%204c2%204%202%204%200%203-2%200-2%200%200%201l1%203h4c1-2%207%200%207%202-1%204-2%206-3%205l-1%201c1%201%200%203-1%203l-1%203-1%203c-1%203-1%203-3%202-1-1-1-1-1%201%201%202%201%202-1%202s-4-3-3-6l-1-1h-1c-1-1-1-1-1%201l2%203c1%203%201%204-1%204-1%201-1%201%201%201%203%200%204%203%203%206h-4c-3-1-4-4-2-5v-1c-3%200-3-2-1-4l2-2-3%202c-2%201-2%201-2-1v-1l-6%201c-5%200-9%203-9%206%200%202-2%202-14%202H9l13%201c12%200%2013%200%2014%202%201%204%205%206%209%206l6%201c1%201%201%201%201-1-1-2-1-2%201-1%203%203%204%202%201%200-2-3-1-4%202-3%202%200%203%201%203%202h1c1-2%204-1%203%202h1c2-1%202-1%203%202l1%204c0%202%201%201%203-1%202-1%202-1%202%201-1%203%200%202%201-1l2-3%205%208%201%201c2%200%201-2-2-6-2-3-2-4%202-2%202%201%203%201%202%203h1c1-1%202%200%203%202l2%202-1-3c-1-2-1-2%205-1l4%203c0%203-6%205-7%203h-1l2%203%201%201c0-2%202-3%205-3%202%200%201%203-3%206l-3%203-2-3c-3-5-7-9-7-7l1%202-2%202-2%201h3c3-1%204-1%206%203%202%205%203%205%204%203s1-2%202-1h1l2-4c3-2%203-2%206-1%204%203%2011%201%2011-3l2-1c1%200%202%201%201%202%200%202%200%202%201%201%201-2%202-2%204-1%204%201%204%201%203%203-1%201-2%203-1%204h-3l1%202v3c0%204-2%203-2-1%201-2%201-2-2%201l-3%202%201-2%201-3%202-2%202-4c0-3%200-3-1-1-2%202-2%203-3%201l-1-1v2c1%201%202%202%201%203h-1l-2-3c-2-1-3%200-1%202%201%201%201%202-1%207-3%208-3%208-7%208-2%201-3%201-4-2-1-4-2-4-1%201v4l-4-3-4-3%206%206c2%200%200%203-2%203v1c2%200%201%204-1%205s-2%201%200%201c1%200%204%201%205%203%202%202%208%203%2012%201%201-1%202%200%202%201v3l-3%207c-2%208-2%208-6%208-2%200-3-1-4-3-1-1-1-2-2-1h-1c-2%200-1%201%201%203v3l-1%201c1%203-1%203-5%201l-7-1%205%202c5%202%206%202%206%205%200%208%2012%2011%2017%204%201-2%201-2%206%200l6%201-5-2c-6-2-8-5-5-6v-1c-3%200-2-2%200-5l1-2-2%202c-3%203-4-3-1-7%201-2%202-4%201-5%200-2%200-2%201-1s1%201%202-1c1-1%201-1%205%202%205%204%207%203%202%200l-2-3%202-3c2-2%203-3%205-2h4l-3-1c-2-1-3-2-2-3h-1l-3%201c-2%200-2%200-1%201%202%200%202%201%200%204-3%203-4%203-4%200%200-2%200-2-1-1%200%202-2%200-1-2h-2l1-2c2%201%204-3%203-5l-1%201-1%202v-3c1-3%201-3%202-1%201%201%201%201%201-1l3-2-1%204v3l2-3c2-5%203-6%207-6%203-1%203-1%202%201h1c2-2%202-2%204-1%203%202%204%201%202-1s-2-2%200-2c2-1%202%200%204%202l1%204-1-4c0-5-1-5-3-4h-2l1-2c0-1-1-1-2%201l-2%202-1-4-2-4-1-2v-3c-2%200-5-4-4-5l1%201h1l1-2%201-1h2l-1%202v1c2%200%202%200%201%201v3c1%201%201%201%201-1%201-1%202%200%203%204l3%205c1-1%202-1%203%201%202%201%202%202%201%202v1c2%200%204%208%203%209-1%202%202%201%204-1l3-2%201-2c0-1%201-1%202%201v5c0%202%200%202%201%201h2l-2-5c-1-4%200-7%204-5%203%201%2012%201%2012-1v-2l2%202c0%202%200%202%201%201h1c0%201%201%202%202%201l1%202v1c1-2%202-2%203%200%202%201%202%201%200%202l-2%202-4-5-1-1h-1l-2-1%201%202%201%202h-1c0-1-2%201-3%206-2%207-3%208-6%208-2%200-3%200-4-4-1-3-1-4-2-3h-1l1%204-1%201c-2-1-1%200%201%202%201%202%201%202-1%201-2%200-2%200-1%201v3c-1%201-4%200-4-2h-1c-1%202-1%202-2%201%200-2-1-2-1-1l1%205c2%202%202%202%202%200v-2l2%206-1-1h-1c-1%202-1%202-4-2l-1-5v-1l-2-1c-1-2-2-2-3%200v1c2%200%208%2010%206%2010l1%201%203%205%202%202-2-4v-3l2%202c0%202%200%202%201%201%201-2%201-2%201%201l2%2012-1%202%201%202c2%203%201%205-1%202-4-3-5-2-2%201%204%204%203%205-2%204l-4-1%203%202%205%202c-1%208%209%2013%2015%208l2-4c0-3%202-3%2023-3h21l2%203c3%206%209%208%2013%204%203-2%206-10%204-10s-1-3%202-6l1-2-2%202c-3%203-5%202-3%200l1-3v-4l2-3h-1c-2%202-1-1%201-4l1-6c-1-2-1-2%200%200h1c0-2%202-3%202%200l1-1c3-2%203-5%200-3-1%201-1%201-1-2%201-4%204-7%205-4l2-1%203-2%203-1c1-1%201-1-2-1l-5%201c-2%202-3%201-2-2l1-4-2%204c-1%204-3%206-2%201%200-3%203-8%204-6l2-1%201-2%202-3%203-3-3%201c-1%201-1%201-1-2l-1%201c-2%205-4%204-2-2%201-4%204-5%204-2h4l1%201-1%204v3l2-3c0-2%202-3%202-2l1-2%201-3v-2c-1-1-1-1-2%201%200%202-5%202-6%200l1-1c2%201%202%201%202-1l-1-3h-1l-1-1%202-1v-1l1-1%202-2v-2l1%202c1%202%201%202%202%201l3%202c3%201%203%202%202%203-1%202-3%200-2-1l-1-2c-2-1-2-1-1%203l1%203c0%202%201%201%203-1h3l1%201v6h-2l-2%201c-1%201-1%201%201%201v3h2l1-1c0-2%203%200%205%203%201%202%201%202%201%200-1-3%201-3%201%200v3h-1l-1%202h-3c-2%201-7-2-6-4l-1-2-2%202v2l-1%201h1c2-1%205%201%204%203l1%201h2l2-1h5v4c-1-1-2%201-2%202%200%202%203%200%203-1h1v4c0%202%200%202%201%201s1-1%201%201v1c1-1%201-1%201%201l1%204-1%202c-2-1-1%200%201%202v2l-1-1-2-1%201%202c3%203%200%204-7%202l-8-2%206%203c6%201%208%203%208%204v2l2%204c4%203%208%204%2012%202%202-1%205-7%205-9-1-1%200-1%203-2l8-3-7%201c-6%202-7%201-4-2v-2l-1%201-2%201%201-3c3-4%204-7%201-3l-2%201v1c0%202%200%202-1%201h-1c-1%201-2%202-4%201-3%200-3-1-6-9-3-10-3-12%201-10%203%202%208%201%2011-2l5-2c2%200%202%200%200-1-4-2-3-5%203-6l3-2-5%201c-3%201-7-1-7-4%201-2%200-3-1-2l-4%201c-4%200-4-1-6-5-1-4-1-5-2-4v9c2%202%200%206-3%206-1%200-3-4-3-7v-3c-2-2%201-4%203-1l-1-3c0-2%202-3%202-1v-1c0-2%200-2%201-1s1%201%201-2l-1-3-1-1-1-3v-3c2%200%205%204%204%205l-1%201h1l5-1c5%200%206%200%208-3%203-2%206-2%208%200h3l1-1-2-1h-1l-4-1c-4-1-3-4%201-6l4-1-4%201c-4%200-8-3-6-5l1-1h-1l-6%201h-4l-3-7c-3-5-3-6-2-7s1-1%201%201v1l2-4v-2h6c4-1%205%200%207%202l2%202-2-3-1-4%201%201%201%201v-1c-1-2-1-4%202-4v-1l-1-2-1-4c-1-3%203-7%205-4%201%201%201%201%201-2-1-4-1-4-5%200-2%203-3%203-4%202l-6-1c-4%200-5%200-6-2-2-3-2-9-1-7h1v-2l2-3c1-3%201-4%205-4l4%201h2c-1%201%200%204%201%207l3%203-1-3c-2-3-1-4%201-1s3%201%200-2c-1-2-1-2-2-1s-1%201-1-1v-2l-1-3%201-1c1%201%201%200%200%200-1-3%201-3%207-1%205%201%206%202%207%204s2%203%202%200c-1-1-1-2%201-2%201-1%201-1-1-1l-3-2h-1c-1%201-10-2-10-4-1-2%204-5%206-3l1-1c2-2%205-1%207%203l3%203-2-4c-3-4-2-4%204-6%203%200%204%200%206%202%204%204%205%204%202%200-3-3-3-3%202-4l3-2-6%201h-6c-2-3-4-2-2%200s2%202-2%203h-5l-1%201c0%202-4%201-5-1-1-1-1-1-1%201%201%204-4%204-7%201s-7-4-12-2c-1%201-2%200-2-2v-2l3-7c2-8%202-8%205-8l4%201h1l1%201v1l2%201h1l-2-3-1-3%202%201%201%201v-2c-3-3-2-4%202-3%205%202%207%201%202-1-3-1-4-2-4-4-2-8-11-11-16-5-2%202-3%203-6%202h-2l2%201%203%203%201%204c1%201%201%201-1%203l-1%203%202-1%202-2v2c-2%202-3%203-1%203h1l-1%202-1-1h-1l-1%201%201%201h1l1%203h-1c-1-1-1-1-1%201v5l-2%201-1-2c-1%201-2-1-1-2%202-2%201-3-1-2-1%201-2%202-3%201v4h1l3%201%201%201v3c-1%203-2%202-1%200%200-2%200-2-1%200-2%203-2%204%200%203v5c-2%203-4%204-4%201h-1c-2%202-2%202-3%200-2-3%200-7%204-7%202%200%202%200%201-1l-2-1-1-1c-1%201-9-1-9-2l-1-1-3-3-3-3%201%204%202%202h-3l-5-3-2-1c0%203-3%201-4-1%200-2%200-2-1%200-1%201-1%201-2-1l-1-1c0%203-2%202-2%200%200-1%200-2%201-1l1-1h2c1%202%201%202%201%200%200-3%202-3%202%200l2%202-2-5c-1-3-1-3-2-1-1%201-1%201-2-1-1-1-1-1-1%201v2l-1-2c-1-2-1-2-1%201%200%202%200%202-1%201-3-5-10-7-14-3-2%202-2%202-1-3a652%20652%200%20007-17c2%200%203%202%205%2010l4%208h1v-1l1-3v-2h-1c0%204-1%201-2-2v-5c-1-2-1-2%201%200%203%204%203%201%200-3-4-4-3-5%201-1l3%202-2-4c-3-3-4-6-1-5l13%204-6-3c-6-2-8-2-8-4%200-10-15-12-18-3%200%202-1%202-22%202l-21%201%2021%201%2022%201c1%201%200%202-1%203l-2%202%203-1c3-2%203%201-1%205l-3%203%204-2c3-4%204-3%201%201-2%202-3%205-1%204l1%203-1%202c-1-1-1-1-1%201v4l-1%203v-3c0-2%200-2-1-1-1%202-3%202-2-1h-4c-2%200%201%203%203%203%202%201%200%207-2%207l-2-1h-1c-3%202-11%201-14-2l-3-3%202%204%202%202h-3l-4%201h4l3%201h1l3%202%203%203-1-3-2-2h10c2-1%202-1%202%201-2%205-2%206%200%202s2-4%203-2c0%202%200%202%201%201l1-2v2c0%202-2%205-2%203s0-2-1%200c-1%203-4%205-4%203h-1c-2%202-4-1-3-4%202-3%201-4-1-1s-2%204%200%206l2%202-3%201-3%203%203-1h3l1-1c0-2%204%203%204%205l-1-1h-1v1l-1%201c0%202-4%207-5%207l-1-2-2-3%201-1%201%202%202-1c1-3%202-6%200-4-1%202-2%202-4%201-1-1-2-1-1-2v-2h-1l-3%201c-3-1-3-1-2%201%202%201%202%201%201%202v1h2c1-1%204%204%204%206l-2%205-1%204-2-3-1-2h-1v-5c2-4%202-5%200-2-1%201-1%201-1-1v-2l-4-7-1-3c0%201-4-6-4-9%200-1%203-1%204%201h1l-2-4c-1-2-2-2-2-1%201%204-3%202-4-1s-1-3%201-4%202-1%201-2-2%200-2%201h-2c-1-1-1-1-1%201l-1-1c-2-3-3-6-1-4%201%202%201-1-1-4l1-2c2%201%201%200-1-4s-3-5%200-3h1l-1-2c-2-2-1-3%201-2v-5c2-7-9-13-15-8m3%2018a5522%205522%200%2001-4%2019c3-3%208-4%2012-2l2%202-5-20c-1-2-5-1-5%201M38%2041l-2%204c0%202-2%202-13%202l-13%201%2013%201h12l1%203c2%203%206%205%2010%205%202%200%203%201%206%207l4%206-1-4c-2-4-2-5%200-3s1%200-1-4c-3-3-4-4-1-4h1l-1-1v-2c0-1%202-1%206%201l6%201-5-2c-7-2-8-4-4-7%202-1%202-1%200-1l-5-2c-4-4-9-4-13-1m314-1l-3%203c0%202-1%202-2%202l-4-2c-3%200-3%200%201%202%206%202%205%204-1%206-4%202-1%202%204%200%204-1%202%203-4%207l-5%206%206-4c6-5%207-6%206-4%200%201%201%202%205%201%206%200%208-1%2010-5l2-3h12l13-1-13-1c-12%200-13%200-13-2-2-5-9-7-14-5M240%2052l2%204%201%202-2-1c-2-3-3-2-2%200l1%203-1%202%201%204c0%202%200%202%201%201s1-1%201%201v2l1%203v-2h1c2%201%202%201%201%203-1%201-2%202-1%203%201%202%203%203%202%201v-2l4%207-1-1c-2-4-4-2-2%203%201%203%204%204%204%202h1c2%202%203-1%202-4-3-7-6-12-8-11v-4c-3-2-2-4%200-1l2%202c2%200%200-7-2-8l-1-2%201-1%202%202c2%203%204%204%202%200l-1-3%202%203%203%204v1l2%203%203%203-2-1h-2l-1-1c-2-3-3-1-2%204%201%204%202%205%204%202h4l1-1v-3h1c1%202%208%202%2010%201%201-1-2-5-3-4l-1-1c1-2-4-9-6-9h-1l-1-1-4-2c-2%200-2%200-1%203%202%203%202%203%204%202%202-2%202-1%200%202l-2%202-2-5c-3-5-5-6-6-4h-1c0-3-2-2-2%200s0%202-1-1c-2-3-4-4-5-2m-75%209l-2%203h-1v-3c-2%200-7%209-6%2010l-1%201-4%203-1%203h7v-6l4%203v2c-2-1-4%202-2%203v1l-2%201h-1c0-2-2-3-2-1l-2%203%201-3c0-2%200-2-2-2l-3%202-1%201v5h3l1-1c0%203%202%202%204-1%201-2%201-2%201%200v2c2%200%204-2%205-4%200-6%205-9%2011-8l4%202%202%201%201-2h2c0-2%200-2%201-1%201%202%202%200%201-3h1c1%202%202%202%203%200%202-1%202-1%201-2s-1-1-1%201l-1-1-1-2-2%202-2%203-1%201h-1l-1%201-1-1-2-8c-2-8-3-9-6-9-2%200-3%200-4%204m61%206l-2%2011%201-2v-1h5c2-1%204%200%205%201h5v1c-1%202%200%203%202%203s2%200%201-3l-2-3v-1l-1-4c-2-8-5-12-8-12s-3%200-6%2010m43%207l-3%201v4c-1%201-1%201-2-1%200-2-1-2-1-1h-4l-2%201h-1c-2%200-2%201-1%202%202%202%203%203%203%201l2-2c1-1%201-1%201%201l-1%203-1%201h-1l2%201%202%202%202%204%202-5c2-4%204-8%203-4-1%202%201%204%202%204v-3c0-2%200-2%201-1h2l1-2c1%201%201-5-1-6h-1l-1%203-1-2c1-2%201-2-2-1M53%2076h-3c-4-3-14%201-14%205%200%202-2%202-14%202H9l13%201c13%200%2013%200%2014%202%201%204%206%207%209%207%203-1%203%200%206%206%203%207%205%209%205%206l1-2%202-3c1-2%201-2%203-1%201%201%202%203%201%204h1l2-1%203-2%202-4-3-2v2c1%201%200%202-1%203-1%202-1%202-4-1-3-2-4-2-5%202l-2-1c-2-3-3-2-1%201l1%203c-1%200-2-1-2-3l-1-3%201-1-2-1v-1l-1-1-1-1%202-1%201-2%204-1h4l-4-1c-4-1-4-5-1-6%202-1%202-1%200-1-3%200-4-2-1-4%202-2%200-3-2%200m298%200l-2%203-3%201c-2%200-2%200%200%201s3%205%201%205v1c2%200%202%202%200%204-1%202%200%203%202%201l1%202-1%202-2%201h1l1%203%202-3c2-4%202-5%206-5s9-3%209-7l13-1%2014-1h-27l-1-3c-2-5-8-7-14-4m-15%2012c-2%202-8%204-8%202h-3l-1-1h-1v-1h-2c-1%200-1%201%201%202%203%202%203%202-2%204-4%201-4%201-6-1-3-3-2-1%200%202s2%203%203%202l5-2h1l-1%202%202-1%202-1%203%202h3l-3-2-1-2%209-1%203%205%203%206%201%201c1-1%202%200%201%202h-5l-2%204-2%202-2-3c-1-4%200-6%203-5%202%200%202%200%201-1v-2l-2-1-2%201v2c-2%201-2%201-3-2-1-2-1-2-2%200-1%205-3%208-6%208a18943%2018943%200%2001-12-2c2%200%204%201%206%205%201%201%201%201%201-1-1-2-1-2%202-1%205%200%205%200%201%204l-2%203%202-1c0-1%201-1%201%201%201%201%201%201%202-2l2-2h2c1-1%205%200%208%202l2%201%202-1-1%202-1%203%201%202%201%202-2-1h-1c-1%201-2%201-3-1h-1l1%202c2%201%201%202-3%202-2%201-3%201-2-1h-1c-2%203-4%201-4-2l-1-1v5l1%203%201%201%202%202c1%201%201%202%202%201%200-2%202-1%202%201s2%200%202-3v-1c-2%202-2%202-4-1l-2-2h2c6-1%208%200%209%201%201%202%202%202%202%201l-1-1c-2-1-1-4%200-4l3%202%202%202-1-3c-1-1-1-2%201-2%201-1%201-1-1-1-4%200-4-7%200-7%202-1%201-1-2-2h-4l2-4c2-2%203-3%204-2v2l-1%203%201-1c1-1%202-2%203-1v-3c0-2%200-2%201-1h2l-1-1v-3l-1-1h-1v-1l1-2h-1c-3%202-4-1-2-3%201-2%200-3-2-1l-3-2-1-3v-2c0-2-1-2-2%200m-179%200c-3%200-5%204-3%208l1%203c-1-1-2-1-3%201-2%202-2%202%200%203%202%202%204%201%204-2l1-1%201%201%201%202%203%205c3%203%204%204%205%203h10l-1%201%201%202c2%200%204-1%204-3h2l1-2c-1-2-1-2%201-1%202%202%205%200%203-2v-3c1-2%201-2%202%200%200%202%200%203%201%202h2v-1l-1-4c-1-3-3-4-3-1l-2%202v2h-1c-2%200-2-3%200-3v-3c-1-2-1-2-3%201-1%202-1%202-2%200s-4-5-4-3l2%203c4%205%205%2010%203%209-1-1-1%200-1%201l-2%202v-2c0-2%200-2-1-1l-1-1c1-1%200-4-1-7-3-5-3-6-7-6l-4%201h-1l-1%201v1h-1v-7c0-2-2-2-5-1m70%208l-2%203h-1v-2c0-2%200-2-1-1-2%201-3%205-1%204%201-1%201%200%201%201h1c1-1%201-1%201%202v3l1%202h-2l-1-1%202%203h2l3%201h5c1%201%202%200%203-1l2-2-1%202%201%202v2c0%202%200%202%202%202s2%200%201%201c-1%200-2%201-2%203l2%202c1%201%201%201-1%201s-3%202-1%204v1l-2-1h-1l-7%201c-4%200-4%201-6%205l-2%204v1l-1%202c-2%200-2-1-1-2%202-5%201-6-1-3l-3%202%202%203c4%204%204%205%200%202-3-4-5-3-4%200%201%202%201%202%203%201h1l-1%202%201%202%201%202h-2c0%202%202%206%204%206%201%200%202-3%200-5v-1c4%201%205-1%203-5-2-3-3-5%200-3l1%201%201%201c2%203%202%203%205%203s4%200%206-4%203-5%203-3v3h1l-2%201v1l-1%202-1%202%202-1c4-3%205-2%202%201l-2%203c1%201%206%200%208-2h2l1-1h-1l-1-2c0-2-2-4-2-2l-2%201c-1%200%200-2%203-4l3-4%201-1%202-3c1-2%200-7-2-5l-1-1-4-3c-3%200-3%200-1-1l3-3%202-4-1-1-1%202h-1l-2-1c-2%200-2%200-1-1%201%200%202-1%201-2h1c2%201%204%201%204-1l1-1%202-1c1-3-1-7-3-6v-1c1-1%201-2-1-3-2-2-5%200-4%202l-1%202c0-1-2%200-2%202l-3%202%201-2c1-1%200-3-2-7-3-6-4-7-7-7s-3%201-5%204m-145%207l-4%206%203-1c4%200%205-1%203-2-2-2-1-3%201-2%201%202%202%202%202%201h1l4%201%205-1-4%201a678%20678%200%2001-5%204l2%204-2-2c-1-3-1-3-3-1h-1c1-2%200-2-4-1-2%201-2%201-1%202v3l1%202%201-1c-1-2%201-2%203%200l3%202c2%200%201%202-1%204-2%200-2%201-2%203s0%202-1%201c-2-2-2-2-3%200-3%203-2%203%203%203%203%201%204%200%205-1l2-2-1%203c-1%202-1%202%201%203%208%203%2011%202%207-2v-2l2%202c2%202%202%200%200-3l-2-4%203%203c3%204%2011%204%2012%200%201-2%201-2%202-1h1c2%200%201%202%200%203l-2%202h1l2-1v1c-2%202-1%204%202%204%204-1%204-2%202-5l-2-2%202-2c3-2%204-3%204-1h1l1-1v-6l-1-3-1%201v2c-2-1-4%203-3%204l1%201h-1c-2-1-3%200-2%201l-1%202-2-2v-1l-1%201-1-3c0-4%201-5%202-3h1l-1-1-1-2%202%201c2%203%203%203%204%202%201-2%200-4-2-2-2%200-1-3%201-5s1-4-2-4c-3-1-4%200-2%202%201%202%200%203-2%201h-1l1%202v3c-1%201-1%201-2-1-1-3-8-4-11-1h-2l1-1%201-2-2%201-4%202%202-2c2-3%203-5%200-5v-1l1-2c0-3-6-5-7-3h-1c0-4-4-3-8%204m193-5v1c-1-2-2-1-3%202-1%205%202%206%203%202%202-4%203-5%203-3-1%204%200%204%202%203%201-2%201-2%201%200v6c1%202%201%202%202%201%202-2%203-1%201%201v3l2-1%202-3c2%200-2-5-4-5h-2l2-1c1-1%202-1%201-3%200-2-3-3-3-1h-1l-1-2h-2l-1-1-2%201m-127%207h-1v-1c-1%201%201%208%202%208l1-2%202-1-1%202c-1%202%201%204%203%203h1c0%202%205%202%207%200%202-1%202-2%200-5l-3-2-1-2v-2l-2%202-2%202-2-2c-3-2-3-2-4%200m207%206h-3l-1%201h-1c-1%200-2%200-1%202%200%202%200%202-2%202s-2%200-1%201c1%200%202%201%202%203l-2%202c-1%201-1%201%201%201s2%200%202%202c-1%202%200%202%201%202h1c0%201%206%202%2010%200l4-4%201-3h13l14-1h-27l-1-3c-1-3-6-6-8-6l-2%201m-285%202c-3%200-3%200-2%202%200%202%200%202-1%201-2-2-4%203-3%206l2%201%201%201c0%204%202%208%203%208l4-3-2-1v-1c2%200%202-1%201-1l-1-2%202%201c2%202%202%202%203%201l1-2c1%201%201-6-1-9l-1-3-2%202-2%201%201-2v-1l-3%201m87%2011c-2%200-2%201-1%202%200%202%200%202-1%201-2-3-5-2-4%201h-4c-1-2-1%201%201%206%201%202%201%202%203%201l2-1-2%202v3c2%201%202%202%200%203-1%201-1%201-2-1l-2-2h-1l1-1c1%200%200-2-3-3-2-3-3-3-3-2l1%203h2l1%205%202%204c0%201-1%201-1-1-1-2-1-2-4%200s-3%203%200%203h7l2-2c0-3%202-3%202%200l-1%202-1%201%201%201h2l3%202v1c-1%200-2%201-1%202%200%202%200%202-1%200-2-4-8-4-7%201%200%204%201%205%203%205l2-1-1-4%202%203c0%202%202%201%202-1h1c0%202%203%201%203-1%201-1%200-2-1-3v-1c3%200%205-4%204-6l-2-2h2l1%201h1c3%203%208%201%2010-3%201-4%201-4%202-2%201%201%200%203-1%204v3l1%201v2l1%201c0%201%201%204%203%204l1-1h1c0%202%202%201%203-1v-4c-1-1-1%200-2%202s-1%202-1%200l-1-2v-1c1-1%202-2%201-3%200-2-1-2-4%200l-2%201%202-2%202-3c1-2%201-2%202%200%202%203%203%204%203%201h1c0%203%201%202%203%200l2-1h1v-1l-1-2%201-3v-1h-3l-1%202v3c0%203%200%203-2%202l-3-2c-2%202-1-1%202-4s3-3%202-4c-2-1-3-1-5%202-1%203-1%203-2%201h-2c0%202%200%202-2-1-3-3-2-5%200-2l2%201-1-1-1-2h3l1%201c0%202%202%203%202%200v-2h-2c0-2-3-3-4-2v1l-1%201h-1l-6%201-6-1c1-2-2-5-3-5l-3%201m160%203c-1%203-1%203-3%202h-1l-1%203c-2%201-2%201%200%201h3c2%200%203%204%202%206%200%202%200%202%201%201%202-1%202-1%204%202s2%203%200%203v1c3%200%202%201%200%203l-1%202h3c2-3%202-4%203-2h1c0-2%206%200%208%202l2%201%202-1c2-1%202-1%200-1s-2%200-2-3v-1c-1%202-2%202-3-1l-2-1%201%203c1%201%201%201-1%201l-4-1c-2%200-2%200%200-2s2-3%200-4c-1-1-1-1-2%201l-1%203-3-4-2-4c2-2%201-3%200-2-2%201-2%201-3-1-1-3-1-3%201-3v-1c-2%200-2%200-1-2l1-3-2%202M52%20138c-3%208-4%209-6%208-3-1-8%202-9%206l-2%203H22l-13%201h13l14%201%202%204c2%203%209%204%2012%202h2c2%202%203%201%202-1-1-1-2-2-1-3l1-4%204-3c6-2%206-1%204%203s-2%204-5%203h-3l2%201c3%201%203%202%202%204%200%202%200%202%202%200l3-8c2-3%203-4%204-3s1%201%201-1c-1-1-1-2%201-2v-1c-1%200-2-1-1-2%200-2%200-2-1%200l-2%202-1-2-2-2%201%203c1%202%201%202-4%203-5%202-8%202-7-1v-1l-1-2%201-2c0%201%201%201%202-1v-5c1-2%201-2%202-1l2%203%201%202c1%201%202%201%204-1%202-3%203-3%204-1%201%201%202%202%201%203h1c2-1%202-1%200-4-3-3-4-3-7%200l-2%202-1-2-2-3v-3l1-2%201%202%201%201%201%201%202%201v-2c-2-1-2-2-1-2l1-2h-1c-2%202-2%202-3%201-2-3-2-3-7%207m299%206l-1%201h-1l1%202%201%201-2-1-3-1%201%202c3%202%202%204%200%204s-2%200-1%201c3%200%203%205%200%205-2%201-2%201%200%201%203%200%203%200%203%202-1%201%200%202%201%202l6%201c5%200%208-1%209-5l1-3h13l14-1h-14c-11%200-13%200-13-2%200-3-6-7-9-7-3%201-4%200-5-1%200-2-1-2-1-1m-269%209c2%202%203%203%202%204s-2%200-3-2l-2-2%201%203c1%202%201%203-1%205s-2%202-4%200h-2c1%201%200%202-1%202v1l2%201%205%201c7%201%206%201%2013%2014l6%2010-2-6-2-6-1-1-5-9c1-1-2-2-6-3-4%200-5-1-2-3l2-2%201%203%202%201-1-3c-1-1%200-2%202-5l2-3-1%201-3-1c-4-4-5-4-2%200m117%208l-2%202-1-2%202%206%203%205%201-2%202-1c0%202%202%201%202-1h1v3l-4%201v4h-1c-1-1-1-1-2%201h-2l-2-1h-1l3-2%201-1c0-1-4-2-5-1s-1%201-1-1l-1-2c-2-1-2%200-2%201s0%202-1%201c-3-1-3%202-1%204l2%202%202-2c1-2%201-2%201%200v2l-1%203-3%204c-1%201-1%201-1-1%202-5-3%200-4%206l-1%203%202-3c2-2%202-2%202%200%201%202%204%202%204%200l2-3-1%204%203%201c3%200%204-1%203-2h1c2%201%202%201%204-1l3-3-1%203-2%202h9c3%202%203%201%202-3l-1-4%202%203c2%204%203%205%203%202h1l1%202v-3c-1-3-1-3-2-1-1%201-1%201-1-1-1-3-4-5-4-3h-3l-1-1-1-4-1-1c1%201%202%200%202-1l1%201%202%201c1-2%200-6-2-10l-2-3-2%202c-2%202-2%202-2%200l-3-9-2%204m41-1c0%204-14%205-15%202%200-2-2-1-2%201h1v6l3%206c2%207%203%207%205%207%203%200%203-1%204-3l2-2v-2c0-2%200-2%201-1h2l-1%203-1%201h2c2-2%201%200-1%203-3%204-2%204%202%200%206-4%209-12%205-11h-1l-1-3c-2-2-2-2-3%200-1%201-1%201-1-1v-2l-1-2%203%201c1%202%202%202%202%201%201-1%201-1%201%201%200%203%201%203%204%200l2-3-2-1-3%201h-1c1-2-2-3-2-1-1%201-1%201%200%200l-2-2-2%201M53%20174c-4%207-5%208-7%208-4%200-9%203-10%205%200%204-3%204-16%204H9l13%201c12%200%2014%200%2014%202l2%204c4%203%209%203%2013-1%203-2%203-3%206-2l4%201-3-2c-5-1-5-4-1-6%202-1%202-1-1-1l-3-1-1-2-1-3c0-2%200-2%201-1s1%201%201-1v-1c0%201%203%200%203-2h-1c-3%202-2%201%200-4s5-6%203-2c0%202%200%202%201%201h3v-3l1-2h-1c-2%202-2%202-3%201-2-3-2-3-6%207m298%205l-1%202h-1l1%202%201%201-3-1-3-3c-1%200%200%202%202%203%202%202%203%205%201%205l-7-2-8-2c-1%200%202%202%207%203%2010%203%2011%205%204%207l-4%202%204-1c4%200%204%200%207%202%203%204%209%204%2012%200l3-4%2013-1h14l-13-1h-13l-1-3c-3-4-6-6-10-6l-4-2c-1-4-2-4-1-1m-169%2015v3h1c0%202%207%205%209%204h1l-3%204h-2c1-3-2-4-4-2h-1c1-3%200-5-1-3h-1c0-2%200-2-1-1l-1%204v5c-2%203-2%204-1%204l-1%202c-1%203-1%205%201%203h1l-1%202c-2%202-1%203%201%202v1c-3%204%200%204%2022%204s25-1%2022-4v-1c3%200%202-1%200-4l-3-3%202%201%203%202v-3l-1-2c-1%201-1%201-2-1v-3l1-3c0-3-1-4-1-2-1%201-1%201-1-1l-2-2c-1%200-1%201%201%204%202%205%201%205-2%200l-3-7c2%203%204%202%203-1h1c1%202%202%201%201-2-1-2-1-2-2-1l-1%201c-1-3-4-2-4%200l1%203-2-3c-1-2-2-2-6-2-2%200-4%200-3%201l1%201h-2c-2-2-2-2-4%201l-3%203%202-4%202-2h-4l-6%202h-1c1-3-2-2-4%200l-1%203v-3c1-2%200-3-1%200m58%201c0%205-10%207-14%203a807%20807%200%20012%2013c4%2012%206%209%2011-9l2-8-1%201m-79%204c3%2012%206%2019%208%2019s3-1%206-10c3-11%203-12%200-9-3%202-8%201-12-1l-2-2v3'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.5789473684210527,"src":"/static/0dc323ac434a4af322c40aa263f121d7/4fe8c/network.jpg","srcSet":"/static/0dc323ac434a4af322c40aa263f121d7/aabdf/network.jpg 150w,\n/static/0dc323ac434a4af322c40aa263f121d7/9dc27/network.jpg 300w,\n/static/0dc323ac434a4af322c40aa263f121d7/4fe8c/network.jpg 600w,\n/static/0dc323ac434a4af322c40aa263f121d7/9842e/network.jpg 900w,\n/static/0dc323ac434a4af322c40aa263f121d7/ff531/network.jpg 1056w","sizes":"(max-width: 600px) 100vw, 600px"}}}}}},{"node":{"frontmatter":{"path":"blog/promises-in-javascript","title":"BLink - an all in one events solution","tags":["android","java","opencv"],"excerpt":"An events solution application that is targeted at reducing queues, smoothening event registration processes, and for users to seamlessly expand and build their professional network.","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='410'%20viewBox='0%200%20400%20410'%20preserveAspectRatio='none'%3e%3cpath%20d='M17%2044l-1%2011a18073%2018073%200%20002%20309l1%203c-1%201%200%203%201%204l1%204c0%202%203%205%205%205s2%201%202%202c-1%202%204%206%208%206l3%202%20159%201a1115%201115%200%2000169-3c2%200%207-5%206-6l1-2h2l2-1%202-5%201-3%202-4c0-2%200-2%201-1%202%205%202-28%202-166a3926%203926%200%2000-2-150v-5l-1%207-1%20157c0%20170%201%20153-8%20163-9%209%208%208-171%208l-163-1c-6-1-14-7-18-13l-2-4-1-159a8617%208617%200%2000-2-159m61%2096l-1%2061%201%2061h26c47%200%2061-4%2068-22%206-17%200-32-15-39-5-3-5-3%200-6%2016-10%2014-36-3-49-2-2-10-4-18-6H78m224%200c-8%202-12%208-13%2017v7l3%205c3%203%209%206%2014%206%2012%200%2020-12%2017-23-3-8-13-14-21-12m-103%201l-8%201v120h78v-11l-1-12-24-1-25-2-1-48c0-51%201-48-6-48l-13%201m-94%2035l1%2013%2013-1c13%200%2013%200%2016-3%203-2%203-3%203-8%200-11-3-13-22-14h-11v13m194%2019c-4%201-7%204-9%209-2%203-2%206-2%2030l1%2028h14l18-1h3v-26a160%20160%200%2000-2-30c0-8-13-14-23-10m-193%2016c-1%200-2%2026%200%2027%203%201%2026%200%2032-2l6-2%201-11c0-7-2-9-12-11-9-1-25-2-27-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":0.974025974025974,"src":"/static/f983134a008a6eccfceeeff5c61e5b36/1b0b3/blink.jpg","srcSet":"/static/f983134a008a6eccfceeeff5c61e5b36/aabdf/blink.jpg 150w,\n/static/f983134a008a6eccfceeeff5c61e5b36/1b0b3/blink.jpg 168w","sizes":"(max-width: 168px) 100vw, 168px"}}}}}},{"node":{"frontmatter":{"path":"blog/sprint","title":"Cloud Sprint Student Program","tags":["gcp"],"excerpt":"A 12 week summer program sponsored by Google Cloud for selected undergraduates to explore GCP and take on the ACE Certification.","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='222'%20viewBox='0%200%20400%20222'%20preserveAspectRatio='none'%3e%3cpath%20d='M31%2073c-6%203-10%205-13%209-4%205-7%2011-5%2012%201%200%200%202-2%203l-3%203-2%201c-1%202%200%203%201%204v2H6c0-3-2-1-2%202%200%202%200%202%202%201h1l1%203c0%202%200%202-1%201l-2-2c-1%201%202%209%203%208v2h1l2-1-1%202c-1%201%202%204%206%206l24%201c19%200%2021%200%2025-2%2012-6%2014-21%205-32l-6-9c-6-12-22-18-33-14m77%2010c-13%207-15%2024-4%2033%2013%2011%2033%203%2033-13v-4h-19v6h7c7%200%207%200%204%205-4%209-19%207-24-3-7-13%2010-27%2022-18%201%201%202%201%203-1l2-2-3-2c-5-4-15-4-21-1m118%2019v19h6V82h-6v20m56-16c-17%207-15%2032%204%2035%205%201%2011%200%2015-3%202-3%202-3%201-4-2-2-2-2-5%200-4%204-13%204-17%200-10-10-3-26%2010-25%203%200%206%201%207%203h4c4-5-11-10-19-6M32%2087c-3%201-5%204-3%204s3%200%205%202c3%202%203%202%202%203-2%201-2%202-2%203%201%204-2%207-4%205-2-4-13-3-13%200l-1%202c-2%200-2%205%200%207v5c-2%200-2%201-1%202l2-1%2020-1c19%200%2022%200%2025-4s0-10-5-11l-2-4c0-10-13-17-23-12m275%2016v18h5V85h-5v18m83-11c0%204%200%207-1%206-2-4-12-3-16%202-8%2010%202%2026%2013%2021l4-1%203%201h2V85h-2c-3%200-3%200-3%207m-244%204c-10%205-9%2020%201%2025%2010%203%2018-3%2018-12%200-11-9-17-19-13m29%200c-7%204-10%2015-4%2021%208%209%2023%204%2023-8%200-10-10-17-19-13m30%200c-15%206-7%2030%207%2025%204-1%204-1%204%201%200%206-7%208-11%204-3-2-7-2-7%200s6%207%208%207c13%201%2016-3%2016-24V96h-17m36%201c-12%206-7%2024%206%2024%207%201%2013-4%209-7h-4c-2%202-7%203-9%201s-1-3%203-4l8-4%205-2-2-3c-3-6-10-8-16-5m83-1c-8%203-11%2015-5%2021%207%209%2020%204%2022-7%201-10-8-17-17-14m21%2010c0%2012%201%2013%206%2015h7c2-2%204-2%204-1l2%201c2%200%202-1%202-12%200-12%200-13-2-13s-2%201-2%208c0%2010-2%2013-7%2013s-6-3-6-13c0-7%200-8-2-8s-2%201-2%2010m-166-5c-8%202-6%2015%202%2015s10-13%202-15h-4m144%201c-3%204-3%2010%200%2013%206%205%2013%201%2013-7%200-7-8-11-13-6m54%200c-5%206-1%2015%206%2015%206%200%2010-10%205-15-3-3-7-3-11%200m-230%201c-3%202-3%208%200%2011%205%205%2012%201%2012-6%200-6-6-9-12-5m57%200c-3%204%200%2013%205%2013%206%200%2010-8%206-13-3-3-8-3-11%200'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.8072289156626506,"src":"/static/34571f89f87caa7608d9228147ff2778/4fe8c/google-cloud_fb.jpg","srcSet":"/static/34571f89f87caa7608d9228147ff2778/aabdf/google-cloud_fb.jpg 150w,\n/static/34571f89f87caa7608d9228147ff2778/9dc27/google-cloud_fb.jpg 300w,\n/static/34571f89f87caa7608d9228147ff2778/4fe8c/google-cloud_fb.jpg 600w,\n/static/34571f89f87caa7608d9228147ff2778/9842e/google-cloud_fb.jpg 900w,\n/static/34571f89f87caa7608d9228147ff2778/47498/google-cloud_fb.jpg 1200w","sizes":"(max-width: 600px) 100vw, 600px"}}}}}},{"node":{"frontmatter":{"path":"blog/routingpear","title":"Pear - A Web Application designed for Routing customer calls to agents","tags":["node.js","rainbow","css"],"excerpt":"A Node.js based web application built on top of the Rainbow SDK to help customers route their calls and queries to appropriate call center agents.","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='256'%20viewBox='0%200%20400%20256'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%20128v128h401V0H0v128m69-73c-3%201-4%204-3%206%200%202%202%203%207%204l2%202c0%202-3%202-4%200-2-2-6-1-6%201%201%205%2013%205%2014%200%201-3-1-7-4-7l-4-1c-1-2-1-2%201-2l3%201c0%202%204%201%204%200%200-3-5-5-10-4M9%2063v9h7c6%200%206%200%206-3%200-2%200-2-4-2h-4v-6c0-6%200-6-2-6-3%200-3%200-3%208m24%200c0%208%201%209%203%209s3-1%203-4%200-3%203-3l3-1c0-1-1-2-3-2l-3-1c0-2%201-2%204-2%202%200%203%200%203-2s-1-2-7-2h-6v8m16%200v9h7c6%200%207%200%207-2s-1-2-4-2l-5-1c0-2%201-2%204-2s4%200%204-2-1-2-4-2c-5%200-5-2%200-2%203%200%205-1%205-2%200-2-1-2-7-2h-7v8m32-6l3%202c2%200%202%201%202%206%200%206%201%207%203%207s3-1%203-7c0-5%200-6%202-6l3-2%201-1c4%205%206%2010%206%2012%200%204%200%204%203%204%202%200%202%200%202-4%200-3%201-5%203-8%204-5%204-5%200-5-2%200-3%201-4%203s-1%202-3%201l-1-3-12-1c-10%200-11%200-11%202m36%206v9h7c6%200%206%200%206-2l-1-3c-7%201-7%200-7-6s0-6-2-6c-3%200-3%200-3%208m15-7v9l1%207h6c6%200%208-1%208-2%200-2-1-2-4-2-6%200-7-3-1-3%205-1%206-4%200-4l-4-1%204-1c3%200%204%200%204-2s-1-2-7-2l-7%201M11%2083c-4%203-2%207%203%209l4%203h-5c0-2-5-3-5-1%200%203%203%205%207%205%2010%200%2011-9%202-11l-3-1c0-1%201-2%203-1l4%201h3l-3-3c-2-2-8-3-10-1m15%207c0%208%200%209%202%209s2-1%202-5c0-6%200-6%202%201%202%206%204%206%206-1l2-4v4c0%205%200%205%202%205%203%200%203%200%203-8l-1-8h-3c-3%200-4%200-4%203l-2%204-2-4c0-3-1-4-4-4h-3v8m24-1l-4%208c0%202%200%202%203%202l3-1c0-1%201-2%203-2l3%202%203%201c3%200%203%200%203-2l-4-8c-2-6-2-7-5-7s-3%201-5%207m16%202c0%208%200%208%202%208%203%200%203-1%203-4l1-3%202%203c2%203%203%204%205%204s3-2%200-5v-4c4-4%200-8-7-8h-6v9m17-8c-2%201-1%203%201%203%203%200%203%200%203%206s1%207%203%207h3v-6c0-7%200-7%203-7l2-2c0-2-1-2-7-2l-8%201m216%2051c-3%203-3%20115%200%20117%202%202%2091%203%2093%201l1-60c0-56%200-58-2-59l-46-1c-42%200-45%200-46%202m4%2030v3h50v-7h-50v4'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.5625,"src":"/static/a4177b2784a4d043bf2af946ce9d0864/4fe8c/pear.jpg","srcSet":"/static/a4177b2784a4d043bf2af946ce9d0864/aabdf/pear.jpg 150w,\n/static/a4177b2784a4d043bf2af946ce9d0864/9dc27/pear.jpg 300w,\n/static/a4177b2784a4d043bf2af946ce9d0864/4fe8c/pear.jpg 600w,\n/static/a4177b2784a4d043bf2af946ce9d0864/9842e/pear.jpg 900w,\n/static/a4177b2784a4d043bf2af946ce9d0864/73482/pear.jpg 989w","sizes":"(max-width: 600px) 100vw, 600px"}}}}}},{"node":{"frontmatter":{"path":"blog/twohandsonebrain","title":"2 Hands 1 Brain - a Verilog based Arcade Station","tags":["verilog","fpga","lucid"],"excerpt":"A mind boggling, single player arcade game built for one of my academic modules.","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='205'%20viewBox='0%200%20400%20205'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%20102v103h242V70h94v67a1505%201505%200%2001-1%2056v-10l-11-1h-11v22l1-11v-10h10l10%201v9c0%2011%201%2010-12%2010l-10%201v-21l-11-1h-11v11l-1%2011v-21l-11-1h-11v22l1-11v-10h10l10%201v19h-10c-10%200-10%201-6%201h22l7-1c7%200%208%200%205%201l45%201h50V0H0v102m326-80c-3%203-3%203-3%2013v10l4%203%203%204h22l3-3c3-4%203-4%203-14V24l-3-3-4-3h-22l-3%204M59%2036v14h4c4%200%205-1%205-4%200-5%204-4%204%201%200%203%200%203%204%203h4V22l-4-1h-4v4c0%206-2%206-2%201v-4l-6-1h-5v15m30-12v2l-1%202-1%202-1%202-1%202-1%202-1%207v7h22V39c0-10%200-10-3-13-2-2-11-3-13-2m20%201c-2%202-2%204-2%2013l1%2012h8v-3c0-4%201-5%203-2l6%202h4V24h-4c-4%200-5%200-5%202s-1%203-3%200-6-3-8-1m28-1h-6v13l1%2013h5c6%200%206%200%2010-4%206-6%206-13%200-19-3-3-4-3-10-3m62%200c-2%200-2%200-2%2013v13h8c7%200%208%200%2011-3%203-4%204-12%202-13l-2-4-1-5c-2-1-12-2-16-1m30%200h-8v13l1%2013h4c3%200%204-1%204-3%200-3%201-3%203%201%203%203%206%203%208%200%202-2%202-4%202-11s0-8-3-11c-2-2-3-2-11-2m28%200c-4%200-5%200-5%202l-1%202-1%202-2%202-1%202c1%201%200%202-1%202l-1%207%201%207h21V40c0-11%200-11-3-14-2-2-3-2-7-2m19%200h-6v26h4c4%200%204%200%204-3s0-4%202-4l1-3%201-3V24h-6m23%200l-1%202c0%203-1%202-3%200s-6-3-9-1l-1%2013%201%2012h8v-3c0-4%201-5%203-2l6%202h4V36c0-11%200-12-2-12l-4-1-2%201M61%2035c0%209%200%2010%202%2010%201%200%202-1%202-3%200-3%201-3%205-3%203%200%204%200%204%203%200%202%201%203%202%203%202%200%202-1%202-10%200-10%200-11-2-11s-2%201-2%204c0%204%200%204-3%204-4%200-4%200-4-4s0-4-3-4h-3v11m95-8c-3%203-3%2017%200%2019l2%203%208%201%207-1%201-2c2%200%201-20%200-22-3-2-15-1-18%202M36%2028c0%202%201%202%204%202l5%201-1%201c-2%200-8%208-8%2010v3h8c6%200%207%200%207-2s-1-2-4-2c-5%200-5%200-1-4l3-4%201-1c1-1%200-2-1-3-4-4-13-4-13-1m56%200l-1%202-1%201-4%208-1%203c0%203%200%203%204%203%202%200%203%200%203-2l2-2%202%202c0%202%201%202%203%202h3v-7c0-6%200-7-2-10-4-3-8-3-8%200m19-1l-1%2010c0%207%200%208%202%208s2-1%202-5l1-6%204%205c6%206%208%205%208-3s-1-10-3-10l-1%204c0%205-1%206-6%200-4-5-4-4-6-3m23%209v9h3c4%200%2012-6%2012-9%200-4-8-10-12-10h-3v10m24-7c-2%202-1%205%202%205l2%201%202%201c1%200%205%203%205%205%200%201-6%200-8-2s-2-2-4-1c-1%202-1%202%201%204%203%203%2011%204%2014%202%203-4%200-9-4-9-2%200-6-3-6-5l7%201h2c3-3%200-5-6-5-3%200-5%201-7%203m41%207v9h6c9%200%2014-5%209-9-2-2-3-4-1-4v-5l-8-1h-6v10m25%200c0%208%200%209%202%209s2-1%202-3c0-5%201-5%206%200%203%203%203%203%205%202%201-2%201-2-1-4-3-2-3-3%200-5%205-4%200-9-8-9h-6v10m30-8l-1%202-1%202-1%203-1%202-1%202-1%203c0%203%200%203%203%203%202%200%203%200%203-2%200-1%201-2%203-2l2%202c0%202%201%202%203%202h3v-7l-1-8-3-2-4-2c-2%200-3%200-3%202m18%208c0%208%200%209%202%209s2-1%202-3l1-3%201-3%201-4%201-3c0-3%200-3-4-3h-4v10m17-9l-1%2010c0%207%200%208%202%208s2-1%202-5c0-7%200-7%206-1s7%205%207-5c0-7%200-8-2-8s-2%201-2%204c0%205-1%206-6%200-4-5-4-4-6-3m-46%2055v10h23V71h-23v11m24%200v10h21V81l1-10h-22v11m23%200v10h22V71h-22v11m23%200v10h22V71h-22v11M137%2093v8l1%207h16V93l-8-1-9%201m22%200l-1%208v7h16V93l-8-1-7%201m84%2011v10h23V93h-23v11m24%200v10h21V93h-21v11m23%200v10h22V93h-22v11m23%200v10h22V93h-22v11m-174-4v6h13V94h-13v6m106%204v9h19V94h-19v10m46%200v9h20l-1-7c0-13%201-12-9-12h-10v10M93%2098c0%202-6%202-12%201h-3l-7%201-7%201c0%202%2011%202%2011%200h1c2%202%207%202%209%200h2l5%202c2%200%203-1%202-3%200-3-1-4-1-2m150%2028v11h23v-21l-12-1h-11v11m24%200v11h21v-22h-21v11m23%200v11h22v-21l-11-1h-11v11m23%200v11h10l11%201h-21v21h22v-43l-11-1h-11v11m-176%201l1%208h16v-15h-17v7m21%2019v7h16v-15h-16v8m85%203v10h23v-21h-23v11m24%200v10h21v-21h-21v11m23%200v10h22v-21h-22v11m-45%200v9h19v-19h-19v10m-2%2022v10h23v-21h-23v11m24%200v10h21v-21h-21v11m23%200v10h22v-21h-22v11m23-1v11h22v-20l-11-1h-11v10m-22%201v9h19v-19h-19v10m-130%201v8h16v-16h-16v8m82%2021v12h13c7%200%2012%200%2011-1l-1-11v-10l-12-1h-11v11m-82-5c-1%2010-1%2010%208%2010h8v-15h-16v5m1%202v7l6-1h7v-12h-13v6m154%203v8h16v-16h-16v8'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.948051948051948,"src":"/static/136983f100d98cb7c1e2d1ef306cf5fa/2a4de/poster.png","srcSet":"/static/136983f100d98cb7c1e2d1ef306cf5fa/6d161/poster.png 150w,\n/static/136983f100d98cb7c1e2d1ef306cf5fa/630fb/poster.png 300w,\n/static/136983f100d98cb7c1e2d1ef306cf5fa/2a4de/poster.png 600w,\n/static/136983f100d98cb7c1e2d1ef306cf5fa/db955/poster.png 900w,\n/static/136983f100d98cb7c1e2d1ef306cf5fa/f3583/poster.png 1200w,\n/static/136983f100d98cb7c1e2d1ef306cf5fa/be6d9/poster.png 9710w","sizes":"(max-width: 600px) 100vw, 600px"}}}}}},{"node":{"frontmatter":{"path":"blog/liberate","title":"Liberate - A Distributed Book Review Application","tags":["node.js","hadoop","spark","bash","rest-api"],"excerpt":"A Node.js based fully automated web application like GoodReads, with distributed analytics functionality.","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='289'%20viewBox='0%200%20400%20289'%20preserveAspectRatio='none'%3e%3cpath%20d='M183%2037v14l-1-13-1-12v27h2l6%201c3%200%203%200%202-1-2-1-2-1%200-1l3%201h11c-1%201-1%201%202%201l6-1h2V26l-1%2012v13l-4%201h-4l3-1%204-1V37l-1-13c-1-1-11%202-13%203l-5-1-8-2-3-1v14m-67%2074l-4%201-1%204v8l1%202h172l1-2c1-6%200-12-3-13H116m134%2046h-4l-3%201-1%207c0%207%200%208%202%209l2%201h1l2-1%201%201v2c2%202-1%205-4%206-3%200-3%201-4%204v3h6c5%200%206%200%205%201s0%201%203%201%203%200%201-1l-2-1h2l3%201h1v-34c0-1-10-2-11%200m-110%201l-5%201-3%201v20l4%201h11l7%201v-22l-14-2m76%2016l1%2016h17v-31l-9-1h-9v16m-21-12c-3%200-3%200-1%201v1c-5%202-6%202-3%203l2%201-2%201c-2-1-2%200-2%202s0%202%209%202c8%200%209%200%209-2s-1-2-5-2-4%200-3-2h4l3-1c1-1%200-1-2-1s-2%200-1-1l1-2-2%201h-1l-1-2-5%201m-28%2019l-2%202c-1%200-2%200-2%203-1%204-1%204%204%204l4%201%202%201%202-1v-1l1%201h2l2-4-2-4-2-2h-2c-3%202-6%203-6%201l2-1c2-1%202-1%200-1-2-1-3%200-3%201m23%202l-1%204c0%203%200%203%205%203l4%201%204%201%203-1v-1c2%200%202-1%202-4v-4h-8l-9%201m-45%2014h-4l-3%201c-2%200-2%202-2%2016v16h5c4%200%205%200%204%201s-1%201%201%201c1%200%202%200%201-1l3-1%203%201v-17l-1-16v-1l-1-1c-5-1-6-1-6%201m26-1h-2l-1%202c1%201%200%203-1%204l-2%204c1%201%200%202-1%202-3%200-3%205%200%206%203%200%204%2014%201%2014s-4%200-3%201l5%201%205%201c-1%201%200%201%202%201s2%200%201-1c-2-1-2-1%202-1l4-1-5-1c-6%200-7-3-5-7%201-1%201-1%201%201%200%201%204%205%205%204%202-2%200-6-3-6s-3-5%200-6c2%200%203-1%203-2h1c0%203%202%202%202-1l-1-3-1-4-2-4-1-1%203-1c2%200%202%200%201-1-1-2-5-2-6%200l-2%201v-1l1-2-1%201m55%200l-6%201-3%201-1%2016v16h5l4%201%202%201c2%200%202%200%201-1-2-1-2-1%202-1h4v-16l-1-17c-1-1-4-2-7-1m27%200l-4%201h4c3%201%202%201-3%201h-6l-1%2016v16h5l4%201c-1%201%200%201%201%201%202%200%202%200%201-1s0-1%202-1l4-1a4430%204430%200%2001-2-32l-1-2-4%201m-56%209v5c1%202-1%204-2%202l-2-2c-2%200-2%200-1-1v-2c-2%200-2%202-2%2012v11h4l4%201%202%201c2%200%202%200%201-1s-1-1%202-1l4%201v-24h-4l-3-1c0-2-2-2-3-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.3888888888888888,"src":"/static/bf0b5ac8334f3577278aa5b949685a71/4fe8c/liberate-1.jpg","srcSet":"/static/bf0b5ac8334f3577278aa5b949685a71/aabdf/liberate-1.jpg 150w,\n/static/bf0b5ac8334f3577278aa5b949685a71/9dc27/liberate-1.jpg 300w,\n/static/bf0b5ac8334f3577278aa5b949685a71/4fe8c/liberate-1.jpg 600w,\n/static/bf0b5ac8334f3577278aa5b949685a71/9842e/liberate-1.jpg 900w,\n/static/bf0b5ac8334f3577278aa5b949685a71/67c96/liberate-1.jpg 983w","sizes":"(max-width: 600px) 100vw, 600px"}}}}}}]}},"pageContext":{"postPath":"blog/music-generation","translations":[{"hreflang":"en","path":"/blog/music-generation"}]}},"staticQueryHashes":["4097791827"]}