Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URLs added here will be added as <link>s in order, and before the CSS in the editor. You can use the CSS from another Pen by using its URL and the proper URL extension.

+ add another resource

JavaScript

Babel includes JSX processing.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Packages

Add Packages

Search for and use JavaScript packages from npm here. By selecting a package, an import statement will be added to the top of the JavaScript editor for this package.

Behavior

Auto Save

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

HTML

              
                <div id="js-scene" class="scene">
      <div id="js-torch-scene" class="torch-scene">
        <canvas width="1200" height="900" id="js-canvas" class="canvas"></canvas>
        <div id="js-shadow" class="shadow"></div>
        <div id="js-torch" class="torch"></div>
      </div>
      <div id="js-legend" class="legend"></div>
      <svg version="1.1" xmlns:x="&amp;ns_extend;" xmlns:i="&amp;ns_ai;" xmlns:graph="&amp;ns_graphs;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="248px" height="288px" viewbox="0 0 248 288" enable-background="new 0 0 248 288" xml:space="preserve" class="jelly-torch">
        <mask id="text-mask">
          <g stroke="white" fill="none" stroke-width="5" stroke-miterlimit="10" id="js-text-mask">
            <path d="M42.886,70.835c0,0,1.637-8.423,1.637-11.271"></path>
            <path d="M13.474,120.489c11.241-7.413,27.707-35.312,27.707-35.312C30.93,162.068,4.127,223.223,4.127,223.223s-6.796-63.433,79.002-141.41c0.001-1.156-12.372-27.737-22.758-11.71c-10.385,16.028-8.531,57.855,3.726,62.121c11.561-0.809,41.687-49.842,41.687-49.842l-0.578,1.357c0,0,31.926-78.659,28.519-78.947C96.25,69.128,94.175,129.967,106.421,122.8c12.245-7.169,25.627-40.596,25.627-40.596l-0.237,0.455c0,0,31.926-78.658,28.518-78.945c-37.473,64.336-39.549,125.174-27.303,118.008c12.246-7.169,25.627-40.596,25.627-40.596l0.748,0.256c0,0-7.809,21.023,2.35,14.856c10.156-6.167,21.545-32.23,21.545-32.23c-10.254,76.895-37.055,138.045-37.055,138.045s-6.797-63.429,79.002-141.407"></path>
            <path d="M115.143,190.315c0,0-3.758,33.827-3.758,45.155"></path>
            <path d="M15.543,212.274c0,0,8.938-2.383,39.593-15.422"></path>
            <path torch="true" d="M54.391,150.414C23.056,217.951,26.642,278.72,38.169,270.446s26.956-31.542,26.956-31.542l0.169-0.34c0,0,27.845-34.928,30.534-42.312c2.69-7.39-19.217-6.459-27.423,14.879c-8.205,21.338-14.929,62.097,5.021,49.201c19.949-12.899,21.1-57.287,25.407-64.665c4.308-7.378,20.435-13.825,20.435-13.825s23.173-9.362,23.028,0.279c-0.141,9.645-32.763,38.201-32.763,38.201l-0.193,0.345c0,0,23.313-9.722,31.38-2.988c8.064,6.732-7.834,64.906-7.834,64.906l19.629-80.835l19.375-56.187l22.776,42.438h-7.833l-0.865-0.95c-0.107-1.152-14.895-26.468-23.746-9.543c-8.852,16.92-3.119,58.396,9.48,61.505c11.436-1.88,36.875-53.501,36.875-53.501l0.047-0.162c0,0,66.381-128.824,23.301-64.602c-43.082,64.217-28.07,102.064-28.676,111.703c-0.604,9.64,19.33-54.33,25.203-56.33c5.875-1.997,2.52,45.316,2.52,45.316"></path>
          </g>
        </mask>
        <g fill="#4A4A4A" mask="url(#text-mask)" style="display:none" id="js-text">
          <path d="M13.325,120.289c0.745-0.572,1.505-1.131,2.238-1.714l2.057-1.881l1.95-2.017c0.656-0.667,1.245-1.399,1.87-2.096c0.626-0.696,1.223-1.419,1.808-2.151c0.584-0.733,1.197-1.442,1.758-2.195c1.148-1.483,2.28-2.979,3.373-4.504c0.558-0.753,1.096-1.523,1.632-2.292c0.535-0.771,1.084-1.532,1.604-2.313c1.059-1.549,2.098-3.113,3.122-4.686c2.04-3.148,4.034-6.337,5.93-9.564l1.522-2.591l-0.417,2.974l-1.246,8.881c-0.411,2.961-0.812,5.925-1.341,8.868l-1.489,8.846c-0.496,2.949-1.122,5.874-1.676,8.812c-0.582,2.933-1.108,5.879-1.779,8.793l-1.92,8.765c-0.651,2.919-1.392,5.817-2.084,8.727l-1.055,4.361l-1.139,4.34c-0.773,2.89-1.5,5.793-2.312,8.672l-2.459,8.632l-2.606,8.589c-0.857,2.867-1.822,5.701-2.728,8.553c-0.898,2.855-1.905,5.676-2.855,8.514c-0.956,2.837-1.995,5.646-2.988,8.47c-1.046,2.808-2.063,5.623-3.157,8.414c-1.07,2.804-2.185,5.573-3.357,8.369l-2.471,5.892l-0.559-6.359c-0.167-1.898-0.169-3.621-0.135-5.414c0.03-1.774,0.144-3.539,0.289-5.299c0.299-3.52,0.799-7.009,1.415-10.474c0.663-3.455,1.398-6.896,2.326-10.285c0.89-3.399,1.938-6.752,3.056-10.079c0.557-1.664,1.188-3.302,1.779-4.953c0.607-1.646,1.292-3.262,1.934-4.895c1.354-3.234,2.752-6.452,4.292-9.602l1.132-2.373l1.204-2.336c0.82-1.549,1.577-3.131,2.448-4.65l2.555-4.592l2.689-4.513c0.882-1.514,1.824-2.99,2.778-4.457c0.954-1.468,1.877-2.957,2.857-4.407c2-2.872,3.923-5.802,6.037-8.591l3.116-4.225l3.238-4.13c2.121-2.786,4.423-5.419,6.648-8.12c2.244-2.684,4.618-5.252,6.921-7.884c2.369-2.571,4.795-5.089,7.192-7.635l7.427-7.4l7.627-7.189l-0.852,1.925c-0.018,0.172,0.022,0.415,0.061,0.526l-0.029-0.076c-0.006-0.033-0.055-0.151-0.089-0.241c-0.065-0.18-0.17-0.409-0.255-0.613c-0.19-0.43-0.396-0.866-0.61-1.304c-0.433-0.875-0.903-1.742-1.392-2.595c-0.99-1.698-2.064-3.351-3.26-4.846c-1.188-1.493-2.495-2.873-3.888-3.84c-0.69-0.493-1.399-0.877-2.07-1.074c-0.674-0.217-1.297-0.296-1.89-0.173c-1.182,0.153-2.452,1.117-3.562,2.452c-0.296,0.299-0.53,0.717-0.801,1.068l-0.198,0.274l-0.05,0.068l-0.012,0.018c-0.015,0.022,0.085-0.138,0.037-0.06l-0.025,0.042l-0.1,0.167l-0.4,0.668l-0.4,0.667l-0.307,0.605c-0.2,0.415-0.424,0.769-0.612,1.231c-0.826,1.735-1.456,3.608-2.039,5.495c-0.561,1.9-1.011,3.85-1.392,5.818c-0.361,1.975-0.67,3.966-0.875,5.976c-0.234,2.006-0.351,4.027-0.447,6.049c-0.138,4.045-0.059,8.107,0.338,12.127c0.22,2.004,0.479,4.006,0.87,5.97c0.399,1.958,0.848,3.911,1.491,5.765c0.635,1.853,1.412,3.642,2.401,5.199c0.987,1.551,2.243,2.821,3.655,3.388l-0.7-0.093c0.851-0.046,1.981-0.567,3.033-1.16c1.061-0.664,2.112-1.419,3.121-2.271c1.016-0.836,1.997-1.747,2.962-2.676c0.964-0.934,1.902-1.904,2.83-2.889c3.692-3.963,7.142-8.203,10.49-12.521c3.371-4.304,6.631-8.708,9.813-13.169c1.59-2.231,3.16-4.479,4.714-6.737c1.566-2.251,3.118-4.514,4.635-6.797l0.426,0.262c-2.739,4.767-5.604,9.455-8.568,14.086c-2.958,4.635-6,9.22-9.172,13.729c-3.207,4.482-6.538,8.888-10.175,13.096c-0.917,1.047-1.849,2.084-2.819,3.097c-0.975,1.009-1.97,2.005-3.039,2.953c-1.055,0.957-2.199,1.856-3.437,2.69c-1.306,0.772-2.652,1.592-4.567,1.812l-0.33,0.038l-0.37-0.131c-2.519-0.894-4.3-2.75-5.604-4.617c-1.317-1.897-2.229-3.935-2.996-5.983c-0.77-2.053-1.305-4.144-1.788-6.238c-0.472-2.098-0.8-4.209-1.086-6.324c-1.036-8.465-0.883-17.014,0.523-25.471c0.371-2.113,0.817-4.221,1.396-6.313c0.604-2.088,1.264-4.173,2.186-6.208c0.195-0.504,0.5-1.047,0.749-1.567l0.397-0.783l0.396-0.67l0.396-0.67l0.099-0.167l0.104-0.165l0.063-0.09l0.253-0.36c0.355-0.475,0.638-0.969,1.059-1.425c0.776-0.925,1.628-1.843,2.743-2.603c1.057-0.788,2.415-1.395,3.857-1.642c1.45-0.281,2.958-0.096,4.248,0.316c1.321,0.399,2.454,1.032,3.457,1.731c2.024,1.404,3.587,3.087,4.995,4.823c1.407,1.741,2.609,3.573,3.721,5.453c0.548,0.944,1.073,1.9,1.567,2.882c0.245,0.494,0.486,0.993,0.718,1.511c0.116,0.274,0.23,0.516,0.347,0.823c0.059,0.152,0.112,0.273,0.182,0.488l0.095,0.293c0.068,0.237,0.13,0.608,0.138,0.907l0.03,1.109L84.88,83.74l-7.585,7.027L69.91,98l-7.156,7.454c-2.304,2.558-4.681,5.054-6.927,7.663c-2.227,2.624-4.534,5.185-6.658,7.893l-3.244,4.016l-3.124,4.109c-2.12,2.714-4.048,5.562-6.056,8.356c-0.984,1.41-1.91,2.859-2.869,4.287c-0.959,1.428-1.905,2.865-2.792,4.336l-2.705,4.392l-2.572,4.469c-0.879,1.479-1.633,3.022-2.456,4.531l-1.208,2.276l-1.136,2.312c-1.545,3.068-2.95,6.204-4.312,9.354c-0.646,1.59-1.335,3.163-1.948,4.767c-0.596,1.608-1.232,3.203-1.795,4.823c-1.129,3.237-2.191,6.502-3.097,9.808c-0.944,3.295-1.698,6.639-2.382,9.99c-0.637,3.361-1.161,6.743-1.489,10.137c-0.16,1.696-0.289,3.396-0.337,5.09c-0.056,1.676-0.06,3.431,0.058,4.99l-3.03-0.468c1.167-2.696,2.316-5.455,3.406-8.218c1.118-2.756,2.161-5.545,3.232-8.321c1.02-2.797,2.085-5.577,3.069-8.389c0.978-2.812,2.012-5.606,2.938-8.438c0.934-2.828,1.927-5.638,2.813-8.48l2.694-8.522l2.563-8.563c0.854-2.854,1.621-5.733,2.436-8.601l1.201-4.306l1.118-4.328c0.734-2.888,1.517-5.765,2.21-8.664l2.048-8.704c0.714-2.896,1.283-5.821,1.908-8.736c0.598-2.92,1.267-5.827,1.806-8.759l1.62-8.796c0.573-2.927,1.019-5.875,1.474-8.822l1.378-8.839l1.106,0.382c-1.965,3.229-4.009,6.388-6.107,9.521c-1.052,1.563-2.119,3.116-3.206,4.656c-0.534,0.776-1.097,1.533-1.646,2.298c-0.551,0.765-1.102,1.529-1.675,2.278c-1.121,1.515-2.282,3.001-3.459,4.474c-0.574,0.748-1.203,1.453-1.802,2.181c-0.6,0.728-1.212,1.445-1.854,2.139c-0.642,0.692-1.244,1.419-1.918,2.083l-2.002,2.008l-2.137,1.892c-0.746,0.575-1.512,1.12-2.266,1.681L13.325,120.289z"></path>
          <path d="M159.635,81.468c-0.812,2.347-1.515,4.745-2.05,7.166c-0.262,1.211-0.479,2.433-0.591,3.654c-0.1,1.208-0.143,2.475,0.23,3.534c0.194,0.518,0.52,0.915,0.975,1.038c0.458,0.123,1.02,0.039,1.561-0.157c0.545-0.194,1.075-0.473,1.594-0.783c0.455-0.29,0.992-0.718,1.484-1.07c0.531-0.351,0.941-0.787,1.385-1.199c0.428-0.431,0.897-0.793,1.293-1.275c0.816-0.923,1.656-1.82,2.393-2.819c0.376-0.49,0.767-0.968,1.132-1.468l1.067-1.521c0.729-1,1.369-2.066,2.051-3.102c0.67-1.043,1.287-2.123,1.934-3.183l1.828-3.248c1.186-2.185,2.336-4.39,3.424-6.626c1.09-2.232,2.148-4.494,3.129-6.758l2.604-6.017l-0.89,6.495l-1.22,8.891c-0.401,2.965-0.795,5.932-1.313,8.878l-1.463,8.857c-0.487,2.953-1.103,5.882-1.659,8.822c-0.58,2.936-1.106,5.883-1.776,8.8l-1.918,8.771c-0.65,2.921-1.393,5.822-2.083,8.734l-1.054,4.365l-1.139,4.343c-0.772,2.892-1.498,5.797-2.311,8.679l-2.447,8.641l-2.589,8.604c-0.852,2.87-1.811,5.709-2.71,8.564c-0.893,2.859-1.895,5.686-2.838,8.527c-0.949,2.842-1.984,5.654-2.971,8.484c-1.037,2.812-2.045,5.637-3.131,8.436c-1.062,2.812-2.166,5.586-3.336,8.401l-3.355,8.078l-0.793-8.719c-0.18-1.962-0.186-3.679-0.157-5.492c0.026-1.791,0.128-3.567,0.267-5.34c0.281-3.544,0.766-7.058,1.365-10.545c0.649-3.476,1.359-6.944,2.299-10.349c0.896-3.416,1.947-6.785,3.067-10.129c1.156-3.33,2.365-6.643,3.755-9.879c1.391-3.234,2.825-6.45,4.401-9.593l1.159-2.369l1.23-2.331c0.838-1.544,1.609-3.125,2.502-4.637l2.639-4.557l2.781-4.467c0.914-1.498,1.885-2.958,2.867-4.408c0.983-1.45,1.936-2.922,2.944-4.353c2.058-2.835,4.063-5.706,6.241-8.444l3.219-4.143l3.339-4.042c2.201-2.715,4.58-5.275,6.881-7.899c2.313-2.612,4.771-5.094,7.161-7.629c2.457-2.474,4.936-4.924,7.432-7.351l7.689-7.067c2.618-2.292,5.266-4.55,7.91-6.802l0.336,0.37c-2.426,2.487-4.85,4.968-7.303,7.415l-7.123,7.566l-6.916,7.737l-3.354,3.953c-1.116,1.318-2.268,2.605-3.333,3.965c-2.15,2.7-4.381,5.334-6.426,8.113l-3.143,4.104l-3.021,4.191c-2.055,2.765-3.9,5.671-5.852,8.503c-0.955,1.429-1.854,2.895-2.782,4.34c-0.931,1.445-1.847,2.897-2.703,4.386l-2.613,4.437l-2.485,4.504c-0.859,1.485-1.599,3.033-2.402,4.545l-1.182,2.282l-1.109,2.317c-1.51,3.075-2.877,6.211-4.202,9.364c-0.624,1.592-1.299,3.163-1.915,4.756c-0.594,1.602-1.229,3.188-1.789,4.801c-1.125,3.225-2.183,6.472-3.085,9.759c-0.933,3.28-1.712,6.597-2.407,9.928c-0.652,3.338-1.193,6.696-1.539,10.065c-0.166,1.684-0.309,3.371-0.36,5.05c-0.062,1.653-0.07,3.413,0.036,4.911l-4.148-0.641c1.171-2.678,2.329-5.433,3.428-8.187c1.127-2.747,2.178-5.529,3.26-8.3c1.025-2.791,2.097-5.566,3.086-8.372c0.982-2.81,2.022-5.599,2.955-8.425c0.939-2.823,1.938-5.629,2.832-8.469l2.711-8.51l2.574-8.553c0.854-2.853,1.621-5.73,2.438-8.594l1.201-4.302l1.119-4.324c0.733-2.886,1.519-5.761,2.213-8.657l2.05-8.697c0.715-2.893,1.284-5.816,1.911-8.729c0.595-2.918,1.273-5.821,1.822-8.75l1.646-8.785c0.582-2.924,1.037-5.868,1.501-8.812l1.405-8.83l1.714,0.479c-1.056,2.299-2.165,4.539-3.313,6.773c-1.146,2.232-2.356,4.432-3.602,6.613l-1.918,3.242c-0.678,1.059-1.325,2.135-2.027,3.179c-0.713,1.037-1.384,2.1-2.148,3.103l-1.118,1.522c-0.384,0.501-0.793,0.983-1.188,1.475c-0.77,1-1.656,1.91-2.517,2.839c-0.408,0.478-0.938,0.88-1.403,1.322c-0.48,0.429-0.947,0.888-1.473,1.216c-0.531,0.361-0.977,0.714-1.578,1.082c-0.562,0.319-1.146,0.613-1.783,0.826c-0.63,0.207-1.359,0.343-2.105,0.125c-0.771-0.226-1.279-0.937-1.49-1.582c-0.426-1.329-0.318-2.628-0.196-3.89c0.144-1.264,0.394-2.502,0.685-3.726c0.598-2.446,1.354-4.836,2.228-7.191L159.635,81.468z"></path>
          <path d="M42.639,70.799c0,0-0.192-0.747-0.392-1.855c-0.095-0.553-0.209-1.199-0.296-1.886c-0.112-0.69-0.156-1.416-0.225-2.146c-0.034-0.364-0.105-0.734-0.186-1.1c-0.085-0.366-0.149-0.724-0.112-1.056c0.083-0.663,0.459-1.237,0.854-1.719c0.204-0.24,0.432-0.455,0.645-0.643c0.223-0.187,0.437-0.347,0.64-0.475c0.395-0.257,0.71-0.392,0.71-0.392l0.495,0.072c0,0,0.264,0.218,0.569,0.577c0.159,0.18,0.318,0.395,0.479,0.637c0.151,0.241,0.308,0.511,0.436,0.799c0.241,0.575,0.438,1.232,0.329,1.891c-0.059,0.329-0.221,0.653-0.408,0.98c-0.182,0.328-0.355,0.662-0.491,1.002c-0.273,0.679-0.522,1.362-0.826,1.993c-0.279,0.634-0.572,1.221-0.82,1.724c-0.507,1.005-0.904,1.667-0.904,1.667L42.639,70.799z"></path>
          <path d="M104.975,83.646c5.061-13.098,10.031-26.232,14.864-39.41c2.412-6.59,4.79-13.193,7.065-19.821c1.132-3.316,2.269-6.628,3.314-9.958c0.523-1.663,1.031-3.331,1.481-4.993c0.224-0.831,0.437-1.663,0.603-2.474c0.082-0.403,0.153-0.805,0.193-1.165c0.018-0.17,0.029-0.35,0.023-0.439c-0.002-0.034-0.016-0.062,0.013,0.052c0.011,0.039,0.024,0.077,0.044,0.112c0.033,0.081,0.087,0.169,0.148,0.24c0.16,0.215,0.506,0.441,0.875,0.461l1.391-0.723c-7.244,12.804-13.538,26.139-18.711,39.88c-2.581,6.872-4.887,13.843-6.856,20.898c-0.98,3.529-1.879,7.078-2.688,10.643c-0.812,3.563-1.574,7.135-2.197,10.726c-0.623,3.59-1.157,7.188-1.578,10.786c-0.39,3.599-0.707,7.202-0.719,10.766c-0.006,1.779,0.028,3.55,0.194,5.272c0.158,1.715,0.447,3.415,0.953,4.824c0.243,0.695,0.586,1.305,0.856,1.57c0.308,0.267,0.186,0.225,0.467,0.226c0.062,0.01,0.175-0.057,0.269-0.064l0.175-0.083l0.09-0.04l0.046-0.019c-0.029,0.02,0.098-0.057-0.06,0.042l0.037-0.022l1.17-0.724l0.925-0.676l0.974-0.813c2.568-2.279,4.837-5.104,6.983-8.009c2.129-2.932,4.095-6.017,5.996-9.152c0.949-1.569,1.868-3.16,2.767-4.764c0.918-1.594,1.812-3.206,2.685-4.829c1.746-3.247,3.416-6.542,5.049-9.857l0.465,0.186c-1.166,3.529-2.52,6.983-3.938,10.418c-1.409,3.439-2.929,6.839-4.604,10.174c-1.648,3.349-3.47,6.624-5.478,9.82c-2.024,3.189-4.26,6.288-7.088,9.077l-1.104,1.021l-1.271,1.017l-1.149,0.793l-0.036,0.024l-0.137,0.081l-0.109,0.06l-0.219,0.118l-0.444,0.227c-0.349,0.125-0.655,0.271-1.052,0.349c-0.748,0.197-1.67,0.176-2.519-0.064c-0.833-0.275-1.562-0.743-2.074-1.254c-1.059-1.033-1.578-2.113-2.004-3.131c-0.812-2.051-1.176-4.023-1.435-5.975c-0.249-1.951-0.375-3.879-0.4-5.796c-0.042-3.831,0.163-7.615,0.583-11.364c0.202-1.875,0.454-3.739,0.726-5.6c0.305-1.854,0.62-3.705,0.984-5.544c1.402-7.369,3.329-14.603,5.556-21.725c2.218-7.126,4.741-14.145,7.533-21.048c5.566-13.815,12.244-27.157,19.856-39.92l0.476-0.796l0.916,0.073c0.479,0.038,0.922,0.317,1.153,0.619c0.09,0.117,0.173,0.252,0.233,0.38c0.037,0.087,0.07,0.177,0.099,0.268c0.089,0.326,0.092,0.516,0.101,0.702c0.006,0.351-0.025,0.609-0.058,0.874c-0.069,0.512-0.166,0.972-0.269,1.426c-0.209,0.904-0.451,1.769-0.703,2.627c-0.508,1.715-1.062,3.394-1.631,5.067c-1.145,3.342-2.34,6.652-3.584,9.943c-2.486,6.581-5.068,13.117-7.684,19.638c-5.239,13.038-10.61,26.016-16.07,38.957L104.975,83.646z"></path>
          <path d="M131.579,82.565c5.062-13.098,10.03-26.231,14.862-39.409c2.412-6.59,4.789-13.193,7.065-19.821c1.132-3.315,2.269-6.628,3.315-9.957c0.523-1.663,1.031-3.331,1.48-4.994c0.225-0.83,0.437-1.663,0.604-2.473c0.082-0.403,0.152-0.805,0.193-1.165c0.018-0.171,0.028-0.35,0.022-0.439c-0.001-0.034-0.015-0.064,0.013,0.051c0.012,0.039,0.025,0.077,0.045,0.113c0.033,0.081,0.086,0.17,0.147,0.24c0.161,0.215,0.506,0.442,0.875,0.461l1.391-0.723c-7.243,12.804-13.538,26.139-18.711,39.88c-2.581,6.872-4.887,13.843-6.856,20.898c-0.979,3.529-1.879,7.078-2.688,10.643c-0.812,3.563-1.572,7.135-2.195,10.726c-0.623,3.591-1.158,7.189-1.578,10.787c-0.392,3.599-0.707,7.201-0.721,10.766c-0.006,1.779,0.028,3.55,0.194,5.272c0.157,1.715,0.446,3.415,0.953,4.824c0.241,0.695,0.586,1.305,0.854,1.57c0.309,0.267,0.188,0.226,0.467,0.226c0.062,0.01,0.176-0.056,0.271-0.064l0.175-0.083l0.09-0.04l0.047-0.019c-0.029,0.02,0.099-0.057-0.061,0.042l0.037-0.023l1.17-0.724l0.926-0.676l0.975-0.814c2.567-2.279,4.836-5.104,6.983-8.008c2.13-2.932,4.095-6.017,5.995-9.152c0.948-1.569,1.868-3.16,2.768-4.763c0.918-1.594,1.812-3.206,2.686-4.829c1.745-3.247,3.415-6.543,5.047-9.857l0.465,0.186c-1.166,3.529-2.519,6.984-3.938,10.419c-1.409,3.439-2.928,6.839-4.604,10.173c-1.648,3.35-3.47,6.624-5.479,9.82c-2.023,3.189-4.26,6.288-7.088,9.077l-1.104,1.021l-1.271,1.017l-1.149,0.793l-0.036,0.024l-0.137,0.081l-0.109,0.06l-0.219,0.117l-0.443,0.228c-0.35,0.125-0.656,0.271-1.053,0.348c-0.748,0.198-1.67,0.176-2.52-0.064c-0.832-0.275-1.562-0.742-2.073-1.254c-1.06-1.032-1.578-2.113-2.004-3.131c-0.812-2.051-1.176-4.023-1.435-5.975c-0.249-1.951-0.375-3.879-0.401-5.796c-0.042-3.831,0.163-7.615,0.583-11.364c0.201-1.875,0.453-3.739,0.726-5.6c0.306-1.854,0.62-3.705,0.984-5.544c1.401-7.369,3.327-14.603,5.556-21.725c2.219-7.126,4.741-14.145,7.533-21.048c5.566-13.815,12.243-27.157,19.855-39.92l0.476-0.795l0.916,0.073c0.479,0.038,0.922,0.316,1.153,0.619c0.09,0.117,0.174,0.252,0.234,0.38c0.036,0.087,0.069,0.177,0.098,0.268c0.09,0.326,0.093,0.516,0.102,0.702c0.006,0.351-0.025,0.609-0.059,0.874c-0.068,0.511-0.166,0.972-0.269,1.426c-0.209,0.904-0.45,1.769-0.703,2.627c-0.507,1.715-1.062,3.394-1.63,5.067c-1.145,3.341-2.34,6.651-3.584,9.942c-2.486,6.581-5.068,13.116-7.684,19.637c-5.239,13.038-10.61,26.016-16.07,38.956L131.579,82.565z"></path>
          <path d="M54.618,150.518c0,0-0.261,0.613-0.75,1.765c-0.496,1.147-1.193,2.839-2.069,4.995c-1.726,4.324-4.152,10.52-6.652,18.09c-1.25,3.783-2.526,7.908-3.761,12.3c-1.223,4.394-2.455,9.041-3.564,13.886c-2.222,9.686-4.045,20.141-5.008,30.648c-0.453,5.253-0.724,10.518-0.62,15.666c0.114,5.131,0.466,10.203,1.436,14.768c0.24,1.133,0.525,2.231,0.884,3.227c0.356,0.984,0.805,1.887,1.224,2.418c0.205,0.244,0.378,0.369,0.404,0.389c0.025,0.018-0.067,0.027,0.076,0.003c0.142-0.05,0.357-0.104,0.732-0.397c0.467-0.346,0.931-0.688,1.392-1.026c0.483-0.34,0.878-0.681,1.273-1.019c0.401-0.336,0.799-0.67,1.195-1.002c0.792-0.691,1.57-1.444,2.338-2.146c1.524-1.447,2.975-2.887,4.329-4.318c2.71-2.861,5.148-5.562,7.271-7.998c2.12-2.438,3.952-4.591,5.457-6.371c2.998-3.578,4.71-5.623,4.71-5.623l0.417,0.275c0,0-0.321,0.59-0.923,1.694c-0.606,1.103-1.528,2.698-2.75,4.7c-1.217,2.008-2.76,4.402-4.6,7.111c-1.864,2.691-4.021,5.701-6.579,8.854c-2.57,3.154-5.427,6.482-9.174,9.662c-0.442,0.365-0.887,0.731-1.335,1.101c-0.52,0.44-1.327,0.996-2.302,1.302c-0.968,0.334-2.319,0.363-3.396-0.092c-1.081-0.434-1.831-1.109-2.419-1.763c-1.119-1.324-1.722-2.656-2.212-3.968c-0.481-1.312-0.822-2.615-1.107-3.924c-1.056-5.231-1.183-10.537-1.026-15.886c0.177-5.345,0.636-10.728,1.328-16.067c1.359-10.687,3.582-21.207,6.171-30.914c1.307-4.852,2.672-9.51,4.119-13.877c1.443-4.367,2.914-8.459,4.341-12.207c2.866-7.492,5.544-13.61,7.518-17.846c0.992-2.115,1.78-3.773,2.334-4.893c0.549-1.122,0.841-1.721,0.841-1.721L54.618,150.518z"></path>
          <path d="M120.732,178.752c0.781-0.263,1.564-0.516,2.353-0.755c1.577-0.481,3.171-0.919,4.792-1.298c1.623-0.375,3.271-0.7,4.977-0.895c1.707-0.187,3.459-0.287,5.356-0.025c0.947,0.144,1.948,0.381,2.97,0.906c1.012,0.51,2.045,1.453,2.578,2.638c0.531,1.165,0.592,2.403,0.491,3.348c-0.032,0.255-0.085,0.608-0.142,0.863c-0.062,0.241-0.115,0.498-0.191,0.724c-0.143,0.467-0.309,0.905-0.486,1.325c-0.717,1.678-1.64,3.101-2.587,4.481c-0.956,1.371-1.971,2.668-3.012,3.933c-2.089,2.519-4.285,4.903-6.558,7.205c-2.271,2.299-4.576,4.554-6.951,6.729c-4.761,4.338-9.581,8.586-14.625,12.575l-0.329-0.377c2.286-2.244,4.54-4.524,6.792-6.799c2.244-2.284,4.455-4.599,6.626-6.942c2.167-2.349,4.33-4.693,6.404-7.104c2.072-2.413,4.102-4.854,5.978-7.374c0.933-1.262,1.829-2.542,2.64-3.846c0.803-1.299,1.537-2.642,2.032-3.935c0.122-0.321,0.226-0.64,0.304-0.944c0.049-0.154,0.062-0.295,0.1-0.44l0.045-0.323c0.047-0.646-0.057-1.058-0.202-1.354c-0.157-0.271-0.364-0.469-0.786-0.67c-0.416-0.193-0.996-0.332-1.636-0.396c-1.29-0.13-2.763-0.013-4.229,0.214c-1.474,0.228-2.969,0.55-4.457,0.941c-1.49,0.392-2.978,0.844-4.453,1.339c-0.738,0.248-1.475,0.507-2.206,0.775l-1.093,0.41l-1.165,0.459l-0.219,0.116c-4.558,2.008-9.18,4.379-13.199,7.203c-1.987,1.41-3.907,2.982-5.201,4.666l-0.201,0.271l-0.104,0.136l-0.131,0.207l-0.261,0.411l-0.103,0.195c-0.19,0.377-0.379,0.909-0.559,1.453c-0.36,1.102-0.664,2.321-0.949,3.549c-1.116,4.959-1.999,10.144-3.091,15.271c-1.098,5.136-2.325,10.275-3.875,15.354c-1.553,5.071-3.398,10.104-5.904,14.895c-2.503,4.762-5.716,9.363-10.156,12.839l-0.88,0.649c-0.291,0.211-0.547,0.369-0.823,0.558c-0.63,0.409-1.192,0.752-1.833,1.093c-1.255,0.668-2.595,1.276-4.145,1.6c-0.771,0.162-1.605,0.229-2.466,0.17c-0.862-0.058-1.765-0.314-2.566-0.735c-1.643-0.856-2.689-2.315-3.338-3.688c-0.659-1.396-1.022-2.802-1.267-4.185c-0.245-1.386-0.368-2.757-0.426-4.116c-0.111-2.718,0.032-5.392,0.283-8.039c0.525-5.293,1.502-10.484,2.724-15.607c1.233-5.12,2.72-10.174,4.527-15.131c0.891-2.459,1.909-4.995,3.264-7.334c1.336-2.351,2.954-4.547,4.832-6.502c3.752-3.888,8.543-6.914,13.975-7.938c1.358-0.236,2.759-0.342,4.192-0.159c0.715,0.101,1.442,0.261,2.154,0.589c0.701,0.322,1.428,0.83,1.885,1.629c0.458,0.803,0.524,1.756,0.311,2.564c-0.053,0.241-0.104,0.363-0.156,0.523c-0.086,0.23-0.145,0.347-0.219,0.523c-0.136,0.335-0.295,0.633-0.451,0.936c-0.633,1.199-1.323,2.322-2.041,3.427c-2.872,4.405-5.989,8.589-9.124,12.764c-6.297,8.324-12.784,16.488-19.358,24.584l-0.394-0.308c6.37-8.246,12.655-16.564,18.732-25.02c3.021-4.234,6.035-8.492,8.75-12.891c0.677-1.098,1.323-2.214,1.879-3.334c0.137-0.28,0.278-0.561,0.378-0.833l0.154-0.38c0.045-0.15,0.107-0.334,0.112-0.414c0.103-0.451,0.039-0.891-0.161-1.219c-0.409-0.692-1.545-1.113-2.684-1.223c-1.159-0.121-2.387-0.009-3.586,0.231c-4.838,1.026-9.237,3.923-12.597,7.593c-1.685,1.852-3.137,3.912-4.341,6.112c-1.221,2.2-2.111,4.536-2.952,6.989c-1.674,4.869-3.045,9.858-4.16,14.895c-1.105,5.035-1.964,10.13-2.375,15.223c-0.195,2.541-0.28,5.088-0.133,7.577c0.161,2.459,0.522,4.976,1.479,6.909c0.997,1.988,2.331,2.657,4.388,2.186c1.004-0.224,2.065-0.705,3.093-1.281c0.506-0.279,1.05-0.627,1.507-0.937c0.26-0.184,0.553-0.376,0.785-0.554l0.683-0.523c3.752-3.039,6.605-7.223,8.831-11.709c2.232-4.504,3.909-9.334,5.284-14.259c1.369-4.933,2.437-9.972,3.386-15.055c0.981-5.089,1.795-10.194,2.887-15.425c0.288-1.313,0.59-2.631,1.019-4.016c0.217-0.695,0.465-1.396,0.854-2.187l0.164-0.308l0.083-0.152l0.122-0.201l0.263-0.412l0.131-0.206l0.185-0.259l0.377-0.516c1.919-2.438,4.123-4.164,6.382-5.75c2.272-1.557,4.618-2.897,7.003-4.133l4.887-2.235L120.732,178.752z"></path>
          <path d="M115.392,190.336c0,0,0.063,2.848,0.051,7.107c0.003,2.133,0.014,4.619-0.025,7.281c-0.011,2.662-0.099,5.498-0.161,8.334c-0.089,2.834,0.099,5.691-0.087,8.34c-0.221,2.646-0.692,5.094-1.197,7.184c-0.255,1.044-0.53,1.998-0.785,2.843c-0.265,0.845-0.515,1.578-0.749,2.181c-0.459,1.205-0.806,1.887-0.806,1.887l-0.498-0.041c0,0-0.229-0.729-0.483-1.994c-0.131-0.633-0.256-1.396-0.378-2.273c-0.111-0.875-0.225-1.86-0.303-2.934c-0.152-2.145-0.213-4.637,0.007-7.282c0.254-2.643,0.912-5.43,1.292-8.239c0.407-2.809,0.79-5.617,1.219-8.246c0.401-2.631,0.823-5.082,1.179-7.185c0.693-4.205,1.226-7.002,1.226-7.002L115.392,190.336z"></path>
          <path d="M109.245,220.436c0,0,1.408-0.668,3.938-1.676c2.533-1.002,6.198-2.336,10.782-3.441c2.293-0.543,4.823-1.021,7.587-1.184c1.38-0.088,2.825-0.068,4.319,0.145c1.488,0.212,3.05,0.607,4.54,1.432c0.737,0.443,1.446,0.84,2.14,1.749c0.621,0.841,0.94,1.64,1.221,2.46c0.529,1.629,0.737,3.229,0.885,4.825c0.265,3.19,0.168,6.36-0.024,9.509c-0.18,3.148-0.506,6.271-0.841,9.338c-0.332,3.067-0.764,6.067-1.289,8.946c-0.555,2.874-1.165,5.634-1.861,8.222c-0.348,1.293-0.685,2.551-1.01,3.768c-0.361,1.207-0.711,2.375-1.046,3.494c-0.678,2.236-1.376,4.266-2.005,6.06c-0.641,1.791-1.229,3.343-1.742,4.612c-1.02,2.541-1.71,3.959-1.71,3.959l-0.481-0.131c0,0,0.125-1.568,0.455-4.274c0.159-1.354,0.379-2.992,0.642-4.865c0.274-1.868,0.569-3.979,0.946-6.267c0.183-1.145,0.371-2.335,0.568-3.568c0.211-1.229,0.43-2.498,0.653-3.803c0.422-2.615,0.94-5.354,1.475-8.182c0.576-2.816,1.173-5.729,1.776-8.687c0.602-2.957,1.091-5.976,1.486-8.991c0.371-3.014,0.64-6.044,0.571-8.943c-0.038-1.44-0.155-2.87-0.479-4.109c-0.154-0.604-0.391-1.202-0.624-1.566c-0.146-0.313-0.698-0.748-1.183-1.061c-2.066-1.305-4.812-1.654-7.338-1.708c-2.559-0.048-5.027,0.215-7.287,0.569c-4.53,0.716-8.247,1.787-10.837,2.531c-2.589,0.769-4.037,1.303-4.037,1.303L109.245,220.436z"></path>
          <path d="M185.727,187.107c-0.35-0.856-0.959-1.772-1.504-2.623c-0.566-0.858-1.166-1.697-1.783-2.521c-1.246-1.638-2.578-3.21-4.029-4.643c-1.45-1.428-3.021-2.747-4.764-3.672c-0.863-0.469-1.772-0.834-2.692-0.991c-0.914-0.177-1.841-0.179-2.688,0.103c-1.726,0.483-3.089,1.928-4.133,3.537c-0.289,0.383-0.484,0.852-0.73,1.27l-0.178,0.322l-0.043,0.082l-0.013,0.02c-0.008,0.015,0.026-0.053,0.008-0.014l-0.021,0.043l-0.079,0.179l-0.318,0.711l-0.317,0.711l-0.252,0.69c-0.157,0.467-0.353,0.898-0.482,1.393c-0.626,1.904-1.021,3.895-1.385,5.882c-0.336,1.998-0.551,4.021-0.694,6.051c-0.506,8.125,0.203,16.363,1.972,24.274c0.469,1.969,0.977,3.928,1.609,5.831c0.639,1.896,1.337,3.772,2.21,5.524c0.863,1.746,1.854,3.414,3.024,4.784c1.166,1.37,2.547,2.363,3.832,2.653l-0.957-0.038c0.646-0.146,1.631-0.767,2.529-1.459c0.918-0.765,1.827-1.62,2.694-2.575c0.881-0.933,1.731-1.936,2.563-2.957c0.824-1.031,1.654-2.074,2.457-3.145c0.791-1.081,1.595-2.154,2.377-3.254c0.795-1.088,1.553-2.209,2.326-3.317c1.545-2.228,3.061-4.481,4.537-6.771c1.479-2.285,2.98-4.562,4.424-6.883c1.455-2.312,2.937-4.613,4.365-6.949c2.922-4.635,5.801-9.31,8.762-13.955l0.449,0.222c-0.968,2.589-2.006,5.146-3.105,7.672c-1.078,2.539-2.246,5.035-3.405,7.539l-1.812,3.719c-0.615,1.235-1.219,2.479-1.863,3.697l-1.939,3.662c-0.654,1.216-1.308,2.437-1.998,3.635c-1.371,2.403-2.789,4.787-4.246,7.154c-1.502,2.34-3.029,4.679-4.709,6.933c-0.846,1.124-1.689,2.256-2.61,3.342c-0.921,1.088-1.859,2.168-2.89,3.205c-1.019,1.037-2.141,2.033-3.371,2.975c-0.312,0.234-0.672,0.447-1.008,0.669c-0.334,0.22-0.673,0.438-1.092,0.62c-0.408,0.185-0.768,0.391-1.225,0.541c-0.477,0.141-0.959,0.267-1.439,0.377l-0.46,0.104l-0.496-0.144c-2.764-0.801-4.696-2.637-6.131-4.457c-1.446-1.854-2.493-3.842-3.386-5.848c-0.896-2.008-1.555-4.064-2.17-6.121c-0.604-2.062-1.062-4.144-1.479-6.229c-1.548-8.354-1.965-16.848-1.137-25.273c0.226-2.104,0.524-4.203,0.954-6.287c0.447-2.078,0.97-4.149,1.732-6.16c0.16-0.504,0.409-1.016,0.61-1.521l0.321-0.757l0.351-0.694l0.351-0.695l0.088-0.174l0.021-0.043l0.043-0.08l0.053-0.088l0.213-0.352c0.301-0.462,0.535-0.95,0.89-1.386c0.649-0.894,1.36-1.771,2.271-2.483c0.863-0.746,1.944-1.31,3.092-1.594c1.148-0.312,2.365-0.249,3.468,0.02c1.118,0.25,2.138,0.726,3.069,1.287c1.883,1.117,3.453,2.581,4.888,4.129c1.438,1.547,2.698,3.231,3.877,4.961c0.582,0.871,1.144,1.754,1.671,2.656c0.516,0.928,1.05,1.771,1.421,2.859L185.727,187.107z"></path>
          <path d="M208.402,185.234c0,0,2.377-4.808,6.535-13.219c4.123-8.43,10.006-20.479,16.769-35.065c3.354-7.3,6.994-15.225,10.405-23.736c0.84-2.127,1.666-4.3,2.355-6.494c0.174-0.548,0.329-1.096,0.463-1.635c0.125-0.523,0.242-1.102,0.242-1.47c0.005-0.085-0.011-0.161-0.004-0.119c-0.01-0.055,0.064,0.349,0.501,0.533c0.241,0.085,0.341,0.087,0.466,0.068c0.051,0.003,0.098-0.019,0.098-0.019c-0.008,0.005-0.072,0.043-0.147,0.093c-0.329,0.235-0.742,0.639-1.122,1.042c-1.548,1.679-3.003,3.65-4.441,5.616c-1.434,1.983-2.844,4.024-4.248,6.097c-0.695,1.041-1.396,2.085-2.1,3.135l-1.021,1.55l-1.008,1.625c-1.346,2.17-2.699,4.355-4.062,6.555c-0.682,1.1-1.365,2.203-2.051,3.309c-0.646,1.12-1.238,2.263-1.862,3.397c-1.233,2.273-2.474,4.557-3.719,6.85c-0.655,1.127-1.157,2.344-1.728,3.526c-0.556,1.189-1.111,2.38-1.67,3.572l-1.676,3.582c-0.583,1.185-0.992,2.443-1.498,3.664c-0.951,2.463-1.967,4.908-2.873,7.395l-2.421,7.559c-2.929,10.157-4.737,20.619-4.979,30.957c-0.021,5.168,0.143,10.283,0.746,15.33c0.279,2.529,0.627,5.036,0.983,7.586c0.095,0.621,0.167,1.293,0.244,1.95c0.065,0.679,0.179,1.273,0.204,2.019l0.054,2.173l-0.005,0.118l0.001,0.039l0.001,0.05l-0.002-0.041c-0.003-0.021-0.014-0.103-0.025-0.149c-0.043-0.156-0.025-0.169-0.188-0.517c-0.104-0.199-0.489-0.916-1.533-1.233c-1.124-0.275-1.704,0.162-1.907,0.241c-0.334,0.218-0.296,0.208-0.426,0.327c-0.042,0.038-0.074,0.076-0.1,0.107l-0.021,0.026l0.104-0.171c0.455-0.818,0.968-2.02,1.426-3.112c0.467-1.12,0.919-2.262,1.363-3.399c0.886-2.295,1.762-4.565,2.627-6.813c1.723-4.514,3.404-8.944,5.104-13.239c3.397-8.604,6.612-16.718,10.416-24.039c0.483-0.916,0.988-1.818,1.539-2.711c0.565-0.896,1.119-1.771,2.011-2.687c0.229-0.229,0.494-0.472,0.87-0.718c0.187-0.119,0.421-0.247,0.714-0.354c0.043-0.023,0.486-0.133,0.336-0.092l0.088-0.018c0.076-0.01,0.043-0.02,0.342-0.043c0.226-0.017,0.459-0.008,0.681,0.022c0.197,0.033,0.34,0.085,0.508,0.144c0.347,0.113,0.55,0.279,0.804,0.451c0.188,0.162,0.375,0.342,0.515,0.51c0.118,0.158,0.256,0.332,0.346,0.484c0.714,1.231,0.886,2.211,1.112,3.205c0.383,1.954,0.52,3.777,0.63,5.553c0.103,1.771,0.138,3.48,0.137,5.133c0.005,6.603-0.352,12.307-0.7,17.002c-0.354,4.691-0.67,8.371-0.945,10.877c-0.281,2.504-0.432,3.839-0.432,3.839l-0.498-0.035c0,0,0.02-1.341,0.055-3.854c0.013-2.515,0.091-6.199,0.062-10.887c-0.01-2.343-0.046-4.938-0.113-7.754c-0.054-2.816-0.146-5.861-0.351-9.093c-0.235-3.202-0.444-6.71-1.233-10.015c-0.197-0.78-0.487-1.635-0.764-2.013c-0.031-0.049-0.052-0.052-0.07-0.085c-0.015-0.011-0.006,0.014,0.01,0.016c0.047,0.061,0.074,0.049,0.184,0.113c0.055,0.024,0.087,0.025,0.168,0.041c0.104,0.025,0.219,0.027,0.325,0.008c-0.097,0.025,0.216-0.078,0.146-0.05c-0.021,0.021-0.115,0.103-0.218,0.222c-0.429,0.487-0.929,1.271-1.374,2.059c-0.451,0.802-0.888,1.654-1.31,2.534c-1.687,3.528-3.229,7.397-4.776,11.413c-1.564,4.016-3.115,8.205-4.686,12.527c-1.571,4.33-3.186,8.778-4.836,13.325c-0.832,2.277-1.68,4.579-2.584,6.9c-0.451,1.161-0.91,2.329-1.397,3.51c-0.51,1.203-0.95,2.324-1.708,3.709c-0.104,0.183-0.223,0.381-0.398,0.628l-0.166,0.215c-0.073,0.09-0.16,0.188-0.256,0.283c-0.19,0.168-0.203,0.221-0.608,0.475c-0.267,0.119-0.931,0.597-2.129,0.291c-1.121-0.334-1.558-1.123-1.695-1.391c-0.202-0.416-0.198-0.509-0.265-0.738c-0.025-0.125-0.053-0.285-0.062-0.384l-0.023-0.276c-0.004-0.143-0.008-0.289-0.004-0.422l0.012-0.315l-0.025-1.621c-0.002-0.522-0.109-1.185-0.158-1.771c-0.063-0.606-0.119-1.203-0.207-1.846c-0.317-2.513-0.644-5.105-0.898-7.724c-0.583-5.241-0.588-10.62-0.441-16.003c0.536-10.777,2.601-21.579,5.834-31.961c0.873-2.571,1.748-5.145,2.621-7.715c0.973-2.528,2.053-5.014,3.069-7.515c0.539-1.237,0.981-2.519,1.597-3.715c0.592-1.209,1.182-2.417,1.771-3.622s1.178-2.408,1.766-3.609c0.602-1.194,1.133-2.418,1.824-3.565c1.314-2.324,2.625-4.638,3.929-6.941c0.657-1.146,1.289-2.309,1.962-3.431c0.705-1.094,1.408-2.185,2.108-3.272c1.401-2.175,2.795-4.336,4.178-6.483l1.035-1.607l1.103-1.611c0.727-1.044,1.448-2.084,2.17-3.12c1.451-2.065,2.912-4.102,4.406-6.095c1.514-1.99,2.995-3.945,4.762-5.798c0.461-0.464,0.906-0.917,1.562-1.375c0.178-0.115,0.369-0.234,0.639-0.346c0.137-0.057,0.334-0.112,0.527-0.144c0.275-0.021,0.527-0.038,0.905,0.121c0.709,0.305,0.954,1.002,0.989,1.24c0.076,0.333,0.072,0.56,0.068,0.772c-0.033,0.831-0.197,1.421-0.354,2.052c-0.161,0.614-0.342,1.203-0.534,1.78c-0.774,2.304-1.67,4.478-2.57,6.618c-3.649,8.521-7.472,16.358-11.005,23.595c-7.109,14.446-13.273,26.358-17.595,34.692c-4.354,8.315-6.845,13.067-6.845,13.067L208.402,185.234z"></path>
          <path d="M15.472,212.034c0,0,0.615-0.263,1.691-0.72c1.058-0.483,2.569-1.174,4.383-2.002c0.903-0.416,1.88-0.838,2.905-1.358c1.03-0.495,2.116-1.019,3.24-1.558c2.242-1.09,4.658-2.179,7.062-3.291c2.404-1.121,4.688-2.547,6.971-3.522c2.29-0.961,4.542-1.58,6.502-2.044c0.981-0.23,1.896-0.407,2.719-0.534c0.822-0.131,1.546-0.228,2.154-0.278c1.212-0.115,1.939-0.104,1.939-0.104l0.195,0.461c0,0-0.5,0.521-1.436,1.293c-0.466,0.392-1.046,0.835-1.72,1.323c-0.673,0.492-1.446,1.014-2.306,1.545c-1.721,1.061-3.765,2.219-6.078,3.16c-1.163,0.457-2.393,0.856-3.656,1.229c-1.264,0.372-2.531,0.784-3.805,1.189c-2.554,0.798-5.096,1.618-7.501,2.321c-1.201,0.354-2.361,0.697-3.461,1.023c-1.095,0.328-2.17,0.577-3.145,0.828c-1.958,0.484-3.57,0.917-4.711,1.165c-1.146,0.225-1.8,0.353-1.8,0.353L15.472,212.034z"></path>
        </g>
      </svg><a href="https://twitter.com/legomushroom" id="js-mushroom" class="by"></a>
    </div>
              
            
