wikiapellidos.com
ads.txt

Resource Scan

Scan Details

Site Domain wikiapellidos.com
Base Domain wikiapellidos.com
Scan Status Ok
Last Scan2024-09-28T05:00:04+00:00
Next Scan 2024-10-05T05:00:04+00:00

Last Scan

Scanned2024-09-28T05:00:04+00:00
URL https://wikiapellidos.com/ads.txt
Domain IPs 104.21.27.100, 172.67.142.62, 2606:4700:3031::6815:1b64, 2606:4700:3037::ac43:8e3e
Response IP 172.67.142.62
Found Yes
Hash 66d4850f9b0c49f947553efba66f75e91a78570865a095f6f3f67d87c284b19c
SimHash 6226d915c2c4

Log in to view validations, the supply chain graph, sellers.json details for sellers, and the number of sites that list each direct seller as direct.

Variables

Variable Value
OWNERDOMAIN wikiapellidos.com
MANAGERDOMAIN ezoic.ai
CONTACT directsales@ezoic.com

Comments

  • Invalid Syntax: <html>
  • Invalid Syntax: <head>
  • Invalid Syntax: <title>Error 404</title>
  • Invalid Account Type: function hideClass(name) {
  • Invalid Syntax: for (i; i < l; i++) {
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: // Copyright (c) 2014 The Chromium Authors. All rights reserved.
  • Invalid Syntax: // Use of this source code is governed by a BSD-style license that can be
  • Invalid Syntax: // found in the LICENSE file.
  • Invalid Syntax: (function() {
  • Invalid Syntax: 'use strict';
  • Invalid Syntax: /**
  • Invalid Account Type: * T-Rex runner.
  • Invalid Syntax: * @param {string} outerContainerId Outer containing element id.
  • Invalid Account Type: * @param {object} opt_config
  • Invalid Syntax: * @constructor
  • Invalid Syntax: * @export
  • Invalid Syntax: */
  • Invalid Account Type: function Runner(outerContainerId, opt_config) {
  • Invalid Syntax: // Singleton
  • Invalid Account Type: if (Runner.instance_) {
  • Invalid Syntax: return Runner.instance_;
  • Invalid Syntax: }
  • Invalid Account Type: // Sound FX.
  • Invalid Syntax: // Global web audio context for playing sounds.
  • Invalid Syntax: // Images.
  • Invalid Syntax: this.loadImages();
  • Invalid Syntax: }
  • Invalid Syntax: /**
  • Invalid Account Type: * Default game width.
  • Invalid Syntax: * @const
  • Invalid Syntax: */
  • Invalid Syntax: /**
  • Invalid Account Type: * Frames per second.
  • Invalid Syntax: * @const
  • Invalid Syntax: */
  • Invalid Account Type: /** @const */
  • Invalid Account Type: /** @const */
  • Invalid Account Type: window.navigator.userAgent.indexOf('UIWebViewForStaticFileContent') > -1;
  • Invalid Account Type: /** @const */
  • Invalid Account Type: /** @const */
  • Invalid Syntax: /**
  • Invalid Account Type: * Default game configuration.
  • Invalid Account Type: * @enum {number}
  • Invalid Syntax: */
  • Invalid Syntax: ACCELERATION: 0.001,
  • Invalid Syntax: BG_CLOUD_SPEED: 0.2,
  • Invalid Syntax: BOTTOM_PAD: 10,
  • Invalid Syntax: CLEAR_TIME: 3000,
  • Invalid Syntax: CLOUD_FREQUENCY: 0.5,
  • Invalid Syntax: GAMEOVER_CLEAR_TIME: 750,
  • Invalid Syntax: GAP_COEFFICIENT: 0.6,
  • Invalid Syntax: GRAVITY: 0.6,
  • Invalid Syntax: INITIAL_JUMP_VELOCITY: 12,
  • Invalid Syntax: MAX_CLOUDS: 6,
  • Invalid Syntax: MAX_OBSTACLE_LENGTH: 3,
  • Invalid Syntax: MAX_SPEED: 12,
  • Invalid Syntax: MIN_JUMP_HEIGHT: 35,
  • Invalid Syntax: MOBILE_SPEED_COEFFICIENT: 1.2,
  • Invalid Syntax: RESOURCE_TEMPLATE_ID: 'audio-resources',
  • Invalid Syntax: SPEED: 6,
  • Invalid Syntax: SPEED_DROP_COEFFICIENT: 3
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Account Type: * Default dimensions.
  • Invalid Account Type: * @enum {string}
  • Invalid Syntax: */
  • Invalid Syntax: WIDTH: DEFAULT_WIDTH,
  • Invalid Syntax: HEIGHT: 150
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Account Type: * CSS class names.
  • Invalid Account Type: * @enum {string}
  • Invalid Syntax: */
  • Invalid Syntax: CANVAS: 'runner-canvas',
  • Invalid Syntax: CONTAINER: 'runner-container',
  • Invalid Syntax: CRASHED: 'crashed',
  • Invalid Syntax: ICON: 'icon-offline',
  • Invalid Syntax: TOUCH_CONTROLLER: 'controller'
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Account Type: * Image source urls.
  • Invalid Account Type: * @enum {array.<object>}
  • Invalid Syntax: */
  • Invalid Syntax: LDPI: [
  • Invalid Account Type: {name: 'CACTUS_LARGE', id: '1x-obstacle-large'},
  • Invalid Account Type: {name: 'CACTUS_SMALL', id: '1x-obstacle-small'},
  • Invalid Account Type: {name: 'CLOUD', id: '1x-cloud'},
  • Invalid Account Type: {name: 'HORIZON', id: '1x-horizon'},
  • Invalid Account Type: {name: 'RESTART', id: '1x-restart'},
  • Invalid Account Type: {name: 'TEXT_SPRITE', id: '1x-text'},
  • Invalid Account Type: {name: 'TREX', id: '1x-trex'}
  • Invalid Syntax: ],
  • Invalid Syntax: HDPI: [
  • Invalid Account Type: {name: 'CACTUS_LARGE', id: '2x-obstacle-large'},
  • Invalid Account Type: {name: 'CACTUS_SMALL', id: '2x-obstacle-small'},
  • Invalid Account Type: {name: 'CLOUD', id: '2x-cloud'},
  • Invalid Account Type: {name: 'HORIZON', id: '2x-horizon'},
  • Invalid Account Type: {name: 'RESTART', id: '2x-restart'},
  • Invalid Account Type: {name: 'TEXT_SPRITE', id: '2x-text'},
  • Invalid Account Type: {name: 'TREX', id: '2x-trex'}
  • Invalid Syntax: ]
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Sound FX. Reference to the ID of the audio tag on interstitial page.
  • Invalid Account Type: * @enum {string}
  • Invalid Syntax: */
  • Invalid Syntax: BUTTON_PRESS: 'offline-sound-press',
  • Invalid Syntax: HIT: 'offline-sound-hit',
  • Invalid Syntax: SCORE: 'offline-sound-reached'
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Account Type: * Key code mapping.
  • Invalid Account Type: * @enum {object}
  • Invalid Syntax: */
  • Invalid Account Type: JUMP: {'38': 1, '32': 1}, // Up, spacebar
  • Invalid Syntax: DUCK: {'40': 1}, // Down
  • Invalid Syntax: RESTART: {'13': 1} // Enter
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Account Type: * Runner event names.
  • Invalid Account Type: * @enum {string}
  • Invalid Syntax: */
  • Invalid Syntax: ANIM_END: 'webkitAnimationEnd',
  • Invalid Syntax: CLICK: 'click',
  • Invalid Syntax: KEYDOWN: 'keydown',
  • Invalid Syntax: KEYUP: 'keyup',
  • Invalid Syntax: MOUSEDOWN: 'mousedown',
  • Invalid Syntax: MOUSEUP: 'mouseup',
  • Invalid Syntax: RESIZE: 'resize',
  • Invalid Syntax: TOUCHEND: 'touchend',
  • Invalid Syntax: TOUCHSTART: 'touchstart',
  • Invalid Syntax: VISIBILITY: 'visibilitychange',
  • Invalid Syntax: BLUR: 'blur',
  • Invalid Syntax: FOCUS: 'focus',
  • Invalid Syntax: LOAD: 'load'
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Setting individual settings for debugging.
  • Invalid Account Type: * @param {string} setting
  • Invalid Account Type: * @param {*} value
  • Invalid Syntax: */
  • Invalid Account Type: updateConfigSetting: function(setting, value) {
  • Invalid Account Type: switch (setting) {
  • Invalid Syntax: case 'GRAVITY':
  • Invalid Syntax: case 'MIN_JUMP_HEIGHT':
  • Invalid Syntax: case 'SPEED_DROP_COEFFICIENT':
  • Invalid Syntax: break;
  • Invalid Syntax: case 'INITIAL_JUMP_VELOCITY':
  • Invalid Syntax: this.tRex.setJumpVelocity(value);
  • Invalid Syntax: break;
  • Invalid Syntax: case 'SPEED':
  • Invalid Syntax: this.setSpeed(value);
  • Invalid Syntax: break;
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Load and cache the image assets from the page.
  • Invalid Syntax: */
  • Invalid Account Type: loadImages: function() {
  • Invalid Syntax: Runner.imageSources.LDPI;
  • Invalid Syntax: }
  • Invalid Syntax: this.init();
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Load and decode base 64 encoded sounds.
  • Invalid Syntax: */
  • Invalid Account Type: loadSounds: function() {
  • Invalid Account Type: if (!IS_IOS) {
  • Invalid Syntax: document.getElementById(this.config.RESOURCE_TEMPLATE_ID).content;
  • Invalid Syntax: for (var sound in Runner.sounds) {
  • Invalid Syntax: resourceTemplate.getElementById(Runner.sounds[sound]).src;
  • Invalid Syntax: // Async, so no guarantee of order in array.
  • Invalid Account Type: this.audioContext.decodeAudioData(buffer, function(index, audioData) {
  • Invalid Syntax: }.bind(this, sound));
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Sets the game speed. Adjust the speed accordingly if on a smaller screen.
  • Invalid Account Type: * @param {number} opt_speed
  • Invalid Syntax: */
  • Invalid Account Type: setSpeed: function(opt_speed) {
  • Invalid Syntax: // Reduce the speed on smaller mobile screens.
  • Invalid Syntax: if (this.dimensions.WIDTH < DEFAULT_WIDTH) {
  • Invalid Syntax: this.config.MOBILE_SPEED_COEFFICIENT;
  • Invalid Syntax: } else if (opt_speed) {
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Account Type: * Game initialiser.
  • Invalid Syntax: */
  • Invalid Account Type: init: function() {
  • Invalid Syntax: // Hide the static icon.
  • Invalid Syntax: this.adjustDimensions();
  • Invalid Syntax: this.setSpeed();
  • Invalid Account Type: // Player canvas container.
  • Invalid Syntax: this.dimensions.HEIGHT, Runner.classes.PLAYER);
  • Invalid Syntax: this.canvasCtx.fill();
  • Invalid Syntax: Runner.updateCanvasScaling(this.canvas);
  • Invalid Syntax: // Horizon contains clouds, obstacles and the ground.
  • Invalid Syntax: this.config.GAP_COEFFICIENT);
  • Invalid Account Type: // Distance meter
  • Invalid Syntax: this.images.TEXT_SPRITE, this.dimensions.WIDTH);
  • Invalid Account Type: // Draw t-rex
  • Invalid Syntax: this.outerContainerEl.appendChild(this.containerEl);
  • Invalid Account Type: if (IS_MOBILE) {
  • Invalid Syntax: this.createTouchController();
  • Invalid Syntax: }
  • Invalid Syntax: this.startListening();
  • Invalid Syntax: this.update();
  • Invalid Syntax: window.addEventListener(Runner.events.RESIZE,
  • Invalid Syntax: this.debounceResize.bind(this));
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Create the touch controller. A div that covers whole screen.
  • Invalid Syntax: */
  • Invalid Account Type: createTouchController: function() {
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Debounce the resize event.
  • Invalid Syntax: */
  • Invalid Account Type: debounceResize: function() {
  • Invalid Account Type: if (!this.resizeTimerId_) {
  • Invalid Syntax: setInterval(this.adjustDimensions.bind(this), 250);
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Adjust game space dimensions on resize.
  • Invalid Syntax: */
  • Invalid Account Type: adjustDimensions: function() {
  • Invalid Syntax: clearInterval(this.resizeTimerId_);
  • Invalid Account Type: boxStyles.paddingLeft.length - 2));
  • Invalid Syntax: // Redraw the elements back onto the canvas.
  • Invalid Account Type: if (this.canvas) {
  • Invalid Syntax: Runner.updateCanvasScaling(this.canvas);
  • Invalid Syntax: this.distanceMeter.calcXPos(this.dimensions.WIDTH);
  • Invalid Syntax: this.clearCanvas();
  • Invalid Account Type: this.horizon.update(0, 0, true);
  • Invalid Syntax: this.tRex.update(0);
  • Invalid Syntax: // Outer container and distance meter.
  • Invalid Syntax: if (this.activated || this.crashed) {
  • Invalid Syntax: this.distanceMeter.update(0, Math.ceil(this.distanceRan));
  • Invalid Syntax: this.stop();
  • Invalid Account Type: } else {
  • Invalid Syntax: this.tRex.draw(0, 0);
  • Invalid Syntax: }
  • Invalid Account Type: // Game over panel.
  • Invalid Syntax: if (this.crashed && this.gameOverPanel) {
  • Invalid Syntax: this.gameOverPanel.updateDimensions(this.dimensions.WIDTH);
  • Invalid Syntax: this.gameOverPanel.draw();
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Play the game intro.
  • Invalid Syntax: * Canvas container width expands out to the full width.
  • Invalid Syntax: */
  • Invalid Account Type: playIntro: function() {
  • Invalid Syntax: if (!this.started && !this.crashed) {
  • Invalid Account Type: // CSS animation definition.
  • Invalid Syntax: 'from { width:' + Trex.config.WIDTH + 'px }' +
  • Invalid Syntax: 'to { width: ' + this.dimensions.WIDTH + 'px }' +
  • Invalid Syntax: '}';
  • Invalid Syntax: document.styleSheets[0].insertRule(keyframes, 0);
  • Invalid Syntax: this.containerEl.addEventListener(Runner.events.ANIM_END,
  • Invalid Syntax: this.startGame.bind(this));
  • Invalid Account Type: if (this.touchController) {
  • Invalid Syntax: this.outerContainerEl.appendChild(this.touchController);
  • Invalid Syntax: }
  • Invalid Syntax: } else if (this.crashed) {
  • Invalid Syntax: this.restart();
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Update the game status to started.
  • Invalid Syntax: */
  • Invalid Account Type: startGame: function() {
  • Invalid Syntax: this.playCount++;
  • Invalid Syntax: // Handle tabbing off the page. Pause the current game.
  • Invalid Syntax: window.addEventListener(Runner.events.VISIBILITY,
  • Invalid Syntax: this.onVisibilityChange.bind(this));
  • Invalid Syntax: window.addEventListener(Runner.events.BLUR,
  • Invalid Syntax: this.onVisibilityChange.bind(this));
  • Invalid Syntax: window.addEventListener(Runner.events.FOCUS,
  • Invalid Syntax: this.onVisibilityChange.bind(this));
  • Invalid Syntax: },
  • Invalid Account Type: clearCanvas: function() {
  • Invalid Account Type: this.canvasCtx.clearRect(0, 0, this.dimensions.WIDTH,
  • Invalid Syntax: this.dimensions.HEIGHT);
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Update the game frame.
  • Invalid Syntax: */
  • Invalid Account Type: update: function() {
  • Invalid Account Type: if (this.activated) {
  • Invalid Syntax: this.clearCanvas();
  • Invalid Account Type: if (this.tRex.jumping) {
  • Invalid Syntax: this.tRex.updateJump(deltaTime, this.config);
  • Invalid Syntax: }
  • Invalid Syntax: // First jump triggers the intro.
  • Invalid Syntax: this.playIntro();
  • Invalid Syntax: }
  • Invalid Syntax: // The horizon doesn't move until the intro is over.
  • Invalid Account Type: if (this.playingIntro) {
  • Invalid Account Type: this.horizon.update(0, this.currentSpeed, hasObstacles);
  • Invalid Account Type: } else {
  • Invalid Account Type: this.horizon.update(deltaTime, this.currentSpeed, hasObstacles);
  • Invalid Syntax: }
  • Invalid Account Type: // Check for collisions.
  • Invalid Syntax: checkForCollision(this.horizon.obstacles[0], this.tRex);
  • Invalid Account Type: if (!collision) {
  • Invalid Syntax: if (this.currentSpeed < this.config.MAX_SPEED) {
  • Invalid Syntax: }
  • Invalid Account Type: } else {
  • Invalid Syntax: this.gameOver();
  • Invalid Syntax: }
  • Invalid Account Type: if (this.distanceMeter.getActualDistance(this.distanceRan) >
  • Invalid Syntax: this.distanceMeter.maxScore) {
  • Invalid Syntax: }
  • Invalid Syntax: Math.ceil(this.distanceRan));
  • Invalid Account Type: if (playAcheivementSound) {
  • Invalid Syntax: this.playSound(this.soundFx.SCORE);
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Account Type: if (!this.crashed) {
  • Invalid Syntax: this.tRex.update(deltaTime);
  • Invalid Syntax: this.raq();
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Account Type: * Event handler.
  • Invalid Syntax: */
  • Invalid Account Type: handleEvent: function(e) {
  • Invalid Account Type: return (function(evtType, events) {
  • Invalid Account Type: switch (evtType) {
  • Invalid Syntax: case events.KEYDOWN:
  • Invalid Syntax: case events.TOUCHSTART:
  • Invalid Syntax: case events.MOUSEDOWN:
  • Invalid Syntax: this.onKeyDown(e);
  • Invalid Syntax: break;
  • Invalid Syntax: case events.KEYUP:
  • Invalid Syntax: case events.TOUCHEND:
  • Invalid Syntax: case events.MOUSEUP:
  • Invalid Syntax: this.onKeyUp(e);
  • Invalid Syntax: break;
  • Invalid Syntax: }
  • Invalid Syntax: }.bind(this))(e.type, Runner.events);
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Bind relevant key / mouse / touch listeners.
  • Invalid Syntax: */
  • Invalid Account Type: startListening: function() {
  • Invalid Syntax: // Keys.
  • Invalid Syntax: document.addEventListener(Runner.events.KEYDOWN, this);
  • Invalid Syntax: document.addEventListener(Runner.events.KEYUP, this);
  • Invalid Account Type: if (IS_MOBILE) {
  • Invalid Syntax: // Mobile only touch devices.
  • Invalid Syntax: this.touchController.addEventListener(Runner.events.TOUCHSTART, this);
  • Invalid Syntax: this.touchController.addEventListener(Runner.events.TOUCHEND, this);
  • Invalid Syntax: this.containerEl.addEventListener(Runner.events.TOUCHSTART, this);
  • Invalid Account Type: } else {
  • Invalid Syntax: // Mouse.
  • Invalid Syntax: document.addEventListener(Runner.events.MOUSEDOWN, this);
  • Invalid Syntax: document.addEventListener(Runner.events.MOUSEUP, this);
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Account Type: * Remove all listeners.
  • Invalid Syntax: */
  • Invalid Account Type: stopListening: function() {
  • Invalid Syntax: document.removeEventListener(Runner.events.KEYDOWN, this);
  • Invalid Syntax: document.removeEventListener(Runner.events.KEYUP, this);
  • Invalid Account Type: if (IS_MOBILE) {
  • Invalid Syntax: this.touchController.removeEventListener(Runner.events.TOUCHSTART, this);
  • Invalid Syntax: this.touchController.removeEventListener(Runner.events.TOUCHEND, this);
  • Invalid Syntax: this.containerEl.removeEventListener(Runner.events.TOUCHSTART, this);
  • Invalid Account Type: } else {
  • Invalid Syntax: document.removeEventListener(Runner.events.MOUSEDOWN, this);
  • Invalid Syntax: document.removeEventListener(Runner.events.MOUSEUP, this);
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Account Type: * Process keydown.
  • Invalid Account Type: * @param {Event} e
  • Invalid Syntax: */
  • Invalid Account Type: onKeyDown: function(e) {
  • Invalid Syntax: if (!this.crashed && (Runner.keycodes.JUMP[String(e.keyCode)] ||
  • Invalid Account Type: if (!this.activated) {
  • Invalid Syntax: this.loadSounds();
  • Invalid Syntax: }
  • Invalid Account Type: if (!this.tRex.jumping) {
  • Invalid Syntax: this.playSound(this.soundFx.BUTTON_PRESS);
  • Invalid Syntax: this.tRex.startJump();
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: this.restart();
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: // Speed drop, activated only when jump key is not pressed.
  • Invalid Syntax: if (Runner.keycodes.DUCK[e.keyCode] && this.tRex.jumping) {
  • Invalid Syntax: e.preventDefault();
  • Invalid Syntax: this.tRex.setSpeedDrop();
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Account Type: * Process key up.
  • Invalid Account Type: * @param {Event} e
  • Invalid Syntax: */
  • Invalid Account Type: onKeyUp: function(e) {
  • Invalid Syntax: if (this.isRunning() && isjumpKey) {
  • Invalid Syntax: this.tRex.endJump();
  • Invalid Syntax: } else if (Runner.keycodes.DUCK[keyCode]) {
  • Invalid Syntax: } else if (this.crashed) {
  • Invalid Syntax: // Check that enough time has elapsed before allowing jump key to restart.
  • Invalid Account Type: if (Runner.keycodes.RESTART[keyCode] ||
  • Invalid Syntax: Runner.keycodes.JUMP[keyCode])) {
  • Invalid Syntax: this.restart();
  • Invalid Syntax: }
  • Invalid Syntax: } else if (this.paused && isjumpKey) {
  • Invalid Syntax: this.play();
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Account Type: * RequestAnimationFrame wrapper.
  • Invalid Syntax: */
  • Invalid Account Type: raq: function() {
  • Invalid Account Type: if (!this.drawPending) {
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Whether the game is running.
  • Invalid Account Type: * @return {boolean}
  • Invalid Syntax: */
  • Invalid Account Type: isRunning: function() {
  • Invalid Syntax: return !!this.raqId;
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Account Type: * Game over state.
  • Invalid Syntax: */
  • Invalid Account Type: gameOver: function() {
  • Invalid Syntax: this.playSound(this.soundFx.HIT);
  • Invalid Syntax: vibrate(200);
  • Invalid Syntax: this.stop();
  • Invalid Syntax: this.tRex.update(100, Trex.status.CRASHED);
  • Invalid Account Type: // Game over panel.
  • Invalid Account Type: if (!this.gameOverPanel) {
  • Invalid Account Type: this.images.TEXT_SPRITE, this.images.RESTART,
  • Invalid Syntax: this.dimensions);
  • Invalid Account Type: } else {
  • Invalid Syntax: this.gameOverPanel.draw();
  • Invalid Syntax: }
  • Invalid Syntax: // Update the high score.
  • Invalid Syntax: if (this.distanceRan > this.highestScore) {
  • Invalid Syntax: this.distanceMeter.setHighScore(this.highestScore);
  • Invalid Syntax: }
  • Invalid Syntax: // Reset the time clock.
  • Invalid Syntax: },
  • Invalid Account Type: stop: function() {
  • Invalid Syntax: cancelAnimationFrame(this.raqId);
  • Invalid Syntax: },
  • Invalid Account Type: play: function() {
  • Invalid Account Type: if (!this.crashed) {
  • Invalid Syntax: this.tRex.update(0, Trex.status.RUNNING);
  • Invalid Syntax: this.update();
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Account Type: restart: function() {
  • Invalid Account Type: if (!this.raqId) {
  • Invalid Syntax: this.playCount++;
  • Invalid Syntax: this.setSpeed(this.config.SPEED);
  • Invalid Syntax: this.containerEl.classList.remove(Runner.classes.CRASHED);
  • Invalid Syntax: this.clearCanvas();
  • Invalid Syntax: this.distanceMeter.reset(this.highestScore);
  • Invalid Syntax: this.horizon.reset();
  • Invalid Syntax: this.tRex.reset();
  • Invalid Syntax: this.playSound(this.soundFx.BUTTON_PRESS);
  • Invalid Syntax: this.update();
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Pause the game if the tab is not in focus.
  • Invalid Syntax: */
  • Invalid Account Type: onVisibilityChange: function(e) {
  • Invalid Syntax: this.stop();
  • Invalid Account Type: } else {
  • Invalid Syntax: this.play();
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Account Type: * Play a sound.
  • Invalid Account Type: * @param {SoundBuffer} soundBuffer
  • Invalid Syntax: */
  • Invalid Account Type: playSound: function(soundBuffer) {
  • Invalid Account Type: if (soundBuffer) {
  • Invalid Syntax: sourceNode.connect(this.audioContext.destination);
  • Invalid Syntax: sourceNode.start(0);
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Updates the canvas size taking into
  • Invalid Syntax: * account the backing store pixel ratio and
  • Invalid Syntax: * the device pixel ratio.
  • Invalid Syntax: *
  • Invalid Syntax: * See article by Paul Lewis:
  • Invalid Syntax: * https://www.html5rocks.com/en/tutorials/canvas/hidpi/
  • Invalid Syntax: *
  • Invalid Account Type: * @param {HTMLCanvasElement} canvas
  • Invalid Account Type: * @param {number} opt_width
  • Invalid Account Type: * @param {number} opt_height
  • Invalid Syntax: * @return {boolean} Whether the canvas was scaled.
  • Invalid Syntax: */
  • Invalid Syntax: // Query the various pixel ratios
  • Invalid Syntax: // Upscale the canvas if the two ratios don't match
  • Invalid Syntax: // Scale the context to counter the fact that we've manually scaled
  • Invalid Account Type: // our canvas element.
  • Invalid Syntax: context.scale(ratio, ratio);
  • Invalid Syntax: return true;
  • Invalid Syntax: }
  • Invalid Syntax: return false;
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Account Type: * Get random number.
  • Invalid Account Type: * @param {number} min
  • Invalid Account Type: * @param {number} max
  • Invalid Account Type: * @param {number}
  • Invalid Syntax: */
  • Invalid Account Type: function getRandomNum(min, max) {
  • Invalid Syntax: return Math.floor(Math.random() * (max - min + 1)) + min;
  • Invalid Syntax: }
  • Invalid Syntax: /**
  • Invalid Syntax: * Vibrate on mobile devices.
  • Invalid Syntax: * @param {number} duration Duration of the vibration in milliseconds.
  • Invalid Syntax: */
  • Invalid Account Type: function vibrate(duration) {
  • Invalid Syntax: if (IS_MOBILE && window.navigator.vibrate) {
  • Invalid Syntax: window.navigator.vibrate(duration);
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: /**
  • Invalid Account Type: * Create canvas element.
  • Invalid Syntax: * @param {HTMLElement} container Element to append canvas to.
  • Invalid Account Type: * @param {number} width
  • Invalid Account Type: * @param {number} height
  • Invalid Account Type: * @param {string} opt_classname
  • Invalid Account Type: * @return {HTMLCanvasElement}
  • Invalid Syntax: */
  • Invalid Account Type: function createCanvas(container, width, height, opt_classname) {
  • Invalid Account Type: opt_classname : Runner.classes.CANVAS;
  • Invalid Syntax: container.appendChild(canvas);
  • Invalid Syntax: return canvas;
  • Invalid Syntax: }
  • Invalid Syntax: /**
  • Invalid Syntax: * Decodes the base 64 audio to ArrayBuffer used by Web Audio.
  • Invalid Account Type: * @param {string} base64String
  • Invalid Syntax: */
  • Invalid Account Type: function decodeBase64ToArrayBuffer(base64String) {
  • Invalid Syntax: }
  • Invalid Syntax: return bytes.buffer;
  • Invalid Syntax: }
  • Invalid Syntax: /**
  • Invalid Syntax: * Return the current timestamp.
  • Invalid Account Type: * @return {number}
  • Invalid Syntax: */
  • Invalid Account Type: function getTimeStamp() {
  • Invalid Syntax: return IS_IOS ? new Date().getTime() : performance.now();
  • Invalid Syntax: }
  • Invalid Syntax: //******************************************************************************
  • Invalid Syntax: /**
  • Invalid Account Type: * Game over panel.
  • Invalid Account Type: * @param {!HTMLCanvasElement} canvas
  • Invalid Account Type: * @param {!HTMLImage} textSprite
  • Invalid Account Type: * @param {!HTMLImage} restartImg
  • Invalid Syntax: * @param {!Object} dimensions Canvas dimensions.
  • Invalid Syntax: * @constructor
  • Invalid Syntax: */
  • Invalid Account Type: function GameOverPanel(canvas, textSprite, restartImg, dimensions) {
  • Invalid Syntax: this.draw();
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Dimensions used in the panel.
  • Invalid Account Type: * @enum {number}
  • Invalid Syntax: */
  • Invalid Syntax: TEXT_X: 0,
  • Invalid Syntax: TEXT_Y: 13,
  • Invalid Syntax: TEXT_WIDTH: 191,
  • Invalid Syntax: TEXT_HEIGHT: 11,
  • Invalid Syntax: RESTART_WIDTH: 36,
  • Invalid Syntax: RESTART_HEIGHT: 32
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Update the panel dimensions.
  • Invalid Syntax: * @param {number} width New canvas width.
  • Invalid Syntax: * @param {number} opt_height Optional new canvas height.
  • Invalid Syntax: */
  • Invalid Account Type: updateDimensions: function(width, opt_height) {
  • Invalid Account Type: if (opt_height) {
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Account Type: * Draw the panel.
  • Invalid Syntax: */
  • Invalid Account Type: draw: function() {
  • Invalid Account Type: // Game over text.
  • Invalid Account Type: if (IS_HIDPI) {
  • Invalid Syntax: }
  • Invalid Syntax: // Game over text from sprite.
  • Invalid Syntax: this.canvasCtx.drawImage(this.textSprite,
  • Invalid Syntax: textSourceX, textSourceY, textSourceWidth, textSourceHeight,
  • Invalid Account Type: textTargetX, textTargetY, textTargetWidth, textTargetHeight);
  • Invalid Account Type: // Restart button.
  • Invalid Account Type: this.canvasCtx.drawImage(this.restartImg, 0, 0,
  • Invalid Account Type: restartSourceWidth, restartSourceHeight,
  • Invalid Account Type: restartTargetX, restartTargetY, dimensions.RESTART_WIDTH,
  • Invalid Syntax: dimensions.RESTART_HEIGHT);
  • Invalid Syntax: }
  • Invalid Syntax: };
  • Invalid Syntax: //******************************************************************************
  • Invalid Syntax: /**
  • Invalid Syntax: * Check for a collision.
  • Invalid Account Type: * @param {!Obstacle} obstacle
  • Invalid Syntax: * @param {!Trex} tRex T-rex object.
  • Invalid Syntax: * @param {HTMLCanvasContext} opt_canvasCtx Optional canvas context for drawing
  • Invalid Account Type: * collision boxes.
  • Invalid Account Type: * @return {Array.<CollisionBox>}
  • Invalid Syntax: */
  • Invalid Account Type: function checkForCollision(obstacle, tRex, opt_canvasCtx) {
  • Invalid Syntax: // Adjustments are made to the bounding box as there is a 1 pixel white
  • Invalid Syntax: // border around the t-rex and obstacles.
  • Invalid Account Type: tRex.xPos + 1,
  • Invalid Account Type: tRex.yPos + 1,
  • Invalid Account Type: tRex.config.WIDTH - 2,
  • Invalid Account Type: tRex.config.HEIGHT - 2);
  • Invalid Account Type: obstacle.xPos + 1,
  • Invalid Account Type: obstacle.yPos + 1,
  • Invalid Syntax: obstacle.typeConfig.width * obstacle.size - 2,
  • Invalid Account Type: obstacle.typeConfig.height - 2);
  • Invalid Account Type: // Debug outer box
  • Invalid Account Type: if (opt_canvasCtx) {
  • Invalid Account Type: drawCollisionBoxes(opt_canvasCtx, tRexBox, obstacleBox);
  • Invalid Syntax: }
  • Invalid Syntax: // Simple outer bounds check.
  • Invalid Account Type: if (boxCompare(tRexBox, obstacleBox)) {
  • Invalid Syntax: // Detailed axis aligned box check.
  • Invalid Syntax: // Adjust the box to actual positions.
  • Invalid Syntax: createAdjustedCollisionBox(tRexCollisionBoxes[t], tRexBox);
  • Invalid Syntax: createAdjustedCollisionBox(collisionBoxes[i], obstacleBox);
  • Invalid Syntax: // Draw boxes for debug.
  • Invalid Account Type: if (opt_canvasCtx) {
  • Invalid Account Type: drawCollisionBoxes(opt_canvasCtx, adjTrexBox, adjObstacleBox);
  • Invalid Syntax: }
  • Invalid Account Type: if (crashed) {
  • Invalid Account Type: return [adjTrexBox, adjObstacleBox];
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: return false;
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Adjust the collision box.
  • Invalid Syntax: * @param {!CollisionBox} box The original box.
  • Invalid Syntax: * @param {!CollisionBox} adjustment Adjustment box.
  • Invalid Syntax: * @return {CollisionBox} The adjusted collision box object.
  • Invalid Syntax: */
  • Invalid Account Type: function createAdjustedCollisionBox(box, adjustment) {
  • Invalid Account Type: return new CollisionBox(
  • Invalid Account Type: box.x + adjustment.x,
  • Invalid Account Type: box.y + adjustment.y,
  • Invalid Syntax: box.width,
  • Invalid Syntax: box.height);
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Draw the collision boxes for debug.
  • Invalid Syntax: */
  • Invalid Account Type: function drawCollisionBoxes(canvasCtx, tRexBox, obstacleBox) {
  • Invalid Syntax: canvasCtx.save();
  • Invalid Account Type: canvasCtx.strokeRect(tRexBox.x, tRexBox.y,
  • Invalid Syntax: tRexBox.width, tRexBox.height);
  • Invalid Account Type: canvasCtx.strokeRect(obstacleBox.x, obstacleBox.y,
  • Invalid Syntax: obstacleBox.width, obstacleBox.height);
  • Invalid Syntax: canvasCtx.restore();
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Compare two collision boxes for a collision.
  • Invalid Account Type: * @param {CollisionBox} tRexBox
  • Invalid Account Type: * @param {CollisionBox} obstacleBox
  • Invalid Syntax: * @return {boolean} Whether the boxes intersected.
  • Invalid Syntax: */
  • Invalid Account Type: function boxCompare(tRexBox, obstacleBox) {
  • Invalid Syntax: // Axis-Aligned Bounding Box method.
  • Invalid Syntax: if (tRexBox.x < obstacleBoxX + obstacleBox.width &&
  • Invalid Syntax: tRexBox.x + tRexBox.width > obstacleBoxX &&
  • Invalid Syntax: tRexBox.y < obstacleBox.y + obstacleBox.height &&
  • Invalid Syntax: tRexBox.height + tRexBox.y > obstacleBox.y) {
  • Invalid Syntax: }
  • Invalid Syntax: return crashed;
  • Invalid Syntax: };
  • Invalid Syntax: //******************************************************************************
  • Invalid Syntax: /**
  • Invalid Account Type: * Collision box object.
  • Invalid Syntax: * @param {number} x X position.
  • Invalid Syntax: * @param {number} y Y Position.
  • Invalid Syntax: * @param {number} w Width.
  • Invalid Syntax: * @param {number} h Height.
  • Invalid Syntax: */
  • Invalid Account Type: function CollisionBox(x, y, w, h) {
  • Invalid Syntax: };
  • Invalid Syntax: //******************************************************************************
  • Invalid Syntax: /**
  • Invalid Syntax: * Obstacle.
  • Invalid Account Type: * @param {HTMLCanvasCtx} canvasCtx
  • Invalid Account Type: * @param {Obstacle.type} type
  • Invalid Syntax: * @param {image} obstacleImg Image sprite.
  • Invalid Account Type: * @param {Object} dimensions
  • Invalid Syntax: * @param {number} gapCoefficient Mutipler in determining the gap.
  • Invalid Account Type: * @param {number} speed
  • Invalid Syntax: */
  • Invalid Syntax: function Obstacle(canvasCtx, type, obstacleImg, dimensions,
  • Invalid Account Type: gapCoefficient, speed) {
  • Invalid Syntax: this.init(speed);
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Coefficient for calculating the maximum gap.
  • Invalid Syntax: * @const
  • Invalid Syntax: */
  • Invalid Syntax: /**
  • Invalid Syntax: * Maximum obstacle grouping count.
  • Invalid Syntax: * @const
  • Invalid Syntax: */
  • Invalid Syntax: /**
  • Invalid Syntax: * Initialise the DOM for the obstacle.
  • Invalid Account Type: * @param {number} speed
  • Invalid Syntax: */
  • Invalid Account Type: init: function(speed) {
  • Invalid Syntax: this.cloneCollisionBoxes();
  • Invalid Syntax: // Only allow sizing if we're at the right speed.
  • Invalid Syntax: if (this.size > 1 && this.typeConfig.multipleSpeed > speed) {
  • Invalid Syntax: }
  • Invalid Syntax: this.draw();
  • Invalid Syntax: // Make collision box adjustments,
  • Invalid Syntax: // Central box is adjusted to the size as one box.
  • Invalid Account Type: // ____ ______ ________
  • Invalid Syntax: // _| |-| _| |-| _| |-|
  • Invalid Syntax: // | |<->| | | |<--->| | | |<----->| |
  • Invalid Syntax: // | | 1 | | | | 2 | | | | 3 | |
  • Invalid Account Type: // |_|___|_| |_|_____|_| |_|_______|_|
  • Invalid Syntax: //
  • Invalid Syntax: if (this.size > 1) {
  • Invalid Syntax: this.collisionBoxes[2].width;
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Draw and crop based on size.
  • Invalid Syntax: */
  • Invalid Account Type: draw: function() {
  • Invalid Account Type: if (IS_HIDPI) {
  • Invalid Syntax: }
  • Invalid Syntax: // Sprite
  • Invalid Syntax: this.canvasCtx.drawImage(this.image,
  • Invalid Account Type: sourceX, 0,
  • Invalid Account Type: sourceWidth * this.size, sourceHeight,
  • Invalid Account Type: this.xPos, this.yPos,
  • Invalid Account Type: this.typeConfig.width * this.size, this.typeConfig.height);
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Account Type: * Obstacle frame update.
  • Invalid Account Type: * @param {number} deltaTime
  • Invalid Account Type: * @param {number} speed
  • Invalid Syntax: */
  • Invalid Account Type: update: function(deltaTime, speed) {
  • Invalid Account Type: if (!this.remove) {
  • Invalid Syntax: this.draw();
  • Invalid Account Type: if (!this.isVisible()) {
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Calculate a random gap size.
  • Invalid Syntax: * - Minimum gap gets wider as speed increses
  • Invalid Account Type: * @param {number} gapCoefficient
  • Invalid Account Type: * @param {number} speed
  • Invalid Syntax: * @return {number} The gap size.
  • Invalid Syntax: */
  • Invalid Account Type: getGap: function(gapCoefficient, speed) {
  • Invalid Account Type: this.typeConfig.minGap * gapCoefficient);
  • Invalid Account Type: return getRandomNum(minGap, maxGap);
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Check if obstacle is visible.
  • Invalid Syntax: * @return {boolean} Whether the obstacle is in the game area.
  • Invalid Syntax: */
  • Invalid Account Type: isVisible: function() {
  • Invalid Syntax: return this.xPos + this.width > 0;
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Make a copy of the collision boxes, since these will change based on
  • Invalid Syntax: * obstacle type and size.
  • Invalid Syntax: */
  • Invalid Account Type: cloneCollisionBoxes: function() {
  • Invalid Account Type: collisionBoxes[i].y, collisionBoxes[i].width,
  • Invalid Syntax: collisionBoxes[i].height);
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Account Type: * Obstacle definitions.
  • Invalid Syntax: * minGap: minimum pixel space betweeen obstacles.
  • Invalid Syntax: * multipleSpeed: Speed at which multiples are allowed.
  • Invalid Syntax: */
  • Invalid Syntax: {
  • Invalid Syntax: type: 'CACTUS_SMALL',
  • Invalid Syntax: className: ' cactus cactus-small ',
  • Invalid Syntax: width: 17,
  • Invalid Syntax: height: 35,
  • Invalid Syntax: yPos: 105,
  • Invalid Syntax: multipleSpeed: 3,
  • Invalid Syntax: minGap: 120,
  • Invalid Syntax: collisionBoxes: [
  • Invalid Syntax: new CollisionBox(0, 7, 5, 27),
  • Invalid Syntax: new CollisionBox(4, 0, 6, 34),
  • Invalid Account Type: new CollisionBox(10, 4, 7, 14)
  • Invalid Syntax: ]
  • Invalid Syntax: },
  • Invalid Syntax: {
  • Invalid Syntax: type: 'CACTUS_LARGE',
  • Invalid Syntax: className: ' cactus cactus-large ',
  • Invalid Syntax: width: 25,
  • Invalid Syntax: height: 50,
  • Invalid Syntax: yPos: 90,
  • Invalid Syntax: multipleSpeed: 6,
  • Invalid Syntax: minGap: 120,
  • Invalid Syntax: collisionBoxes: [
  • Invalid Syntax: new CollisionBox(0, 12, 7, 38),
  • Invalid Syntax: new CollisionBox(8, 0, 7, 49),
  • Invalid Account Type: new CollisionBox(13, 10, 10, 38)
  • Invalid Syntax: ]
  • Invalid Syntax: }
  • Invalid Syntax: ];
  • Invalid Syntax: //******************************************************************************
  • Invalid Syntax: /**
  • Invalid Account Type: * T-rex game character.
  • Invalid Account Type: * @param {HTMLCanvas} canvas
  • Invalid Syntax: * @param {HTMLImage} image Character image.
  • Invalid Syntax: * @constructor
  • Invalid Syntax: */
  • Invalid Account Type: function Trex(canvas, image) {
  • Invalid Syntax: // Position when on the ground.
  • Invalid Account Type: // Current status.
  • Invalid Syntax: this.init();
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Account Type: * T-rex player config.
  • Invalid Account Type: * @enum {number}
  • Invalid Syntax: */
  • Invalid Syntax: DROP_VELOCITY: -5,
  • Invalid Syntax: GRAVITY: 0.6,
  • Invalid Syntax: HEIGHT: 47,
  • Invalid Syntax: INIITAL_JUMP_VELOCITY: -10,
  • Invalid Syntax: INTRO_DURATION: 1500,
  • Invalid Syntax: MAX_JUMP_HEIGHT: 30,
  • Invalid Syntax: MIN_JUMP_HEIGHT: 30,
  • Invalid Syntax: SPEED_DROP_COEFFICIENT: 3,
  • Invalid Syntax: SPRITE_WIDTH: 262,
  • Invalid Syntax: START_X_POS: 50,
  • Invalid Syntax: WIDTH: 44
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Used in collision detection.
  • Invalid Account Type: * @type {Array.<CollisionBox>}
  • Invalid Syntax: */
  • Invalid Syntax: new CollisionBox(1, -1, 30, 26),
  • Invalid Syntax: new CollisionBox(32, 0, 8, 16),
  • Invalid Syntax: new CollisionBox(10, 35, 14, 8),
  • Invalid Syntax: new CollisionBox(1, 24, 29, 5),
  • Invalid Syntax: new CollisionBox(5, 30, 21, 4),
  • Invalid Account Type: new CollisionBox(9, 34, 15, 4)
  • Invalid Syntax: ];
  • Invalid Syntax: /**
  • Invalid Account Type: * Animation states.
  • Invalid Account Type: * @enum {string}
  • Invalid Syntax: */
  • Invalid Syntax: CRASHED: 'CRASHED',
  • Invalid Syntax: JUMPING: 'JUMPING',
  • Invalid Syntax: RUNNING: 'RUNNING',
  • Invalid Syntax: WAITING: 'WAITING'
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Account Type: * Blinking coefficient.
  • Invalid Syntax: * @const
  • Invalid Syntax: */
  • Invalid Syntax: /**
  • Invalid Syntax: * Animation config for different states.
  • Invalid Account Type: * @enum {object}
  • Invalid Syntax: */
  • Invalid Syntax: WAITING: {
  • Invalid Account Type: frames: [44, 0],
  • Invalid Account Type: msPerFrame: 1000 / 3
  • Invalid Syntax: },
  • Invalid Syntax: RUNNING: {
  • Invalid Account Type: frames: [88, 132],
  • Invalid Account Type: msPerFrame: 1000 / 12
  • Invalid Syntax: },
  • Invalid Syntax: CRASHED: {
  • Invalid Syntax: frames: [220],
  • Invalid Account Type: msPerFrame: 1000 / 60
  • Invalid Syntax: },
  • Invalid Syntax: JUMPING: {
  • Invalid Syntax: frames: [0],
  • Invalid Account Type: msPerFrame: 1000 / 60
  • Invalid Syntax: }
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Account Type: * T-rex player initaliser.
  • Invalid Syntax: * Sets the t-rex to blink at random intervals.
  • Invalid Syntax: */
  • Invalid Account Type: init: function() {
  • Invalid Syntax: Runner.config.BOTTOM_PAD;
  • Invalid Syntax: this.draw(0, 0);
  • Invalid Syntax: this.update(0, Trex.status.WAITING);
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Setter for the jump velocity.
  • Invalid Syntax: * The approriate drop velocity is also set.
  • Invalid Syntax: */
  • Invalid Account Type: setJumpVelocity: function(setting) {
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Set the animation status.
  • Invalid Account Type: * @param {!number} deltaTime
  • Invalid Syntax: * @param {Trex.status} status Optional status to switch to.
  • Invalid Syntax: */
  • Invalid Account Type: update: function(deltaTime, opt_status) {
  • Invalid Account Type: // Update the status.
  • Invalid Account Type: if (opt_status) {
  • Invalid Syntax: this.setBlinkDelay();
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: // Game intro animation, T-rex moves in from the left.
  • Invalid Syntax: if (this.playingIntro && this.xPos < this.config.START_X_POS) {
  • Invalid Account Type: this.config.INTRO_DURATION) * deltaTime);
  • Invalid Syntax: }
  • Invalid Syntax: this.blink(getTimeStamp());
  • Invalid Account Type: } else {
  • Invalid Syntax: this.draw(this.currentAnimFrames[this.currentFrame], 0);
  • Invalid Syntax: }
  • Invalid Syntax: // Update the frame position.
  • Invalid Syntax: this.currentAnimFrames.length - 1 ? 0 : this.currentFrame + 1;
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Draw the t-rex to a particular position.
  • Invalid Account Type: * @param {number} x
  • Invalid Account Type: * @param {number} y
  • Invalid Syntax: */
  • Invalid Account Type: draw: function(x, y) {
  • Invalid Account Type: if (IS_HIDPI) {
  • Invalid Syntax: }
  • Invalid Account Type: this.canvasCtx.drawImage(this.image, sourceX, sourceY,
  • Invalid Account Type: sourceWidth, sourceHeight,
  • Invalid Account Type: this.xPos, this.yPos,
  • Invalid Syntax: this.config.WIDTH, this.config.HEIGHT);
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Sets a random time for the blink to happen.
  • Invalid Syntax: */
  • Invalid Account Type: setBlinkDelay: function() {
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Make t-rex blink at random intervals.
  • Invalid Syntax: * @param {number} time Current time in milliseconds.
  • Invalid Syntax: */
  • Invalid Account Type: blink: function(time) {
  • Invalid Syntax: this.draw(this.currentAnimFrames[this.currentFrame], 0);
  • Invalid Syntax: // Set new random delay to blink.
  • Invalid Syntax: this.setBlinkDelay();
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Account Type: * Initialise a jump.
  • Invalid Syntax: */
  • Invalid Account Type: startJump: function() {
  • Invalid Account Type: if (!this.jumping) {
  • Invalid Syntax: this.update(0, Trex.status.JUMPING);
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Jump is complete, falling down.
  • Invalid Syntax: */
  • Invalid Account Type: endJump: function() {
  • Invalid Account Type: if (this.reachedMinHeight &&
  • Invalid Account Type: this.jumpVelocity < this.config.DROP_VELOCITY) {
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Update frame for a jump.
  • Invalid Account Type: * @param {number} deltaTime
  • Invalid Syntax: */
  • Invalid Account Type: updateJump: function(deltaTime) {
  • Invalid Syntax: // Speed drop makes Trex fall faster.
  • Invalid Account Type: if (this.speedDrop) {
  • Invalid Account Type: this.config.SPEED_DROP_COEFFICIENT * framesElapsed);
  • Invalid Account Type: } else {
  • Invalid Syntax: }
  • Invalid Syntax: // Minimum height has been reached.
  • Invalid Syntax: if (this.yPos < this.minJumpHeight || this.speedDrop) {
  • Invalid Syntax: }
  • Invalid Account Type: // Reached max height
  • Invalid Syntax: if (this.yPos < this.config.MAX_JUMP_HEIGHT || this.speedDrop) {
  • Invalid Syntax: this.endJump();
  • Invalid Syntax: }
  • Invalid Syntax: // Back down at ground level. Jump completed.
  • Invalid Syntax: if (this.yPos > this.groundYPos) {
  • Invalid Syntax: this.reset();
  • Invalid Syntax: this.jumpCount++;
  • Invalid Syntax: }
  • Invalid Syntax: this.update(deltaTime);
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Set the speed drop. Immediately cancels the current jump.
  • Invalid Syntax: */
  • Invalid Account Type: setSpeedDrop: function() {
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Reset the t-rex to running at start of game.
  • Invalid Syntax: */
  • Invalid Account Type: reset: function() {
  • Invalid Syntax: this.update(0, Trex.status.RUNNING);
  • Invalid Syntax: }
  • Invalid Syntax: };
  • Invalid Syntax: //******************************************************************************
  • Invalid Syntax: /**
  • Invalid Syntax: * Handles displaying the distance meter.
  • Invalid Account Type: * @param {!HTMLCanvasElement} canvas
  • Invalid Syntax: * @param {!HTMLImage} spriteSheet Image sprite.
  • Invalid Account Type: * @param {number} canvasWidth
  • Invalid Syntax: * @constructor
  • Invalid Syntax: */
  • Invalid Account Type: function DistanceMeter(canvas, spriteSheet, canvasWidth) {
  • Invalid Syntax: this.init(canvasWidth);
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Account Type: * @enum {number}
  • Invalid Syntax: */
  • Invalid Syntax: WIDTH: 10,
  • Invalid Syntax: HEIGHT: 13,
  • Invalid Syntax: DEST_WIDTH: 11
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Y positioning of the digits in the sprite sheet.
  • Invalid Syntax: * X position is always 0.
  • Invalid Account Type: * @type {array.<number>}
  • Invalid Syntax: */
  • Invalid Syntax: /**
  • Invalid Account Type: * Distance meter config.
  • Invalid Account Type: * @enum {number}
  • Invalid Syntax: */
  • Invalid Account Type: // Number of digits.
  • Invalid Syntax: MAX_DISTANCE_UNITS: 5,
  • Invalid Syntax: // Distance that causes achievement animation.
  • Invalid Syntax: ACHIEVEMENT_DISTANCE: 100,
  • Invalid Syntax: // Used for conversion from pixel distance to a scaled unit.
  • Invalid Syntax: COEFFICIENT: 0.025,
  • Invalid Syntax: // Flash duration in milliseconds.
  • Invalid Account Type: FLASH_DURATION: 1000 / 4,
  • Invalid Syntax: // Flash iterations for achievement animation.
  • Invalid Syntax: FLASH_ITERATIONS: 3
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Initialise the distance meter to '00000'.
  • Invalid Syntax: * @param {number} width Canvas width in px.
  • Invalid Syntax: */
  • Invalid Account Type: init: function(width) {
  • Invalid Syntax: this.calcXPos(width);
  • Invalid Syntax: this.draw(i, 0);
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Calculate the xPos in the canvas.
  • Invalid Account Type: * @param {number} canvasWidth
  • Invalid Syntax: */
  • Invalid Account Type: calcXPos: function(canvasWidth) {
  • Invalid Account Type: (this.config.MAX_DISTANCE_UNITS + 1));
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Draw a digit to canvas.
  • Invalid Syntax: * @param {number} digitPos Position of the digit.
  • Invalid Syntax: * @param {number} value Digit value 0-9.
  • Invalid Syntax: * @param {boolean} opt_highScore Whether drawing the high score.
  • Invalid Syntax: */
  • Invalid Account Type: draw: function(digitPos, value, opt_highScore) {
  • Invalid Syntax: // For high DPI we 2x source values.
  • Invalid Account Type: if (IS_HIDPI) {
  • Invalid Syntax: }
  • Invalid Syntax: this.canvasCtx.save();
  • Invalid Account Type: if (opt_highScore) {
  • Invalid Syntax: // Left of the current score.
  • Invalid Syntax: DistanceMeter.dimensions.WIDTH;
  • Invalid Syntax: this.canvasCtx.translate(highScoreX, this.y);
  • Invalid Account Type: } else {
  • Invalid Syntax: this.canvasCtx.translate(this.x, this.y);
  • Invalid Syntax: }
  • Invalid Account Type: this.canvasCtx.drawImage(this.image, sourceX, 0,
  • Invalid Account Type: sourceWidth, sourceHeight,
  • Invalid Account Type: targetX, targetY,
  • Invalid Syntax: targetWidth, targetHeight
  • Invalid Syntax: );
  • Invalid Syntax: this.canvasCtx.restore();
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Covert pixel distance to a 'real' distance.
  • Invalid Syntax: * @param {number} distance Pixel distance ran.
  • Invalid Syntax: * @return {number} The 'real' distance ran.
  • Invalid Syntax: */
  • Invalid Account Type: getActualDistance: function(distance) {
  • Invalid Account Type: return distance ?
  • Invalid Syntax: Math.round(distance * this.config.COEFFICIENT) : 0;
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Update the distance meter.
  • Invalid Account Type: * @param {number} deltaTime
  • Invalid Account Type: * @param {number} distance
  • Invalid Syntax: * @return {boolean} Whether the acheivement sound fx should be played.
  • Invalid Syntax: */
  • Invalid Account Type: update: function(deltaTime, distance) {
  • Invalid Account Type: if (!this.acheivement) {
  • Invalid Syntax: if (distance > 0) {
  • Invalid Account Type: // Acheivement unlocked
  • Invalid Syntax: // Flash score and play sound.
  • Invalid Syntax: }
  • Invalid Syntax: // Create a string representation of the distance with leading 0.
  • Invalid Syntax: distance).substr(-this.config.MAX_DISTANCE_UNITS);
  • Invalid Account Type: } else {
  • Invalid Syntax: }
  • Invalid Account Type: } else {
  • Invalid Syntax: // Control flashing of the score on reaching acheivement.
  • Invalid Syntax: if (this.flashTimer < this.config.FLASH_DURATION) {
  • Invalid Syntax: } else if (this.flashTimer >
  • Invalid Account Type: this.config.FLASH_DURATION * 2) {
  • Invalid Syntax: this.flashIterations++;
  • Invalid Syntax: }
  • Invalid Account Type: } else {
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: // Draw the digits if not flashing.
  • Invalid Account Type: if (paint) {
  • Invalid Syntax: this.draw(i, parseInt(this.digits[i]));
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: this.drawHighScore();
  • Invalid Syntax: return playSound;
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Draw the high score.
  • Invalid Syntax: */
  • Invalid Account Type: drawHighScore: function() {
  • Invalid Syntax: this.canvasCtx.save();
  • Invalid Account Type: this.draw(i, parseInt(this.highScore[i], 10), true);
  • Invalid Syntax: }
  • Invalid Syntax: this.canvasCtx.restore();
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Set the highscore as a array string.
  • Invalid Syntax: * Position of char in the sprite: H - 10, I - 11.
  • Invalid Syntax: * @param {number} distance Distance ran in pixels.
  • Invalid Syntax: */
  • Invalid Account Type: setHighScore: function(distance) {
  • Invalid Syntax: distance).substr(-this.config.MAX_DISTANCE_UNITS);
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Reset the distance meter back to '00000'.
  • Invalid Syntax: */
  • Invalid Account Type: reset: function() {
  • Invalid Syntax: this.update(0);
  • Invalid Syntax: }
  • Invalid Syntax: };
  • Invalid Syntax: //******************************************************************************
  • Invalid Syntax: /**
  • Invalid Account Type: * Cloud background item.
  • Invalid Syntax: * Similar to an obstacle object but without collision boxes.
  • Invalid Syntax: * @param {HTMLCanvasElement} canvas Canvas element.
  • Invalid Account Type: * @param {Image} cloudImg
  • Invalid Account Type: * @param {number} containerWidth
  • Invalid Syntax: */
  • Invalid Account Type: function Cloud(canvas, cloudImg, containerWidth) {
  • Invalid Syntax: Cloud.config.MAX_CLOUD_GAP);
  • Invalid Syntax: this.init();
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Account Type: * Cloud object config.
  • Invalid Account Type: * @enum {number}
  • Invalid Syntax: */
  • Invalid Syntax: HEIGHT: 14,
  • Invalid Syntax: MAX_CLOUD_GAP: 400,
  • Invalid Syntax: MAX_SKY_LEVEL: 30,
  • Invalid Syntax: MIN_CLOUD_GAP: 100,
  • Invalid Syntax: MIN_SKY_LEVEL: 71,
  • Invalid Syntax: WIDTH: 46
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Initialise the cloud. Sets the Cloud height.
  • Invalid Syntax: */
  • Invalid Account Type: init: function() {
  • Invalid Syntax: Cloud.config.MIN_SKY_LEVEL);
  • Invalid Syntax: this.draw();
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Account Type: * Draw the cloud.
  • Invalid Syntax: */
  • Invalid Account Type: draw: function() {
  • Invalid Syntax: this.canvasCtx.save();
  • Invalid Account Type: if (IS_HIDPI) {
  • Invalid Syntax: }
  • Invalid Account Type: this.canvasCtx.drawImage(this.image, 0, 0,
  • Invalid Account Type: sourceWidth, sourceHeight,
  • Invalid Account Type: this.xPos, this.yPos,
  • Invalid Syntax: Cloud.config.WIDTH, Cloud.config.HEIGHT);
  • Invalid Syntax: this.canvasCtx.restore();
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Update the cloud position.
  • Invalid Account Type: * @param {number} speed
  • Invalid Syntax: */
  • Invalid Account Type: update: function(speed) {
  • Invalid Account Type: if (!this.remove) {
  • Invalid Syntax: this.draw();
  • Invalid Syntax: // Mark as removeable if no longer in the canvas.
  • Invalid Account Type: if (!this.isVisible()) {
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Check if the cloud is visible on the stage.
  • Invalid Account Type: * @return {boolean}
  • Invalid Syntax: */
  • Invalid Account Type: isVisible: function() {
  • Invalid Syntax: return this.xPos + Cloud.config.WIDTH > 0;
  • Invalid Syntax: }
  • Invalid Syntax: };
  • Invalid Syntax: //******************************************************************************
  • Invalid Syntax: /**
  • Invalid Account Type: * Horizon Line.
  • Invalid Syntax: * Consists of two connecting lines. Randomly assigns a flat / bumpy horizon.
  • Invalid Account Type: * @param {HTMLCanvasElement} canvas
  • Invalid Syntax: * @param {HTMLImage} bgImg Horizon line sprite.
  • Invalid Syntax: * @constructor
  • Invalid Syntax: */
  • Invalid Account Type: function HorizonLine(canvas, bgImg) {
  • Invalid Syntax: this.setSourceDimensions();
  • Invalid Syntax: this.draw();
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Account Type: * Horizon line dimensions.
  • Invalid Account Type: * @enum {number}
  • Invalid Syntax: */
  • Invalid Syntax: WIDTH: 600,
  • Invalid Syntax: HEIGHT: 12,
  • Invalid Syntax: YPOS: 127
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Set the source dimensions of the horizon line.
  • Invalid Syntax: */
  • Invalid Account Type: setSourceDimensions: function() {
  • Invalid Syntax: for (var dimension in HorizonLine.dimensions) {
  • Invalid Account Type: if (IS_HIDPI) {
  • Invalid Account Type: HorizonLine.dimensions[dimension] * 2;
  • Invalid Syntax: }
  • Invalid Account Type: } else {
  • Invalid Syntax: HorizonLine.dimensions[dimension];
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Return the crop x position of a type.
  • Invalid Syntax: */
  • Invalid Account Type: getRandomType: function() {
  • Invalid Syntax: return Math.random() > this.bumpThreshold ? this.dimensions.WIDTH : 0;
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Draw the horizon line.
  • Invalid Syntax: */
  • Invalid Account Type: draw: function() {
  • Invalid Account Type: this.canvasCtx.drawImage(this.image, this.sourceXPos[0], 0,
  • Invalid Account Type: this.sourceDimensions.WIDTH, this.sourceDimensions.HEIGHT,
  • Invalid Account Type: this.xPos[0], this.yPos,
  • Invalid Syntax: this.dimensions.WIDTH, this.dimensions.HEIGHT);
  • Invalid Account Type: this.canvasCtx.drawImage(this.image, this.sourceXPos[1], 0,
  • Invalid Account Type: this.sourceDimensions.WIDTH, this.sourceDimensions.HEIGHT,
  • Invalid Account Type: this.xPos[1], this.yPos,
  • Invalid Syntax: this.dimensions.WIDTH, this.dimensions.HEIGHT);
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Update the x position of an indivdual piece of the line.
  • Invalid Syntax: * @param {number} pos Line position.
  • Invalid Account Type: * @param {number} increment
  • Invalid Syntax: */
  • Invalid Account Type: updateXPos: function(pos, increment) {
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Update the horizon line.
  • Invalid Account Type: * @param {number} deltaTime
  • Invalid Account Type: * @param {number} speed
  • Invalid Syntax: */
  • Invalid Account Type: update: function(deltaTime, speed) {
  • Invalid Syntax: this.updateXPos(0, increment);
  • Invalid Account Type: } else {
  • Invalid Syntax: this.updateXPos(1, increment);
  • Invalid Syntax: }
  • Invalid Syntax: this.draw();
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Reset horizon to the starting position.
  • Invalid Syntax: */
  • Invalid Account Type: reset: function() {
  • Invalid Syntax: }
  • Invalid Syntax: };
  • Invalid Syntax: //******************************************************************************
  • Invalid Syntax: /**
  • Invalid Account Type: * Horizon background class.
  • Invalid Account Type: * @param {HTMLCanvasElement} canvas
  • Invalid Account Type: * @param {Array.<HTMLImageElement>} images
  • Invalid Syntax: * @param {object} dimensions Canvas dimensions.
  • Invalid Account Type: * @param {number} gapCoefficient
  • Invalid Syntax: * @constructor
  • Invalid Syntax: */
  • Invalid Account Type: function Horizon(canvas, images, dimensions, gapCoefficient) {
  • Invalid Syntax: // Cloud
  • Invalid Syntax: // Horizon
  • Invalid Syntax: // Obstacles
  • Invalid Syntax: CACTUS_SMALL: images.CACTUS_SMALL,
  • Invalid Syntax: CACTUS_LARGE: images.CACTUS_LARGE
  • Invalid Syntax: };
  • Invalid Syntax: this.init();
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Account Type: * Horizon config.
  • Invalid Account Type: * @enum {number}
  • Invalid Syntax: */
  • Invalid Syntax: BG_CLOUD_SPEED: 0.2,
  • Invalid Syntax: BUMPY_THRESHOLD: .3,
  • Invalid Syntax: CLOUD_FREQUENCY: .5,
  • Invalid Syntax: HORIZON_HEIGHT: 16,
  • Invalid Syntax: MAX_CLOUDS: 6
  • Invalid Syntax: };
  • Invalid Syntax: /**
  • Invalid Syntax: * Initialise the horizon. Just add the line and a cloud. No obstacles.
  • Invalid Syntax: */
  • Invalid Account Type: init: function() {
  • Invalid Syntax: this.addCloud();
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Account Type: * @param {number} deltaTime
  • Invalid Account Type: * @param {number} currentSpeed
  • Invalid Syntax: * @param {boolean} updateObstacles Used as an override to prevent
  • Invalid Syntax: * the obstacles from being updated / added. This happens in the
  • Invalid Account Type: * ease in section.
  • Invalid Syntax: */
  • Invalid Account Type: update: function(deltaTime, currentSpeed, updateObstacles) {
  • Invalid Syntax: this.horizonLine.update(deltaTime, currentSpeed);
  • Invalid Syntax: this.updateClouds(deltaTime, currentSpeed);
  • Invalid Account Type: if (updateObstacles) {
  • Invalid Syntax: this.updateObstacles(deltaTime, currentSpeed);
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Update the cloud positions.
  • Invalid Account Type: * @param {number} deltaTime
  • Invalid Account Type: * @param {number} currentSpeed
  • Invalid Syntax: */
  • Invalid Account Type: updateClouds: function(deltaTime, speed) {
  • Invalid Account Type: if (numClouds) {
  • Invalid Syntax: this.clouds[i].update(cloudSpeed);
  • Invalid Syntax: }
  • Invalid Syntax: // Check for adding a new cloud.
  • Invalid Syntax: if (numClouds < this.config.MAX_CLOUDS &&
  • Invalid Syntax: (this.dimensions.WIDTH - lastCloud.xPos) > lastCloud.cloudGap &&
  • Invalid Account Type: this.cloudFrequency > Math.random()) {
  • Invalid Syntax: this.addCloud();
  • Invalid Syntax: }
  • Invalid Account Type: // Remove expired clouds.
  • Invalid Syntax: return !obj.remove;
  • Invalid Syntax: });
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Update the obstacle positions.
  • Invalid Account Type: * @param {number} deltaTime
  • Invalid Account Type: * @param {number} currentSpeed
  • Invalid Syntax: */
  • Invalid Account Type: updateObstacles: function(deltaTime, currentSpeed) {
  • Invalid Syntax: // Obstacles, move to Horizon layer.
  • Invalid Syntax: obstacle.update(deltaTime, currentSpeed);
  • Invalid Syntax: // Clean up existing obstacles.
  • Invalid Account Type: if (obstacle.remove) {
  • Invalid Syntax: updatedObstacles.shift();
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: if (this.obstacles.length > 0) {
  • Invalid Syntax: if (lastObstacle && !lastObstacle.followingObstacleCreated &&
  • Invalid Syntax: lastObstacle.isVisible() &&
  • Invalid Syntax: (lastObstacle.xPos + lastObstacle.width + lastObstacle.gap) <
  • Invalid Syntax: this.dimensions.WIDTH) {
  • Invalid Syntax: this.addNewObstacle(currentSpeed);
  • Invalid Syntax: }
  • Invalid Account Type: } else {
  • Invalid Account Type: // Create new obstacles.
  • Invalid Syntax: this.addNewObstacle(currentSpeed);
  • Invalid Syntax: }
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Add a new obstacle.
  • Invalid Account Type: * @param {number} currentSpeed
  • Invalid Syntax: */
  • Invalid Account Type: addNewObstacle: function(currentSpeed) {
  • Invalid Account Type: getRandomNum(0, Obstacle.types.length - 1);
  • Invalid Account Type: this.obstacles.push(new Obstacle(this.canvasCtx, obstacleType,
  • Invalid Account Type: obstacleImg, this.dimensions, this.gapCoefficient, currentSpeed));
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Reset the horizon layer.
  • Invalid Syntax: * Remove existing obstacles and reposition the horizon line.
  • Invalid Syntax: */
  • Invalid Account Type: reset: function() {
  • Invalid Syntax: this.horizonLine.reset();
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Update the canvas width and scaling.
  • Invalid Syntax: * @param {number} width Canvas width.
  • Invalid Syntax: * @param {number} height Canvas height.
  • Invalid Syntax: */
  • Invalid Account Type: resize: function(width, height) {
  • Invalid Syntax: },
  • Invalid Syntax: /**
  • Invalid Syntax: * Add a new cloud to the horizon.
  • Invalid Syntax: */
  • Invalid Account Type: addCloud: function() {
  • Invalid Account Type: this.clouds.push(new Cloud(this.canvas, this.cloudImg,
  • Invalid Syntax: this.dimensions.WIDTH));
  • Invalid Syntax: }
  • Invalid Syntax: };
  • Invalid Syntax: })();
  • Invalid Syntax: </script>
  • Invalid Syntax: <style>
  • Invalid Syntax: /* Copyright 2014 The Chromium Authors. All rights reserved.
  • Invalid Syntax: Use of this source code is governed by a BSD-style license that can be
  • Invalid Syntax: found in the LICENSE file. */
  • Invalid Syntax: a {
  • Invalid Syntax: color: #585858;
  • Invalid Syntax: }
  • Invalid Syntax: body {
  • Invalid Syntax: background-color: #f7f7f7;
  • Invalid Syntax: color: #585858;
  • Invalid Syntax: font-size: 125%;
  • Invalid Syntax: }
  • Invalid Syntax: body.safe-browsing {
  • Invalid Account Type: background-color: rgb(206, 52, 38);
  • Invalid Syntax: color: white;
  • Invalid Syntax: }
  • Invalid Syntax: button {
  • Invalid Account Type: background: rgb(76, 142, 250);
  • Invalid Syntax: border: 0;
  • Invalid Syntax: border-radius: 2px;
  • Invalid Syntax: box-sizing: border-box;
  • Invalid Syntax: color: #fff;
  • Invalid Syntax: cursor: pointer;
  • Invalid Syntax: float: right;
  • Invalid Syntax: font-size: .875em;
  • Invalid Syntax: height: 36px;
  • Invalid Account Type: margin: -6px 0 0;
  • Invalid Account Type: padding: 8px 24px;
  • Invalid Account Type: transition: box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1);
  • Invalid Syntax: }
  • Invalid Syntax: float: left;
  • Invalid Syntax: }
  • Invalid Syntax: button:active {
  • Invalid Account Type: background: rgb(50, 102, 213);
  • Invalid Syntax: outline: 0;
  • Invalid Syntax: }
  • Invalid Syntax: button:hover {
  • Invalid Account Type: box-shadow: 0 1px 3px rgba(0, 0, 0, .50);
  • Invalid Syntax: }
  • Invalid Syntax: .debugging-content {
  • Invalid Syntax: line-height: 1em;
  • Invalid Syntax: margin-bottom: 0;
  • Invalid Syntax: margin-top: 0;
  • Invalid Syntax: }
  • Invalid Syntax: .debugging-title {
  • Invalid Syntax: font-weight: bold;
  • Invalid Syntax: }
  • details {
  • Invalid Syntax: color: #696969;
  • Invalid Account Type: margin: 45px 0 50px;
  • Invalid Syntax: }
  • details p:not(:first-of-type) {
  • Invalid Syntax: margin-top: 20px;
  • Invalid Syntax: }
  • error-code {
  • Invalid Syntax: color: black;
  • Invalid Syntax: opacity: .35;
  • Invalid Syntax: text-transform: uppercase;
  • Invalid Syntax: }
  • error-debugging-info {
  • Invalid Syntax: font-size: 0.8em;
  • Invalid Syntax: }
  • Invalid Syntax: h1 {
  • Invalid Syntax: -webkit-margin-after: 16px;
  • Invalid Syntax: color: #585858;
  • Invalid Syntax: font-size: 1.6em;
  • Invalid Syntax: font-weight: normal;
  • Invalid Syntax: line-height: 1.25em;
  • Invalid Syntax: }
  • Invalid Syntax: h2 {
  • Invalid Syntax: font-size: 1.2em;
  • Invalid Syntax: font-weight: normal;
  • Invalid Syntax: }
  • Invalid Syntax: .hidden {
  • Invalid Syntax: display: none;
  • Invalid Syntax: }
  • Invalid Syntax: .icon {
  • Invalid Syntax: background-repeat: no-repeat;
  • Invalid Syntax: background-size: 100%;
  • Invalid Syntax: height: 72px;
  • Invalid Account Type: margin: 0 0 40px;
  • Invalid Syntax: width: 72px;
  • Invalid Syntax: }
  • Invalid Syntax: visibility: hidden;
  • Invalid Syntax: }
  • Invalid Syntax: .interstitial-wrapper {
  • Invalid Syntax: box-sizing: border-box;
  • Invalid Syntax: font-size: 1em;
  • Invalid Syntax: line-height: 1.6em;
  • Invalid Account Type: margin: 50px auto 0;
  • Invalid Syntax: max-width: 600px;
  • Invalid Syntax: width: 100%;
  • Invalid Syntax: }
  • malware-opt-in {
  • Invalid Syntax: font-size: .875em;
  • Invalid Syntax: margin-top: 39px;
  • Invalid Syntax: }
  • Invalid Syntax: .nav-wrapper {
  • Invalid Syntax: margin-top: 51px;
  • Invalid Syntax: }
  • Invalid Syntax: .nav-wrapper::after {
  • Invalid Syntax: clear: both;
  • Invalid Syntax: content: '';
  • Invalid Syntax: display: table;
  • Invalid Syntax: width: 100%;
  • Invalid Syntax: }
  • opt-in-label {
  • Invalid Syntax: -webkit-margin-start: 32px;
  • Invalid Syntax: }
  • Invalid Syntax: .safe-browsing :-webkit-any(
  • Invalid Syntax: a, #details, #details-button, h1, h2, p, .small-link) {
  • Invalid Syntax: color: white;
  • Invalid Syntax: }
  • Invalid Account Type: .safe-browsing button {
  • Invalid Account Type: background-color: rgb(206, 52, 38);
  • Invalid Account Type: border: 1px solid white;
  • Invalid Syntax: }
  • Invalid Account Type: .safe-browsing button:active {
  • Invalid Account Type: background-color: rgb(206, 52, 38);
  • Invalid Account Type: border-color: rgba(255, 255, 255, .6);
  • Invalid Syntax: }
  • Invalid Account Type: .safe-browsing button:hover {
  • Invalid Account Type: box-shadow: 0 2px 3px rgba(0, 0, 0, .5);
  • Invalid Syntax: }
  • Invalid Account Type: .safe-browsing .icon {
  • Invalid Syntax: background-image: -webkit-image-set(
  • Invalid Account Type: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAABoVBMVEX///+Li4v////////y8vL09PT99fTbRDfXzMzt7e3v7+/s7Ozy8vLw8PDu7u799PPSQTXx8fHZdGv19fX09PTm5ubbV0zXzczgW1Dd3d3c3Nzjb2Th4eHr6+vl5eXp6enZ2dng4OD29vbz8/PYYFXZV0zaYVbjbWP219TRQTTXdGz43Nn++/rib2T////b29vTQjXaYVf66ObngXjjbmTq6ura2trngHf76Ofk19bX19fe3t7o6Oji4uLk5OTeU0f119TYQzbZQzbWQjbXQzbZRDfaRDfn5+fbV0vj4+PVQjXf39/Y2Njgcmney8rqk4zdysn43drcysjcUETa1tbadGvaV0vaWEzZYVbibmXc2NjfzMvi0M7mfHPYYVbhzszd2dnZx8XieXDkc2nWX1Xacmne2trZdGzbcWjj0c/XTUHX1NPVX1Xg3NzYdGvYXFHZ1dXWTUHgzczUX1Xh3d3XdWzWXFHaVkvXxcTVTEHhbmXTXlXi3t7ayMbVXFLgbmXUTEDXYFXSXlTXzMvk4ODUXFHWbGPWzMvk4eHZioP39/f9Ro5BAAAABnRSTlMAAOQk5ye8yu+CAAACRklEQVR4XrXWRZPbUBSEUWdmIpl5mJmZg8zMzMzMzPCr43isNqif76u6lW+nuzgrtUqB/1ptzUSVamrVDiS1A0ntQFI7kNQOJLUDSe1AUjuQ1A4ktQNJ70DSO5D0DiS9A0nvQIKjlOAoJThqyewsXZ1hQOL8YZNkcJrcJiIlBt2No0zKQSbHJVJiznW5BIg4kMocSDIEBxKcwvkoJAE6uMJAguO13xIaWyyRiDPdGGGQJBFnzb4Qh2Qp0VrmdHXFCSRKxFmYDAsQpNkSiTgtLZAAydIgcZqbYwQSJOqs3QsJkCRxp7s7RSBBok5bW5RAgkSd9bujIoS3AA0QZ0NHrx3ktLro5SvidNRnAUkO2nWZOPU7s4BEB9J74qzrzACSHNRwhDid8xlAogPpEHHa23sIxJyB60XpAHEioT9myBnf4XWq8W4aDw1niROKA/I7270u5HbxKI3Hk0+IEzZBzuktXn35XRw7jsOJi34nZoCcN5u9+gq7OJPGqf+czzFAzsdtXp+xi0tpHPtvVzopDl3Z6nUtWNzXjZs436p0DNDQnT0r3QuW7vT+g8L54XKlEzX8RAw9nvrX02D53p89z59f+J0602/NptfJZPKt52AX70Zy5w/EWR0wSp+Gv3z1f3++jQx/545Z+vGTfcd+/eYOJFIEDtkpccxSyNqRpLitI0uWjiyFLR1ZignOqoC1VN0BJEupag4gK8nsALKToiYHkK3Uyx0CiRJ3ANlLWe4AspcyxKGQLHEHkL3UQxwKyRJxCKTtLyVXfw+a8JTgAAAAAElFTkSuQmCC) 1x,
  • Invalid Syntax: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAMAAADQmBKKAAACLlBMVEX///+Li4v////09PTX09P+/Pzw8PDy8vLx8fHbRDfz8/P++/r19fX29vba2trb29vY2Njp6enc3NzX19fm5ubk5OT39/fd3d3g4ODt7e3o6Ojr6+vn5+fq6uri4uLh4eHu7u7l5eXe3t7f39/09PT4+PjbnZjanJfaV0zcnpnQQTTv7+/bRTjZ2dn65eTZV0zcn5nj4+Ps7OzX1NPcSz/qwr/VQzbbV0zZRDfYxsTcn5rXZ17bycfgzczTQjXmgnrmf3bxwb3fWU3VQjXngHfac2rWQjbTQTXxtK/SQTXbV0vfWU7aRDfmf3fltrLbSj366Ob2z8vRQTX76Of////WcWjYcWnZQzf++/vngnnws67ZQzbl3dzWQzfYQzbiz83cysjRQTTlgnnZcmnacmnaRTjngnrkgnnXcWney8nXRDfUQjXZaF7XQzbWRjrZm5bWcWngW1DngXjYRDfaeHDZRDj429nZRTjZnJbaWEzbSj7XxcTZmJLbRzr2z8zYVkvk0dDhzsz5+fnZmpXj0c/kgXnlhX7iamDZx8XezMrbnpjbWEzfzMvVcWjYcmnUQzbYaF7qwb7mfHPUcWjbnpnYwsDXaF7mgnnURTnanJbUcGjTQjbURjnwwb3SRDjyu7bUb2fSQjbayMbRRDji0M7Tb2fZV0vRQjbWZ17RRDfdysnTb2bTQzbRQjXWZ13QRDfce3PSb2bQQjXVZ13PQzfRb2bUZ17ox8Tm4+PVRjlHvjbxAAAABHRSTlMAAIiOSsna/gAABM1JREFUeF7t2FOTJVkYRuHqmjxm2bbVtDG2bdu2bdu2/t3kvNHdUxW1u8+3JvNE7It6b/O7eGLd7ayJbyurPe1/r9YvDxdxDxf55eEi7uEivzxcxD1c5JeHi7iHi/zycBH3cJFfHi7iHi7yy8NF3MNFfnm4iHu4yDMPF3EPF3GPVyLu4SKvPBJ55ZEIeDwSyeORSB6PRPJ4JJLHI5E8Honk8Ugkj0cieTwSyeORSB6PRPJ4JJLHI5E8Honk8UXEPdMnEUDuDijinp03A1Fu++oHmIh7MhmJjJ5MZvXJVEQ9Epk9TCQQ9Uhk9kjEQNgjkdkjEQJxj0RGj3bPmmqApo8VxSjKHb/4+sQ1CMQ9Elk9Er2MQNwjkcEDGiGQPGaRPEjEQR9OZuyi3O6MY7cl4wJp+52iU+2ePQsNSQ7iIuBpKCc5iIvMnhAkEQRxEfCUp9IMFF2Uu+WInqlimoO4CHiKpTQHcZHZE4LqUxzERXZPSSIAiiA6y+KpD5fiIC4yegRqSXEQF9n6yNPSn8UgLnrF1kee/oEsBXER6NMvEQJxkb2PPAOtWQBCIt5HntaeQQBCIt5Hnh6JAAiJeJ9w3YMAhES8jzzdc3kAYiLeR6CmfFwg7ZzJKH1Cz5xEAEREvE/IaWrqywMQFPE+oaevMR8nKPGky3P/6+Y+IaixEB8ocXbGudF7zX3CdRYIiHsk2mDtE3o62wsAxD3aMRvMfUJQXYGAuEeip0x95Glvr2smIO6R6BNbH3nqupoJiHsk2mzrI09XRzMAcY+2brOtjzwdEgEQ9Uh0kblPuPkhBOIeiYx9BApFAMQ9En1j6yNPW9sQB8lzhQtw2X2TLtHVtj7ytPU+IlA8noWGR90iWx95ensFgp5txzl26b/vixsvd3xZ97StjzwTAsXlKZedomefM/eZgCB51jv2wsH3xV13Or7evcXaB4LkOdOxM/57X4zc7jgY3WLsM5GEoMSb5zq2yFMsvr3ecTH6sK1PEoISl1zg2BJPqTRyq+Nm5kJTHwMIe0r1hxEZ+kBQ4srrHbtq+fti5BrH3cxnhj7ptAGEPAK1DLtEXzxWoQ8EJR7f69hNgfN9MXy+4/bBhyr2SafsoCfcHvf7yy36qWKfFADtuGHXsp0eHPb9Nbx22fV151XsA0ASuT3u99cza5FHfQBIor+vXbLngyO+T8deXHL9kqVPNitQrVX03tZFezWo8H5/7btF12+Y+mSPqmGit/Yd2jtBxff72LuHrjeZ+siDRO9/cPSBfRQY/m+MfXzgehPow0QnfHqK9nlg+r+x8UtdfwX6YNHXF4f7NjD+/5n9Prz+gfThoh/Hx38OzP9/Zn8Z/5X14aLffg/A/7GNf8A+XPRngP6P/UX7cFGyAf0f4324yNxHHt6Hi6aq3IeLitXtw0Xpavfhomr34aL66vfhouh9VtXEJ0q1RO+zygACov7IfQwgJIraxwBiouxApD4GEBa1RugDQEDUE6GPAcRFgxH6ABARdUfoA0BAFKEPABER74NAXJRvgn0oiIv6UB8O4qJG1IeDuIj14SAu6iR9OIiLCu2oDwdxEevDQVxUh/pwEBd1kT4cxEXNHagPB3ER68NBXDRP+nAQFw2BPgJVXwT6CFR9EejDQSv7B32/UteG7LtWAAAAAElFTkSuQmCC) 2x);
  • Invalid Syntax: }
  • Invalid Syntax: .small-link {
  • Invalid Syntax: color: #696969;
  • Invalid Syntax: font-size: .875em;
  • Invalid Syntax: }
  • Invalid Account Type: .ssl .icon {
  • Invalid Syntax: background-image: -webkit-image-set(
  • Invalid Syntax: }
  • Invalid Syntax: .styled-checkbox {
  • Invalid Syntax: float: left;
  • Invalid Syntax: height: 16px;
  • Invalid Syntax: margin-top: .36em;
  • Invalid Syntax: position: relative;
  • Invalid Syntax: width: 16px;
  • Invalid Syntax: }
  • Invalid Syntax: float: right;
  • Invalid Syntax: }
  • Invalid Account Type: .styled-checkbox label {
  • Invalid Syntax: background: transparent;
  • Invalid Account Type: border: white solid 1px;
  • Invalid Syntax: border-radius: 2px;
  • Invalid Syntax: height: 14px;
  • Invalid Syntax: left: 0;
  • Invalid Syntax: position: absolute;
  • Invalid Syntax: right: 0;
  • Invalid Syntax: top: 0;
  • Invalid Syntax: width: 14px;
  • Invalid Syntax: }
  • Invalid Account Type: .styled-checkbox label::after {
  • Invalid Syntax: background: transparent;
  • Invalid Account Type: border: 2px solid white;
  • Invalid Syntax: border-right-width: 0;
  • Invalid Syntax: border-top-width: 0;
  • Invalid Syntax: content: '';
  • Invalid Syntax: height: 4px;
  • Invalid Syntax: left: 2px;
  • Invalid Syntax: opacity: 0.3;
  • Invalid Syntax: position: absolute;
  • Invalid Syntax: top: 3px;
  • Invalid Syntax: transform: rotate(-45deg);
  • Invalid Syntax: width: 9px;
  • Invalid Syntax: }
  • Invalid Syntax: opacity: 1;
  • Invalid Syntax: }
  • Invalid Account Type: @media (max-width: 700px) {
  • Invalid Syntax: .interstitial-wrapper {
  • Invalid Account Type: padding: 0 10%;
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Account Type: @media (max-height: 600px) {
  • Invalid Syntax: .interstitial-wrapper {
  • Invalid Syntax: margin-top: 5px;
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Account Type: @media (max-width: 400px) {
  • Invalid Syntax: button,
  • Invalid Syntax: float: none;
  • Invalid Syntax: font-size: 1em;
  • Invalid Syntax: width: 100%;
  • Invalid Syntax: }
  • details {
  • Invalid Syntax: margin: 20px 0 20px 0;
  • Invalid Syntax: }
  • details p:not(:first-of-type) {
  • Invalid Syntax: margin-top: 10px;
  • Invalid Syntax: }
  • details-button {
  • Invalid Syntax: display: block;
  • Invalid Syntax: padding-top: 14px;
  • Invalid Syntax: text-align: center;
  • Invalid Syntax: width: 100%;
  • Invalid Syntax: }
  • Invalid Syntax: .interstitial-wrapper {
  • Invalid Account Type: padding: 0 5%;
  • Invalid Syntax: }
  • malware-opt-in {
  • Invalid Syntax: margin-top: 24px;
  • Invalid Syntax: }
  • Invalid Syntax: .nav-wrapper {
  • Invalid Syntax: margin-top: 30px;
  • Invalid Syntax: }
  • Invalid Syntax: .small-link {
  • Invalid Syntax: font-size: 1em;
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: </style>
  • Invalid Syntax: <style>
  • Invalid Syntax: /* Copyright 2013 The Chromium Authors. All rights reserved.
  • Invalid Syntax: * Use of this source code is governed by a BSD-style license that can be
  • Invalid Syntax: * found in the LICENSE file. */
  • Invalid Syntax: /* Don't use the main frame div when the error is in a subframe. */
  • Invalid Syntax: html[subframe] #main-frame-error {
  • Invalid Syntax: display: none;
  • Invalid Syntax: }
  • Invalid Syntax: /* Don't use the subframe error div when the error is in a main frame. */
  • Invalid Syntax: html:not([subframe]) #sub-frame-error {
  • Invalid Syntax: display: none;
  • Invalid Syntax: }
  • diagnose-button {
  • Invalid Syntax: -webkit-margin-start: 0;
  • Invalid Syntax: float: none;
  • Invalid Syntax: margin-bottom: 10px;
  • Invalid Syntax: margin-top: 20px;
  • Invalid Syntax: }
  • Invalid Syntax: h1 {
  • Invalid Syntax: -webkit-margin-before: 0;
  • Invalid Syntax: }
  • Invalid Syntax: h2 {
  • Invalid Syntax: color: #666;
  • Invalid Syntax: font-size: 1.2em;
  • Invalid Syntax: font-weight: normal;
  • Invalid Account Type: margin: 10px 0;
  • Invalid Syntax: }
  • Invalid Syntax: a {
  • Invalid Syntax: color: black;
  • Invalid Syntax: text-decoration: none;
  • Invalid Syntax: }
  • Invalid Syntax: .icon {
  • Invalid Syntax: -webkit-user-select: none;
  • Invalid Syntax: }
  • Invalid Syntax: .icon-generic {
  • Invalid Syntax: /**
  • Invalid Syntax: * Can't access chrome://theme/IDR_ERROR_NETWORK_GENERIC from an untrusted
  • Invalid Syntax: * renderer process, so embed the resource manually.
  • Invalid Syntax: */
  • Invalid Syntax: content: -webkit-image-set(
  • Invalid Syntax: height: 50px;
  • Invalid Syntax: padding-top: 20px;
  • Invalid Syntax: width: 41px;
  • Invalid Syntax: }
  • Invalid Syntax: .icon-offline {
  • Invalid Syntax: content: -webkit-image-set(
  • Invalid Syntax: height: 47px;
  • Invalid Account Type: margin: 0 0 40px;
  • Invalid Syntax: position: relative;
  • Invalid Syntax: width: 44px;
  • Invalid Syntax: }
  • content-top {
  • Invalid Syntax: margin: 20px;
  • Invalid Syntax: }
  • help-box-outer {
  • Invalid Account Type: -webkit-transition: height ease-in 218ms;
  • Invalid Syntax: overflow: hidden;
  • Invalid Syntax: }
  • help-box-inner {
  • Invalid Syntax: background-color: #f9f9f9;
  • Invalid Account Type: border-top: 1px solid #EEE;
  • Invalid Syntax: color: #444;
  • Invalid Syntax: padding: 20px;
  • Invalid Syntax: text-align: start;
  • Invalid Syntax: }
  • suggestion {
  • Invalid Syntax: margin-top: 15px;
  • Invalid Syntax: }
  • short-suggestion {
  • Invalid Syntax: margin-top: 5px;
  • Invalid Syntax: }
  • sub-frame-error-details {
  • Invalid Syntax: color: #8F8F8F;
  • Invalid Syntax: /* Not done on mobile for performance reasons. */
  • Invalid Account Type: text-shadow: 0 1px 0 rgba(255,255,255,0.3);
  • Invalid Syntax: }
  • Invalid Syntax: overflow-wrap: break-word;
  • Invalid Syntax: }
  • search-container {
  • Invalid Syntax: /* Prevents a space between controls. */
  • Invalid Syntax: display: flex;
  • Invalid Syntax: margin-top: 20px;
  • Invalid Syntax: }
  • search-box {
  • Invalid Account Type: border: 1px solid #cdcdcd;
  • Invalid Syntax: flex-grow: 1;
  • Invalid Syntax: font-size: 16px;
  • Invalid Syntax: height: 26px;
  • Invalid Syntax: margin-right: 0;
  • Invalid Account Type: padding: 1px 9px;
  • Invalid Syntax: }
  • search-box:focus {
  • Invalid Account Type: border: 1px solid rgb(93, 154, 255);
  • Invalid Syntax: outline: none;
  • Invalid Syntax: }
  • search-button {
  • Invalid Syntax: border: none;
  • Invalid Syntax: border-bottom-left-radius: 0;
  • Invalid Syntax: border-top-left-radius: 0;
  • Invalid Syntax: box-shadow: none;
  • Invalid Syntax: display: flex;
  • Invalid Syntax: height: 30px;
  • Invalid Syntax: margin: 0;
  • Invalid Syntax: padding: 0;
  • Invalid Syntax: width: 60px;
  • Invalid Syntax: }
  • search-image {
  • Invalid Syntax: content:
  • Invalid Syntax: -webkit-image-set(
  • Invalid Syntax: margin: auto;
  • Invalid Syntax: }
  • Invalid Syntax: .hidden {
  • Invalid Syntax: display: none;
  • Invalid Syntax: }
  • Invalid Syntax: .suggestions {
  • Invalid Syntax: margin-top: 18px;
  • Invalid Syntax: }
  • Invalid Syntax: .suggestion-header {
  • Invalid Syntax: font-weight: bold;
  • Invalid Syntax: margin-bottom: 4px;
  • Invalid Syntax: }
  • Invalid Syntax: .suggestion-body {
  • Invalid Syntax: color: #777;
  • Invalid Syntax: }
  • Invalid Syntax: .error-code {
  • Invalid Syntax: color: #A0A0A0;
  • Invalid Syntax: margin-top: 15px;
  • Invalid Syntax: }
  • Invalid Syntax: /* Increase line height at higher resolutions. */
  • Invalid Syntax: @media (min-width: 641px) and (min-height: 641px) {
  • help-box-inner {
  • Invalid Syntax: line-height: 18px;
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: /* Decrease padding at low sizes. */
  • Invalid Syntax: @media (max-width: 640px), (max-height: 640px) {
  • Invalid Syntax: body {
  • Invalid Syntax: margin: 15px;
  • Invalid Syntax: }
  • Invalid Syntax: h1 {
  • Invalid Account Type: margin: 10px 0 15px;
  • Invalid Syntax: }
  • content-top {
  • Invalid Syntax: margin: 15px;
  • Invalid Syntax: }
  • help-box-inner {
  • Invalid Syntax: padding: 20px;
  • Invalid Syntax: }
  • Invalid Syntax: .suggestions {
  • Invalid Syntax: margin-top: 10px;
  • Invalid Syntax: }
  • Invalid Syntax: .suggestion-header {
  • Invalid Syntax: margin-bottom: 0;
  • Invalid Syntax: }
  • Invalid Syntax: .error-code {
  • Invalid Syntax: margin-top: 10px;
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: /* Don't allow overflow when in a subframe. */
  • Invalid Account Type: html[subframe] body {
  • Invalid Syntax: overflow: hidden;
  • Invalid Syntax: }
  • sub-frame-error {
  • Invalid Syntax: -webkit-align-items: center;
  • Invalid Syntax: background-color: #DDD;
  • Invalid Syntax: display: -webkit-flex;
  • Invalid Syntax: -webkit-flex-flow: column;
  • Invalid Syntax: height: 100%;
  • Invalid Syntax: -webkit-justify-content: center;
  • Invalid Syntax: left: 0;
  • Invalid Syntax: position: absolute;
  • Invalid Syntax: top: 0;
  • Invalid Syntax: width: 100%;
  • Invalid Syntax: }
  • sub-frame-error:hover {
  • Invalid Syntax: background-color: #EEE;
  • Invalid Syntax: }
  • sub-frame-error-details {
  • Invalid Account Type: margin: 0 10px;
  • Invalid Syntax: visibility: hidden;
  • Invalid Syntax: }
  • Invalid Syntax: /* Show details only when hovering. */
  • sub-frame-error:hover #sub-frame-error-details {
  • Invalid Syntax: visibility: visible;
  • Invalid Syntax: }
  • Invalid Syntax: /* If the iframe is too small, always hide the error code. */
  • Invalid Syntax: /* TODO(mmenke): See if overflow: no-display works better, once supported. */
  • Invalid Syntax: @media (max-width: 200px), (max-height: 95px) {
  • sub-frame-error-details {
  • Invalid Syntax: display: none;
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: /* details-button is special; it's a <button> element that looks like a link. */
  • details-button {
  • Invalid Syntax: background-color: inherit;
  • Invalid Syntax: background-image: none;
  • Invalid Syntax: border: none;
  • Invalid Syntax: box-shadow: none;
  • Invalid Syntax: min-width: 0;
  • Invalid Syntax: padding: 0;
  • Invalid Syntax: text-decoration: underline;
  • Invalid Syntax: }
  • Invalid Syntax: /* Styles for platform dependent separation of controls and details button. */
  • Invalid Syntax: .suggested-left > #control-buttons,
  • Invalid Syntax: .suggested-right > #details-button {
  • Invalid Syntax: float: left;
  • Invalid Syntax: }
  • Invalid Syntax: .suggested-right > #control-buttons,
  • Invalid Syntax: .suggested-left > #details-button {
  • Invalid Syntax: float: right;
  • Invalid Syntax: }
  • details-button.singular {
  • Invalid Syntax: float: none;
  • Invalid Syntax: }
  • buttons::after {
  • Invalid Syntax: clear: both;
  • Invalid Syntax: content: '';
  • Invalid Syntax: display: block;
  • Invalid Syntax: width: 100%;
  • Invalid Syntax: }
  • Invalid Account Type: /* Offline page */
  • Invalid Account Type: .offline .interstitial-wrapper {
  • Invalid Syntax: color: #2b2b2b;
  • Invalid Syntax: font-size: 1em;
  • Invalid Syntax: line-height: 1.55;
  • Invalid Account Type: margin: 100px auto 0;
  • Invalid Syntax: max-width: 600px;
  • Invalid Syntax: width: 100%;
  • Invalid Syntax: }
  • Invalid Account Type: .offline .runner-container {
  • Invalid Syntax: height: 150px;
  • Invalid Syntax: max-width: 600px;
  • Invalid Syntax: overflow: hidden;
  • Invalid Syntax: position: absolute;
  • Invalid Syntax: top: 10px;
  • Invalid Syntax: width: 44px;
  • Invalid Syntax: z-index: 2;
  • Invalid Syntax: }
  • Invalid Account Type: .offline .runner-canvas {
  • Invalid Syntax: height: 150px;
  • Invalid Syntax: max-width: 600px;
  • Invalid Syntax: opacity: 1;
  • Invalid Syntax: overflow: hidden;
  • Invalid Syntax: position: absolute;
  • Invalid Syntax: top: 0;
  • Invalid Syntax: }
  • Invalid Account Type: .offline .controller {
  • Invalid Account Type: background: rgba(247,247,247, .1);
  • Invalid Syntax: height: 100vh;
  • Invalid Syntax: left: 0;
  • Invalid Syntax: position: absolute;
  • Invalid Syntax: top: 0;
  • Invalid Syntax: width: 100vw;
  • Invalid Syntax: z-index: 1;
  • Invalid Syntax: }
  • offline-resources {
  • Invalid Syntax: display: none;
  • Invalid Syntax: }
  • Invalid Account Type: @media (max-width: 400px) {
  • Invalid Syntax: .suggested-left > #control-buttons,
  • Invalid Syntax: .suggested-right > #control-buttons {
  • Invalid Syntax: float: none;
  • Invalid Account Type: margin: 50px 0 20px;
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Account Type: @media (max-height: 350px) {
  • Invalid Syntax: h1 {
  • Invalid Account Type: margin: 0 0 15px;
  • Invalid Syntax: }
  • Invalid Syntax: .icon-offline {
  • Invalid Account Type: margin: 0 0 10px;
  • Invalid Syntax: }
  • Invalid Syntax: .interstitial-wrapper {
  • Invalid Syntax: margin-top: 5%;
  • Invalid Syntax: }
  • Invalid Syntax: .nav-wrapper {
  • Invalid Syntax: margin-top: 30px;
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: </style>
  • Invalid Syntax: <style>
  • Invalid Syntax: /** Custom for 404 page. */
  • Invalid Syntax: .logo-container {
  • Invalid Syntax: margin-top:30px;
  • Invalid Syntax: }
  • Invalid Syntax: .logo {
  • Invalid Syntax: font-family: Helvetica, serif; font-size: 20px; margin-left: 128px; line-height: 1; font-weight: 600; transition: color .25s ease;
  • Invalid Syntax: }
  • Invalid Syntax: @media only screen and (max-width: 600px) {
  • Invalid Syntax: .logo-container {
  • Invalid Syntax: margin-top:30px;
  • Invalid Syntax: }
  • Invalid Syntax: .logo {
  • Invalid Syntax: font-family: Helvetica, serif; font-size: 20px; margin-left: 10px; line-height: 1; font-weight: 600; transition: color .25s ease;
  • Invalid Syntax: }
  • Invalid Syntax: }
  • Invalid Syntax: </style>
  • Invalid Syntax: </head>
  • Invalid Syntax: <body>
  • Invalid Syntax: </div>
  • Invalid Syntax: <script>
  • Invalid Syntax: FB.init({
  • Invalid Account Type: appId : '576553495813787',
  • Invalid Account Type: xfbml : true,
  • Invalid Account Type: version : 'v2.2'
  • Invalid Syntax: });
  • Invalid Syntax: };
  • Invalid Account Type: (function(d, s, id){
  • Invalid Account Type: if (d.getElementById(id)) {return;}
  • Invalid Syntax: fjs.parentNode.insertBefore(js, fjs);
  • Invalid Account Type: }(document, 'script', 'facebook-jssdk'));
  • Invalid Syntax: </script>
  • Invalid Account Type: <h1>404, Page not found.</h1>
  • Invalid Syntax: <br />
  • Invalid Syntax: </div>
  • Invalid Syntax: </div>
  • Invalid Syntax: </template>
  • Invalid Syntax: </div>
  • Invalid Syntax: if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
  • Invalid Syntax: new Runner('.interstitial-wrapper');
  • Invalid Account Type: } else {
  • Invalid Syntax: }
  • Invalid Syntax: </script>
  • Invalid Syntax: hideClass(".onlyforchrome");
  • Invalid Syntax: }
  • Invalid Syntax: </script>
  • Invalid Syntax: </body>
  • Invalid Syntax: </html>

Warnings

  • 188 invalid lines.
  • `this.midair` is not a known variable.
  • `this.canvas.height` is not a known variable.
  • `this.audiobuffer` is not a known variable.
  • `this.blinkdelay` is not a known variable.
  • `js.src` is not a known variable.
  • `this.audiocontext` is not a known variable.
  • `[dir` is not a known variable.
  • `this.raqid` is not a known variable.
  • `runner.sounds` is not a known variable.
  • `window.fbasyncinit` is not a known variable.
  • `this.playcount` is not a known variable.
  • `horizon.config` is not a known variable.
  • `this.status` is not a known variable.
  • `this.outercontainerel` is not a known variable.
  • `this.image` is not a known variable.
  • `[jscontent` is not a known variable.
  • `this.containerel` is not a known variable.
  • `this.config.drop_velocity` is not a known variable.
  • `this.xpos[0]` is not a known variable.
  • `this.gap` is not a known variable.
  • `this.images[imgsource.name]` is not a known variable.
  • `this.collisionboxes[2].x` is not a known variable.
  • `this.digits` is not a known variable.
  • `distancemeter.prototype` is not a known variable.
  • `runner.defaultdimensions` is not a known variable.
  • `this.sourcedimensions` is not a known variable.
  • `this.restartimg` is not a known variable.
  • `this.canvasdimensions.width` is not a known variable.
  • `this.size` is not a known variable.
  • `e.currenttarget=` is not a known variable.
  • `url('data:image/png;base64,ivborw0kggoaaaansuheugaaacwaaaavagmaaadlfsa8aaaadfbmvex39/f////39/dtu1nomobdaaaaanrstlmaahatztgaaab6surbvhherc2xduixdithe6ubvmez9nn9tuzgjwo3ju8uhgirhx/1fscdnr82k+pmozizbozlsfw+op9mkpvnaruabb6og6fizr4uozi4noqtyrckhoxi63zodlbg0a0r0c2m5uw5z3rzoavqwnf3cgybkh4gyxtq6wpqoghb2tvifqaaaabjru5erkjggg=` is not a known variable.
  • `this.collisionboxes[1].width` is not a known variable.
  • `soundsrc` is not a known variable.
  • `distancemeter.config` is not a known variable.
  • `this.gameoverpanel` is not a known variable.
  • `canvas.width` is not a known variable.
  • `this.cloudimg` is not a known variable.
  • `url(data:image/png;base64,ivborw0kggoaaaansuheugaaaegaaabicayaaabv7bnhaaageeleqvr4xu3aa4iuvrzhcu2dckklfsek0btq7+s6o87edo3ei5bemem+9kveijqgziifcagw9ckiqjsqgm5gauoou+p63wa3i7lrm9unnlzxz9leurin75k/hhymzj777jxnepzhbr64+orshzm/zwz2lljqkko5acgblyb+udfusjmuohw0h7ronxoljfgz/f8x7af1lka50zjdjagqp100tgqaddmuqo8suiyspbyxpnhmbrqrdta1ugf1jxbqttmn6dbqjlwkumnhtafasiokitygiiubab71twhgd3qh1lit3u43g2t5+q5ask/sxro8bar+mhdmoa89ym7qcpo7ju27gdzqnwfsb2efwjejzf/0fm0wgik6nrz4jp+ksahnpqswncvujgboe4z+tqbdollhalpfytiaaqikdaqspr4mohylzj4bckzzdmwclaol0al7hshxgobbnsmhyauhaljerx4bkep9tmswbqcdfqaxigj0sgvozxiakhagr4oi9kgfkbkgoael0j1fblrlavrjgiayfqbbigh0qwuoewagvy1a1xurai4f6j8waclls4qcshq2objqga2n02z/wl2gttn6kgsaadwnkjqhjddqoiceirwrnnuntjlgiwq0tiudaaewn4zjraxhmu8cacopipacc6ducaolxqbligx01qwqiniloblqfcsblybkqcwg+5aoorc36n+nbfd78+vvwinnequczxt/z0q/rj7a6xvp0puvkf0a62zxsbeasucqtysdyxo7khkkqacnfvgpgfgldomnnaks1+woq2rggczoaf18fzts4+o+kow40ub7b6nulrpoaplh8szjxsqzgrriipdinjg/7x7b4bxq0fwor1rrqgrkhsk3trsuxqhsrysiaosnnc2cvlzkqyoaua6sk5zduiwcfagghcrnob3ust1lf0ubsprz+berzui5syojhg8cqljhelwcvayg8wae1cvdr3puz8/vv6usyaafeaedefucrkaieihtmzaeqd7jdgeesupykfbubqbsf87rrlu62litekekfkgfancnc46vfggphqg/omd0gmq5iwugewbw1uq4gwxy37axzlitsfvkgkhkdstiafxrqjkojwpaqhgk/53hcvcdchq4r0ykc3bxuc4tkquk40zaaeqyzps9xhi48g7qoupuy3dnnalwod4axosnc3e2l2o6ctupku31k0ihszdm6ewbi51oknesozd7ipc4f8a5aizuyexxdha1taejcaey+5o7qqiksocqqxigda6aquq7p6gupm/4xklmq7aide37whuc4a9hotlcq3qx1xo+eadp+h9ufaq8np3a6a7edoypdhiaqaigioo0prdp6pnpvacabi8zzzpqjqzikadrgsrwycavdpt98gblor6hwlwm+5rfhppz5/z2rq5xpfmttaebmkgdw7dogcmmkweigagikgciuagiyuyjvefpteowaay07a8jurw+bgjkkgoiiamgwgjieqdmuskbzi6pkdfpgwosmctxswcmyfucjhs4csklj3aajj7ewcn57dnlnlacsv0gwxfm+usfgaaq+qxegsqojqyqiagim0iakehkuwjumnb3aaqvu6cbqaigasgbakzqj/p1qjiblpmes2+q1jy3qy426nvlsqypogjezqbljhscdjbsueoyg5qz0vkbbagjkgxnvevd1ckb2mldpiksi8n74pi4zom8kqzez5aa0rmkzobaiufq0ub1gihdmna3bbfnpikow8svi5mbyn9aayjc4mgggsntkhjo67zygwvibr1jmo9jkm/xesodmcnngqigajiayhlpqqlmpdtcu6isyccuqfq8iszjbr1i+ukf0sqnmg8cuwkgkcdpkwbmcwn8revdkmd/ad/btli3gvqx4pfjaglsfdfmaaksidqdbagjkhcogbnbafwblqniwkmjpiiopik4phqgoopukjktasrboeyaaziyx1tqnxaah0a94eyojdztmszibrxbktvsctpsoiuozk7zgbuups1ayey47d9orgbwe54x9aaaaabjru5erkjggg=` is not a known variable.
  • `runner.instance_` is not a known variable.
  • `i` is not a known variable.
  • `runner.classes` is not a known variable.
  • `trex.collisionboxes` is not a known variable.
  • `this.clouds` is not a known variable.
  • `this.soundfx` is not a known variable.
  • `canvas.height` is not a known variable.
  • `sourceheight` is not a known variable.
  • `this.horizonimg` is not a known variable.
  • `url(data:image/png;base64,ivborw0kggoaaaansuheugaaajaaaacqcayaaadnruk4aaamfkleqvr4xuzcw2wuvrzh8ffspasx+aajd5iqncrswhskfwveafogkpwlxhivgc+jiakambjc5uejau0e44sjmtggkapeakbdwtocij6b2asysrzdq7zcwmnrhn9pjvnxtldpzm7socffjt+xjs1mm09+szodxu8pftrgccbkjiayatecygteckh9foktjuez0cnopxofpdc36bt6bfugnaje1igoo1r/d9ahh9ed6pomvyycirfstai9hy6iy0ilucvoqp8c96ixdgmiofy0dh2g+pbkud70kxomjbuheahnrntrp1kg1iverkxmaikgosiflof9jqaba4iapqavklkoibqd5wcoeafloxvoacll60dr0lwigbjenw+qcqsv0c2igblohvqbuo71k7qbgojtuvzdcbjb9dqbxdnaaeb8lxnqeluj1p+sfwgopt0be4autbdtqs+gjwggmorurlkjai/zf5ahslaveh5trc3ofeyn+k8sultmot/semq8ez2b8tkm/gpujf5ctwgotygg0bwcctde1jugomfqu7ioitqjbubn04dodbppqhpdhwoiwmlf1f46eblqlfqjeiii2kvaej0a8vt4fzsfpeoagd6mikiagp5bureoxr1ojvim7xf0kssgtprdqp/e6yhxhectkwd4freoawsj6j+beplmr3z5o2lfjsffzw/kiaartyhk/5dykwdz94w8rpeiav35vuxueicqkgdpg0maoo2ui6bgd4baswn5fpefjovatjsagu0jcbo+gxmwvxkc0cce9pfgoufnqo8iz5fsie5kzceg6sgknctwcndiao/9cog9ttwhkedq16afnqftiydplcag5chzrnc0az1abitgi6xzfacbzdue9ce6gybwk3yi6yceg2wfuden6ajoowev/ehxrwkid1is0buagny4dgiljqdnbislymhui3g0zzqapiig/u+yznyy0dz9t7qsuicmomkoayrqbnrgqppnhrkoa7pje1a3aqgfztkoa8on8cvvbksz53dzmoagciiaii2yfyaiiiaiiiaiiiaiqbc9ivaitvq7upfi/egnvinwo6kualqcdhnayjwihs4ays/odzezgnszrycq0qucyhjnujvtgfajiqiwpig0whzaqwja2faydqja+oxheluzcqgabkuxccd4elgeuyd8r6tbtwdwvgmaoaciwloqtqj0hacs64argadgdgkwtttmalseakxtlqma6gja2r40addpbgbtp5gaajaaro2icycuvtecygtecmjggaexamiezgmmgbgbmqkynezajiayazncyyuvqn1bawaeu7lczkaedhlrbnv35ja6t2d34oi633ltxwr7tp1aot8+qaqkepyhieoij//qqerapuijieokjybq0ubeqobhcsjkae8q0fdvcwiacmgwpefecegrzrecuo33b5aigizb87xgsqrrei91iagiaujgezjc1l1ti/bzxmg9odowzzujebfo7kansg0njydi8gh3+optqr5smmqzn0saejd1iblds2/wvlxvzgjvx1ooiajicurj4qeihboeeqe5gih+pd6g2ugmapeczgjiduqxl4/gqaoohzd3ratkfilba5bpxr4bheoeeqg5hejwxla8giflj4giyaleuegy+/kkrtuoiajidkqokewrctv+1frwjihcb0re0zdh8pivalg5icigsxazujycp95pebgqayimxz76utuligiydjghyym1dddnebgqcygmxr7bg4zp7w/evsyicmgorgyuj+bbgqgviajiklq3bg4nqhpxxwioxuuzwsm6jijsb9qgalbwfr6pinonrear6/iihisicdil9jcgoljw6coqxvpgjzc/qmbsf6gqgpxkaugsticdvepziakqilrjezegiib78qiinaooijlcg1sticigs/eeewehysyjgpwov0wxrdycih7pdbclacdw5rlvc3mxilinucsawnbf7dppi1tlfmdx+1iufdrotjlpxkatzhraf4jglyqgxfka3bssxvhd6s434madbqt2krt513qmfwqt2mlveeeqfrufryxbqq+/55555gfpsci9n5pkjtzf9w2edyc554ncmwfe4508xcnhm+sa0t0gcvy5xalqkqciddhx/plf597oxq8iwbt/+zjxw9qqpdpbtorxbxlmqake5hoiieicnfzeurff2ya6+ulazyybndy8u8btwjzvwo3nzsxzkrfv15zhw8mwivjrreoy08epq0szaaja4xnwfbjx8hcpbyeiik8i3ocw/gtryg3mnxmuhczwnj4tbkqzimoo/ywsqkpj0zmnczyrc0jwlp2ehxvrcdydd4gtaely+8dpy5zp+xx9szrnae1w8hbp1ujhfrt1n9gdy196dugkr88mefw4toagbufj2zaikk6azooyp34bafkyqxnuyh71yoia+np+96ooic55dqaygify5cee1kbdoibsn1ccaeq8ndzek1v49f81rkrub4camkj6hr98a9kq7ba2xqijibja45g8m8cxctx+agg5x2nau3hagxesatxi40hew4ljarekxjfdrakg9uppu97jr3+mhier8zqh47gpppem0apt616jmbn75cgeti2i4glixd7j0e/vvgved8c+eyihr+73piaiihiaxzujth4c6vgjortadc8b1bfrjcapenunogh4al6fw0xdobwkgil9unupty6iekb9ep3hrzpvz8bzbtiuai+fabjqkkaclrib0frsxwuq04j019bk/hvysosz8bbwenbapj2ibeqjimzunx3d23uoee0sd+bopkwoepjydkqxfkjhw33wthjyea/rfmma6c7exoly7bnvenfyjw/xmko5iikege0e4kkabuq0ickj5zhb9pbg06sdt9u+np6q9apqmtz6qslpsacclcinqwbkswkiuzakgvscafg3x3tztr5pwsaqgkxkbjrl23edibhtirjwwnuehmtdfb5epiyaun4tst+i5m1pv20nhscbfc4zvr8ggkq8apow8dhvmtye5it9glqpz+dfnolisufc040dob2sgroqgdcyhryo2ksydbkbjc3fuhjx+euufa/sebdxshb4ueq8qjgaclubiatozphuvcvywqsgpcebclkinks8kw0trmzzxdlmiiqibfd4sieatng8bbhjvxdziznfpqzgba8ihhygdwqgx6ljkrkpa7odalmwrrdfxicmjph3d4uep6bwdfjh2ba7emagd41nqmmuhr3kj4cihvft0atdw/qaz9qf6gtm8cdiywhwiojxk7c+a3yr8sts+oaei29wj1fpyb2ogglgqc4kzwbegbps6b2obtjqbsqi4cee+mfqgl47mx2avfkn70h+gq9xer4skv7jgfficg8ihhykdzo8pas0gwda15a3y3wbqbwft0wmd0szi6ji2kbj6rar0we0kf0qetmeek0ylic1ebif8qktmqeisog0plxjpwmqu4efwqmbnzs6og83sivim4d6qiqntjilnfoqsihlpgtoagcpoghxpa4vt8dtpbmwdubqzbd15ggrsatcowhfzfiwfudkife6auwf0bnkzroiyrqmj19qum4mlnau0s6mjf/btsbqk7eb9m1g9giqi29euglewdiadyompyoqttzelv3qkrpge1ikjyxh6o9nkwcmd8giehb9o0+ieuvhagdx/5homen6et0fty00npq03snzj3o6vociapvt5m1tqcstick8ajytx/kxnwywuyftayonijhsye/qgqkigadbg6umc8ibp26+ugkqdj48temcegqrauhrppqkgfhepnumekt3cccugkt30zn5qtqdoqsawsm0jcla4fcgehiitx7iitsg9g76e+4muy5w0aqmj65lkjaicpi70f/otqkim6cxvt2eqw3kzulerdg6aeewkya0zminp2aebcod+umpo2ciioaabgfnn46g06ilvhmot05eymejvsv9e1pdqffenzzbgpmqacwqif0axuavdb/tzs6iywyhd4oocb4ubq/t29genrffurmdb6hfaoh//wp7cc82cac2xqaaaabjru5erkjggg=` is not a known variable.
  • `canvas.style.width` is not a known variable.
  • `canvas.style.height` is not a known variable.
  • `this.canvas` is not a known variable.
  • `runner.updatecanvasscaling` is not a known variable.
  • `this.width` is not a known variable.
  • `this.collisionboxes[i]` is not a known variable.
  • `this.containerel.style.webkitanimation` is not a known variable.
  • `runner.keycodes` is not a known variable.
  • `input[type` is not a known variable.
  • `this.distancemeter` is not a known variable.
  • `gameoverpanel.prototype` is not a known variable.
  • `cloud.prototype` is not a known variable.
  • `this.cloudspeed` is not a known variable.
  • `this.config[setting]` is not a known variable.
  • `sourcewidth` is not a known variable.
  • `obstacle.max_obstacle_length` is not a known variable.
  • `trex.config` is not a known variable.
  • `horizonline.prototype` is not a known variable.
  • `sourcenode.buffer` is not a known variable.
  • `this.height` is not a known variable.
  • `obstacle.prototype` is not a known variable.
  • `this.currentdistance` is not a known variable.
  • `this.jumpcount` is not a known variable.
  • `trex.prototype` is not a known variable.
  • `l` is not a known variable.
  • `this.timer` is not a known variable.
  • `distancemeter.ypos` is not a known variable.
  • `this.canvasctx.fillstyle` is not a known variable.
  • `horizonline.dimensions` is not a known variable.
  • `this.containerwidth` is not a known variable.
  • `this.collisionboxes` is not a known variable.
  • `this.runningtime` is not a known variable.
  • `crashed` is not a known variable.
  • `this.horizonoffsets` is not a known variable.
  • `canvas.classname` is not a known variable.
  • `this.highestscore` is not a known variable.
  • `this.trex.config[setting]` is not a known variable.
  • `this.minjumpheight` is not a known variable.
  • `this.highscore` is not a known variable.
  • `url('data:image/png;base64,ivborw0kggoaaaansuheugaaafgaaabeagmaaadaoju6aaaadfbmvex39/f////39/dtu1nomobdaaaaanrstlmaahatztgaaacdsurbvhhe7dihdgqhaepr6jv7urnkn3pebkiiiccqsdfnl8/uvne0da/r0p7bttzjfkeslo8nx6yuypj8ico48ie+gga4xsqyywo4lwupspjh4i8s5vg8z7rhkeeze2frnc/y5ortu7nrc26bcknwktep2xuet5on/f2ylqlaqgwt+aczixz9aficygaaaabjru5erkjggg=` is not a known variable.
  • `this.soundfx[index]` is not a known variable.
  • `this.jumpvelocity` is not a known variable.
  • `this.speeddrop` is not a known variable.
  • `this.y` is not a known variable.
  • `this.jumpspotx` is not a known variable.
  • `obstacle.max_gap_coefficient` is not a known variable.
  • `this.xpos` is not a known variable.
  • `horizon.prototype` is not a known variable.
  • `js` is not a known variable.
  • `this.imagesloaded` is not a known variable.
  • `(e.type=` is not a known variable.
  • `runner.prototype` is not a known variable.
  • `this.resizetimerid_` is not a known variable.
  • `this.containerel.style.width` is not a known variable.
  • `playsound` is not a known variable.
  • `this.dimensions[dimension]` is not a known variable.
  • `this.currentanimframes` is not a known variable.
  • `this.remove` is not a known variable.
  • `canvasctx.strokestyle` is not a known variable.
  • `this.config` is not a known variable.
  • `url('data:image/png;base64,ivborw0kggoaaaansuheugaaabwaaaaecaqaaacvzlyuaaabyeleqvr4xr3vmuuvurzh8xo98jgkgikenkrd0krgduvdqy0h2sic4iuiiktl4avqt1cdbjujwo1kxxs6cwdhw7tcjwwoc5hrx+uzgnno5cxio/75jd/+qzf9mzjskvu7dru1zrv9g9ir5hsa4nii83+ga9zi1ni1d6twae1trlqmuuufdthzmqefgo4nkr+f3digdduuhpyd1isomqdgjgufgqakeocxwe/bvtarjbvwc0cgy7gnlgiznsd1gp4epvn4etylyruczcj34hymp4e7gdajds7fcb48z8aj8fmi4tjoubkzz2yburqmlsbutiz+dfdvubqoaihvavplvhxffmaqv45r9gehnr3y3hcaflsgsmpgiizr+6z9amuknawqpjuca2h55pxgafbwkyrlq254ymjloaxphbckigcyml5rlla7gnrdxyuc7uhiclokdryade5pl00k//93nabqpgbdk8sfwgaaaabjru5erkjggg=` is not a known variable.
  • `this.started` is not a known variable.
  • `this.currentspeed` is not a known variable.
  • `this.msperframe` is not a known variable.
  • `this.crashed` is not a known variable.
  • `this.distancemeter.acheivement` is not a known variable.
  • `this.ypos` is not a known variable.
  • `bytes[i]` is not a known variable.
  • `runner.config` is not a known variable.
  • `this.paused` is not a known variable.
  • `cloud.config` is not a known variable.
  • `this.xpos[line2]` is not a known variable.
  • `url('data:image/png;base64,ivborw0kggoaaaansuheugaaaa4aaaapcaqaaab+htb/aaaareleqvr4xn3nsuocubzg0xvb3u0chr4geo5qihpt6gkcx0bxfsmerwj2kwqianavmluuoqapwu6g4l8h5bd9z/isps0hu/rqzqrncbuzll7u3rn4cspqfteroejjl1lgs7f4cedpdebmxyp86gaonyjky83anqhigk9whnjk16pkgo5n9buckzpf5j6m0pfuvg5mymoetfwoakalb26wdxavj7u5mezitqtkt//7sv/u96calqaaaabjru5erkjggg=` is not a known variable.
  • `this.dimensions` is not a known variable.
  • `this.xpos[1]` is not a known variable.
  • `this.dimensions.width` is not a known variable.
  • `lastobstacle.followingobstaclecreated` is not a known variable.
  • `this.trex` is not a known variable.
  • `this.containerel.classname` is not a known variable.
  • `deltatime` is not a known variable.
  • `paint` is not a known variable.
  • `this.config.iniital_jump_velocity` is not a known variable.
  • `this.jumping` is not a known variable.
  • `this.touchcontroller` is not a known variable.
  • `distancemeter.dimensions` is not a known variable.
  • `this.bumpthreshold` is not a known variable.
  • `this.maxscore` is not a known variable.
  • `this.containerel.style.height` is not a known variable.
  • `this.sourcexpos[line1]` is not a known variable.
  • `this.distanceran` is not a known variable.
  • `this.drawpending` is not a known variable.
  • `trex.animframes` is not a known variable.
  • `this.reachedminheight` is not a known variable.
  • `this.detailsbutton` is not a known variable.
  • `this.trex.speeddrop` is not a known variable.
  • `this.container` is not a known variable.
  • `gameoverpanel.dimensions` is not a known variable.
  • `this.x` is not a known variable.
  • `this.typeconfig` is not a known variable.
  • `this.defaultstring` is not a known variable.
  • `runner.events` is not a known variable.
  • `this.horizon` is not a known variable.
  • `this.touchcontroller.classname` is not a known variable.
  • `this.sourcexpos` is not a known variable.
  • `trex.status` is not a known variable.
  • `this.canvasdimensions.height` is not a known variable.
  • `this.groundypos` is not a known variable.
  • `this.animstarttime` is not a known variable.
  • `this.activated` is not a known variable.
  • `myclasses[i].style.display` is not a known variable.
  • `url('data:image/png;base64,ivborw0kggoaaaansuheugaaafiaaabkcaaaaaawzdj3aaaaanrstlma/1uriruaaabisurbvhhe7cy7cyawfabad8z+hyewskktw+efa3kgsu4guk2kti71sqwyjeyxirls2aemqczfkcunujny/1kppcbkja+wsqvsqvqqawmy5tlzkpvpqcivsuuepvkztvypvf5dhe3/nzr+1aaaaabjru5erkjggg=` is not a known variable.
  • `this.cloudfrequency` is not a known variable.
  • `this.canvasdimensions` is not a known variable.
  • `this.cloudgap` is not a known variable.
  • `this.obstacleimgs` is not a known variable.
  • `this.acheivement` is not a known variable.
  • `this.images` is not a known variable.
  • `window['runner']` is not a known variable.
  • `this.currentframe` is not a known variable.
  • `this.trex.playingintro` is not a known variable.
  • `this.canvasctx` is not a known variable.
  • `this.canvas.width` is not a known variable.
  • `this.flashiterations` is not a known variable.
  • `this.gapcoefficient` is not a known variable.
  • `runner.imagesources` is not a known variable.
  • `document.getelementbyid("main-frame-notchrome").style.display` is not a known variable.
  • `obstacle.types` is not a known variable.
  • `e.type=` is not a known variable.
  • `this.playingintro` is not a known variable.
  • `this.flashtimer` is not a known variable.
  • `trex.blink_timing` is not a known variable.
  • `this.textsprite` is not a known variable.
  • `this.time` is not a known variable.
  • `this.canvasctx.globalalpha` is not a known variable.
  • `this.horizonline` is not a known variable.
  • `this.obstacles` is not a known variable.
  • `url('data:image/png;base64,ivborw0kggoaaaansuheugaaackaaaaycaaaaadkgq1yaaaaanrstlma/1uriruaaablsurbvhhe7doxdqagcerrdrza/scwscnyskihwaror9+vr7bjkzbkrspkea45k8pquoyqcunkbmuzpnkd8kvm/erlkvfk8neccyu7iott35dvjriaaaaasuvork5cyii` is not a known variable.
  • `distance` is not a known variable.