<style>
html, body {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  background-color: black;
}
</style>
<canvas id="canvas"></canvas>
<script>
  window.onhashchange = function() { location.reload(); }
  function printMessageOnServer(text) {
        const lengthBytes = lengthBytesUTF8(text) + 1;
        const stringOnWasmHeap = Module['_malloc'](lengthBytes);
        stringToUTF8(text, stringOnWasmHeap, lengthBytes);
        Module['_rive_print_message_on_server'](stringOnWasmHeap);
        Module['_free'](stringOnWasmHeap);
  }
  var Module = {
    'canvas': document.getElementById("canvas"),
    'print': function(text) {
        // Log 1st in case we're in a state where printMessageOnServer crashes.
        console.log(text);
        printMessageOnServer(text + '\n');
    },
    'printErr': function(text) {
        // Log 1st in case we're in a state where printMessageOnServer crashes.
        console.error(text);
        printMessageOnServer(text + '\n');
    },
  };
</script>
<script src="player.js"></script>