!

CSS

              
                body,
html {
  height: 100%;
  overflow: hidden;
}
body {
  margin: 0;
  width: 100%;
}

*{
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.scene {
  position: absolute;
  display: inline-block;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  margin-left: -95px;
  margin-top: -115px;
}
.torch-scene {
  position: relative;
}
.canvas {
  width: 600px;
  height: 450px;
  margin: 0 auto;
  display: block;
  position: relative;
  z-index: 2;
  -webkit-backface-visibility: hidden;
  -ms-backface-visibility: hidden;
  backface-visibility: hidden;
  margin: 0 auto;
}
.shadow {
  width: 700px;
  height: 700px;
  background: transparent url("../i/shadow.svg") no-repeat center center;
  position: absolute;
  z-index: 1;
  left: 50%;
  top: 50%;
  margin-left: -350px;
  margin-top: -311.1111111111111px;
  -webkit-transform: scale(0) translateY(300px);
  -ms-transform: scale(0) translateY(300px);
  transform: scale(0) translateY(300px);
}
.torch {
  position: absolute;
  z-index: 2;
  left: 50%;
  bottom: -130px;
  margin-left: -11px;
  width: 73px;
  height: 144px;
  cursor: move;
  background: transparent url("../i/torch.svg") no-repeat center center;
  opacity: 0;
}
.jelly-torch {
  position: absolute;
  left: 50%;
  top: 50%;
  margin-top: -80px;
  margin-left: 140px;
  z-index: 3;
}
.by {
  position: absolute;
  right: -84px;
  bottom: 40px;
  width: 35px;
  height: 32px;
  background: transparent url("../i/by.svg") no-repeat center center;
  z-index: 3;
  display: none;
  opacity: 0;
}
.legend {
  width: 334px;
  height: 292px;
  background: transparent url("https://is.gd/0FWzSF") no-repeat center center;
  top: 215px;
  left: 112px;
  position: absolute;
  z-index: 4;
  opacity: 0;
}

.shadow {
  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjcwMHB4IiBoZWlnaHQ9IjcwMHB4IiB2aWV3Qm94PSIwIDAgNzAwIDcwMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczpza2V0Y2g9Imh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaC9ucyI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDMuMS4xICg4NzYxKSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4KICAgIDx0aXRsZT5zaGFkb3c8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8cmFkaWFsR3JhZGllbnQgY3g9IjUwJSIgY3k9IjUwJSIgZng9IjUwJSIgZnk9IjUwJSIgcj0iNTAlIiBpZD0icmFkaWFsR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGNkQ1OEEiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0Y2RDU4QSIgc3RvcC1vcGFjaXR5PSIwIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L3JhZGlhbEdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc2tldGNoOnR5cGU9Ik1TUGFnZSI+CiAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC03IiBmaWxsPSJ1cmwoI3JhZGlhbEdyYWRpZW50LTEpIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIiBjeD0iMzUwIiBjeT0iMzUwIiByPSIzNTAiPjwvY2lyY2xlPgogICAgPC9nPgo8L3N2Zz4=');
}


.torch {
  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjczcHgiIGhlaWdodD0iMTQ0cHgiIHZpZXdCb3g9IjAgMCA3MyAxNDQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6c2tldGNoPSJodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2gvbnMiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCAzLjEuMSAoODc2MSkgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+dG9yY2g8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjYwLjQxNDQxJSIgeTE9IjM1LjU2OTY5JSIgeDI9IjY5Ljg0MDQ5OTQlIiB5Mj0iNzguNDQ5NDg4NSUiIGlkPSJsaW5lYXJHcmFkaWVudC0xIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0U1Q0RDOCIgc3RvcC1vcGFjaXR5PSIxLjEzNzUzODYxIiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNFOEQzQ0UiIG9mZnNldD0iNTAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNFNUNEQzciIHN0b3Atb3BhY2l0eT0iMCIgb2Zmc2V0PSIxMDAlIj48L3N0b3A+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHNrZXRjaDp0eXBlPSJNU1BhZ2UiPgogICAgICAgIDxnIGlkPSJHcm91cC0rLVJlY3RhbmdsZS0xLSstUmVjdGFuZ2xlLTMiIHNrZXRjaDp0eXBlPSJNU0xheWVyR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMDAwMDAwLCAxLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHNrZXRjaDp0eXBlPSJNU1NoYXBlR3JvdXAiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIwLjkxNTYwOCwwLjA1NjE2ODY0NDQgQzIzLjMyMjE0MTYsMS43NDgyNDkwNiAyNS4wOTE2NTE1LDQuMTk4NjA2MTcgMjUuNTA5MjU1OSw3LjEzMzQxNzg0IEMyNi4wNTQyNjUsNC4yMTI2NDgzMyAyNy43ODEzMDY3LDEuNzEzMTQzNjUgMzAuMjUxNTQyNiwwLjA2MzE4OTcyNSBDMzEuMDU4NDM5MiwwLjc1ODI3NjcgMzEuODkzNjQ3OSwxLjQxODI1ODI3IDMyLjY4NjM4ODQsMi4xMjczODc0MSBDMzMuOTYwNDM1NiwzLjU4Nzc3MjE2IDM0LjYyNTc3MTMsNS40MzQzMTYzNSAzNC44MzgxMTI1LDcuMzM3MDI5MTggQzM1LjMwNTI2MzIsNC4yOTY5MDEzIDM2LjY5NDM3NzgsMS44ODg2MDM2IDM5LjI4NDk0MDQsMC4yMzg2NDk2NzMgQzM5LjI5MTQyMjksMS4wNjYwMjExNyAzOS4xODE5NTYyLDcuNzI4MDQxMSAzOS4yMjc5OTUsOC4zODM5MTk3NCBDMjYuNjY0NDc0MSw4LjU4NzUzMTA3IDE0LjU5NDkxODMsOC4zNTUwODU4NiAyLjAzMTM5NzQ2LDguMTM3NDMyMzYgQzIuMDgwOTQzNzQsNS40NDEzMzc0MyAyLjAzMTM5NzQ2LDIuNzQ1MjQyNSAyLjA4MDk0Mzc0LDAuMDQyMTI2NDgzMyBDNC42ODU2NjI0MywxLjcwNjEyMjU3IDYuNDU1MTcyNDEsNC4zNjcxMTIxIDYuOTIyMzIzMDUsNy40MDcyMzk5OCBDNy4xMjc1ODYyMSw2LjExNTM2MTE2IDcuMzg5NDczNjgsNC44MjM0ODIzNCA3LjkxMzI0ODY0LDMuNjIyODc3NTcgQzguOTM5NTY0NDMsMi4yODE4NTExOCAxMC4xNzgyMjE0LDEuMTMwMzkzOTcgMTEuNDQ1MTkwNiwwLjAyMTA2MzI0MTcgQzEzLjkyOTU4MjYsMS42NzEwMTcxNyAxNS42NjM3MDI0LDQuMTcwNTIxODUgMTYuMjM3MDIzNiw3LjEwNTMzMzUyIEMxNi42Njg3ODQsNC4xNjM1MDA3NyAxOC40MzgyOTQsMS42NjM5OTYwOSAyMC45MTU2MDgsMC4wNTYxNjg2NDQ0IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzRBNEE0QSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTMuNzU4NDM5MiwxMS43NjU5NTc2IEMxNS4yOTU2NDQzLDExLjQ4NDU0NzIgMjYuODQ3MDA1NCwxMS41NTI3Njc5IDM4LjM4NDIxMDUsMTEuNzIzMzE5NiBDMzMuODg5NjU1MiwxMi41MjQ5MTI4IDMwLjM2NDc5MTMsMTcuMzM0NDcyIDMwLjIwMTk5NjQsMjIuODAwNjU1NCBDMjMuOTg3NDc3MywyMy4wNTY0ODMgMTcuNzUxNzI0MSwyMy4wODIwNjU3IDExLjUzNzIwNTEsMjIuNzgzNjAwMiBDMTEuMzY3MzMyMSwxNy40ODc5Njg1IDguMDU0ODA5NDQsMTIuODQwNDMzNSAzLjc1ODQzOTIsMTEuNzY1OTU3NiBMMy43NTg0MzkyLDExLjc2NTk1NzYgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNEE0QTRBIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMzAsMjQgQzI5Ljk2NjMwNDgsMjQuOTU1MDk2MSAyOS45NjYzMDQ4LDM0LjM5NzM5MjUgMzAsMzggQzI5LjYxNTg3NDIsNDIuMjQwMjUwOSAzMi4zNDYzNTQyLDU2Ljg1NTQ2ODggMjIuNTc1NTIwOCw1NC4zNzY5NTMxIEMxMS4yMzg5MzIzLDU0Ljc0ODA0NjkgMTEuOTU5NTY1NywzOS40NDEyMzQzIDEyLDM0IEMxMS45NTk1NjU3LDMwLjUyNTA2ODkgMTIuMDY3MzkwNSwyNy4zMDUxNDc2IDEyLDI0IEMxNy45OTc3NTM3LDIzLjk1ODk1NDkgMjQuMDAyMjQ2MywyMy45ODAwMDAxIDMwLDI0IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzRBNEE0QSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTExLjQ1OTM0NjYsNDkuNDQ2NDYzOCBDMTIuOTY2OTY5MSw1MC45OTExMDE1IDE0LjY2NTY5ODcsNTIuMzYwMjEyMiAxNS45ODkyOTIyLDU0LjA3MzM1NTkgQzE2LjQ4NDc1NSw1Ni4yNDk4OTA4IDE2LjI0NDEwMTYsNTguNTU5ODI2MyAxNy4wNTgwNzYyLDYwLjY3MzE3MTYgQzE4LjgyMDUwODIsNjUuNjMwMDU0NCAyMy42MTIzNDEyLDY5LjQxNDQxNjkgMjguOTQyMTA1Myw2OS43NTg0NDk4IEMyNy45Mjk5NDU2LDcwLjg0NjcxNzMgMjYuODgyMzk1Niw3MS45MDY5MDA1IDI1LjY4NjIwNjksNzIuNzk4NTc3NyBDMjIuNjAwMTgxNSw3NC4yNjU5ODM1IDE4Ljk5MDM4MTEsNzQuMjMwODc4MSAxNS45MjU1ODk4LDcyLjcyODM2NjkgQzEzLjQwNTgwNzYsNzAuOTczMDk2NyAxMS40OTQ3MzY4LDY4LjE4NTcyNzggMTEuNDgwNTgwOCw2NS4wNTQzMjU4IEMxMS4zODg1NjYyLDU5Ljg1MTcwNTIgMTEuNDczNTAyNyw1NC42NDkwODQ1IDExLjQ1OTM0NjYsNDkuNDQ2NDYzOCBMMTEuNDU5MzQ2Niw0OS40NDY0NjM4IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzRBNEE0QSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTMuNTUyNzEzNjhlLTE1LDExIEMtMC4yMzEwNzc0MTksOS4yNDIxODc1IDAuNzAwMzIzMTE5LDguNDUzMTI1IDIsOCBDMTQuMjQwOTExMyw4LjI0MjE4NzUgMjYuNzc5NTM4Miw4LjI0MjE4NzUgMzksOCBDNDAuMjQyNTA5Niw4LjQ0NTMxMjUgNDEuMzI5MTQzNiw5LjMyMDMxMjUgNDEsMTEgQzQwLjQxODkxMTIsMTIuMDQ2ODc1IDM5LjA1NzA5MDgsMTEuODUxNTYyNSAzOCwxMiBDMjYuNDU0OTU5MiwxMS44MDQ2ODc1IDE0LjkzOTQ2MTcsMTEuNzQyMTg3NSAzLDEyIEMyLjIxMDMyMDk2LDExLjg4MjgxMjUgMC42MzY4MTg1MzcsMTIuMTQwNjI1IDMuNTUyNzEzNjhlLTE1LDExIEwzLjU1MjcxMzY4ZS0xNSwxMSBaIiBpZD0iU2hhcGUiIGZpbGw9IiNBRUFFQUUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMiwyNSBDOS40NzgyNzc3NCwyNC40NDI3NDgxIDkuNDE0OTI1NzksMjEuMzUxMTQ1IDEyLDIxIEMxNy44OTcwNDc2LDIxLjI2NzE3NTYgMjQuMDk4NDk5MywyMS4yNDQyNzQ4IDMwLDIxIEMzMi41ODA2MjExLDIxLjM1MTE0NSAzMi41MjQzMDgyLDI0LjQzNTExNDUgMzAsMjUgQzI0LjE0MDczMzksMjQuODc3ODYyNiAxNy44Njg4OTEyLDI0Ljg1NDk2MTggMTIsMjUgTDEyLDI1IFoiIGlkPSJTaGFwZSIgZmlsbD0iI0FFQUVBRSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTM3LDMyIEM0Mi4yOTcxNjg0LDQ4LjM2OTAxMDMgNDguMDg4MTU1Myw2NC45NDMxOTQ4IDU0LDgyIEM1NCw4MiA2Ny4zODI2MTU4LDEyMi43MzQyNzEgNjYsMTI2IEM2MC45MzM2NDUxLDEzNC43NDkyNTggMzUuMjk3ODM3NSwxMTUuMjE2OTcxIDMxLDExNSBDMjguNzI2NDY2OCwxMTUuMjE2OTcxIDMwLDgyIDMwLDgyIEMzMC4zMzcyMTE1LDc4LjAwMzk5MDIgMzAuMzUxNDc1LDc0LjQ2OTQ3ODUgMzAsNzEgQzMwLjAxNjI4MjQsNzAuOTA2ODAzMyAyOS4zODg2ODc4LDcwLjg0MzQzNTUgMjksNzEgQzIzLjcwNDY3NzIsNzAuNDcwMjcgMTguODc2NDc3Niw2Ni42NzUyNDY0IDE3LDYyIEMxNi4yODA1MTc5LDU5LjU4NTEwMDMgMTYuNTIyOTk3Nyw1Ny4yNjg2NTc0IDE2LDU1IEMxNC42OTAxMzYxLDUzLjM2ODAyMDkgMTIuOTc4NTE0Myw1MS45OTUwNTMyIDExLDUwIEM4LjI3MTU1NDU1LDQ3LjI0MjQ3MjYgNC45OTA5NDYyMSw0NC4xMzA0MTI1IDIsNDEgQy0wLjM3OTI2Njk5OSwzOC43MDg5NTAzIC0wLjk5MjU5ODEyMywzNC4wNDA4NjAxIDIsMzMgQzUuMzYxNzk3NTksMzEuNTI3MjczIDguOTcwNDY2NzYsMzIuMDIwMTMzMiAxMiwzNCBDMTEuMzgxMDAwNywzOS44MTQzNjUzIDE2LjE4NzgwNTEsNDUuMDg3OTY5NSAyMiw0NSBDMjYuMjY1Mzg5Miw0NS4wNDkzNTg0IDMwLjA2NjIwNDcsNDIuNjIzNjY4NSAzMCwzOSBDMjkuODkyNTc4MSwzNS4wMTU2MjUgMzAuMTg3NDQ0NiwzMC44NzI0NzMgMzAsMjcgQzMzLjA5NzIwMTUsMjcuNDU3NjU1OSAzNS43NTczNDcsMjkuMDQxODQ5NCAzNywzMiBaIiBpZD0iU2hhcGUiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS45MjU1ODk4LDcyLjcyODM2NjkgQzE4Ljk5MDM4MTEsNzQuMjMwODc4MSAyMi42MDAxODE1LDc0LjI2NTk4MzUgMjUuNjg2MjA2OSw3Mi43OTg1Nzc3IEMyNi4wMjU5NTI4LDc1Ljc3NTUxNTggMjMuNzc1MTM2MSw3OC45NjMwODY0IDIwLjU0NzU0OTksNzguNzAzMzA2NCBDMTcuNDYxNTI0NSw3OC42NDAxMTY3IDE1LjUyOTIxOTYsNzUuNTcxOTA0NSAxNS45MjU1ODk4LDcyLjcyODM2NjkgTDE1LjkyNTU4OTgsNzIuNzI4MzY2OSBaIiBpZD0iU2hhcGUiIGZpbGw9IiNBRUFFQUUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+');
}

/* data uri's */
.by {
  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgWw0KCTwhRU5USVRZIG5zX2V4dGVuZCAiaHR0cDovL25zLmFkb2JlLmNvbS9FeHRlbnNpYmlsaXR5LzEuMC8iPg0KCTwhRU5USVRZIG5zX2FpICJodHRwOi8vbnMuYWRvYmUuY29tL0Fkb2JlSWxsdXN0cmF0b3IvMTAuMC8iPg0KCTwhRU5USVRZIG5zX2dyYXBocyAiaHR0cDovL25zLmFkb2JlLmNvbS9HcmFwaHMvMS4wLyI+DQoJPCFFTlRJVFkgbnNfdmFycyAiaHR0cDovL25zLmFkb2JlLmNvbS9WYXJpYWJsZXMvMS4wLyI+DQoJPCFFTlRJVFkgbnNfaW1yZXAgImh0dHA6Ly9ucy5hZG9iZS5jb20vSW1hZ2VSZXBsYWNlbWVudC8xLjAvIj4NCgk8IUVOVElUWSBuc19zZncgImh0dHA6Ly9ucy5hZG9iZS5jb20vU2F2ZUZvcldlYi8xLjAvIj4NCgk8IUVOVElUWSBuc19jdXN0b20gImh0dHA6Ly9ucy5hZG9iZS5jb20vR2VuZXJpY0N1c3RvbU5hbWVzcGFjZS8xLjAvIj4NCgk8IUVOVElUWSBuc19hZG9iZV94cGF0aCAiaHR0cDovL25zLmFkb2JlLmNvbS9YUGF0aC8xLjAvIj4NCl0+DQo8c3ZnIHZlcnNpb249IjEuMSINCgkgaWQ9IkxheWVyXzEiIHhtbG5zOng9IiZuc19leHRlbmQ7IiB4bWxuczppPSImbnNfYWk7IiB4bWxuczpncmFwaD0iJm5zX2dyYXBoczsiIHhtbG5zOnNrZXRjaD0iaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zIg0KCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjM1cHgiIGhlaWdodD0iMzJweCINCgkgdmlld0JveD0iMCAwIDM1IDMyIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAzNSAzMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8bWV0YWRhdGE+DQoJPHNmdyAgeG1sbnM9IiZuc19zZnc7Ij4NCgkJPHNsaWNlcz48L3NsaWNlcz4NCgkJPHNsaWNlU291cmNlQm91bmRzICBoZWlnaHQ9IjMyIiB3aWR0aD0iMzQuMDU1IiB5PSIxMjguNSIgeD0iMTA2Ljk0NSIgYm90dG9tTGVmdE9yaWdpbj0idHJ1ZSI+PC9zbGljZVNvdXJjZUJvdW5kcz4NCgk8L3Nmdz4NCjwvbWV0YWRhdGE+DQo8ZyBpZD0ibXVzaHJvb20tMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTEuMDAwMDAwLCAwLjAwMDAwMCkiIHNrZXRjaDp0eXBlPSJNU1NoYXBlR3JvdXAiPg0KCTxwYXRoIGlkPSJGaWxsLTIiIGZpbGw9IiNFNDZBNzUiIGQ9Ik0wLDhoMjR2NEgwVjh6Ii8+DQoJPHBhdGggaWQ9IkZpbGwtMyIgZmlsbD0iI0U0NkE3NSIgZD0iTTQsNGgxNnY0SDRWNHoiLz4NCgk8cGF0aCBpZD0iRmlsbC00IiBmaWxsPSIjRTQ2QTc1IiBkPSJNOCwwaDh2NEg4VjB6Ii8+DQoJPHBhdGggaWQ9IkZpbGwtNSIgZmlsbD0iI0YxQUM4QyIgZD0iTTgsMjBoOHY0SDhWMjB6Ii8+DQoJPHBhdGggaWQ9IkZpbGwtNiIgZmlsbD0iI0I0NjQ3OSIgZD0iTTgsMTZoOHY0SDhWMTZ6Ii8+DQoJPHBhdGggaWQ9IkZpbGwtNyIgZmlsbD0iIzY1NTQ2RSIgZD0iTTgsMTJoOHY0SDhWMTJ6Ii8+DQoJPHBhdGggaWQ9IkZpbGwtOCIgZmlsbD0iI0YxQUM4QyIgZD0iTTgsMjRoOHY4SDhWMjR6Ii8+DQoJPHBhdGggaWQ9IkZpbGwtOSIgZmlsbD0iI0YxQUM4QyIgZD0iTTE0LDhoNHY0aC00Vjh6Ii8+DQoJPHBhdGggaWQ9IkZpbGwtMTAiIGZpbGw9IiNGMUFDOEMiIGQ9Ik04LDRoNHY0SDhWNHoiLz4NCjwvZz4NCjxnIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgICAgIj4NCgk8cGF0aCBmaWxsPSIjNEE0QTRBIiBkPSJNMy42ODUsMjAuMDE3YzAuNzczLDAsMS4zNzQsMC4yNjQsMS44MDIsMC43OTJjMC40MjgsMC41MjgsMC42NDIsMS4yNzUsMC42NDIsMi4yNDINCgkJcy0wLjIxNiwxLjcxOS0wLjY0NywyLjI1NGMtMC40MzIsMC41MzUtMS4wMzEsMC44MDMtMS43OTcsMC44MDNjLTAuMzgzLDAtMC43MzMtMC4wNy0xLjA1LTAuMjEyDQoJCWMtMC4zMTctMC4xNDItMC41ODMtMC4zNTktMC43OTgtMC42NTNIMS43NzJMMS41ODQsMjZIMC45NDV2LTguMzU3aDAuODkydjIuMDNjMCwwLjQ1NS0wLjAxNCwwLjg2My0wLjA0MywxLjIyNWgwLjA0Mw0KCQlDMi4yNTIsMjAuMzExLDIuODY4LDIwLjAxNywzLjY4NSwyMC4wMTd6IE0zLjU1NiwyMC43NjRjLTAuNjA5LDAtMS4wNDcsMC4xNzQtMS4zMTYsMC41MjNjLTAuMjY5LDAuMzQ5LTAuNDAzLDAuOTM4LTAuNDAzLDEuNzY0DQoJCWMwLDAuODI4LDAuMTM4LDEuNDE5LDAuNDE0LDEuNzc1czAuNzE4LDAuNTM1LDEuMzI3LDAuNTM1YzAuNTQ4LDAsMC45NTYtMC4yLDEuMjI1LTAuNnMwLjQwMy0wLjk3MywwLjQwMy0xLjcyMQ0KCQljMC0wLjc2Ny0wLjEzNC0xLjMzOC0wLjQwMy0xLjcxNFM0LjExOCwyMC43NjQsMy41NTYsMjAuNzY0eiIvPg0KPC9nPg0KPHRleHQgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSA3LjI0MDIgMjYpIiBmaWxsPSIjNEE0QTRBIiBmb250LWZhbWlseT0iJ09wZW5TYW5zJyIgZm9udC1zaXplPSIxMSI+IDwvdGV4dD4NCjxnIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgICAgIj4NCgk8cGF0aCBmaWxsPSIjNEE0QTRBIiBkPSJNNy4yNTEsMjAuMTEzaDAuOTU2bDEuMjg5LDMuMzU3YzAuMjgzLDAuNzY2LDAuNDU4LDEuMzE5LDAuNTI2LDEuNjU5aDAuMDQzDQoJCWMwLjA0Ni0wLjE4MywwLjE0NC0wLjQ5NSwwLjI5My0wLjkzOGMwLjE0OC0wLjQ0MiwwLjYzNC0xLjgwMiwxLjQ1OC00LjA3OWgwLjk1NmwtMi41Myw2LjcwM2MtMC4yNSwwLjY2Mi0wLjU0MywxLjEzMy0wLjg3OCwxLjQxDQoJCWMtMC4zMzQsMC4yNzctMC43NDYsMC40MTYtMS4yMzIsMC40MTZjLTAuMjcyLDAtMC41NDEtMC4wMy0wLjgwNi0wLjA5MnYtMC43MTRjMC4xOTcsMC4wNDMsMC40MTcsMC4wNjQsMC42NjEsMC4wNjQNCgkJYzAuNjEyLDAsMS4wNDktMC4zNDQsMS4zMTEtMS4wMzFsMC4zMjgtMC44MzhMNy4yNTEsMjAuMTEzeiIvPg0KPC9nPg0KPC9zdmc+DQo=');
}

              
            
!

JS

              
                (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
var BasePoint, h;

h = require('./helpers');

BasePoint = (function() {
  function BasePoint(o) {
    this.o = o != null ? o : {};
    this.vars();
    this.getPosition();
  }

  BasePoint.prototype.vars = function() {
    this.ctx = this.o.ctx;
    this.base = this.o.base;
    this.radius = this.o.radius * h.PX;
    this.offset = this.o.offset;
    this.angle = this.o.angle;
    this.baseAngle = this.angle;
    return this.suppress = 0;
  };

  BasePoint.prototype.getPosition = function() {
    var minSuppress, rad;
    rad = this.base.radius - 5 * this.suppress - this.offset * h.PX;
    this.center = {
      x: this.base.x + Math.cos((this.base.angle - 90) * h.DEG) * rad,
      y: this.base.y + Math.sin((this.base.angle - 90) * h.DEG) * rad
    };
    this.x = (this.center.x + Math.cos(this.angle * h.DEG) * this.radius) / 2;
    this.y = (this.center.y + Math.sin(this.angle * h.DEG) * this.radius) / 2;
    minSuppress = this.ember != null ? this.ember.bottom.y - 50 : 9999;
    this.y = Math.min(minSuppress, this.y);
    return typeof this.onPositionChange === "function" ? this.onPositionChange() : void 0;
  };

  BasePoint.prototype.setOffset = function(offset) {
    this.offset = offset;
    return this.getPosition();
  };

  BasePoint.prototype.setAngle = function(angle) {
    this.angle = this.baseAngle + angle;
    return this.getPosition();
  };

  BasePoint.prototype.setSuppress = function(n) {
    this.suppress = n;
    return this.getPosition();
  };

  BasePoint.prototype.draw = function() {
    return;
    this.ctx.beginPath();
    this.ctx.lineWidth = h.PX;
    this.ctx.arc(this.center.x, this.center.y, 1 * h.PX, 0, 2 * Math.PI);
    this.ctx.fill();
    this.ctx.beginPath();
    this.ctx.moveTo(this.center.x, this.center.y);
    this.ctx.lineTo(this.x * h.PX, this.y * h.PX);
    return this.ctx.stroke();
  };

  return BasePoint;

})();

module.exports = BasePoint;



},{"./helpers":5}],2:[function(require,module,exports){
var Base, h;

h = require('./helpers');

Base = (function() {
  function Base(o) {
    this.o = o != null ? o : {};
    this.vars();
  }

  Base.prototype.vars = function() {
    this.ctx = this.o.ctx;
    this.x = this.o.x;
    this.initX = this.x;
    this.y = this.o.y;
    this.radius = this.o.radius;
    this.angle = this.o.angle;
    this.points = [];
    return this.suppress = 0;
  };

  Base.prototype.setAngle = function(angle) {
    var i, point, _i, _len, _ref, _results;
    this.angle = angle;
    _ref = this.points;
    _results = [];
    for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
      point = _ref[i];
      point.getPosition();
      _results.push(point.setAngle(this.angle));
    }
    return _results;
  };

  Base.prototype.addPoint = function(point) {
    return this.points.push(point);
  };

  Base.prototype.setX = function(x) {
    var i, point, _i, _len, _ref, _results;
    this.x = x;
    _ref = this.points;
    _results = [];
    for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
      point = _ref[i];
      _results.push(point.getPosition());
    }
    return _results;
  };

  Base.prototype.setSuppress = function(n) {
    var i, point, _i, _len, _ref, _results;
    this.suppress = n;
    _ref = this.points;
    _results = [];
    for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
      point = _ref[i];
      _results.push(point.setSuppress(this.suppress));
    }
    return _results;
  };

  Base.prototype.draw = function() {
    var x, y;
    return;
    this.ctx.beginPath();
    this.ctx.arc(this.x, this.y, 5 * h.PX, 0, 2 * Math.PI);
    this.ctx.fillStyle = 'cyan';
    this.ctx.fill();
    this.ctx.beginPath();
    this.ctx.arc(this.x, this.y, this.radius, 0, 2 * Math.PI);
    this.ctx.lineWidth = h.PX;
    this.ctx.strokeStyle = 'cyan';
    this.ctx.stroke();
    this.ctx.beginPath();
    x = this.x + Math.cos((this.angle - 90) * h.DEG) * this.radius;
    y = this.y + Math.sin((this.angle - 90) * h.DEG) * this.radius;
    this.ctx.lineWidth = h.PX;
    this.ctx.moveTo(this.x, this.y);
    this.ctx.lineTo(x, y);
    this.ctx.strokeStyle = 'slateblue';
    return this.ctx.stroke();
  };

  return Base;

})();

