 contains the answer.TORONTO, August 23, 2019 – Committed to developing unique content for a global audience, Corus Studios, a division of Corus Entertainment, announced today that Rust Valley Restorers (8×60), will be available worldwide on Netflix on August 23. The series is among the slate of original programming developed by Corus Studios for HISTORY®, representing a strategic move by Corus Studios to complement its robust slate of Lifestyle series by investing further in factual programming. Rust Valley Restorers garnered attention in Canada this past winter ranking among the Top 5 programs on HISTORY*.
let userChoice = '';
let computerChoice = '';
let choiceArr = ['rock', 'paper','scissors'];
let scoreComp = 0;
let scoreUser = 0;
let winner;

// listen for user choice
window.addEventListener('click', function(e) {
  if (e.target.id === 'rock' || e.target.id === 'paper' || e.target.id ==='scissors') {
    userChoice = e.target.id;
    // give styling to show new user choice
    clearSelection();
    document.getElementById(userChoice).style.border = '5px solid mistyrose';
  }
  
  // when user clicks play
  else if (e.target.id === 'play-button') {
    if (userChoice === '') {
      alert('Please pick an option! :)');
    } else {
      document.getElementById('timer').innerText = '3';
      findWinner();
      timer();
    }
  }
});

//computer choice
function randomPick() {
  let randomNum = Math.floor(Math.random() * 3);
  let choice = choiceArr[randomNum];
  return choice;
}

function timer() {
  if (document.getElementById('timer').innerText === '3') {
    setTimeout(function() {document.getElementById('timer').innerText = '2'}, 700);
    setTimeout(timer, 710);
  }
  else if (document.getElementById('timer').innerText === '2') {
    setTimeout(function() {document.getElementById('timer').innerText = '1'}, 700);
    setTimeout(timer, 710);
  }
  else if (document.getElementById('timer').innerText === '1') {
    setTimeout(showRound, 710);
  }
}

function clearSelection() {
  // clear style on all choices before assigning style to new choice
  document.getElementById('rock').style.border = '5px solid #ffffff';
  document.getElementById('paper').style.border = '5px solid #ffffff';
  document.getElementById('scissors').style.border = '5px solid #ffffff';
}

function findWinner() {
  computerChoice = randomPick();
  console.log('computerChoice', computerChoice, 'userChoice',userChoice)
  //check all possible combos and assign points
  if (userChoice === computerChoice) {
    // alert("it's a tie!");
    winner = 'tie';
  } else if (userChoice === 'rock' && computerChoice === 'paper') {
    winner =  'comp';
  } else if (userChoice === 'rock' && computerChoice ==='scissors') {
    winner = 'user';
  } else if (userChoice === 'paper' && computerChoice ==='scissors') {
    winner =  'comp';
  } else if (userChoice === 'paper' && computerChoice === 'rock') {
    winner = 'user';
  } else if (userChoice ==='scissors' && computerChoice === 'rock') {
    winner =  'comp';
  } else if (userChoice ==='scissors' && computerChoice === 'paper') {
    winner = 'user';
  }

  //clear variables for next round
  clearSelection();
}

function showRound() {
  document.getElementById('computer').innerText = computerChoice;
  document.getElementById('user').innerText = userChoice;
  if (winner === 'tie') {
    console.log('tie');
    document.getElementById('timer').innerText = "it's a tie!";
  } 
  else if (winner === 'user') {
    console.log('user');
    document.getElementById('timer').innerText = 'you won!';
  } 
  else if (winner === 'comp') {
    console.log('comp');
    document.getElementById('timer').innerText = 'computer won!';
  }
  addPoint();
  
  // if either score equals 3, execute checkScores to assign a winner
  if (scoreUser === 3 || scoreComp === 3) {
    setTimeout(checkScores, 1600);
  }  
  winner = '';
  userChoice = '';
  computerChoice = '';
  setTimeout(clearRound, 1500);
}

function clearRound() {
  document.getElementById('timer').innerText = '';
  document.getElementById('computer').innerText = '';
  document.getElementById('user').innerText = '';
}

function addPoint(){
  let displayScore;
  if (winner === 'user') {
    scoreUser += 1;
    displayScore ='score'+ scoreUser.toString();
    document.getElementById('score-user').innerText = displayScore;
  } else if (winner === 'comp') {
    scoreComp += 1;
    displayScore ='score'+ scoreComp.toString();
    document.getElementById('score-comp').innerText = displayScore;
  }
}

function checkScores() {
  if (scoreUser === 3) {
    alert('Congrats, you beat the computer!');
  } else if (scoreComp === 3) {
    alert('Sorry, the computer has won!');
  }
  scoreUser = 0;
  scoreComp = 0;
  document.getElementById('score-user').innerText ='score 0';
  document.getElementById('score-comp').innerText ='score 0';
}&gt; These were the reason you provided for why you concluded the video the was fake, are they not?

They were not.  Because this video is pretty clearly fake. Unless you struggle with social situations or the way people act in general I don't see how you could think this really happened. No one is acting rationally in this video.As you may know, I’m working on a 3D engine for WebGL (Babylon.js) during my spare time. A 3D engine is a place where matrices, vectors and quaternions live. And there may be tons of them!
Please note that everything done here applies to Internet Explorer 11 and Windows 8.1 apps developed with HTML5/JavaScript.
multiply is used more than 12,000 times during a period of two seconds!
It is a bit brutal but there is nothing complex.
As you can see the garbage collector (orange bars) is called very often! And this is not a good thing because it can lead to visual glitches due to interruption in your frames’ rendering.
This capture shows an important thing: The garbage collector runs on a background thread (12516) which is really good to free time for the render thread (you can see that the garbage collector runs simultaneously with the animation frame callback since babylon.js uses requestAnimationFrame to render each frame).
Even if the garbage collector of IE11 runs on a background thread, we have to reduce the memory pressure. This is because our code can run on a low end hardware where threads are not available or because not all browsers have a background garbage collector.
Almost the same thing without the instantiation! But removing 6,000 instantiations per second can be a great optimization!
The point here is that you have to create a storage matrix for each operation (the matrix is created once inside the constructor and reuse each time the multiply operation needs to be used).
Great isn’t it? Obviously the garbage collector will be called but in a less frequent way.
With this small piece of code, you can have an array that can be reset in order to reuse its memory. You can create it with an estimated size and just call reset() to, well, reset it.
Please note that the optimizations described here are useful in my case because I was looking for performances and I did not care about memory consumptions. Indeed, I had to use a lot of memory to create the required cached objects.
For instance, the GC friendly arrays have to reserve a lot of memory that will not necessary be used. The tradeoff between memory and performance must be taken seriously.
Middle-earth is gathering in Minas Tirith to celebrate the wedding of Arwen and Aragorn! Earn titles, an emote, a kite, and more by completing Deeds associated with the Midsummer Festival! Wedding themed gifts have also been added to daily and weekly Hobbit Gifts..
An auto-bestow quest is available that provides a map to Minas Tirith (Midsummer) as well. Once there, an introduction quest will get you started on the Midsummer Festival