module.exports = Base;



},{"./helpers":5}],3:[function(require,module,exports){
var Ember, TWEEN, h;

h = require('./helpers');

TWEEN = require('./tweenjs.min');

Ember = (function() {
  function Ember(o) {
    this.o = o != null ? o : {};
    this.ctx = this.o.ctx;
    this.top = this.o.top;
    this.flickRadius = this.o.flickRadius || 10;
    this.name = this.o.name;
    this.base = this.o.base;
    this.right = this.o.right;
    this.bottom = this.o.bottom;
    this.left = this.o.left;
    this.color = this.o.color || "deeppink";
    this.angleStep = this.o.angleStep || h.rand(30, 40);
    this.angleStart = this.o.angleStart || 0;
    this.basePoint = this.o.basePoint || this.top;
    this.basePoint.ember = this;
    this.basePoint.onPositionChange = (function(_this) {
      return function() {
        return _this.flickCenter = {
          x: _this.basePoint.x,
          y: _this.basePoint.y
        };
      };
    })(this);
    this.angle = this.angleStart;
    this.p = 0;
    if (!this.ctx) {
      console.error("no context, aborting");
      return;
    }
    this.getFlickBounds();
    this.delta = this.getDelta();
  }

  Ember.prototype.draw = function() {
    var ang, leftOffset, rightOffset, s, topOffset, topX, topY;
    this.ctx.beginPath();
    ang = this.base.angle;
    if (ang < 0) {
      leftOffset = ang / 2;
      rightOffset = ang;
    } else {
      leftOffset = ang;
      rightOffset = ang / 2;
    }
    s = this.base.suppress / 3;
    topOffset = 0;
    leftOffset = Math.max(s, leftOffset);
    this.ctx.moveTo((this.left.x + leftOffset) * h.PX, (this.left.y + s + topOffset) * h.PX);
    topX = this.top.x + (this.p * this.delta.x);
    topY = this.top.y + (this.p * this.delta.y);
    this.ctx.lineTo(topX * h.PX, topY * h.PX);
    this.ctx.lineTo((this.right.x + rightOffset) * h.PX, (this.right.y + s) * h.PX);
    this.ctx.lineTo(this.bottom.x * h.PX, this.bottom.y * h.PX);
    this.ctx.closePath();
    this.ctx.fillStyle = this.color;
    this.ctx.fill();
    this.p += this.o.sensivity;
    if (this.p >= 1) {
      this.top.x = topX;
      this.top.y = topY;
      this.delta = this.getDelta();
      this.p = 0;
    }
    this.drawFlickBounds();
  };

  Ember.prototype.drawFlickBounds = function() {
    var x, y;
    return;
    this.ctx.beginPath();
    x = this.flickCenter.x * h.PX;
    y = this.flickCenter.y * h.PX;
    this.ctx.arc(x, y, this.flickRadius, 0, 2 * Math.PI);
    this.ctx.lineWidth = h.PX / 2;
    this.ctx.strokeStyle = '#777';
    this.ctx.stroke();
  };

  Ember.prototype.getFlickBounds = function() {
    var PX, flickCenter, flickRadius;
    PX = 2;
    flickCenter = {
      x: this.basePoint.x,
      y: this.basePoint.y
    };
    flickRadius = this.flickRadius * PX;
    this.flickCenter = flickCenter;
    this.flickCenterStart = {};
    this.flickCenterStart.x = flickCenter.x;
    this.flickCenterStart.y = flickCenter.y;
    this.flickRadius = flickRadius;
  };

  Ember.prototype.getDelta = function() {
    var ang, bAng, cX, cY, delta, newTop, oX, oY, rX, rY, speed, suppress;
    suppress = Math.abs(this.base.suppress);
    if (this.base.suppress > 0) {
      suppress /= 2;
    }
    speed = Math.abs(this.base.angle);
    this.speed = 60 - Math.max(speed, suppress);
    this.angle += this.angleStep / this.speed;
    ang = this.angle;
    rX = .1 * this.flickRadius;
    rY = 1 * this.flickRadius;
    cX = this.flickCenter.x;
    cY = this.flickCenter.y;
    bAng = this.base.angle * h.DEG;
    oX = cX - (rY * this.sin(ang)) * this.sin(bAng) + rX * this.cos(ang) * this.cos(bAng);
    oY = cY + (rX * this.cos(ang)) * this.sin(bAng) + rY * this.sin(ang) * this.cos(bAng);
    newTop = {
      x: oX,
      y: oY
    };
    return delta = {
      x: newTop.x - this.top.x,
      y: newTop.y - this.top.y
    };
  };

  Ember.prototype.sin = function(n) {
    return Math.sin.apply(n, arguments);
  };

  Ember.prototype.cos = function(n) {
    return Math.cos.apply(n, arguments);
  };

  return Ember;

})();

module.exports = Ember;



},{"./helpers":5,"./tweenjs.min":11}],4:[function(require,module,exports){
/*! Hammer.JS - v2.0.4 - 2014-09-28
 * https://hammerjs.github.io/
 *
 * Copyright (c) 2014 Jorik Tangelder;
 * Licensed under the MIT license */
!function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(k(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function h(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a}function i(a,b){return h(a,b,!0)}function j(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&h(d,c)}function k(a,b){return function(){return a.apply(b,arguments)}}function l(a,b){return typeof a==kb?a.apply(b?b[0]||d:d,b):a}function m(a,b){return a===d?b:a}function n(a,b,c){g(r(b),function(b){a.addEventListener(b,c,!1)})}function o(a,b,c){g(r(b),function(b){a.removeEventListener(b,c,!1)})}function p(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function q(a,b){return a.indexOf(b)>-1}function r(a){return a.trim().split(/\s+/g)}function s(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function t(a){return Array.prototype.slice.call(a,0)}function u(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];s(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function v(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g<ib.length;){if(c=ib[g],e=c?c+f:b,e in a)return e;g++}return d}function w(){return ob++}function x(a){var b=a.ownerDocument;return b.defaultView||b.parentWindow}function y(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){l(a.options.enable,[a])&&c.handler(b)},this.init()}function z(a){var b,c=a.options.inputClass;return new(b=c?c:rb?N:sb?Q:qb?S:M)(a,A)}function A(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&yb&&d-e===0,g=b&(Ab|Bb)&&d-e===0;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,B(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function B(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=E(b)),e>1&&!c.firstMultiple?c.firstMultiple=E(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=F(d);b.timeStamp=nb(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=J(h,i),b.distance=I(h,i),C(c,b),b.offsetDirection=H(b.deltaX,b.deltaY),b.scale=g?L(g.pointers,d):1,b.rotation=g?K(g.pointers,d):0,D(c,b);var j=a.element;p(b.srcEvent.target,j)&&(j=b.srcEvent.target),b.target=j}function C(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===yb||f.eventType===Ab)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function D(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Bb&&(i>xb||h.velocity===d)){var j=h.deltaX-b.deltaX,k=h.deltaY-b.deltaY,l=G(i,j,k);e=l.x,f=l.y,c=mb(l.x)>mb(l.y)?l.x:l.y,g=H(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function E(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:lb(a.pointers[c].clientX),clientY:lb(a.pointers[c].clientY)},c++;return{timeStamp:nb(),pointers:b,center:F(b),deltaX:a.deltaX,deltaY:a.deltaY}}function F(a){var b=a.length;if(1===b)return{x:lb(a[0].clientX),y:lb(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:lb(c/b),y:lb(d/b)}}function G(a,b,c){return{x:b/a||0,y:c/a||0}}function H(a,b){return a===b?Cb:mb(a)>=mb(b)?a>0?Db:Eb:b>0?Fb:Gb}function I(a,b,c){c||(c=Kb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function J(a,b,c){c||(c=Kb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function K(a,b){return J(b[1],b[0],Lb)-J(a[1],a[0],Lb)}function L(a,b){return I(b[0],b[1],Lb)/I(a[0],a[1],Lb)}function M(){this.evEl=Nb,this.evWin=Ob,this.allow=!0,this.pressed=!1,y.apply(this,arguments)}function N(){this.evEl=Rb,this.evWin=Sb,y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function O(){this.evTarget=Ub,this.evWin=Vb,this.started=!1,y.apply(this,arguments)}function P(a,b){var c=t(a.touches),d=t(a.changedTouches);return b&(Ab|Bb)&&(c=u(c.concat(d),"identifier",!0)),[c,d]}function Q(){this.evTarget=Xb,this.targetIds={},y.apply(this,arguments)}function R(a,b){var c=t(a.touches),d=this.targetIds;if(b&(yb|zb)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=t(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return p(a.target,i)}),b===yb)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Ab|Bb)&&delete d[g[e].identifier],e++;return h.length?[u(f.concat(h),"identifier",!0),h]:void 0}function S(){y.apply(this,arguments);var a=k(this.handler,this);this.touch=new Q(this.manager,a),this.mouse=new M(this.manager,a)}function T(a,b){this.manager=a,this.set(b)}function U(a){if(q(a,bc))return bc;var b=q(a,cc),c=q(a,dc);return b&&c?cc+" "+dc:b||c?b?cc:dc:q(a,ac)?ac:_b}function V(a){this.id=w(),this.manager=null,this.options=i(a||{},this.defaults),this.options.enable=m(this.options.enable,!0),this.state=ec,this.simultaneous={},this.requireFail=[]}function W(a){return a&jc?"cancel":a&hc?"end":a&gc?"move":a&fc?"start":""}function X(a){return a==Gb?"down":a==Fb?"up":a==Db?"left":a==Eb?"right":""}function Y(a,b){var c=b.manager;return c?c.get(a):a}function Z(){V.apply(this,arguments)}function $(){Z.apply(this,arguments),this.pX=null,this.pY=null}function _(){Z.apply(this,arguments)}function ab(){V.apply(this,arguments),this._timer=null,this._input=null}function bb(){Z.apply(this,arguments)}function cb(){Z.apply(this,arguments)}function db(){V.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function eb(a,b){return b=b||{},b.recognizers=m(b.recognizers,eb.defaults.preset),new fb(a,b)}function fb(a,b){b=b||{},this.options=i(b,eb.defaults),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=z(this),this.touchAction=new T(this,this.options.touchAction),gb(this,!0),g(b.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function gb(a,b){var c=a.element;g(a.options.cssProps,function(a,d){c.style[v(c.style,d)]=b?a:""})}function hb(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var ib=["","webkit","moz","MS","ms","o"],jb=b.createElement("div"),kb="function",lb=Math.round,mb=Math.abs,nb=Date.now,ob=1,pb=/mobile|tablet|ip(ad|hone|od)|android/i,qb="ontouchstart"in a,rb=v(a,"PointerEvent")!==d,sb=qb&&pb.test(navigator.userAgent),tb="touch",ub="pen",vb="mouse",wb="kinect",xb=25,yb=1,zb=2,Ab=4,Bb=8,Cb=1,Db=2,Eb=4,Fb=8,Gb=16,Hb=Db|Eb,Ib=Fb|Gb,Jb=Hb|Ib,Kb=["x","y"],Lb=["clientX","clientY"];y.prototype={handler:function(){},init:function(){this.evEl&&n(this.element,this.evEl,this.domHandler),this.evTarget&&n(this.target,this.evTarget,this.domHandler),this.evWin&&n(x(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&o(this.element,this.evEl,this.domHandler),this.evTarget&&o(this.target,this.evTarget,this.domHandler),this.evWin&&o(x(this.element),this.evWin,this.domHandler)}};var Mb={mousedown:yb,mousemove:zb,mouseup:Ab},Nb="mousedown",Ob="mousemove mouseup";j(M,y,{handler:function(a){var b=Mb[a.type];b&yb&&0===a.button&&(this.pressed=!0),b&zb&&1!==a.which&&(b=Ab),this.pressed&&this.allow&&(b&Ab&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:vb,srcEvent:a}))}});var Pb={pointerdown:yb,pointermove:zb,pointerup:Ab,pointercancel:Bb,pointerout:Bb},Qb={2:tb,3:ub,4:vb,5:wb},Rb="pointerdown",Sb="pointermove pointerup pointercancel";a.MSPointerEvent&&(Rb="MSPointerDown",Sb="MSPointerMove MSPointerUp MSPointerCancel"),j(N,y,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=Pb[d],f=Qb[a.pointerType]||a.pointerType,g=f==tb,h=s(b,a.pointerId,"pointerId");e&yb&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Ab|Bb)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Tb={touchstart:yb,touchmove:zb,touchend:Ab,touchcancel:Bb},Ub="touchstart",Vb="touchstart touchmove touchend touchcancel";j(O,y,{handler:function(a){var b=Tb[a.type];if(b===yb&&(this.started=!0),this.started){var c=P.call(this,a,b);b&(Ab|Bb)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:tb,srcEvent:a})}}});var Wb={touchstart:yb,touchmove:zb,touchend:Ab,touchcancel:Bb},Xb="touchstart touchmove touchend touchcancel";j(Q,y,{handler:function(a){var b=Wb[a.type],c=R.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:tb,srcEvent:a})}}),j(S,y,{handler:function(a,b,c){var d=c.pointerType==tb,e=c.pointerType==vb;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Ab|Bb)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Yb=v(jb.style,"touchAction"),Zb=Yb!==d,$b="compute",_b="auto",ac="manipulation",bc="none",cc="pan-x",dc="pan-y";T.prototype={set:function(a){a==$b&&(a=this.compute()),Zb&&(this.manager.element.style[Yb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){l(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),U(a.join(" "))},preventDefaults:function(a){if(!Zb){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=q(d,bc),f=q(d,dc),g=q(d,cc);return e||f&&c&Hb||g&&c&Ib?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var ec=1,fc=2,gc=4,hc=8,ic=hc,jc=16,kc=32;V.prototype={defaults:{},set:function(a){return h(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=Y(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=Y(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=Y(a,this),-1===s(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=Y(a,this);var b=s(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(c.options.event+(b?W(d):""),a)}var c=this,d=this.state;hc>d&&b(!0),b(),d>=hc&&b(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=kc)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(kc|ec)))return!1;a++}return!0},recognize:function(a){var b=h({},a);return l(this.options.enable,[this,b])?(this.state&(ic|jc|kc)&&(this.state=ec),this.state=this.process(b),void(this.state&(fc|gc|hc|jc)&&this.tryEmit(b))):(this.reset(),void(this.state=kc))},process:function(){},getTouchAction:function(){},reset:function(){}},j(Z,V,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(fc|gc),e=this.attrTest(a);return d&&(c&Bb||!e)?b|jc:d||e?c&Ab?b|hc:b&fc?b|gc:fc:kc}}),j($,Z,{defaults:{event:"pan",threshold:10,pointers:1,direction:Jb},getTouchAction:function(){var a=this.options.direction,b=[];return a&Hb&&b.push(dc),a&Ib&&b.push(cc),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&Hb?(e=0===f?Cb:0>f?Db:Eb,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Cb:0>g?Fb:Gb,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Z.prototype.attrTest.call(this,a)&&(this.state&fc||!(this.state&fc)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),j(_,Z,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[bc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&fc)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),j(ab,V,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[_b]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Ab|Bb)&&!f)this.reset();else if(a.eventType&yb)this.reset(),this._timer=e(function(){this.state=ic,this.tryEmit()},b.time,this);else if(a.eventType&Ab)return ic;return kc},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===ic&&(a&&a.eventType&Ab?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=nb(),this.manager.emit(this.options.event,this._input)))}}),j(bb,Z,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[bc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&fc)}}),j(cb,Z,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Hb|Ib,pointers:1},getTouchAction:function(){return $.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Hb|Ib)?b=a.velocity:c&Hb?b=a.velocityX:c&Ib&&(b=a.velocityY),this._super.attrTest.call(this,a)&&c&a.direction&&a.distance>this.options.threshold&&mb(b)>this.options.velocity&&a.eventType&Ab},emit:function(a){var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),j(db,V,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ac]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime<b.time;if(this.reset(),a.eventType&yb&&0===this.count)return this.failTimeout();if(d&&f&&c){if(a.eventType!=Ab)return this.failTimeout();var g=this.pTime?a.timeStamp-this.pTime<b.interval:!0,h=!this.pCenter||I(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,h&&g?this.count+=1:this.count=1,this._input=a;var i=this.count%b.taps;if(0===i)return this.hasRequireFailures()?(this._timer=e(function(){this.state=ic,this.tryEmit()},b.interval,this),fc):ic}return kc},failTimeout:function(){return this._timer=e(function(){this.state=kc},this.options.interval,this),kc},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==ic&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),eb.VERSION="2.0.4",eb.defaults={domEvents:!1,touchAction:$b,enable:!0,inputTarget:null,inputClass:null,preset:[[bb,{enable:!1}],[_,{enable:!1},["rotate"]],[cb,{direction:Hb}],[$,{direction:Hb},["swipe"]],[db],[db,{event:"doubletap",taps:2},["tap"]],[ab]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var lc=1,mc=2;fb.prototype={set:function(a){return h(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?mc:lc},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&ic)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===mc||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(fc|gc|hc)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof V)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(f(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(f(a,"remove",this))return this;var b=this.recognizers;return a=this.get(a),b.splice(s(b,a),1),this.touchAction.update(),this},on:function(a,b){var c=this.handlers;return g(r(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this},off:function(a,b){var c=this.handlers;return g(r(a),function(a){b?c[a].splice(s(c[a],b),1):delete c[a]}),this},emit:function(a,b){this.options.domEvents&&hb(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&gb(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},h(eb,{INPUT_START:yb,INPUT_MOVE:zb,INPUT_END:Ab,INPUT_CANCEL:Bb,STATE_POSSIBLE:ec,STATE_BEGAN:fc,STATE_CHANGED:gc,STATE_ENDED:hc,STATE_RECOGNIZED:ic,STATE_CANCELLED:jc,STATE_FAILED:kc,DIRECTION_NONE:Cb,DIRECTION_LEFT:Db,DIRECTION_RIGHT:Eb,DIRECTION_UP:Fb,DIRECTION_DOWN:Gb,DIRECTION_HORIZONTAL:Hb,DIRECTION_VERTICAL:Ib,DIRECTION_ALL:Jb,Manager:fb,Input:y,TouchAction:T,TouchInput:Q,MouseInput:M,PointerEventInput:N,TouchMouseInput:S,SingleTouchInput:O,Recognizer:V,AttrRecognizer:Z,Tap:db,Pan:$,Swipe:cb,Pinch:_,Rotate:bb,Press:ab,on:n,off:o,each:g,merge:i,extend:h,inherit:j,bindFn:k,prefixed:v}),typeof define==kb&&define.amd?define(function(){return eb}):"undefined"!=typeof module&&module.exports?module.exports=eb:a[c]=eb}(window,document,"Hammer");
//# sourceMappingURL=hammer.min.map
},{}],5:[function(require,module,exports){
var Helpers;

Helpers = (function() {
  Helpers.prototype.PX = 2;

  Helpers.prototype.DEG = Math.PI / 180;

  Helpers.prototype.rand = function(min, max) {
    return Math.floor((Math.random() * ((max + 1) - min)) + min);
  };

  Helpers.prototype.slice = function(val, max) {
    if (val < 0) {
      if (val < -max) {
        return -max;
      }
    }
    if (val > 0) {
      if (val > max) {
        return max;
      }
    }
    return val;
  };

  Helpers.prototype.transform = function(el, val) {
    el.style["" + this.prefix.js + "Transform"] = val;
    return el.style.transform = val;
  };

  function Helpers() {
    this.vars();
  }

  Helpers.prototype.vars = function() {
    this.prefix = this.getPrefix();
    return this.isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
  };

  Helpers.prototype.getPrefix = function() {
    var dom, pre, styles, v;
    styles = window.getComputedStyle(document.documentElement, "");
    v = Array.prototype.slice.call(styles).join("").match(/-(moz|webkit|ms)-/);
    pre = (v || (styles.OLink === "" && ["", "o"]))[1];
    dom = "WebKit|Moz|MS|O".match(new RegExp("(" + pre + ")", "i"))[1];
    return {
      dom: dom,
      lowercase: pre,
      css: "-" + pre + "-",
      js: pre[0].toUpperCase() + pre.substr(1)
    };
  };

  return Helpers;

})();

module.exports = new Helpers;



},{}],6:[function(require,module,exports){
var Base, BasePoint, Ember, Hammer, Main, Shadow, Shaker, Spark, TWEEN, h, mojs;

Ember = require('./ember');

Spark = require('./spark');

Hammer = require('./hammer.min');

TWEEN = require('./tweenjs.min');

Base = require('./base');

BasePoint = require('./base-point');

Shadow = require('./shadow');

Shaker = require('./shaker');

h = require('./helpers');

mojs = require('./mojs.min');

Main = (function() {
  function Main(o) {
    this.o = o != null ? o : {};
    this.vars();
    this.prepareText();
    this.events();
    this.run();
    this.showTorch();
  }

  Main.prototype.stopNormalizingBase = function() {
    TWEEN.remove(this.tween);
    return this.isNormalizing = false;
  };

  Main.prototype.events = function() {
    var currTorchX, currTorchXOld, dir, isTouched, mc, tch, timeout, tm, torchSceneX;
    mc = new Hammer(document.body);
    tch = new Hammer(this.torch);
    isTouched = false;
    timeout = null;
    this.shaker = new Shaker;
    dir = '';
    tch.on('panleft', (function(_this) {
      return function(e) {
        if (dir === 'left') {
          return;
        }
        dir = 'left';
        return _this.shaker.setPosition({
          dir: 'left',
          timestamp: new Date().getTime()
        });
      };
    })(this));
    tch.on('panright', (function(_this) {
      return function(e) {
        if (dir === 'right') {
          return;
        }
        dir = 'right';
        return _this.shaker.setPosition({
          dir: 'right',
          timestamp: new Date().getTime()
        });
      };
    })(this));
    currTorchX = 0;
    torchSceneX = 0;
    tm = null;
    tch.on('pan', (function(_this) {
      return function(e) {
        var angleVelocity, coef, velocityX;
        torchSceneX = currTorchX + e.deltaX;
        velocityX = h.slice(e.velocityX, 6);
        angleVelocity = 12 * velocityX;
        if (Math.abs(velocityX) > 1) {
          _this.stopNormalizingBase();
          _this.ang = angleVelocity;
          _this.ang = h.slice(_this.ang, 35);
          _this.base.setAngle(_this.ang);
          coef = _this.shaker.isShake ? 2 : -1;
          _this.base.setSuppress(coef * Math.abs(9 * velocityX));
        } else {
          _this.normalizeBase();
        }
        return h.transform(_this.torchScene, "translateX(" + torchSceneX + "px)");
      };
    })(this));
    currTorchXOld = -1;
    setInterval((function(_this) {
      return function() {
        if (currTorchX === currTorchXOld && _this.isTorch) {
          return _this.normalizeBase();
        } else {
          return currTorchXOld = currTorchX;
        }
      };
    })(this), 100);
    tch.on('panstart', (function(_this) {
      return function(e) {
        _this.isTorch = true;
        return _this.hideLegend();
      };
    })(this));
    tch.on('panend', (function(_this) {
      return function(e) {
        _this.isTorch = false;
        currTorchX = torchSceneX;
        return _this.normalizeBase();
      };
    })(this));
    mc.on('tap', function(e) {
      isTouched = true;
      return this.hideLegend();
    });
    mc.on('panstart', (function(_this) {
      return function(e) {
        var pointer;
        _this.hideLegend();
        if (_this.isTorch) {
          return;
        }
        pointer = e.pointers[0];
        _this.base.panstart = {
          x: pointer.x,
          y: pointer.y
        };
        isTouched = true;
        TWEEN.remove(_this.tween);
        return _this.isNormalizing = false;
      };
    })(this));
    return mc.on('pan', (function(_this) {
      return function(e) {
        if (_this.isTorch) {
          return;
        }
        if (isTouched) {
          _this.ang = e.deltaX / 10;
          if (_this.ang > _this.MAX_ANGLE) {
            _this.ang = _this.MAX_ANGLE;
          }
          if (_this.ang < -_this.MAX_ANGLE) {
            _this.ang = -_this.MAX_ANGLE;
          }
          _this.base.setAngle(_this.ang);
          _this.suppress = e.deltaY / 20;
          _this.base.setSuppress(_this.suppress);
          if (!timeout) {
            return timeout = setTimeout(function() {
              isTouched = false;
              timeout = null;
              return _this.normalizeBase();
            }, 350);
          }
        }
      };
    })(this));
  };

  Main.prototype.normalizeBase = function() {
    var it;
    if (this.isNormalizing) {
      return;
    }
    this.isNormalizing = true;
    it = this;
    return this.tween = new TWEEN.Tween({
      p: 0
    }).to({
      p: 1
    }, 1500).onUpdate(function() {
      it.base.setAngle(it.ang * (1 - this.p));
      return it.base.setSuppress(it.suppress * (1 - this.p));
    }).easing(TWEEN.Easing.Elastic.Out).onComplete((function(_this) {
      return function() {
        _this.suppress = 0;
        _this.ang = 0;
        return _this.isNormalizing = false;
      };
    })(this)).start();
  };

  Main.prototype.showLegend = function() {
    var it;
    if (this.isLegendHidden) {
      return;
    }
    it = this;
    return this.tweenLegend = new TWEEN.Tween({
      p: 0
    }).to({
      p: 1
    }, 1200).onUpdate(function() {
      return it.legend.style.opacity = "" + this.p;
    }).delay(2000).easing(TWEEN.Easing.Cubic.Out).start();
  };

  Main.prototype.hideLegend = function() {
    if (this.isLegendHidden) {
      return;
    }
    this.legend.style.display = 'none';
    this.isLegendHidden = true;
    return TWEEN.remove(this.tweenLegend);
  };

  Main.prototype.showText = function() {
    var childs;
    childs = this.maskChilds;
    return this.tweenText = new TWEEN.Tween({
      p: 0
    }).to({
      p: 1
    }, 1200).onUpdate(function() {
      var child, currOffset, i, _results;
      i = childs.length - 1;
      _results = [];
      while (i >= 0) {
        child = childs[i];
        if (child.strokeLength) {
          currOffset = child.strokeLength * (1 - this.p);
          child.style['stroke-dashoffset'] = "" + currOffset + "px";
        }
        _results.push(i--);
      }
      return _results;
    }).delay(200).onStart((function(_this) {
      return function() {
        return _this.text.style.display = 'block';
      };
    })(this)).onComplete((function(_this) {
      return function() {
        return _this.showMushroom();
      };
    })(this)).easing(TWEEN.Easing.Cubic.Out).start();
  };

  Main.prototype.showMushroom = function() {
    var it;
    it = this;
    return this.tweenMushroom = new TWEEN.Tween({
      p: 0
    }).to({
      p: 1
    }, 400).onUpdate(function() {
      return it.mushroom.style.opacity = "" + this.p;
    }).onStart((function(_this) {
      return function() {
        _this.mushroom.style.display = 'block';
        return _this.burst.run();
      };
    })(this)).onComplete((function(_this) {
      return function() {
        return _this.showLegend();
      };
    })(this)).easing(TWEEN.Easing.Cubic.Out).start();
  };

  Main.prototype.prepareText = function() {
    var i, length, path, torch, _i, _len, _ref, _results;
    _ref = this.maskChilds;
    _results = [];
    for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
      path = _ref[i];
      length = path.getTotalLength();
      if (length > 50) {
        torch = path.getAttribute('torch');
        path.style['stroke-dasharray'] = "" + length + "px";
        path.style['stroke-dashoffset'] = "" + (-length) + "px";
        path.strokeLength = length;
        _results.push(path.isTorch = !!torch);
      } else {
        _results.push(void 0);
      }
    }
    return _results;
  };

  Main.prototype.showTorch = function() {
    var it;
    it = this;
    return this.tweenTorch = new TWEEN.Tween({
      p: 0
    }).to({
      p: 1
    }, 300).onUpdate(function() {
      it.torch.style.opacity = this.p;
      h.transform(it.torch, "translateY(" + (25 * (1 - this.p)) + "px)");
      if (this.p > .5 && !it.isShowRun) {
        return it.showFire();
      }
    }).easing(TWEEN.Easing.Cubic.Out).delay(2000).onComplete((function(_this) {
      return function() {
        return _this.showText();
      };
    })(this)).start();
  };

  Main.prototype.showFire = function() {
    var i, it, lefts, offsets, rights;
    this.isShowRun = true;
    it = this;
    lefts = [];
    rights = [];
    offsets = [];
    i = it.embers.length - 1;
    while (i >= 0) {
      lefts[i] = {
        x: it.embers[i].left.x,
        y: it.embers[i].left.y
      };
      rights[i] = {
        x: it.embers[i].right.x,
        y: it.embers[i].right.y
      };
      offsets[i] = it.embers[i].basePoint.offset;
      i--;
    }
    return this.tweenShow = new TWEEN.Tween({
      p: 0
    }).to({
      p: 1
    }, 1500).onUpdate(function() {
      var ember, left, newLeftX, newLeftY, newRightX, newRightY, right, transform, _results;
      i = it.embers.length - 1;
      _results = [];
      while (i >= 0) {
        ember = it.embers[i];
        left = lefts[i];
        right = rights[i];
        newLeftX = it.startX + ((left.x - it.startX) * this.p);
        newLeftY = (it.startY + 60) + ((left.y - (it.startY + 60)) * this.p);
        newRightX = it.startX + ((right.x - it.startX) * this.p);
        newRightY = (it.startY + 60) + ((right.y - (it.startY + 60)) * this.p);
        ember.left = {
          x: newLeftX,
          y: newLeftY
        };
        ember.right = {
          x: newRightX,
          y: newRightY
        };
        ember.basePoint.setOffset(250 + ((offsets[i] - 250) * this.p));
        transform = "scale(" + this.p + ") translateY(" + (300 * (1 - this.p)) + "px)";
        h.transform(it.shadow.shadow, transform);
        _results.push(i--);
      }
      return _results;
    }).onStart((function(_this) {
      return function() {
        return _this.isShowed = true;
      };
    })(this)).easing(TWEEN.Easing.Elastic.Out).start();
  };

  Main.prototype.vars = function() {
    var child, childs, i, _i, _len, _ref;
    this.canvas = document.getElementById("js-canvas");
    this.ctx = this.canvas.getContext("2d");
    this.wWidth = parseInt(this.canvas.getAttribute('width'), 10);
    this.torch = document.getElementById('js-torch');
    this.legend = document.getElementById('js-legend');
    this.mask = document.getElementById('js-text-mask');
    this.maskChilds = this.mask.childNodes;
    childs = [];
    _ref = this.maskChilds;
    for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
      child = _ref[i];
      if (child.getTotalLength) {
        childs.push(child);
      }
    }
    this.maskChilds = childs;
    this.text = document.getElementById('js-text');
    this.scene = document.getElementById('js-scene');
    this.torchScene = document.getElementById('js-torch-scene');
    this.mushroom = document.getElementById('js-mushroom');
    this.animationLoop = this.animationLoop.bind(this);
    this.embers = [];
    this.sparks = [];
    this.basePoints = [];
    this.MAX_ANGLE = 35;
    this.suppress = 0;
    this.startX = this.wWidth / 4;
    this.startY = 390;
    this.burst = new mojs.Burst({
      parent: this.scene,
      isRunLess: true,
      duration: 800,
      cnt: 5,
      radius: {
        75: 150
      },
      color: '#FFC37B',
      bitRadius: {
        3: 0
      },
      lineWidth: {
        2: 0
      },
      position: {
        x: 672,
        y: 394
      },
      easing: 'Cubic.Out'
    });
    this.base = new Base({
      ctx: this.ctx,
      x: (this.startX + 10) * h.PX,
      y: (this.startY + 60) * h.PX,
      radius: 400 * h.PX,
      angle: 0
    });
    this.shadow = new Shadow({
      base: this.base
    });
    this.basePoint1 = new BasePoint({
      ctx: this.ctx,
      base: this.base,
      radius: 4,
      offset: 71,
      angle: 0
    });
    this.base.addPoint(this.basePoint1);
    this.basePoint11 = new BasePoint({
      ctx: this.ctx,
      base: this.base,
      radius: 15,
      offset: 61,
      angle: 0
    });
    this.base.addPoint(this.basePoint11);
    this.basePoint2 = new BasePoint({
      ctx: this.ctx,
      base: this.base,
      radius: 30,
      offset: 182,
      angle: -180
    });
    this.base.addPoint(this.basePoint2);
    this.basePoint21 = new BasePoint({
      ctx: this.ctx,
      base: this.base,
      radius: 20,
      offset: 182,
      angle: -180
    });
    this.base.addPoint(this.basePoint21);
    this.basePoint3 = new BasePoint({
      ctx: this.ctx,
      base: this.base,
      radius: 24,
      offset: 101,
      angle: 0
    });
    this.base.addPoint(this.basePoint3);
    this.basePoint31 = new BasePoint({
      ctx: this.ctx,
      base: this.base,
      radius: 22,
      offset: 106,
      angle: 0
    });
    this.base.addPoint(this.basePoint31);
    this.basePoint4 = new BasePoint({
      ctx: this.ctx,
      base: this.base,
      radius: 34,
      offset: 173,
      angle: 0
    });
    this.base.addPoint(this.basePoint4);
    this.basePoint41 = new BasePoint({
      ctx: this.ctx,
      base: this.base,
      radius: 42,
      offset: 193,
      angle: 0
    });
    return this.base.addPoint(this.basePoint41);
  };

  Main.prototype.run = function() {
    var ember1, ember11, ember2, ember21, ember3, ember4, ember41, spark1, spark2, spark3, spark4, spark5, spark6, spark7, spark8;
    this.animationLoop();
    ember1 = new Ember({
      ctx: this.ctx,
      sensivity: .25,
      angleStep: 45,
      flickRadius: 20,
      color: "#E86CA9",
      top: {
        x: this.startX + 14,
        y: this.startY - 270
      },
      right: {
        x: this.startX + 64,
        y: this.startY + 12
      },
      bottom: {
        x: this.startX + 10,
        y: this.startY + 60
      },
      left: {
        x: this.startX - 44,
        y: this.startY + 20
      },
      basePoint: this.basePoint1,
      base: this.base,
      name: '1'
    });
    ember11 = new Ember({
      ctx: this.ctx,
      sensivity: .25,
      angleStep: 45,
      angleStart: 90,
      flickRadius: 20,
      color: "#E86CA9",
      top: {
        x: this.startX + 24,
        y: this.startY - 280
      },
      right: {
        x: this.startX + 64,
        y: this.startY + 12
      },
      bottom: {
        x: this.startX + 10,
        y: this.startY + 60
      },
      left: {
        x: this.startX - 4,
        y: this.startY + 20
      },
      basePoint: this.basePoint11,
      base: this.base,
      name: '11'
    });
    ember2 = new Ember({
      ctx: this.ctx,
      sensivity: .25,
      angleStep: 45,
      angleStart: 20,
      flickRadius: 20,
      color: "#ED8CBA",
      top: {
        x: this.startX - 20,
        y: this.startY - 160
      },
      right: {
        x: this.startX,
        y: this.startY + 10
      },
      bottom: {
        x: this.startX,
        y: this.startY + 52
      },
      left: {
        x: this.startX - 68,
        y: this.startY + 4
      },
      basePoint: this.basePoint2,
      base: this.base,
      name: '2'
    });
    ember21 = new Ember({
      ctx: this.ctx,
      sensivity: .25,
      angleStep: 45,
      angleStart: 90,
      flickRadius: 20,
      color: "#ED8CBA",
      top: {
        x: this.startX - 10,
        y: this.startY - 160
      },
      right: {
        x: this.startX,
        y: this.startY + 10
      },
      bottom: {
        x: this.startX,
        y: this.startY + 52
      },
      left: {
        x: this.startX - 68,
        y: this.startY + 4
      },
      basePoint: this.basePoint21,
      base: this.base,
      name: '21'
    });
    ember3 = new Ember({
      ctx: this.ctx,
      sensivity: .25,
      angleStep: 45,
      flickRadius: 20,
      color: "#A4D7F5",
      top: {
        x: this.startX + 33,
        y: this.startY - 240
      },
      right: {
        x: this.startX + 48,
        y: this.startY - 22
      },
      bottom: {
        x: this.startX + 10,
        y: this.startY + 60
      },
      left: {
        x: this.startX - 20,
        y: this.startY - 20
      },
      basePoint: this.basePoint3,
      base: this.base,
      name: '3'
    });
    ember4 = new Ember({
      ctx: this.ctx,
      sensivity: .25,
      angleStep: 45,
      flickRadius: 20,
      color: "#F6D58A",
      top: {
        x: this.startX + 52,
        y: this.startY - 148
      },
      right: {
        x: this.startX + 76,
        y: this.startY + 2
      },
      bottom: {
        x: this.startX + 8,
        y: this.startY + 60
      },
      left: {
        x: this.startX,
        y: this.startY + 10
      },
      basePoint: this.basePoint4,
      base: this.base,
      name: '4'
    });
    ember41 = new Ember({
      ctx: this.ctx,
      sensivity: .25,
      angleStep: 45,
      angleStart: 90,
      flickRadius: 20,
      color: "#F6D58A",
      top: {
        x: this.startX + 44,
        y: this.startY - 168
      },
      right: {
        x: this.startX + 76,
        y: this.startY + 2
      },
      bottom: {
        x: this.startX + 8,
        y: this.startY + 60
      },
      left: {
        x: this.startX,
        y: this.startY + 10
      },
      basePoint: this.basePoint41,
      base: this.base,
      name: '41'
    });
    this.embers.push(ember1, ember11);
    this.embers.push(ember2, ember21);
    this.embers.push(ember3);
    this.embers.push(ember4, ember41);
    spark1 = new Spark({
      ctx: this.ctx,
      color: "#F6D58A",
      base: this.base
    });
    spark2 = new Spark({
      ctx: this.ctx,
      color: "#D5296F",
      isDelayed: true,
      base: this.base
    });
    spark3 = new Spark({
      ctx: this.ctx,
      color: "#65B4ED",
      isDelayed: true,
      base: this.base
    });
    spark4 = new Spark({
      ctx: this.ctx,
      color: "#EA69A9",
      base: this.base
    });
    spark5 = new Spark({
      ctx: this.ctx,
      color: "#65B4ED",
      base: this.base
    });
    spark6 = new Spark({
      ctx: this.ctx,
      color: "#F6D58A",
      base: this.base
    });
    spark7 = new Spark({
      ctx: this.ctx,
      color: "#D5296F",
      base: this.base
    });
    spark8 = new Spark({
      ctx: this.ctx,
      color: "#EA69A9",
      base: this.base
    });
    this.sparks.push(spark1);
    this.sparks.push(spark2);
    this.sparks.push(spark3);
    this.sparks.push(spark4);
    this.sparks.push(spark5);
    this.sparks.push(spark6);
    this.sparks.push(spark7);
    this.sparks.push(spark8);
    return this.ctx.globalCompositeOperation = "multiply";
  };

  Main.prototype.animationLoop = function() {
    var i;
    if (this.isShowed) {
      this.ctx.clearRect(0, 0, this.wWidth, this.wWidth);
      this.shadow.draw();
      i = this.sparks.length - 1;
      while (i >= 0) {
        this.sparks[i].draw();
        i--;
      }
      i = this.embers.length - 1;
      while (i >= 0) {
        this.embers[i].draw();
        i--;
      }
    }
    TWEEN.update();
    return requestAnimationFrame(this.animationLoop);
  };

  return Main;

})();

new Main;



},{"./base":2,"./base-point":1,"./ember":3,"./hammer.min":4,"./helpers":5,"./mojs.min":7,"./shadow":8,"./shaker":9,"./spark":10,"./tweenjs.min":11}],7:[function(require,module,exports){
!function t(i,e,s){function n(o,h){if(!e[o]){if(!i[o]){var a="function"==typeof require&&require;if(!h&&a)return a(o,!0);if(r)return r(o,!0);throw new Error("Cannot find module '"+o+"'")}var p=e[o]={exports:{}};i[o][0].call(p.exports,function(t){var e=i[o][1][t];return n(e?e:t)},p,p.exports,t,i,e,s)}return e[o].exports}for(var r="function"==typeof require&&require,o=0;o<s.length;o++)n(s[o]);return n}({1:[function(t,i){var e,s,n={}.hasOwnProperty,r=function(t,i){function e(){this.constructor=t}for(var s in i)n.call(i,s)&&(t[s]=i[s]);return e.prototype=i.prototype,t.prototype=new e,t.__super__=i.prototype,t};s=t("./byte"),e=function(t){function i(){return i.__super__.constructor.apply(this,arguments)}return r(i,t),i.prototype.vars=function(){return i.__super__.vars.apply(this,arguments),this.spikes=this["default"]({prop:"spikes",def:5}),this.spikesEnd=this["default"]({prop:"spikesEnd",def:this.spikes}),this.rate=this["default"]({prop:"rate",def:.25}),this.rateEnd=this["default"]({prop:"rateEnd",def:this.rate})},i.prototype.run=function(t,e){var s,n;return this.oa=null!=t?t:{},i.__super__.run.apply(this,arguments),s=this,this.from=this.oa.isChain?e:{radiusX:this.radiusX,radiusY:this.radiusY,lineWidth:this.lineWidth,angle:this.angleStart,opacity:this.opacity,lineDashOffset:this.lineDashOffset,spikes:this.spikes,rate:this.rate},this.to={radiusX:this.radiusXEnd,radiusY:this.radiusYEnd,lineWidth:this.lineWidthEnd,angle:this.angleEnd,opacity:this.opacityEnd,lineDashOffset:this.lineDashOffsetEnd,spikes:this.spikesEnd,rate:this.rateEnd},this.mixStarSpikesProps(),this.mixLineDash(),this.mixColor(this.oa.isChain),this.mixFill(this.oa.isChain),this.calcSize(),this.addElements(),n=this.initTween(this.oa.isChain).onUpdate(function(){return s.draw.call(this,s)}),this.tweens.push(n)},i.prototype.draw=function(t){return t.rotate({angle:this.angle*t.h.DEG}),t.object.setProp({radiusX:this.radiusX/2,radiusY:this.radiusY/2,position:{x:2*t.center,y:2*t.center},lineWidth:this.lineWidth,lineDash:t.updateLineDash(this),colorObj:t.updateColor(this),fillObj:t.updateFill(this),opacity:this.opacity,spikes:this.spikes,rate:this.rate,lineDashOffset:this.lineDashOffset}),t.ctx.restore()},i.prototype.addElements=function(){var t;return t=this.shapes[this.shape.toLowerCase()]||Circle,this.object=new t({ctx:this.ctx,position:{x:this.center,y:this.center},lineCap:this.lineCap,lineDash:this.lineDash,fill:this.fill})},i.prototype.mixStarSpikesProps=function(){return this.from.spikes=this.spikes,this.to.spikes=this.spikesEnd},i}(s),i.exports=e},{"./byte":4}],2:[function(t,i){var e,s,n={}.hasOwnProperty,r=function(t,i){function e(){this.constructor=t}for(var s in i)n.call(i,s)&&(t[s]=i[s]);return e.prototype=i.prototype,t.prototype=new e,t.__super__=i.prototype,t};s=t("./byte"),e=function(t){function i(){return i.__super__.constructor.apply(this,arguments)}return r(i,t),i.prototype.vars=function(){return i.__super__.vars.apply(this,arguments),this.Shape=this.shapes[this.shape.toLowerCase()]||Circle,this.cnt=this["default"]({prop:"cnt",def:3}),this.degree=this["default"]({prop:"degree",def:360}),this.degreeEnd=this["default"]({prop:"degreeEnd",def:this.degree}),this.bitSpikes=this["default"]({prop:"bitSpikes",def:5}),this.bitSpikesEnd=this["default"]({prop:"bitSpikesEnd",def:this.bitSpikes}),this.bitAngle=this["default"]({prop:"bitAngle",def:0}),this.bitAngleEnd=this["default"]({prop:"bitAngleEnd",def:this.bitAngle}),this.bitRate=this["default"]({prop:"bitRate",def:.5}),this.bitRateEnd=this["default"]({prop:"bitRateEnd",def:this.bitRate}),this.bitRadius=this["default"]({prop:"bitRadius",def:10}),this.bitRadiusEnd=this["default"]({prop:"bitRadiusEnd",def:this.bitRadius})},i.prototype.run=function(t,e){var s,n;return this.oa=null!=t?t:{},i.__super__.run.apply(this,arguments),s=this,this.from=this.oa.isChain?e:{radiusX:this.radiusX,radiusY:this.radiusY,bitAngle:this.bitAngle,lineWidth:this.lineWidth,bitRadius:this.bitRadius,degree:this.degree,angle:this.angle,spikes:this.bitSpikesEnd,bitRate:this.bitRate,lineDashOffset:this.lineDashOffset},this.to={radiusX:this.radiusXEnd,radiusY:this.radiusYEnd,bitAngle:this.bitAngleEnd,lineWidth:this.lineWidthEnd,bitRadius:this.bitRadiusEnd,degree:this.degreeEnd,angle:this.angleEnd,spikes:this.spikesEnd,bitRate:this.bitRateEnd,lineDashOffset:this.lineDashOffsetEnd},this.mixStarSpikesProps(),this.mixLineDash(),this.mixColor(this.oa.isChain),this.mixFill(this.oa.isChain),this.calcSize(),this.addElements(),this.degreeCnt=this.degree%360===0?this.cnt:this.cnt-1,this.rotStep=this.degree/this.degreeCnt,n=this.initTween(this.oa.isChain).onUpdate(function(){return s.draw.call(this,s)}),this.tweens.push(n)},i.prototype.draw=function(t){var i,e,s,n,r,o,h,a,p,u,l,f,d;for(e=t.degreeCnt,o=t.rotStep,t.rotate({angle:this.angle*t.h.DEG}),t.ctx.clear(),a=this.degree/e,i=0,r=0,d=t.els,n=l=0,f=d.length;f>l;n=++l)s=d[n],h=(i+t.angle)*t.h.DEG,p=2*t.center+Math.cos(h)*this.radiusX,u=2*t.center+Math.sin(h)*this.radiusY,s.setProp({position:{x:p,y:u},angle:r+this.bitAngle,lineWidth:this.lineWidth,fillObj:t.updateFill(this),colorObj:t.updateColor(this),radiusX:this.bitRadius,radiusY:this.bitRadius,spikes:this.spikes,rate:this.bitRate,lineDash:t.updateLineDash(this),lineDashOffset:this.lineDashOffset}),i+=a,r+=o;return t.ctx.restore()},i.prototype.addElements=function(){var t,i,e,s;for(null==this.els&&(this.els=[]),this.els.length=0,s=[],t=i=0,e=this.cnt;e>=0?e>i:i>e;t=e>=0?++i:--i)s.push(this.els.push(new this.Shape({ctx:this.ctx,parentSize:{x:this.sizeX,y:this.sizeY},position:{x:2*this.center,y:2*this.center},isClearLess:!0,radius:this.bitRadius,color:this.color,fill:this.fill,spikes:this.bitSpikes,rate:this.bitRate,lineDash:this.lineDash})));return s},i.prototype.mixStarSpikesProps=function(){return this.from.spikes=this.spikes,this.to.spikes=this.spikesEnd,this.from.rate=this.rate,this.to.rate=this.rateEnd},i}(s),i.exports=e},{"./byte":4}],3:[function(t,i){var e,s,n;n=t("../helpers"),t("../polyfills"),s=t("../vendor/tween"),e=function(){function t(t){this.o=null!=t?t:{},this.vars(),this.o.isRunLess||("function"==typeof this.run?this.run():void 0)}return t.prototype.oa={},t.prototype.h=n,t.prototype.TWEEN=s,t.prototype.deg=Math.PI/180,t.prototype.DEG=Math.PI/180,t.prototype.px=n.pixel,t.prototype.parent=n.body,t.prototype.vars=function(){return this.ctx=this.o.ctx||this.ctx,this.px=n.pixel,this.parent=this["default"]({prop:"parent",def:n.body}),this.color=this["default"]({prop:"color",def:"#222"}),this.colorMap=this["default"]({prop:"colorMap",def:[this.color]}),this.fill=this["default"]({prop:"fill",def:"rgba(0,0,0,0)"}),this.fillEnd=this["default"]({prop:"fillEnd",def:this.fill}),this.lineWidth=this["default"]({prop:"lineWidth",def:1}),this.lineCap=this["default"]({prop:"lineCap",def:"round"}),this.opacity=this["default"]({prop:"opacity",def:1}),this.isClearLess=this["default"]({prop:"isClearLess",def:!1}),this.colorObj=n.makeColorObj(this.color),this.fillObj=this.h.makeColorObj(this.fill)},t.prototype.setProp=function(t){var i,e;for(i in t)e=t[i],null!=e&&(this[i]=e);return this.render()},t.prototype["default"]=function(t){var i,e;return e=t.prop,i=t.def,this.syntaxSugar({o:this.o,prop:e}),this.syntaxSugar({o:this.oa,prop:e}),this[e]=null!=this.oa[e]?this.oa[e]:null!=this.o[e]?this.o[e]:null!=this[e]?this[e]:i},t.prototype.defaultPart=function(t){return this[t.prop]=null,this["default"](t)},t.prototype.syntaxSugar=function(t){var i,e,s,n,r;if(t.o[t.prop]&&this.h.isObj(t.o[t.prop])){if(null!=(null!=(s=t.o[t.prop])?s.end:void 0))return t.o[""+t.prop+"End"]=t.o[t.prop].end,t.o[""+t.prop]=t.o[t.prop].start;if(!t.o[t.prop].x){n=t.o[t.prop],r=[];for(i in n){e=n[i],"lineDash"!==t.prop&&"lineDashEnd"!==t.prop?(t.o[""+t.prop+"End"]=e,t.o[""+t.prop]=parseFloat(i)):(t.o[""+t.prop+"End"]=this.stringToArray(e),t.o[""+t.prop]=this.stringToArray(i));break}return r}}},t.prototype.stringToArray=function(t){var i,e,s,n,r,o;for(i=[],o=t.split(","),e=n=0,r=o.length;r>n;e=++n)s=o[e],i.push(parseFloat(s));return i},t}(),i.exports=e},{"../helpers":14,"../polyfills":15,"../vendor/tween":16}],4:[function(t,i){var e,s,n,r,o,h,a,p,u,l,f={}.hasOwnProperty,d=function(t,i){function e(){this.constructor=t}for(var s in i)f.call(i,s)&&(t[s]=i[s]);return e.prototype=i.prototype,t.prototype=new e,t.__super__=i.prototype,t};l=t("../helpers"),e=t("./bit"),n=t("./objects/circle"),h=t("./objects/rectangle"),p=t("./objects/triangle"),a=t("./objects/star"),r=t("./objects/cross"),o=t("./objects/line"),u=t("./objects/zigzag"),s=function(t){function i(){return i.__super__.constructor.apply(this,arguments)}return d(i,t),i.prototype.shapes={circle:n,rectangle:h,triangle:p,star:a,cross:r,line:o,zigzag:u},i.prototype.vars=function(){return this.isShowStart=this["default"]({prop:"isShowStart",def:!1}),this.isShowEnd=this["default"]({prop:"isShowEnd",def:!1}),this.parent=this.o.parent||l.body,this.el=this.oa.el||this.o.el||this.el||this.createEl(),this.ctx=this.o.ctx||this.ctx||this.el.getContext("2d"),i.__super__.vars.apply(this,arguments),this.defaultByteVars(),this.s=1*l.time(1),null==this.tweens&&(this.tweens=[]),null!=this.chains?this.chains:this.chains=[]},i.prototype.run=function(t,i){var e,s,n,r,o;if(this.oa=null!=t?t:{},l.size(this.oa)&&this.vars(),!i){for(o=this.tweens,e=n=0,r=o.length;r>n;e=++n)s=o[e],this.TWEEN.remove(s);return this.tweens.length=0,this.chains.length=0}},i.prototype.mixLineDash=function(){var t,i,e,s,n,r,o,h,a;if(this.lineDash&&this.lineDashEnd){for(o=this.lineDash,i=e=0,n=o.length;n>e;i=++e)t=o[i],this.from["lineDash"+i]=t;for(h=this.lineDashEnd,a=[],i=s=0,r=h.length;r>s;i=++s)t=h[i],a.push(this.to["lineDash"+i]=t);return a}},i.prototype.mixColor=function(t){return this.color&&this.colorEnd&&(t||(this.from.r=this.colorObj.r,this.from.g=this.colorObj.g,this.from.b=this.colorObj.b,this.from.a=this.colorObj.a),this.to.r=this.colorEndObj.r,this.to.g=this.colorEndObj.g,this.to.b=this.colorEndObj.b,this.to.a=this.colorEndObj.a),this.colorObjTween=l.clone(this.colorObj)},i.prototype.mixFill=function(t){return this.fill&&this.fillEnd&&(t||(this.from.fr=this.fillObj.r,this.from.fg=this.fillObj.g,this.from.fb=this.fillObj.b,this.from.fa=this.fillObj.a),this.to.fr=this.fillEndObj.r,this.to.fg=this.fillEndObj.g,this.to.fb=this.fillEndObj.b,this.to.fa=this.fillEndObj.a),this.fillObjTween=l.clone(this.fillObj)},i.prototype.updateColor=function(t){return this.colorObjTween.r=parseInt(t.r,10),this.colorObjTween.g=parseInt(t.g,10),this.colorObjTween.b=parseInt(t.b,10),this.colorObjTween.a=parseFloat(t.a),this.colorObjTween},i.prototype.updateFill=function(t){return this.fillObjTween.r=parseInt(t.fr,10),this.fillObjTween.g=parseInt(t.fg,10),this.fillObjTween.b=parseInt(t.fb,10),this.fillObjTween.a=parseFloat(t.fa),this.fillObjTween},i.prototype.updateLineDash=function(t){var i,e,s,n;if(i=0,s=[],this.lineDash&&this.lineDashEnd)for(e in t)n=t[e],("lineDash0"===e||e==="lineDash"+i)&&(s.push(n),i++);return s},i.prototype.initTween=function(t){var i;return i=new this.TWEEN.Tween(this.from).to(this.to,this.duration*this.s).delay(this.delay*this.s).easing(this.TWEEN.Easing[this.easings[0]][this.easings[1]]).repeat(this.repeat-1).onStart(function(i){return function(){var e;return i.setElSize(),i.isRunning=!0,!t&&i.ctx.clear(),(!i.isShowStart||i.isShowEnd)&&(i.el.style.display="block"),null!=(e=i.o.onStart)?e.call(i,arguments):void 0}}(this)).onComplete(function(t){return function(){var i,e,s;return t.isShowStart=!1,null!=(e=t.onComplete)&&e.call(t,arguments),i=null!=(s=t.chains)?s[0]:void 0,i?t.runFromChain(i):(!t.isShowEnd&&(t.el.style.display="none"),t.isRunning=!1)}}(this)).yoyo(this.yoyo).start(),l.startAnimationLoop(),i},i.prototype.runFromChain=function(t){var i;return i=this.h.clone(this.to),t.isChain=!0,null==t.onComplete&&(t.onComplete=function(){}),null==t.onStart&&(t.onStart=function(){}),null==t.repeat&&(t.repeat=0),null==t.yoyo&&(t.yoyo=!1),null==t.delay&&(t.delay=0),null==t.duration&&(t.duration=400*this.s),this.run(t,i),this.chains.shift()},i.prototype.chain=function(t){return null==t&&(t={}),this.isRunning?this.chains.push(t):this.runFromChain(t)},i.prototype.defaultByteVars=function(){var t,i,e;return this.radius=this["default"]({prop:"radius",def:100}),this.radiusX=this["default"]({prop:"radiusX",def:this.radius}),this.radiusY=this["default"]({prop:"radiusY",def:this.radius}),this.radiusEnd=this["default"]({prop:"radiusEnd",def:this.radius}),this.radiusXEnd=this.defaultPart({prop:"radiusXEnd",def:this.radiusEnd}),this.radiusYEnd=this.defaultPart({prop:"radiusYEnd",def:this.radiusEnd}),this.lineWidth=this["default"]({prop:"lineWidth",def:1}),this.lineWidthMiddle=this["default"]({prop:"lineWidthMiddle",def:null}),this.lineWidthEnd=this["default"]({prop:"lineWidthEnd",def:this.lineWidth}),this.lineDashOffset=this["default"]({prop:"lineDashOffset",def:0}),this.lineDashOffsetEnd=this["default"]({prop:"lineDashOffsetEnd",def:this.lineDashOffset}),this.lineDash=this["default"]({prop:"lineDash",def:[]}),this.lineDashEnd=this["default"]({prop:"lineDashEnd",def:this.lineDash}),this.normalizeLineDashes(),this.opacity=this["default"]({prop:"opacity",def:1}),this.opacityEnd=this["default"]({prop:"opacityEnd",def:this.opacity}),this.colorEnd=this["default"]({prop:"colorEnd",def:this.color}),this.colorEnd&&(this.colorEndObj=l.makeColorObj(this.colorEnd)),this.fillEnd&&(this.fillEndObj=l.makeColorObj(this.fillEnd)),this.colorMap=this["default"]({prop:"colorMap",def:[this.color]}),this.angle=this["default"]({prop:"angle",def:0}),this.angleStart=this["default"]({prop:"angleStart",def:this.angle}),this.angleEnd=this["default"]({prop:"angleEnd",def:this.angleStart}),this.shape=this["default"]({prop:"shape",def:"circle"}),this.Shape=this.shapes[this.shape.toLowerCase()]||n,this.repeat=this["default"]({prop:"repeat",def:0}),this.yoyo=this["default"]({prop:"yoyo",def:!1}),this.duration=this["default"]({prop:"duration",def:400}),this.delay=this["default"]({prop:"delay",def:0}),this.easing=this.defaultPart({prop:"easing",def:"Linear.None"}),this.easings=this.easing.split("."),this.onComplete=this["default"]({prop:"onComplete",def:null}),this.onStart=this["default"]({prop:"onStart",def:null}),t=Math.abs,i=Math.max(t(this.radiusXEnd),t(this.radiusYEnd)),e=Math.max(t(this.radiusX),t(this.radiusY)),this.maxRadius=Math.max(i,e),this.maxLineWidth=Math.max(this.lineWidthEnd,this.lineWidthMiddle,this.lineWidth)},i.prototype.normalizeLineDashes=function(){var t,i,e,s,n,r,o,h,a,p,u;if(this.lineDash.length<this.lineDashEnd.length)for(a=this.lineDashEnd,i=n=0,o=a.length;o>n;i=++n)t=a[i],null==(e=this.lineDash)[i]&&(e[i]=this.lineDash[0]);if(this.lineDash.length>this.lineDashEnd.length){for(p=this.lineDash,u=[],i=r=0,h=p.length;h>r;i=++r)t=p[i],u.push(null!=(s=this.lineDashEnd)[i]?s[i]:s[i]=this.lineDashEnd[0]);return u}},i.prototype.createEl=function(){return this.el=document.createElement("canvas"),this.el.style.position="absolute",this.el.style.left=0,this.el.style.top=0,!this.isShowStart&&(this.el.style.display="none"),this.parent.appendChild(this.el)},i.prototype.calcSize=function(){var t,i,e,s;return t=Math.abs,i=Math.max(t(this.to.radiusX),t(this.to.radiusY)),s=Math.max(t(this.from.radiusX),t(this.from.radiusY)),this.maxRadius=Math.max(i,s),this.maxLineWidth=Math.max(this.from.lineWidth,this.to.lineWidth),this.maxBitRadius=Math.max(this.from.bitRadius,this.to.bitRadius),this.maxBitRadius|=0,this.size=2*(this.maxRadius+2*this.maxLineWidth+2*this.maxBitRadius),e=Math.max(this.from.rate,this.to.rate),e>1&&(this.size*=e),this.center=this.size/2,this.sizeX=this.size,this.sizeY=this.size,this.centerX=this.sizeX/2,this.centerY=this.sizeY/2,this.position=this["default"]({prop:"position",def:{x:this.sizeX/2,y:this.sizeY/2}})},i.prototype.setElSize=function(){return this.el.setAttribute("width",l.pixel*this.sizeX),this.el.setAttribute("height",l.pixel*this.sizeY),l.pixel>1&&(this.el.style.width=""+this.sizeX+"px",this.el.style.height=""+this.sizeY+"px"),this.posit(),this.el},i.prototype.setPosition=function(t,i){return null==i&&(i=0),this.position.x=t,null!=i&&(this.position.y=i),this.posit()},i.prototype.posit=function(){var t,i;return t=this.position.x-this.sizeX/2,i=this.position.y-this.sizeY/2,this.el.style.left=""+t+"px",this.el.style.top=""+i+"px"},i.prototype.rotate=function(t){return this.ctx.save(),this.ctx.translate(2*this.centerX,2*this.centerY),this.ctx.rotate(t.angle),this.ctx.translate(-2*this.centerX,-2*this.centerY)},i}(e),i.exports=s},{"../helpers":14,"./bit":3,"./objects/circle":5,"./objects/cross":6,"./objects/line":7,"./objects/rectangle":9,"./objects/star":10,"./objects/triangle":11,"./objects/zigzag":12}],5:[function(t,i){var e,s,n={}.hasOwnProperty,r=function(t,i){function e(){this.constructor=t}for(var s in i)n.call(i,s)&&(t[s]=i[s]);return e.prototype=i.prototype,t.prototype=new e,t.__super__=i.prototype,t};s=t("./object"),e=function(t){function i(){return i.__super__.constructor.apply(this,arguments)}return r(i,t),i.prototype.name="circle",i.prototype.vars=function(){return this.degree=this["default"]({prop:"degree",def:360}),this.degreeOffset=this["default"]({prop:"degreeOffset",def:0}),i.__super__.vars.apply(this,arguments)},i.prototype.render=function(){return this.preRender(),this.ctx.arc(1,1,1,this.degreeOffset*this.deg,(this.degree+this.degreeOffset)*this.deg,!1),this.postRender()},i}(s),i.exports=e},{"./object":8}],6:[function(t,i){var e,s,n={}.hasOwnProperty,r=function(t,i){function e(){this.constructor=t}for(var s in i)n.call(i,s)&&(t[s]=i[s]);return e.prototype=i.prototype,t.prototype=new e,t.__super__=i.prototype,t};s=t("./object"),e=function(t){function i(){return i.__super__.constructor.apply(this,arguments)}return r(i,t),i.prototype.name="Cross",i.prototype.render=function(){return this.preRender(),this.ctx.moveTo(1,0),this.ctx.lineTo(1,2),this.ctx.moveTo(0,1),this.ctx.lineTo(2,1),this.postRender()},i}(s),i.exports=e},{"./object":8}],7:[function(t,i){var e,s,n={}.hasOwnProperty,r=function(t,i){function e(){this.constructor=t}for(var s in i)n.call(i,s)&&(t[s]=i[s]);return e.prototype=i.prototype,t.prototype=new e,t.__super__=i.prototype,t};s=t("./object"),e=function(t){function i(){return i.__super__.constructor.apply(this,arguments)}return r(i,t),i.prototype.name="Line",i.prototype.render=function(){return this.preRender(),this.ctx.moveTo(0,1),this.ctx.lineTo(2,1),this.postRender()},i}(s),i.exports=e},{"./object":8}],8:[function(t,i){var e,s,n={}.hasOwnProperty,r=function(t,i){function e(){this.constructor=t}for(var s in i)n.call(i,s)&&(t[s]=i[s]);return e.prototype=i.prototype,t.prototype=new e,t.__super__=i.prototype,t};e=t("../bit"),s=function(t){function i(t){this.o=null!=t?t:{},this.vars()}return r(i,t),i.prototype.vars=function(){var t;return this.ctx=this.o.ctx||this.ctx,this.px=this.h.pixel,this.parent=this["default"]({prop:"parent",def:this.h.body}),this.color=this["default"]({prop:"color",def:"#222"}),this.fill=this["default"]({prop:"fill",def:"#222"}),this.lineWidth=this["default"]({prop:"lineWidth",def:1}),this.lineCap=this["default"]({prop:"lineCap",def:"round"}),this.opacity=this["default"]({prop:"opacity",def:1}),this.isClearLess=this["default"]({prop:"isClearLess",def:!1}),this.angle=this["default"]({prop:"angle",def:0}),this.lineDash=this["default"]({prop:"lineDash",def:[]}),this.lineDashOffset=this["default"]({prop:"lineDashOffset",def:0}),this.radius=this["default"]({prop:"radius",def:50}),this.radiusX=this.defaultPart({prop:"radiusX",def:this.radius}),this.radiusY=this.defaultPart({prop:"radiusY",def:this.radius}),this.size={width:2*this.radiusX,height:2*this.radiusY},t={x:this.size.width/2,y:this.size.height/2},this.position=this["default"]({prop:"position",def:t}),this.colorObj=this.h.makeColorObj(this.color),this.fillObj=this.h.makeColorObj(this.fill)},i.prototype.renderStart=function(){var t;return t=this.name||"object",this.ctx?(this.isClearLess||this.ctx.clear(),this.ctx.save(),this.ctx.beginPath()):void console.error(""+t+".render: no context!")},i.prototype.preRender=function(){return this.renderStart(),this.rotation(),this.radiusRender()},i.prototype.postRender=function(){var t;return t=this.fillObj,this.ctx.fillStyle="rgba("+t.r+","+t.g+","+t.b+", "+(this.opacity-(1-t.a))+")",this.ctx.fill(),this.ctx.restore(),this.stroke()},i.prototype.rotation=function(){var t,i;return t=this.position.x,i=this.position.y,this.ctx.translate(t,i),this.ctx.rotate(this.angle*this.h.DEG),this.ctx.translate(-t,-i)},i.prototype.radiusRender=function(){return this.ctx.translate(this.position.x-4*this.radiusX,this.position.y-4*this.radiusY),this.ctx.scale(4*this.radiusX,4*this.radiusY)},i.prototype.stroke=function(){var t,i;return this.ctx.lineWidth=this.lineWidth*this.px,this.ctx.lineCap=this.lineCap,this.ctx.lineDashOffset=this.lineDashOffset,"function"==typeof(i=this.ctx).setLineDash&&i.setLineDash(this.lineDash),t=this.colorObj,this.ctx.strokeStyle="rgba("+t.r+","+t.g+","+t.b+", "+(this.opacity-(1-t.a))+")",this.lineWidth>0&&this.ctx.stroke()},i}(e),i.exports=s},{"../bit":3}],9:[function(t,i){var e,s,n={}.hasOwnProperty,r=function(t,i){function e(){this.constructor=t}for(var s in i)n.call(i,s)&&(t[s]=i[s]);return e.prototype=i.prototype,t.prototype=new e,t.__super__=i.prototype,t};e=t("./object"),s=function(t){function i(){return i.__super__.constructor.apply(this,arguments)}return r(i,t),i.prototype.name="Square",i.prototype.render=function(){return this.preRender(),this.ctx.rect(.3,.3,1.4,1.4),this.postRender()},i}(e),i.exports=s},{"./object":8}],10:[function(t,i){var e,s,n={}.hasOwnProperty,r=function(t,i){function e(){this.constructor=t}for(var s in i)n.call(i,s)&&(t[s]=i[s]);return e.prototype=i.prototype,t.prototype=new e,t.__super__=i.prototype,t};e=t("./object"),s=function(t){function i(){return i.__super__.constructor.apply(this,arguments)}return r(i,t),i.prototype.name="Star",i.prototype.vars=function(){return i.__super__.vars.apply(this,arguments),this.spikes=this["default"]({prop:"spikes",def:5}),this.rate=this["default"]({prop:"rate",def:.5})},i.prototype.render=function(){var t,i,e,s,n,r,o,h,a;for(this.preRender(),r=Math.PI/2*3,t=1,i=1,h=t,a=i,s=this.rate,n=1,o=Math.PI/this.spikes,this.ctx.moveTo(t,i-s),e=0;e<this.spikes;)h=t+Math.cos(r)*s,a=i+Math.sin(r)*s,this.ctx.lineTo(h,a),r+=o,h=t+Math.cos(r)*n,a=i+Math.sin(r)*n,this.ctx.lineTo(h,a),r+=o,e++;return this.ctx.lineTo(t,i-s),this.ctx.closePath(),this.postRender()},i}(e),i.exports=s},{"./object":8}],11:[function(t,i){var e,s,n={}.hasOwnProperty,r=function(t,i){function e(){this.constructor=t}for(var s in i)n.call(i,s)&&(t[s]=i[s]);return e.prototype=i.prototype,t.prototype=new e,t.__super__=i.prototype,t};e=t("./object"),s=function(t){function i(){return i.__super__.constructor.apply(this,arguments)}return r(i,t),i.prototype.name="Triangle",i.prototype.vars=function(){return i.__super__.vars.apply(this,arguments),this.spikes=this["default"]({prop:"spikes",def:3})},i.prototype.render=function(){var t,i,e,s,n,r,o,h,a;for(this.preRender(),t=30,n=360/this.spikes,i=h=0,a=this.spikes;a>=0?a>=h:h>=a;i=a>=0?++h:--h)s=(t+this.angle)*this.h.DEG,r=1+Math.cos(s),o=1+Math.sin(s),t+=n,e=0===i?"moveTo":"lineTo",this.ctx[e](r,o);return this.ctx.closePath(),this.postRender()},i}(e),i.exports=s},{"./object":8}],12:[function(t,i){var e,s,n={}.hasOwnProperty,r=function(t,i){function e(){this.constructor=t}for(var s in i)n.call(i,s)&&(t[s]=i[s]);return e.prototype=i.prototype,t.prototype=new e,t.__super__=i.prototype,t};e=t("./object"),s=function(t){function i(){return i.__super__.constructor.apply(this,arguments)}return r(i,t),i.prototype.name="ZigZag",i.prototype.vars=function(){return i.__super__.vars.apply(this,arguments),this.rate=this["default"]({prop:"rate",def:.25}),this.spikes=this["default"]({prop:"spikes",def:10})},i.prototype.render=function(){var t,i,e,s,n,r;for(this.preRender(),t=n=0,r=this.spikes;r>=0?r>n:n>r;t=r>=0?++n:--n)i=0===t?"moveTo":"lineTo",s=t%2===0?this.rate:-this.rate,e=0+t*(2/(this.spikes-1)),this.ctx[i](e,1+s);return this.postRender()},i}(e),i.exports=s},{"./object":8}],13:[function(t){var i,e,s,n,r;r=t("./helpers"),i=t("./bits/Bubble"),e=t("./bits/Burst"),s=function(){function t(){}return t.prototype.Bubble=i,t.prototype.Burst=e,t}(),n=new s,"function"==typeof define&&define.amd?define("charites",[],function(){return n}):module.exports = n/*window.charites=n*/},{"./bits/Bubble":1,"./bits/Burst":2,"./helpers":14}],14:[function(t,i){var e,s;s=t("./vendor/tween"),e=function(){function t(t){this.o=null!=t?t:{},this.animationLoop=this.animationLoop.bind(this),this.div=document.createElement("div"),this.computedStyle=function(t){return window.getComputedStyle?getComputedStyle(t,""):t.currentStyle},this.shortColors={aqua:"rgb(0,255,255)",black:"rgb(0,0,0)",blue:"rgb(0,0,255)",fuchsia:"rgb(255,0,255)",gray:"rgb(128,128,128)",green:"rgb(0,128,0)",lime:"rgb(0,255,0)",maroon:"rgb(128,0,0)",navy:"rgb(0,0,128)",olive:"rgb(128,128,0)",purple:"rgb(128,0,128)",red:"rgb(255,0,0)",silver:"rgb(192,192,192)",teal:"rgb(0,128,128)",white:"rgb(255,255,255)",yellow:"rgb(255,255,0)",orange:"rgb(255,128,0)"}}return t.prototype.pixel=2,t.prototype.doc=document,t.prototype.body=document.body,t.prototype.deg=Math.PI/180,t.prototype.DEG=Math.PI/180,t.prototype.s=1,t.prototype.time=function(t){return t*this.s},t.prototype.isFF=function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1},t.prototype.isIE=function(){return this.isIE9l()||this.isIE10g()},t.prototype.isIE9l=function(){return navigator.userAgent.toLowerCase().indexOf("msie")>-1},t.prototype.isIE10g=function(){return navigator.userAgent.toLowerCase().indexOf("rv")>-1},t.prototype.slice=function(t,i){return t>i?i:t},t.prototype.sliceMod=function(t,i){return t>0?t>i?i:t:-i>t?-i:t},t.prototype.clone=function(t){var i,e,s;e={};for(i in t)s=t[i],e[i]=s;return e},t.prototype.getStyle=function(t){var i;return i=window.getComputedStyle?getComputedStyle(t,null):t.currentStyle},t.prototype.rand=function(t,i){return Math.floor(Math.random()*(i+1-t)+t)},t.prototype.bind=function(t,i){var e,s;return s=function(){var s,n;return s=Array.prototype.slice.call(arguments),n=e.concat(s),t.apply(i,n)},e=Array.prototype.slice.call(arguments,2),s},t.prototype.isObj=function(t){return!!t&&t.constructor===Object},t.prototype.makeColorObj=function(t){var i,e,s,n,r,o,h,a,p,u;return"#"===t[0]&&(p=/^#?([a-f\d]{1,2})([a-f\d]{1,2})([a-f\d]{1,2})$/i.exec(t),s={},p&&(o=2===p[1].length?p[1]:p[1]+p[1],n=2===p[2].length?p[2]:p[2]+p[2],e=2===p[3].length?p[3]:p[3]+p[3],s={r:parseInt(o,16),g:parseInt(n,16),b:parseInt(e,16),a:1})),"#"!==t[0]&&(r="r"===t[0]&&"g"===t[1]&&"b"===t[2],r&&(u=t),r||(u=this.shortColors[t]?this.shortColors[t]:(this.div.style.color=t,this.isFF()||this.isIE()?this.computedStyle(this.div).color:this.div.style.color)),h="^rgba?\\((\\d{1,3}),\\s?(\\d{1,3}),",a="\\s?(\\d{1,3}),?\\s?(\\d{1}|0?\\.\\d{1,})?\\)$",p=new RegExp(h+a,"gi").exec(u),s={},i=parseFloat(p[4]||1),p&&(s={r:parseInt(p[1],10),g:parseInt(p[2],10),b:parseInt(p[3],10),a:null==i||isNaN(i)?1:i})),s},t.prototype.size=function(t){var i,e,s;i=0;for(e in t)s=t[e],i++;return i},t.prototype.isSizeChange=function(t){var i,e,s,n;return e=t.radiusStart||t.radiusEnd,s=t.radiusStartX||t.radiusStartY,n=t.radiusEndX||t.radiusEndX,i=t.lineWidth||t.lineWidthMiddle||t.lineWidthEnd,e||s||n||i},t.prototype.lock=function(t){return!this[t.lock]&&t.fun(),this[t.lock]=!0},t.prototype.unlock=function(t){return this[t.lock]=!1},t.prototype.animationLoop=function(){return s.getAll().length||(this.isAnimateLoop=!1),this.isAnimateLoop?(s.update(),requestAnimationFrame(this.animationLoop)):void 0},t.prototype.startAnimationLoop=function(){return this.isAnimateLoop?void 0:(this.isAnimateLoop=!0,this.animationLoop())},t.prototype.stopAnimationLoop=function(){return this.isAnimateLoop=!1},t}(),i.exports=function(){return new e}()},{"./vendor/tween":16}],15:[function(t,i){i.exports=function(){return CanvasRenderingContext2D.prototype.clear?void 0:CanvasRenderingContext2D.prototype.clear=function(t){t&&(this.save(),this.setTransform(1,0,0,1,0,0)),this.clearRect(0,0,this.canvas.width,this.canvas.height),t&&this.restore()}}()},{}],16:[function(t,i){!function(t){!function(){for(var t=0,i=["ms","moz","webkit","o"],e=0;e<i.length&&!window.requestAnimationFrame;++e)window.requestAnimationFrame=window[i[e]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[i[e]+"CancelAnimationFrame"]||window[i[e]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(i){var e=(new Date).getTime(),s=Math.max(0,16-(e-t)),n=window.setTimeout(function(){i(e+s)},s);return t=e+s,n}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(t){clearTimeout(t)})}(),Date.now===t&&(Date.now=function(){return(new Date).valueOf()});var e=e||function(){var i=[];return{REVISION:"14",getAll:function(){return i},removeAll:function(){i=[]},add:function(t){i.push(t)},remove:function(t){var e=i.indexOf(t);-1!==e&&i.splice(e,1)},update:function(e){if(0===i.length)return!1;var s=0;for(e=e!==t?e:"undefined"!=typeof window&&window.performance!==t&&window.performance.now!==t?window.performance.now():Date.now();s<i.length;)i[s].update(e)?s++:i.splice(s,1);return!0}}}();e.Tween=function(i){var s=i,n={},r={},o={},h=1e3,a=0,p=!1,u=!1,l=!1,f=0,d=null,c=e.Easing.Linear.None,y=e.Interpolation.Linear,g=[],b=null,m=!1,v=null,x=null,w=null;for(var E in i)n[E]=parseFloat(i[E],10);this.to=function(i,e){return e!==t&&(h=e),r=i,this},this.start=function(i){e.add(this),u=!0,m=!1,d=i!==t?i:"undefined"!=typeof window&&window.performance!==t&&window.performance.now!==t?window.performance.now():Date.now(),d+=f;for(var h in r){if(r[h]instanceof Array){if(0===r[h].length)continue;r[h]=[s[h]].concat(r[h])}n[h]=s[h],n[h]instanceof Array==!1&&(n[h]*=1),o[h]=n[h]||0}return this},this.stop=function(){return u?(e.remove(this),u=!1,null!==w&&w.call(s),this.stopChainedTweens(),this):this},this.stopChainedTweens=function(){for(var t=0,i=g.length;i>t;t++)g[t].stop()},this.delay=function(t){return f=t,this},this.repeat=function(t){return a=t,this},this.yoyo=function(t){return p=t,this},this.easing=function(t){return c=t,this},this.interpolation=function(t){return y=t,this},this.chain=function(){return g=arguments,this},this.onStart=function(t){return b=t,this},this.onUpdate=function(t){return v=t,this},this.onComplete=function(t){return x=t,this},this.onStop=function(t){return w=t,this},this.update=function(t){var i;if(d>t)return!0;m===!1&&(null!==b&&b.call(s),m=!0);var e=(t-d)/h;e=e>1?1:e;var u=c(e);for(i in r){var w=n[i]||0,E=r[i];E instanceof Array?s[i]=y(E,u):("string"==typeof E&&(E=w+parseFloat(E,10)),"number"==typeof E&&(s[i]=w+(E-w)*u))}if(null!==v&&v.call(s,u),1==e){if(a>0){isFinite(a)&&a--;for(i in o){if("string"==typeof r[i]&&(o[i]=o[i]+parseFloat(r[i],10)),p){var _=o[i];o[i]=r[i],r[i]=_}n[i]=o[i]}return p&&(l=!l),d=t+f,!0}null!==x&&x.call(s);for(var O=0,j=g.length;j>O;O++)g[O].start(t);return!1}return!0}},e.Easing={Linear:{None:function(t){return t}},Quadratic:{In:function(t){return t*t},Out:function(t){return t*(2-t)},InOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)}},Cubic:{In:function(t){return t*t*t},Out:function(t){return--t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)}},Quartic:{In:function(t){return t*t*t*t},Out:function(t){return 1- --t*t*t*t},InOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)}},Quintic:{In:function(t){return t*t*t*t*t},Out:function(t){return--t*t*t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)}},Sinusoidal:{In:function(t){return 1-Math.cos(t*Math.PI/2)},Out:function(t){return Math.sin(t*Math.PI/2)},InOut:function(t){return.5*(1-Math.cos(Math.PI*t))}},Exponential:{In:function(t){return 0===t?0:Math.pow(1024,t-1)},Out:function(t){return 1===t?1:1-Math.pow(2,-10*t)},InOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(-Math.pow(2,-10*(t-1))+2)}},Circular:{In:function(t){return 1-Math.sqrt(1-t*t)},Out:function(t){return Math.sqrt(1- --t*t)
},InOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)}},Elastic:{In:function(t){var i,e=.1,s=.4;return 0===t?0:1===t?1:(!e||1>e?(e=1,i=s/4):i=s*Math.asin(1/e)/(2*Math.PI),-(e*Math.pow(2,10*(t-=1))*Math.sin(2*(t-i)*Math.PI/s)))},Out:function(t){var i,e=.1,s=.4;return 0===t?0:1===t?1:(!e||1>e?(e=1,i=s/4):i=s*Math.asin(1/e)/(2*Math.PI),e*Math.pow(2,-10*t)*Math.sin(2*(t-i)*Math.PI/s)+1)},InOut:function(t){var i,e=.1,s=.4;return 0===t?0:1===t?1:(!e||1>e?(e=1,i=s/4):i=s*Math.asin(1/e)/(2*Math.PI),(t*=2)<1?-.5*e*Math.pow(2,10*(t-=1))*Math.sin(2*(t-i)*Math.PI/s):e*Math.pow(2,-10*(t-=1))*Math.sin(2*(t-i)*Math.PI/s)*.5+1)}},Back:{In:function(t){var i=1.70158;return t*t*((i+1)*t-i)},Out:function(t){var i=1.70158;return--t*t*((i+1)*t+i)+1},InOut:function(t){var i=2.5949095;return(t*=2)<1?.5*t*t*((i+1)*t-i):.5*((t-=2)*t*((i+1)*t+i)+2)}},Bounce:{In:function(t){return 1-e.Easing.Bounce.Out(1-t)},Out:function(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},InOut:function(t){return.5>t?.5*e.Easing.Bounce.In(2*t):.5*e.Easing.Bounce.Out(2*t-1)+.5}}},e.Interpolation={Linear:function(t,i){var s=t.length-1,n=s*i,r=Math.floor(n),o=e.Interpolation.Utils.Linear;return 0>i?o(t[0],t[1],n):i>1?o(t[s],t[s-1],s-n):o(t[r],t[r+1>s?s:r+1],n-r)},Bezier:function(t,i){var s,n=0,r=t.length-1,o=Math.pow,h=e.Interpolation.Utils.Bernstein;for(s=0;r>=s;s++)n+=o(1-i,r-s)*o(i,s)*t[s]*h(r,s);return n},CatmullRom:function(t,i){var s=t.length-1,n=s*i,r=Math.floor(n),o=e.Interpolation.Utils.CatmullRom;return t[0]===t[s]?(0>i&&(r=Math.floor(n=s*(1+i))),o(t[(r-1+s)%s],t[r],t[(r+1)%s],t[(r+2)%s],n-r)):0>i?t[0]-(o(t[0],t[0],t[1],t[1],-n)-t[0]):i>1?t[s]-(o(t[s],t[s],t[s-1],t[s-1],n-s)-t[s]):o(t[r?r-1:0],t[r],t[r+1>s?s:r+1],t[r+2>s?s:r+2],n-r)},Utils:{Linear:function(t,i,e){return(i-t)*e+t},Bernstein:function(t,i){var s=e.Interpolation.Utils.Factorial;return s(t)/s(i)/s(t-i)},Factorial:function(){var t=[1];return function(i){var e,s=1;if(t[i])return t[i];for(e=i;e>1;e--)s*=e;return t[i]=s}}(),CatmullRom:function(t,i,e,s,n){var r=.5*(e-t),o=.5*(s-i),h=n*n,a=n*h;return(2*i-2*e+r+o)*a+(-3*i+3*e-2*r-o)*h+r*n+i}}},i.exports=e}()},{}]},{},[13]);
},{}],8:[function(require,module,exports){
var Shadow, h;

h = require('./helpers');

Shadow = (function() {
  function Shadow(o) {
    this.o = o != null ? o : {};
    this.vars();
  }

  Shadow.prototype.vars = function() {
    this.shadow = document.getElementById('js-shadow');
    this.base = this.o.base;
    this.tick = 0;
    this.o = .75;
    return this.speed = 3;
  };

  Shadow.prototype.draw = function() {
    var ang, flick, scale, sup, suppress, translate, x;
    if (this.isFF) {
      return;
    }
    suppress = 0;
    suppress = this.base.suppress < 0 ? this.base.suppress / 80 : this.base.suppress / 120;
    scale = "scale(" + (1 - suppress) + ")";
    x = this.base.x - this.base.initX;
    translate = this.base.suppress > 0 ? "translate(" + (2 * this.base.angle) + "px," + (3 * this.base.suppress) + "px)" : '';
    h.transform(this.shadow, "" + scale + " " + translate + " translateZ(0)");
    this.tick++;
    sup = Math.abs(~~(10 * suppress));
    ang = Math.abs(~~(this.base.angle / 45));
    flick = Math.max(sup, ang);
    if (this.tick % (this.speed - flick) === 0) {
      this.o = h.rand(8, 10) / 10;
      return this.shadow.style.opacity = this.o;
    }
  };

  return Shadow;

})();

module.exports = Shadow;



},{"./helpers":5}],9:[function(require,module,exports){
var Shaker;

Shaker = (function() {
  function Shaker() {
    this.vars();
  }

  Shaker.prototype.vars = function() {
    return this.pos = [];
  };

  Shaker.prototype.reset = function() {
    var len;
    this.isShake = false;
    len = this.pos.length;
    if (len < 3) {
      return;
    }
    return this.pos = [this.pos[len - 3], this.pos[len - 2], this.pos[len - 1]];
  };

  Shaker.prototype.setPosition = function(pos) {
    var lastI, len, time;
    this.pos.push(pos);
    len = this.pos.length;
    if (len < 3) {
      return;
    }
    lastI = len - 1;
    if ((pos.dir !== this.pos[lastI - 1].dir) && (pos.dir === this.pos[lastI - 2].dir)) {
      time = (pos.timestamp - this.pos[lastI - 1].timestamp) / 1000;
      return this.isShake = time < .2;
    }
  };

  return Shaker;

})();

module.exports = Shaker;



},{}],10:[function(require,module,exports){
var Spark, h;

h = require('./helpers');

Spark = (function() {
  function Spark(o) {
    this.o = o != null ? o : {};
    this.vars();
  }

  Spark.prototype.vars = function() {
    this.ctx = this.o.ctx;
    this.start = this.o.start;
    this.length = this.o.length || 450;
    this.color = this.o.color;
    this.offset = this.o.offset || 0;
    this.getRandRadius();
    this.getRandOffset();
    this.getRandDelay();
    this.isDelayed = this.o.isDelayed || true;
    this.base2 = {};
    this.cloneBase();
    this.sinCoef = 1;
    this.p = 0;
    this.pSin = 0;
    this.pSinStep = .1;
    return this.d = 0;
  };

  Spark.prototype.getRandOffset = function() {
    return this.offset = h.rand(-35, 35);
  };

  Spark.prototype.getRandDelay = function() {
    return this.delay = h.rand(0, 20);
  };

  Spark.prototype.getRandRadius = function() {
    return this.radius = h.rand(5, 10);
  };

  Spark.prototype.cloneBase = function() {
    var key, value, _ref, _results;
    _ref = this.o.base;
    _results = [];
    for (key in _ref) {
      value = _ref[key];
      _results.push(this.base2[key] = value);
    }
    return _results;
  };

  Spark.prototype.draw = function() {
    var b, quirk, rad, speed, x, y;
    if (!this.isDelayed) {
      !this.isBaseCloned && this.cloneBase();
      this.isBaseCloned = true;
      this.ctx.beginPath();
      b = this.base2;
      speed = Math.abs(b.angle) / 3000;
      rad = b.radius + 100 - this.length + (this.length * this.p);
      quirk = Math.sin(this.pSin) * this.sinCoef;
      x = b.x + Math.cos((b.angle + quirk - 90) * h.DEG) * rad;
      y = b.y + Math.sin((b.angle + quirk - 90) * h.DEG) * rad;
      x += this.offset * h.PX;
      this.ctx.arc(x, y, this.radius * (1 - this.p), 0, 2 * Math.PI);
      this.ctx.fillStyle = this.color;
      this.ctx.fill();
      this.pSin += this.pSinStep + speed;
      this.p += .02 + speed;
      if (this.p >= 1) {
        this.p = 0;
        this.pSin = 0;
        this.sinCoef = -this.sinCoef;
        this.isDelayed = true;
        this.radius = h.rand(5, 10);
        this.pSinStep = h.rand(0, 2) / 10;
        this.getRandOffset();
        this.getRandDelay();
        return this.isBaseCloned = false;
      }
    } else {
      this.d += .1;
      if (this.d >= this.delay * (1 - Math.abs(this.base2.angle) / 45)) {
        this.d = 0;
        return this.isDelayed = false;
      }
    }
  };

  return Spark;

})();

module.exports = Spark;



},{"./helpers":5}],11:[function(require,module,exports){
// tween.js v.0.15.0 https://github.com/sole/tween.js
void 0 === Date.now && (Date.now = function() {
    return (new Date).valueOf()
});
var TWEEN = TWEEN || function() {
        var n = [];
        return {
            REVISION: "14",
            getAll: function() {
                return n
            },
            removeAll: function() {
                n = []
            },
            add: function(t) {
                n.push(t)
            },
            remove: function(t) {
                var r = n.indexOf(t); - 1 !== r && n.splice(r, 1)
            },
            update: function(t) {
                if (0 === n.length) return !1;
                var r = 0;
                for (t = void 0 !== t ? t : "undefined" != typeof window && void 0 !== window.performance && void 0 !== window.performance.now ? window.performance.now() : Date.now(); r < n.length;) n[r].update(t) ? r++ : n.splice(r, 1);
                return !0
            }
        }
    }();
TWEEN.Tween = function(n) {
    var t = n,
        r = {}, i = {}, u = {}, o = 1e3,
        e = 0,
        a = !1,
        f = !1,
        c = !1,
        s = 0,
        h = null,
        l = TWEEN.Easing.Linear.None,
        p = TWEEN.Interpolation.Linear,
        E = [],
        d = null,
        v = !1,
        I = null,
        w = null,
        M = null;
    for (var O in n) r[O] = parseFloat(n[O], 10);
    this.to = function(n, t) {
        return void 0 !== t && (o = t), i = n, this
    }, this.start = function(n) {
        TWEEN.add(this), f = !0, v = !1, h = void 0 !== n ? n : "undefined" != typeof window && void 0 !== window.performance && void 0 !== window.performance.now ? window.performance.now() : Date.now(), h += s;
        for (var o in i) {
            if (i[o] instanceof Array) {
                if (0 === i[o].length) continue;
                i[o] = [t[o]].concat(i[o])
            }
            r[o] = t[o], r[o] instanceof Array == !1 && (r[o] *= 1), u[o] = r[o] || 0
        }
        return this
    }, this.stop = function() {
        return f ? (TWEEN.remove(this), f = !1, null !== M && M.call(t), this.stopChainedTweens(), this) : this
    }, this.stopChainedTweens = function() {
        for (var n = 0, t = E.length; t > n; n++) E[n].stop()
    }, this.delay = function(n) {
        return s = n, this
    }, this.repeat = function(n) {
        return e = n, this
    }, this.yoyo = function(n) {
        return a = n, this
    }, this.easing = function(n) {
        return l = n, this
    }, this.interpolation = function(n) {
        return p = n, this
    }, this.chain = function() {
        return E = arguments, this
    }, this.onStart = function(n) {
        return d = n, this
    }, this.onUpdate = function(n) {
        return I = n, this
    }, this.onComplete = function(n) {
        return w = n, this
    }, this.onStop = function(n) {
        return M = n, this
    }, this.update = function(n) {
        var f;
        if (h > n) return !0;
        v === !1 && (null !== d && d.call(t), v = !0);
        var M = (n - h) / o;
        M = M > 1 ? 1 : M;
        var O = l(M);
        for (f in i) {
            var m = r[f] || 0,
                N = i[f];
            N instanceof Array ? t[f] = p(N, O) : ("string" == typeof N && (N = m + parseFloat(N, 10)), "number" == typeof N && (t[f] = m + (N - m) * O))
        }
        if (null !== I && I.call(t, O), 1 == M) {
            if (e > 0) {
                isFinite(e) && e--;
                for (f in u) {
                    if ("string" == typeof i[f] && (u[f] = u[f] + parseFloat(i[f], 10)), a) {
                        var T = u[f];
                        u[f] = i[f], i[f] = T
                    }
                    r[f] = u[f]
                }
                return a && (c = !c), h = n + s, !0
            }
            null !== w && w.call(t);
            for (var g = 0, W = E.length; W > g; g++) E[g].start(n);
            return !1
        }
        return !0
    }
}, TWEEN.Easing = {
    Linear: {
        None: function(n) {
            return n
        }
    },
    Quadratic: {
        In: function(n) {
            return n * n
        },
        Out: function(n) {
            return n * (2 - n)
        },
        InOut: function(n) {
            return (n *= 2) < 1 ? .5 * n * n : -.5 * (--n * (n - 2) - 1)
        }
    },
    Cubic: {
        In: function(n) {
            return n * n * n
        },
        Out: function(n) {
            return --n * n * n + 1
        },
        InOut: function(n) {
            return (n *= 2) < 1 ? .5 * n * n * n : .5 * ((n -= 2) * n * n + 2)
        }
    },
    Quartic: {
        In: function(n) {
            return n * n * n * n
        },
        Out: function(n) {
            return 1 - --n * n * n * n
        },
        InOut: function(n) {
            return (n *= 2) < 1 ? .5 * n * n * n * n : -.5 * ((n -= 2) * n * n * n - 2)
        }
    },
    Quintic: {
        In: function(n) {
            return n * n * n * n * n
        },
        Out: function(n) {
            return --n * n * n * n * n + 1
        },
        InOut: function(n) {
            return (n *= 2) < 1 ? .5 * n * n * n * n * n : .5 * ((n -= 2) * n * n * n * n + 2)
        }
    },
    Sinusoidal: {
        In: function(n) {
            return 1 - Math.cos(n * Math.PI / 2)
        },
        Out: function(n) {
            return Math.sin(n * Math.PI / 2)
        },
        InOut: function(n) {
            return .5 * (1 - Math.cos(Math.PI * n))
        }
    },
    Exponential: {
        In: function(n) {
            return 0 === n ? 0 : Math.pow(1024, n - 1)
        },
        Out: function(n) {
            return 1 === n ? 1 : 1 - Math.pow(2, - 10 * n)
        },
        InOut: function(n) {
            return 0 === n ? 0 : 1 === n ? 1 : (n *= 2) < 1 ? .5 * Math.pow(1024, n - 1) : .5 * (-Math.pow(2, - 10 * (n - 1)) + 2)
        }
    },
    Circular: {
        In: function(n) {
            return 1 - Math.sqrt(1 - n * n)
        },
        Out: function(n) {
            return Math.sqrt(1 - --n * n)
        },
        InOut: function(n) {
            return (n *= 2) < 1 ? -.5 * (Math.sqrt(1 - n * n) - 1) : .5 * (Math.sqrt(1 - (n -= 2) * n) + 1)
        }
    },
    Elastic: {
        In: function(n) {
            var t, r = .1,
                i = .4;
            return 0 === n ? 0 : 1 === n ? 1 : (!r || 1 > r ? (r = 1, t = i / 4) : t = i * Math.asin(1 / r) / (2 * Math.PI), - (r * Math.pow(2, 10 * (n -= 1)) * Math.sin(2 * (n - t) * Math.PI / i)))
        },
        Out: function(n) {
            var t, r = .1,
                i = .4;
            return 0 === n ? 0 : 1 === n ? 1 : (!r || 1 > r ? (r = 1, t = i / 4) : t = i * Math.asin(1 / r) / (2 * Math.PI), r * Math.pow(2, - 10 * n) * Math.sin(2 * (n - t) * Math.PI / i) + 1)
        },
        InOut: function(n) {
            var t, r = .1,
                i = .4;
            return 0 === n ? 0 : 1 === n ? 1 : (!r || 1 > r ? (r = 1, t = i / 4) : t = i * Math.asin(1 / r) / (2 * Math.PI), (n *= 2) < 1 ? -.5 * r * Math.pow(2, 10 * (n -= 1)) * Math.sin(2 * (n - t) * Math.PI / i) : r * Math.pow(2, - 10 * (n -= 1)) * Math.sin(2 * (n - t) * Math.PI / i) * .5 + 1)
        }
    },
    Back: {
        In: function(n) {
            var t = 1.70158;
            return n * n * ((t + 1) * n - t)
        },
        Out: function(n) {
            var t = 1.70158;
            return --n * n * ((t + 1) * n + t) + 1
        },
        InOut: function(n) {
            var t = 2.5949095;
            return (n *= 2) < 1 ? .5 * n * n * ((t + 1) * n - t) : .5 * ((n -= 2) * n * ((t + 1) * n + t) + 2)
        }
    },
    Bounce: {
        In: function(n) {
            return 1 - TWEEN.Easing.Bounce.Out(1 - n)
        },
        Out: function(n) {
            return 1 / 2.75 > n ? 7.5625 * n * n : 2 / 2.75 > n ? 7.5625 * (n -= 1.5 / 2.75) * n + .75 : 2.5 / 2.75 > n ? 7.5625 * (n -= 2.25 / 2.75) * n + .9375 : 7.5625 * (n -= 2.625 / 2.75) * n + .984375
        },
        InOut: function(n) {
            return .5 > n ? .5 * TWEEN.Easing.Bounce.In(2 * n) : .5 * TWEEN.Easing.Bounce.Out(2 * n - 1) + .5
        }
    }
}, TWEEN.Interpolation = {
    Linear: function(n, t) {
        var r = n.length - 1,
            i = r * t,
            u = Math.floor(i),
            o = TWEEN.Interpolation.Utils.Linear;
        return 0 > t ? o(n[0], n[1], i) : t > 1 ? o(n[r], n[r - 1], r - i) : o(n[u], n[u + 1 > r ? r : u + 1], i - u)
    },
    Bezier: function(n, t) {
        var r, i = 0,
            u = n.length - 1,
            o = Math.pow,
            e = TWEEN.Interpolation.Utils.Bernstein;
        for (r = 0; u >= r; r++) i += o(1 - t, u - r) * o(t, r) * n[r] * e(u, r);
        return i
    },
    CatmullRom: function(n, t) {
        var r = n.length - 1,
            i = r * t,
            u = Math.floor(i),
            o = TWEEN.Interpolation.Utils.CatmullRom;
        return n[0] === n[r] ? (0 > t && (u = Math.floor(i = r * (1 + t))), o(n[(u - 1 + r) % r], n[u], n[(u + 1) % r], n[(u + 2) % r], i - u)) : 0 > t ? n[0] - (o(n[0], n[0], n[1], n[1], - i) - n[0]) : t > 1 ? n[r] - (o(n[r], n[r], n[r - 1], n[r - 1], i - r) - n[r]) : o(n[u ? u - 1 : 0], n[u], n[u + 1 > r ? r : u + 1], n[u + 2 > r ? r : u + 2], i - u)
    },
    Utils: {
        Linear: function(n, t, r) {
            return (t - n) * r + n
        },
        Bernstein: function(n, t) {
            var r = TWEEN.Interpolation.Utils.Factorial;
            return r(n) / r(t) / r(n - t)
        },
        Factorial: function() {
            var n = [1];
            return function(t) {
                var r, i = 1;
                if (n[t]) return n[t];
                for (r = t; r > 1; r--) i *= r;
                return n[t] = i
            }
        }(),
        CatmullRom: function(n, t, r, i, u) {
            var o = .5 * (r - n),
                e = .5 * (i - t),
                a = u * u,
                f = u * a;
            return (2 * t - 2 * r + o + e) * f + (-3 * t + 3 * r - 2 * o - e) * a + o * u + t
        }
    }
}, "undefined" != typeof module && module.exports && (module.exports = TWEEN);
},{}]},{},[6])
              
            
!
999px

Console