diff --git a/.eslintrc b/.eslintrc index bb1bb14d8..09100e472 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,5 +1,17 @@ { "extends": [ "wesbos" - ] + ], + "rules": { + "no-console": 0, + "prettier/prettier": [ + "error", + { + "trailingComma": "es5", + "singleQuote": true, + "printWidth": 120, + "tabWidth": 2 + } + ] + } } diff --git a/exercises/16 - Debugging/debugging-FINISHED.js b/exercises/16 - Debugging/debugging-FINISHED.js index f738241ef..ffa801f7a 100644 --- a/exercises/16 - Debugging/debugging-FINISHED.js +++ b/exercises/16 - Debugging/debugging-FINISHED.js @@ -3,6 +3,7 @@ const people = [ { name: 'Scott', cool: true, country: 'Merica' }, { name: 'Snickers', cool: false, country: 'Dog Country' }, ]; +console.table(people); /* Victor Mono */ // New Font! @@ -10,24 +11,6 @@ people.forEach((person, index) => { console.log(person.name); }); -// console.table(people); - -// Console Methods - -// Callstack, Stack Trace - -// Grabbing Elements - -// Breakpoints - -// Scope - -// Network Requests - -// Break On Attribute - -// Some Setup Code - function doALotOfStuff() { console.group('Doing some stuff'); console.log('Hey Im one'); @@ -37,7 +20,7 @@ function doALotOfStuff() { } function doctorize(name) { - // console.count(`running Doctorize for ${name}`); + console.count(`running Doctorize for ${name}`); return `Dr. ${name}`; } @@ -60,8 +43,7 @@ function bootstrap() { const button = document.querySelector('.bigger'); button.addEventListener('click', function(e) { - const newFontSize = - parseFloat(getComputedStyle(e.currentTarget).fontSize) + 1; + const newFontSize = parseFloat(getComputedStyle(e.currentTarget).fontSize) + 1; e.currentTarget.style.fontSize = `${newFontSize}px`; }); diff --git a/exercises/16 - Debugging/debugging-START.js b/exercises/16 - Debugging/debugging-START.js deleted file mode 100644 index 83a140798..000000000 --- a/exercises/16 - Debugging/debugging-START.js +++ /dev/null @@ -1,58 +0,0 @@ -const people = [ - { name: 'Wes', cool: true, country: 'Canada' }, - { name: 'Scott', cool: true, country: 'Merica' }, - { name: 'Snickers', cool: false, country: 'Dog Country' }, -]; - -people.forEach((person, index) => { - console.log(person.name); -}); - -// Console Methods - -// Callstack - -// Grabbing Elements - -// Breakpoints - -// Scope - -// Network Requests - -// Break On Attribute - -// Some Setup Code - -function doctorize(name) { - return `Dr. ${name}`; -} - -function greet(name) { - doesntExist(); - return `Hello ${name}`; -} - -function go() { - const name = doctorize(greet('Wes')); - console.log(name); -} - -const button = document.querySelector('.bigger'); -button.addEventListener('click', function(e) { - const newFontSize = - parseFloat(getComputedStyle(e.currentTarget).fontSize) + 1; - e.currentTarget.style.fontSize = `${newFontSize}px`; -}); - -// A Dad joke fetch -async function fetchDadJoke() { - const res = await fetch('https://icanhazdadjoke.com/', { - headers: { - Accept: 'text/plain', - }, - }); - const joke = await res.text(); - console.log(joke); - return joke; -} diff --git a/exercises/20 - The DOM/DOM-Cardio.html b/exercises/20 - The DOM/DOM-Cardio.html index 9849fb5b1..72848229c 100644 --- a/exercises/20 - The DOM/DOM-Cardio.html +++ b/exercises/20 - The DOM/DOM-Cardio.html @@ -6,6 +6,8 @@ Dom Cardio + diff --git a/exercises/20 - The DOM/DOM-Cardio.js b/exercises/20 - The DOM/DOM-Cardio.js index 3ca90e523..fca3c5811 100644 --- a/exercises/20 - The DOM/DOM-Cardio.js +++ b/exercises/20 - The DOM/DOM-Cardio.js @@ -1,13 +1,24 @@ // Make a div +const div = document.createElement('div'); // add a class of wrapper to it +div.classList.add('wrapper'); // put it into the body +document.body.appendChild(div); // make an unordered list - // add three list items with the words "one, two three" in them // put that list into the above wrapper +const listHtml = ` + +`; + +div.insertAdjacentHTML('afterbegin', listHtml); // create an image @@ -16,29 +27,78 @@ // add a class of cute // add an alt of Cute Puppy // Append that image to the wrapper +const imgWidth = 250; +const src = `https://picsum.photos/${imgWidth}`; +const img = `cute puppy `; + +div.insertAdjacentHTML('afterbegin', img); // with HTML string, make a div, with two paragraphs inside of it // put this div before the unordered list from above - // add a class to the second paragraph called warning +const htmlString = ` +
+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi aliquam fuga? Expedita.

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil deleniti alias harum quod, ad distinctio. Obcaecati, facere soluta.

+
+`; +const list = document.querySelector('ul'); +list.insertAdjacentHTML('beforebegin', htmlString); + // remove the first paragraph +const paragraphToKill = document.querySelector('p'); +paragraphToKill.remove(); // create a function called generatePlayerCard that takes in three arguments: name, age, and height - // have that function return html that looks like this: //
//

NAME — AGE

//

They are HEIGHT and AGE years old. In Dog years this person would be AGEINDOGYEARS. That would be a tall dog!

//
+function generatePlayerCard(name, age, height) { + const playerCardHtml = ` +
+

${name} — ${age}

+

They are ${height} and ${age} years old. In Dog years this person would be ${age * + 7}. That would be a tall dog!

+
+`; + return playerCardHtml; +} + // make a new div with a class of cards +const cardDiv = document.createElement('div'); +cardDiv.classList.add('cards'); + // Have that function make 4 cards +let cardsHTML = generatePlayerCard('wes', 12, 150); +cardsHTML += generatePlayerCard('scott', 12, 150); +cardsHTML += generatePlayerCard('kait', 12, 150); +cardsHTML += generatePlayerCard('snickers', 12, 150); + +const deleteBtn = ``; + // append those cards to the div // put the div into the DOM just before the wrapper element +cardDiv.innerHTML = cardsHTML; +div.insertAdjacentElement('beforebegin', cardDiv); + // Bonus, put a delete Button on each card so when you click it, the whole card is removed +const playerCards = document.querySelectorAll('.playerCard'); +playerCards.forEach(card => card.insertAdjacentHTML('beforeend', deleteBtn)); // select all the buttons! +const btns = document.querySelectorAll('.fa-trash'); + // make out delete function +const deleteCard = event => { + const buttonThatGotClicked = event.currentTarget; + buttonThatGotClicked.closest('.playerCard').remove(); +}; // loop over them and attach a listener +btns.forEach(btn => { + btn.addEventListener('click', deleteCard); +}); diff --git a/exercises/20 - The DOM/index.html b/exercises/20 - The DOM/index.html index 897ceb790..d22f454a5 100644 --- a/exercises/20 - The DOM/index.html +++ b/exercises/20 - The DOM/index.html @@ -46,12 +46,14 @@

Im an article

.round { border-radius: 50%; - transform: rotate(1turn) scale(2); + transform: rotate(1turn) scale(1.1); box-shadow: 0 0 10px black; } - + + + diff --git a/exercises/20 - The DOM/the-dom.js b/exercises/20 - The DOM/the-dom.js index e69de29bb..8996f85db 100644 --- a/exercises/20 - The DOM/the-dom.js +++ b/exercises/20 - The DOM/the-dom.js @@ -0,0 +1,44 @@ +// const p = document.querySelectorAll('div .item'); +// console.log(p); + +// const heading = document.querySelector('h2'); +// heading.textContent = "C'est moi qui ai fait ca"; +// console.log(heading.textContent); +// return all element in the tag +// InnerText only the text. + +// console.dir(heading); + +// const pizzaList = document.querySelector('.pizza'); +// console.log(pizzaList); +// // !! Pb is it renders the page again +// // pizzaList.textContent = `${pizzaList.textContent} 🍕`; +// // console.log(pizzaList.textContent); + +// // !! Better way is to use insert +// pizzaList.insertAdjacentText('afterbegin', '🍕'); +// pizzaList.insertAdjacentText('beforeend', '🍕'); + +// ?? classes +const img = document.querySelector('.nice'); +// img.classList.toggle('round'); +// console.log(img.classList); + +function toggleRound() { + img.classList.toggle('round'); +} + +img.addEventListener('click', toggleRound); + +// ?? Data Attributes +img.alt = "c'est une image mon gars"; // Setter +console.log(img.alt); // Getter +console.log(img.naturalWidth); // will return 0 if run from here, but the actual size if run in console. ==> Need to be loaded + +img.addEventListener('load', function() { + console.log(img.naturalWidth); +}); + +// !! DO NOT CREATE CUSTOM ATTRIBUTE +img.setAttribute('alt', "i've set the alt attribute via js!"); +console.log(img.getAttribute('alt')); diff --git a/exercises/29 - Events/events.js b/exercises/29 - Events/events.js index 768e5e7ce..efe3d6fef 100644 --- a/exercises/29 - Events/events.js +++ b/exercises/29 - Events/events.js @@ -49,5 +49,10 @@ const photoEl = document.querySelector('.photo'); photoEl.addEventListener('mouseenter', e => { console.log(e.currentTarget); + + // !! THIS KEYWORD CAN BE REMEMBERED AS REFERENCING + // !! WHAT IS LEFT OF THE DOT + // ici a gauche du listener dc this reference photoEl + console.log(this); }); diff --git a/exercises/33 - Etch-a-Sketch/etch-a-sketch.js b/exercises/33 - Etch-a-Sketch/etch-a-sketch.js index e69de29bb..668c85122 100644 --- a/exercises/33 - Etch-a-Sketch/etch-a-sketch.js +++ b/exercises/33 - Etch-a-Sketch/etch-a-sketch.js @@ -0,0 +1,78 @@ +// select elements canvas, and btn +const canvas = document.querySelector('#etch-a-sketch'); +const ctx = canvas.getContext('2d'); +const shakeButton = document.querySelector('.shake'); +const MOVE_AMOUNT = 30; +// set up canvas for drawing (make the line look round) +ctx.lineJoin = 'round'; +ctx.lineCap = 'round'; +ctx.lineWidth = MOVE_AMOUNT; + +// rainbow style stroke ==> cause it's cool +let hue = 0; +ctx.strokeStyle = `hsl(${hue}, 100%, 50%)`; + +// sets the starting point by putting a dot at a random canvas position +// make it random width and height and generates random nbr between 0 and width/height values +const { width, height } = canvas; // destructuring syntax + +let x = Math.floor(Math.random() * width); +let y = Math.floor(Math.random() * height); +ctx.beginPath(); // start the drawing +ctx.moveTo(x, y); // starting point (x, y) +ctx.lineTo(x, y); +ctx.stroke(); + +// write draw function (with destructuring syntax) +function draw({ key }) { + // increment hue value + hue += 5; + ctx.strokeStyle = `hsl(${hue}, 100%, 50%)`; + + ctx.beginPath(); + ctx.moveTo(x, y); + // move our x and why following user key stroke + switch (key) { + case 'ArrowUp': + y -= MOVE_AMOUNT; + break; + case 'ArrowDown': + y += MOVE_AMOUNT; + break; + case 'ArrowLeft': + x -= MOVE_AMOUNT; + break; + case 'ArrowRight': + x += MOVE_AMOUNT; + break; + default: + break; + } + ctx.lineTo(x, y); + ctx.stroke(); +} + +// write handler for keys +function handleKey(e) { + if (e.key.includes('Arrow')) { + e.preventDefault(); + draw({ key: e.key }); + } +} + +// clear canvas function +function clearCanvas() { + canvas.classList.add('shake'); + ctx.clearRect(0, 0, width, height); + canvas.addEventListener( + 'animationend', + function() { + canvas.classList.remove('shake'); + }, + { once: true } // this third arguments permit remove the listener at end of animation + ); +} + +// listen for arrow keys +window.addEventListener('keydown', handleKey); +shakeButton.addEventListener('click', clearCanvas); diff --git a/exercises/33 - Etch-a-Sketch/index.html b/exercises/33 - Etch-a-Sketch/index.html index 052ac17f6..aaadbf3ed 100644 --- a/exercises/33 - Etch-a-Sketch/index.html +++ b/exercises/33 - Etch-a-Sketch/index.html @@ -16,7 +16,7 @@ - + - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/00/a93ffeb683289be3a1cf2b5ac3881f.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/00/a93ffeb683289be3a1cf2b5ac3881f.v8 deleted file mode 100644 index b0851599b..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/00/a93ffeb683289be3a1cf2b5ac3881f.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/00/b2b012b0dbca7b07a7ed5655fc9579.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/00/b2b012b0dbca7b07a7ed5655fc9579.v8 deleted file mode 100644 index 32d53a021..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/00/b2b012b0dbca7b07a7ed5655fc9579.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/01/8d93749aadc0aa7de3acbeecb1c311.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/01/8d93749aadc0aa7de3acbeecb1c311.blob deleted file mode 100644 index abbf15411..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/01/8d93749aadc0aa7de3acbeecb1c311.blob +++ /dev/null @@ -1,71 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - // draw the small face - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - // faceCtx.drawImage( - // faceCanvas, // source - // face.x, // where do we start the source pull from? - // face.y, - // SIZE, - // SIZE, - // // Drawing args - // face.x, - // face.y, - // face.width, - // face.height - // ); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/01/a40ced117609dac9e5b1f192cea0e1.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/01/a40ced117609dac9e5b1f192cea0e1.blob deleted file mode 100644 index c7af26cb1..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/01/a40ced117609dac9e5b1f192cea0e1.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","requestAnimationFrame","face","top","left","boundingBox","strokeStyle","lineWidth","strokeRect","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.58067b7b.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/01/bfb61dc44662113751f6aa5ece14ed.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/01/bfb61dc44662113751f6aa5ece14ed.blob deleted file mode 100644 index a29e3081b..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/01/bfb61dc44662113751f6aa5ece14ed.blob +++ /dev/null @@ -1,413 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/03/2a34de971efa8d20c009468dbe016d.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/03/2a34de971efa8d20c009468dbe016d.blob deleted file mode 100644 index 415676635..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/03/2a34de971efa8d20c009468dbe016d.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/03/9f4989550415eb82c049b515585916.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/03/9f4989550415eb82c049b515585916.v8 deleted file mode 100644 index edfe5a5c4..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/03/9f4989550415eb82c049b515585916.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/03/a6fae4eef91bf8bc852ccebcc688a5.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/03/a6fae4eef91bf8bc852ccebcc688a5.v8 deleted file mode 100644 index d2951abcf..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/03/a6fae4eef91bf8bc852ccebcc688a5.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/03/ea3c9a30498269ad686adebec60b51.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/03/ea3c9a30498269ad686adebec60b51.v8 deleted file mode 100644 index a3e5f6c5b..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/03/ea3c9a30498269ad686adebec60b51.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/04/16b46c604d054da145d1125d697c83.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/04/16b46c604d054da145d1125d697c83.v8 deleted file mode 100644 index 96e2777a9..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/04/16b46c604d054da145d1125d697c83.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/04/9332e68d4c97c8f5b826069ba44aef.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/04/9332e68d4c97c8f5b826069ba44aef.blob deleted file mode 100644 index 4c6d00696..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/04/9332e68d4c97c8f5b826069ba44aef.blob +++ /dev/null @@ -1,379 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/09/fdbd4edf08489bf68defc081b982f5.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/09/fdbd4edf08489bf68defc081b982f5.v8 deleted file mode 100644 index f43d3ceb2..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/09/fdbd4edf08489bf68defc081b982f5.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/0a/bab1788a6b41bf60ea9882c5fbfeed.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/0a/bab1788a6b41bf60ea9882c5fbfeed.v8 deleted file mode 100644 index 1ae6700c9..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/0a/bab1788a6b41bf60ea9882c5fbfeed.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/0b/4a200cd37ad219f6de13b88f65eaca.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/0b/4a200cd37ad219f6de13b88f65eaca.blob deleted file mode 100644 index 4b8baa30c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/0b/4a200cd37ad219f6de13b88f65eaca.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/0b/64d5f86722c1287c9fb0c04bba9c9d.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/0b/64d5f86722c1287c9fb0c04bba9c9d.v8 deleted file mode 100644 index db7ec106f..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/0b/64d5f86722c1287c9fb0c04bba9c9d.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/0b/ba6d6c3ebb2176bd76d1ca5944ad32.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/0b/ba6d6c3ebb2176bd76d1ca5944ad32.blob deleted file mode 100644 index bd8af1d70..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/0b/ba6d6c3ebb2176bd76d1ca5944ad32.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/0b/d489282c30baeef64fa7b880659862.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/0b/d489282c30baeef64fa7b880659862.v8 deleted file mode 100644 index 0c0f5b5f0..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/0b/d489282c30baeef64fa7b880659862.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/0c/5e868ce7f691b9b75f5819d67a719e.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/0c/5e868ce7f691b9b75f5819d67a719e.v8 deleted file mode 100644 index 9579cbc0d..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/0c/5e868ce7f691b9b75f5819d67a719e.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/0c/c0d43d015e20a2250cd0e59a516ec1.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/0c/c0d43d015e20a2250cd0e59a516ec1.blob deleted file mode 100644 index f3367b95c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/0c/c0d43d015e20a2250cd0e59a516ec1.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","strokeStyle","lineWidth","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","requestAnimationFrame","face","top","left","boundingBox","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.690060ff.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/0c/e3378d21feb552a2bffa24bef63c99.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/0c/e3378d21feb552a2bffa24bef63c99.blob deleted file mode 100644 index 062ca094b..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/0c/e3378d21feb552a2bffa24bef63c99.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.ae4da779.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/0d/3163a4bca2417f1991430b5d62fce0.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/0d/3163a4bca2417f1991430b5d62fce0.blob deleted file mode 100644 index 195d69b5b..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/0d/3163a4bca2417f1991430b5d62fce0.blob +++ /dev/null @@ -1,49 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) {} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/0d/9215d29accb3ff59ee7a80e1238e38.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/0d/9215d29accb3ff59ee7a80e1238e38.blob deleted file mode 100644 index 8c7e22b8a..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/0d/9215d29accb3ff59ee7a80e1238e38.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","forEach","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","console","clear","hmrApply","v","hmrAcceptRun","window","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","log","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.66840505.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/0e/57baf77c3acffb02945087905d7505.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/0e/57baf77c3acffb02945087905d7505.blob deleted file mode 100644 index e7b702143..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/0e/57baf77c3acffb02945087905d7505.blob +++ /dev/null @@ -1,66 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/0e/b17f1e14436b677f355b6d1e97db3b.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/0e/b17f1e14436b677f355b6d1e97db3b.blob deleted file mode 100644 index 0009db084..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/0e/b17f1e14436b677f355b6d1e97db3b.blob +++ /dev/null @@ -1,73 +0,0 @@ -const faceDetector = new window.FaceDetector(); -const video = document.querySelector('video.webcam'); -const canvas = document.querySelector('canvas.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('canvas.face'); -const faceCtx = faceCanvas.getContext('2d'); -const SCALE = 1.2; -const SIZE = 10; - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ctx.drawImage(video, 0, 0, canvas.width, canvas.height); - - ctx.clearRect(0, 0, canvas.width, canvas.height); // paintFace(faces); - - faces.forEach(drawFace); // faces.forEach(censor); - // faces.forEach(censor); - // faces[0] && createImageOfFace(faces[0].boundingBox); - // drawMouth(faces[0]); - - requestAnimationFrame(detect); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // First draw it small - - faceCtx.drawImage(video, // Where should I grab the photo from? - face.x, // from what x and y should I start capturing from? - face.y, face.width, // how wide and high should I capture from? - face.height, face.x, // now to draw it, where should I start x and y? - face.y, SIZE, // how wide and high should it be? - SIZE); - const width = face.width * SCALE; - const height = face.height * SCALE; // then draw it back on, but scaled up - - faceCtx.drawImage(faceCanvas, // Where should I grab the photo from? - face.x, // from what x and y should I start capturing from? - face.y, // from what x and y should I start capturing from? - SIZE, SIZE, // Drawing - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 1; - ctx.strokeRect(left, top, width, height); - ctx.stroke(); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/0f/e60682561ac046f9c6bd000bea5d23.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/0f/e60682561ac046f9c6bd000bea5d23.blob deleted file mode 100644 index fa80360f3..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/0f/e60682561ac046f9c6bd000bea5d23.blob +++ /dev/null @@ -1,65 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/10/15bacef8e4d77b3dc8a5cd0c1fc606.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/10/15bacef8e4d77b3dc8a5cd0c1fc606.v8 deleted file mode 100644 index 9d3a3e526..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/10/15bacef8e4d77b3dc8a5cd0c1fc606.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/11/028c83a3d237ddfb9ccc19401312c4.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/11/028c83a3d237ddfb9ccc19401312c4.v8 deleted file mode 100644 index e3eab5f3b..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/11/028c83a3d237ddfb9ccc19401312c4.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/11/b5eac72d55e43ea17d84e692ea843f.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/11/b5eac72d55e43ea17d84e692ea843f.v8 deleted file mode 100644 index dbe1252d1..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/11/b5eac72d55e43ea17d84e692ea843f.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/12/3a42adc585eb11a8e38721fa49d3c0.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/12/3a42adc585eb11a8e38721fa49d3c0.blob deleted file mode 100644 index 25d04ec33..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/12/3a42adc585eb11a8e38721fa49d3c0.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","forEach","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.0437ff71.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/12/fb53641455ba665467c9c7fed89c9d.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/12/fb53641455ba665467c9c7fed89c9d.blob deleted file mode 100644 index 9b2209abc..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/12/fb53641455ba665467c9c7fed89c9d.blob +++ /dev/null @@ -1,66 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 1; - ctx.strokeRect(left, top, width, height); - ctx.stroke(); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/13/038851ba0276f51e74540f5eca07f3.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/13/038851ba0276f51e74540f5eca07f3.v8 deleted file mode 100644 index 1b8f8fcee..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/13/038851ba0276f51e74540f5eca07f3.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/13/51ccb6b1a04c4d373affeb601709d9.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/13/51ccb6b1a04c4d373affeb601709d9.blob deleted file mode 100644 index d24dcc445..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/13/51ccb6b1a04c4d373affeb601709d9.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/13/9ec74c05eaad99ee4df076a465dcc3.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/13/9ec74c05eaad99ee4df076a465dcc3.v8 deleted file mode 100644 index 35c6d035f..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/13/9ec74c05eaad99ee4df076a465dcc3.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/14/045b4a4dc956acf5d66a52f87e8831.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/14/045b4a4dc956acf5d66a52f87e8831.blob deleted file mode 100644 index d945e909c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/14/045b4a4dc956acf5d66a52f87e8831.blob +++ /dev/null @@ -1,73 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const optionsInputs = document.querySelectorAll('.controls input[type="range"]'); -console.log(optionsInputs); -const options = { - SIZE: 10, - SCALE: 1.35 -}; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, options.SIZE, options.SIZE); // draw the small face back on, but scale up - - const width = face.width * options.SCALE; - const height = face.height * options.SCALE; - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, options.SIZE, options.SIZE, // Drawing args - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/14/215984616f78efc5e11322369545d0.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/14/215984616f78efc5e11322369545d0.v8 deleted file mode 100644 index 923632a1a..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/14/215984616f78efc5e11322369545d0.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/14/5f2dadf37c2c03beefd306f2ae5c26.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/14/5f2dadf37c2c03beefd306f2ae5c26.blob deleted file mode 100644 index 52e6c1545..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/14/5f2dadf37c2c03beefd306f2ae5c26.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/14/83d4445c761fba545aeb0a025610fd.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/14/83d4445c761fba545aeb0a025610fd.blob deleted file mode 100644 index 0d5ac0ed9..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/14/83d4445c761fba545aeb0a025610fd.blob +++ /dev/null @@ -1,408 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/14/f79ffe624d00deeaa525d125ed0a03.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/14/f79ffe624d00deeaa525d125ed0a03.blob deleted file mode 100644 index 6b0a58e13..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/14/f79ffe624d00deeaa525d125ed0a03.blob +++ /dev/null @@ -1,395 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/17/6e5cd264d41310cd577b21db72dfb9.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/17/6e5cd264d41310cd577b21db72dfb9.v8 deleted file mode 100644 index 06714a910..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/17/6e5cd264d41310cd577b21db72dfb9.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/17/7af2c2382d36b262217f68199cf35f.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/17/7af2c2382d36b262217f68199cf35f.v8 deleted file mode 100644 index 897d44edc..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/17/7af2c2382d36b262217f68199cf35f.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/17/a61e0c13ea4b54821330d1cad567ac.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/17/a61e0c13ea4b54821330d1cad567ac.v8 deleted file mode 100644 index 26f164aeb..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/17/a61e0c13ea4b54821330d1cad567ac.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/18/56dbf38724100bb2a050512d45c038.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/18/56dbf38724100bb2a050512d45c038.blob deleted file mode 100644 index bfa24e9f7..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/18/56dbf38724100bb2a050512d45c038.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","drawImage","x","y","SCALE","imageSmoothingEnabled","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.a449358b.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/18/c82086164c9bb68f7f453ea0417c02.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/18/c82086164c9bb68f7f453ea0417c02.blob deleted file mode 100644 index a43e059f6..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/18/c82086164c9bb68f7f453ea0417c02.blob +++ /dev/null @@ -1,409 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/19/d457716ec71478cd1fe19f2676a8a4.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/19/d457716ec71478cd1fe19f2676a8a4.v8 deleted file mode 100644 index 518874a62..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/19/d457716ec71478cd1fe19f2676a8a4.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1a/385df5b40bbe272347d6ae50011f6f.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/1a/385df5b40bbe272347d6ae50011f6f.blob deleted file mode 100644 index 85156efb2..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/1a/385df5b40bbe272347d6ae50011f6f.blob +++ /dev/null @@ -1,66 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 1000; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1a/b67078f0b60207aee20d7cfe811840.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/1a/b67078f0b60207aee20d7cfe811840.v8 deleted file mode 100644 index e211e90ee..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/1a/b67078f0b60207aee20d7cfe811840.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1a/ca5de7f07d46e479945f42c19f9645.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/1a/ca5de7f07d46e479945f42c19f9645.v8 deleted file mode 100644 index a15825aa1..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/1a/ca5de7f07d46e479945f42c19f9645.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1b/0e4e0f3f67b246cf3cdabe940a29e3.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/1b/0e4e0f3f67b246cf3cdabe940a29e3.v8 deleted file mode 100644 index bbc65af8d..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/1b/0e4e0f3f67b246cf3cdabe940a29e3.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1b/26f8c1fc588c9bba17f216f9967a56.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/1b/26f8c1fc588c9bba17f216f9967a56.v8 deleted file mode 100644 index 94f1551dd..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/1b/26f8c1fc588c9bba17f216f9967a56.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1b/8e52ecaa713f759c2786d055f63699.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/1b/8e52ecaa713f759c2786d055f63699.blob deleted file mode 100644 index eb3ff85db..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/1b/8e52ecaa713f759c2786d055f63699.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1c/24ba9ada253fa132ecdde27b5f0f0a.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/1c/24ba9ada253fa132ecdde27b5f0f0a.v8 deleted file mode 100644 index 18f2d5559..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/1c/24ba9ada253fa132ecdde27b5f0f0a.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1c/34e7dc4a9c011b2d4136e5d47556cd.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/1c/34e7dc4a9c011b2d4136e5d47556cd.blob deleted file mode 100644 index bdd3f5622..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/1c/34e7dc4a9c011b2d4136e5d47556cd.blob +++ /dev/null @@ -1,400 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1c/eca3a75fcaba628ca30710389715e7.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/1c/eca3a75fcaba628ca30710389715e7.blob deleted file mode 100644 index 14077d713..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/1c/eca3a75fcaba628ca30710389715e7.blob +++ /dev/null @@ -1,67 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; -const SCALE = 1.5; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1d/d34e0331d33e8f5379e3fa6fceac6b.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/1d/d34e0331d33e8f5379e3fa6fceac6b.blob deleted file mode 100644 index 1e433efbd..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/1d/d34e0331d33e8f5379e3fa6fceac6b.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","meidaDevices","getUserMedia","width","height","console","log","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","forEach","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAMA,KAAK,GAAGC,QAAQ,CAACC,aAAT,CAAuB,SAAvB,CAAd;AAEA,MAAMC,MAAM,GAAGF,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAf;AACA,MAAME,GAAG,GAAGD,MAAM,CAACE,UAAP,CAAkB,IAAlB,CAAZ;AAEA,MAAMC,UAAU,GAAGL,QAAQ,CAACC,aAAT,CAAuB,OAAvB,CAAnB;AACA,MAAMK,OAAO,GAAGJ,MAAM,CAACE,UAAP,CAAkB,IAAlB,CAAhB;AAEA,MAAMG,YAAY,GAAG,IAAIC,MAAM,CAACC,YAAX,EAArB,C,CAEA;;AACA,SAASC,aAAT,GAAyB;AACvB,QAAMC,MAAM,GAAGC,SAAS,CAACC,YAAV,CAAuBC,YAAvB,CAAoC;AACjDf,IAAAA,KAAK,EAAE;AAAEgB,MAAAA,KAAK,EAAE,IAAT;AAAeC,MAAAA,MAAM,EAAE;AAAvB;AAD0C,GAApC,CAAf;AAGAC,EAAAA,OAAO,CAACC,GAAR,CAAYP,MAAZ;AACD;;AChBD,IAAIQ,qBAAqB,GAAG,kCAA5B;AAA+D,IAAIC,UAAU,GAAG,4BAAjB;AAE/D,IAAIC,SAAS,GAAGC,MAAM,CAACC,MAAP,CAAcC,MAA9B;;AAEA,SAASA,MAAT,CAAgBC,UAAhB,EAA4B;AAC1BJ,EAAAA,SAAS,CAACK,IAAV,CAAe,IAAf,EAAqBD,UAArB;AACA,OAAKE,GAAL,GAAW;AACTC,IAAAA,IAAI,EAAEN,MAAM,CAACC,MAAP,CAAcM,OADX;AAETC,IAAAA,gBAAgB,EAAE,EAFT;AAGTC,IAAAA,iBAAiB,EAAE,EAHV;AAITC,IAAAA,MAAM,EAAE,UAASC,EAAT,EAAa;AACnB,WAAKH,gBAAL,CAAsBI,IAAtB,CAA2BD,EAAE,IAAI,YAAW,CAAE,CAA9C;AACD,KANQ;AAOTE,IAAAA,OAAO,EAAE,UAASF,EAAT,EAAa;AACpB,WAAKF,iBAAL,CAAuBG,IAAvB,CAA4BD,EAA5B;AACD;AATQ,GAAX;AAYAX,EAAAA,MAAM,CAACC,MAAP,CAAcM,OAAd,GAAwB,IAAxB;AACD;;AAEDP,MAAM,CAACC,MAAP,CAAcC,MAAd,GAAuBA,MAAvB;AACA,IAAIY,aAAJ,EAAmBC,cAAnB;AAEA,IAAIC,MAAM,GAAGhB,MAAM,CAACC,MAAP,CAAce,MAA3B;;AACA,IAAI,CAAC,CAACA,MAAD,IAAW,CAACA,MAAM,CAACC,eAApB,KAAwC,OAAOC,SAAP,KAAqB,WAAjE,EAA8E;AAC5E,MAAIC,QAAQ,GAAG,MAA4BC,QAAQ,CAACD,QAApD;AACA,MAAIE,QAAQ,GAAGD,QAAQ,CAACC,QAAT,KAAsB,QAAtB,GAAiC,KAAjC,GAAyC,IAAxD;AACA,MAAIC,EAAE,GAAG,IAAIJ,SAAJ,CACPG,QAAQ,GAAG,KAAX,GAAmBF,QAAnB,GAA8B,GAA9B,aAA2D,GADpD,CAAT;;AAGAG,EAAAA,EAAE,CAACC,SAAH,GAAe,UAASC,KAAT,EAAgB;AAC7BV,IAAAA,aAAa,GAAG,EAAhB;AACAC,IAAAA,cAAc,GAAG,EAAjB;AAEA,QAAIT,IAAI,GAAGmB,IAAI,CAACC,KAAL,CAAWF,KAAK,CAAClB,IAAjB,CAAX;;AAEA,QAAIA,IAAI,CAACqB,IAAL,KAAc,QAAlB,EAA4B;AAC1B;AACAC,MAAAA,kBAAkB;AAElB,UAAIC,MAAM,GAAGvB,IAAI,CAACuB,MAAL,CAAYC,MAAZ,EACX;AACAC,MAAAA,KAAK,IAAIA,KAAK,CAACC,OAAN,KAAkBnC,qBAFhB,CAAb,CAJ0B,CAS1B;;AACA,UAAIoC,OAAO,GAAG,KAAd;AACAJ,MAAAA,MAAM,CAACK,OAAP,CAAeH,KAAK,IAAI;AACtB,YAAI,CAACA,KAAK,CAACI,KAAX,EAAkB;AAChB,cAAIC,SAAS,GAAGC,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBR,KAAK,CAACS,EAA7B,CAA9B;;AACA,cAAIJ,SAAJ,EAAe;AACbH,YAAAA,OAAO,GAAG,IAAV;AACD;AACF;AACF,OAPD;;AASA,UAAIA,OAAJ,EAAa;AACXtC,QAAAA,OAAO,CAAC8C,KAAR;AAEAZ,QAAAA,MAAM,CAACK,OAAP,CAAe,UAASH,KAAT,EAAgB;AAC7BW,UAAAA,QAAQ,CAACJ,MAAM,CAACC,aAAR,EAAuBR,KAAvB,CAAR;AACD,SAFD;AAIAhB,QAAAA,cAAc,CAACmB,OAAf,CAAuB,UAASS,CAAT,EAAY;AACjCC,UAAAA,YAAY,CAACD,CAAC,CAAC,CAAD,CAAF,EAAOA,CAAC,CAAC,CAAD,CAAR,CAAZ;AACD,SAFD;AAGD,OAVD,MAUO;AACLzD,QAAAA,MAAM,CAACkC,QAAP,CAAgByB,MAAhB;AACD;AACF;;AAED,QAAIvC,IAAI,CAACqB,IAAL,KAAc,OAAlB,EAA2B;AACzBhC,MAAAA,OAAO,CAACmD,KAAR,CACE,kBAAkBxC,IAAI,CAACyC,SAAL,CAAeC,OAAjC,GAA2C,IAA3C,GAAkD1C,IAAI,CAACyC,SAAL,CAAeE,KADnE;AAIArB,MAAAA,kBAAkB;AAElB,UAAIsB,OAAO,GAAGC,kBAAkB,CAAC7C,IAAD,CAAhC;AACA5B,MAAAA,QAAQ,CAAC0E,IAAT,CAAcC,WAAd,CAA0BH,OAA1B;AACD;AACF,GAnDD;AAoDD;;AAED,SAAStB,kBAAT,GAA8B;AAC5B,MAAIsB,OAAO,GAAGxE,QAAQ,CAAC4E,cAAT,CAAwBxD,UAAxB,CAAd;;AACA,MAAIoD,OAAJ,EAAa;AACXA,IAAAA,OAAO,CAACK,MAAR;AACA5D,IAAAA,OAAO,CAACC,GAAR,CAAY,2BAAZ;AACD;AACF;;AAED,SAASuD,kBAAT,CAA4B7C,IAA5B,EAAkC;AAChC,MAAI4C,OAAO,GAAGxE,QAAQ,CAAC8E,aAAT,CAAuB,KAAvB,CAAd;AACAN,EAAAA,OAAO,CAACV,EAAR,GAAa1C,UAAb,CAFgC,CAIhC;;AACA,MAAIkD,OAAO,GAAGtE,QAAQ,CAAC8E,aAAT,CAAuB,KAAvB,CAAd;AACA,MAAIC,UAAU,GAAG/E,QAAQ,CAAC8E,aAAT,CAAuB,KAAvB,CAAjB;AACAR,EAAAA,OAAO,CAACU,SAAR,GAAoBpD,IAAI,CAACqD,SAAL,CAAeX,OAAnC;AACAS,EAAAA,UAAU,CAACC,SAAX,GAAuBpD,IAAI,CAACqD,SAAL,CAAeV,KAAtC;AAEAC,EAAAA,OAAO,CAACQ,SAAR,GACE,2NACA,mFADA,GAEA,yEAFA,GAGA,qEAHA,GAIAV,OAAO,CAACU,SAJR,GAKA,QALA,GAMA,OANA,GAOAD,UAAU,CAACC,SAPX,GAQA,QARA,GASA,QAVF;AAYA,SAAOR,OAAP;AACD;;AAED,SAASU,UAAT,CAAoB3D,MAApB,EAA4BuC,EAA5B,EAAgC;AAC9B,MAAIqB,OAAO,GAAG5D,MAAM,CAAC4D,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ,WAAO,EAAP;AACD;;AAED,MAAIC,OAAO,GAAG,EAAd;AACA,MAAIC,CAAJ,EAAOC,CAAP,EAAUC,GAAV;;AAEA,OAAKF,CAAL,IAAUF,OAAV,EAAmB;AACjB,SAAKG,CAAL,IAAUH,OAAO,CAACE,CAAD,CAAP,CAAW,CAAX,CAAV,EAAyB;AACvBE,MAAAA,GAAG,GAAGJ,OAAO,CAACE,CAAD,CAAP,CAAW,CAAX,EAAcC,CAAd,CAAN;;AAEA,UAAIC,GAAG,KAAKzB,EAAR,IAAe0B,KAAK,CAACC,OAAN,CAAcF,GAAd,KAAsBA,GAAG,CAACA,GAAG,CAACG,MAAJ,GAAa,CAAd,CAAH,KAAwB5B,EAAjE,EAAsE;AACpEsB,QAAAA,OAAO,CAAClD,IAAR,CAAamD,CAAb;AACD;AACF;AACF;;AAED,MAAI9D,MAAM,CAACe,MAAX,EAAmB;AACjB8C,IAAAA,OAAO,GAAGA,OAAO,CAACO,MAAR,CAAeT,UAAU,CAAC3D,MAAM,CAACe,MAAR,EAAgBwB,EAAhB,CAAzB,CAAV;AACD;;AAED,SAAOsB,OAAP;AACD;;AAED,SAASpB,QAAT,CAAkBzC,MAAlB,EAA0B8B,KAA1B,EAAiC;AAC/B,MAAI8B,OAAO,GAAG5D,MAAM,CAAC4D,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAIA,OAAO,CAAC9B,KAAK,CAACS,EAAP,CAAP,IAAqB,CAACvC,MAAM,CAACe,MAAjC,EAAyC;AACvC,QAAIL,EAAE,GAAG,IAAI2D,QAAJ,CAAa,SAAb,EAAwB,QAAxB,EAAkC,SAAlC,EAA6CvC,KAAK,CAACwC,MAAnD,CAAT;AACAxC,IAAAA,KAAK,CAACI,KAAN,GAAc,CAAC0B,OAAO,CAAC9B,KAAK,CAACS,EAAP,CAAtB;AACAqB,IAAAA,OAAO,CAAC9B,KAAK,CAACS,EAAP,CAAP,GAAoB,CAAC7B,EAAD,EAAKoB,KAAK,CAACyC,IAAX,CAApB;AACD,GAJD,MAIO,IAAIvE,MAAM,CAACe,MAAX,EAAmB;AACxB0B,IAAAA,QAAQ,CAACzC,MAAM,CAACe,MAAR,EAAgBe,KAAhB,CAAR;AACD;AACF;;AAED,SAASM,cAAT,CAAwBpC,MAAxB,EAAgCuC,EAAhC,EAAoC;AAClC,MAAIqB,OAAO,GAAG5D,MAAM,CAAC4D,OAArB;;AAEA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAI,CAACA,OAAO,CAACrB,EAAD,CAAR,IAAgBvC,MAAM,CAACe,MAA3B,EAAmC;AACjC,WAAOqB,cAAc,CAACpC,MAAM,CAACe,MAAR,EAAgBwB,EAAhB,CAArB;AACD;;AAED,MAAI1B,aAAa,CAAC0B,EAAD,CAAjB,EAAuB;AACrB;AACD;;AAED1B,EAAAA,aAAa,CAAC0B,EAAD,CAAb,GAAoB,IAApB;AAEA,MAAIiC,MAAM,GAAGxE,MAAM,CAACyE,KAAP,CAAalC,EAAb,CAAb;AAEAzB,EAAAA,cAAc,CAACH,IAAf,CAAoB,CAACX,MAAD,EAASuC,EAAT,CAApB;;AAEA,MAAIiC,MAAM,IAAIA,MAAM,CAACpE,GAAjB,IAAwBoE,MAAM,CAACpE,GAAP,CAAWG,gBAAX,CAA4B4D,MAAxD,EAAgE;AAC9D,WAAO,IAAP;AACD;;AAED,SAAOR,UAAU,CAACtB,MAAM,CAACC,aAAR,EAAuBC,EAAvB,CAAV,CAAqCmC,IAArC,CAA0C,UAASnC,EAAT,EAAa;AAC5D,WAAOH,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBC,EAAvB,CAArB;AACD,GAFM,CAAP;AAGD;;AAED,SAASI,YAAT,CAAsB3C,MAAtB,EAA8BuC,EAA9B,EAAkC;AAChC,MAAIiC,MAAM,GAAGxE,MAAM,CAACyE,KAAP,CAAalC,EAAb,CAAb;AACAvC,EAAAA,MAAM,CAACM,OAAP,GAAiB,EAAjB;;AACA,MAAIkE,MAAJ,EAAY;AACVA,IAAAA,MAAM,CAACpE,GAAP,CAAWC,IAAX,GAAkBL,MAAM,CAACM,OAAzB;AACD;;AAED,MAAIkE,MAAM,IAAIA,MAAM,CAACpE,GAAjB,IAAwBoE,MAAM,CAACpE,GAAP,CAAWI,iBAAX,CAA6B2D,MAAzD,EAAiE;AAC/DK,IAAAA,MAAM,CAACpE,GAAP,CAAWI,iBAAX,CAA6ByB,OAA7B,CAAqC,UAAS0C,EAAT,EAAa;AAChDA,MAAAA,EAAE,CAAC3E,MAAM,CAACM,OAAR,CAAF;AACD,KAFD;AAGD;;AAED,SAAON,MAAM,CAACyE,KAAP,CAAalC,EAAb,CAAP;AACAvC,EAAAA,MAAM,CAACuC,EAAD,CAAN;AAEAiC,EAAAA,MAAM,GAAGxE,MAAM,CAACyE,KAAP,CAAalC,EAAb,CAAT;;AACA,MAAIiC,MAAM,IAAIA,MAAM,CAACpE,GAAjB,IAAwBoE,MAAM,CAACpE,GAAP,CAAWG,gBAAX,CAA4B4D,MAAxD,EAAgE;AAC9DK,IAAAA,MAAM,CAACpE,GAAP,CAAWG,gBAAX,CAA4B0B,OAA5B,CAAoC,UAAS0C,EAAT,EAAa;AAC/CA,MAAAA,EAAE;AACH,KAFD;;AAGA,WAAO,IAAP;AACD;AACF","file":"pixelated-face.ad67e403.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1e/4f757fdaebcc893cbada131ecd143e.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/1e/4f757fdaebcc893cbada131ecd143e.blob deleted file mode 100644 index 81c069304..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/1e/4f757fdaebcc893cbada131ecd143e.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","SCALE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.71317260.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1f/0c3fa247244554961a4d0ab42fed5e.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/1f/0c3fa247244554961a4d0ab42fed5e.v8 deleted file mode 100644 index a7834814c..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/1f/0c3fa247244554961a4d0ab42fed5e.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1f/82a7cc5dfdad6195655d36a3ab5341.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/1f/82a7cc5dfdad6195655d36a3ab5341.blob deleted file mode 100644 index c36f1a7c9..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/1f/82a7cc5dfdad6195655d36a3ab5341.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1f/b6044d7ff901bf850e0316dd94324a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/1f/b6044d7ff901bf850e0316dd94324a.blob deleted file mode 100644 index 9e4630657..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/1f/b6044d7ff901bf850e0316dd94324a.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/1f/d43e42c3b02ec4a919c064133c7f59.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/1f/d43e42c3b02ec4a919c064133c7f59.blob deleted file mode 100644 index 52148e071..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/1f/d43e42c3b02ec4a919c064133c7f59.blob +++ /dev/null @@ -1,399 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/21/b8b311f44f2832943693723af32da6.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/21/b8b311f44f2832943693723af32da6.blob deleted file mode 100644 index a4ea96710..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/21/b8b311f44f2832943693723af32da6.blob +++ /dev/null @@ -1,18 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: true - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); -} - -populateVideo(); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/21/cdf2486557ac9a9fd8658fdd6e2158.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/21/cdf2486557ac9a9fd8658fdd6e2158.v8 deleted file mode 100644 index 6eb7a94ac..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/21/cdf2486557ac9a9fd8658fdd6e2158.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/22/57710e28688dd6cb28c807849ada13.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/22/57710e28688dd6cb28c807849ada13.blob deleted file mode 100644 index f7fd406f9..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/22/57710e28688dd6cb28c807849ada13.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","forEach","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.4bd70ac7.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/22/baae1aea5f948ac8545905e55568df.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/22/baae1aea5f948ac8545905e55568df.v8 deleted file mode 100644 index ecdf0f589..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/22/baae1aea5f948ac8545905e55568df.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/22/fda74d05384c3804703ddf3e33c3a6.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/22/fda74d05384c3804703ddf3e33c3a6.blob deleted file mode 100644 index 79c864dcc..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/22/fda74d05384c3804703ddf3e33c3a6.blob +++ /dev/null @@ -1,69 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; -const SCALE = 1.35; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - const width = face.width * SCALE; - const height = face.height * SCALE; - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/23/1b79ca700836e4ab58b3a5a071f294.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/23/1b79ca700836e4ab58b3a5a071f294.v8 deleted file mode 100644 index fe2a1e882..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/23/1b79ca700836e4ab58b3a5a071f294.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/23/35179e8f2df73c0c05ce48e90bb895.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/23/35179e8f2df73c0c05ce48e90bb895.v8 deleted file mode 100644 index c27670c87..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/23/35179e8f2df73c0c05ce48e90bb895.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/23/ccdad5d09f72774a6ad16d786dac64.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/23/ccdad5d09f72774a6ad16d786dac64.blob deleted file mode 100644 index 88c2c2996..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/23/ccdad5d09f72774a6ad16d786dac64.blob +++ /dev/null @@ -1,21 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1920, - height: 1080 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); -} - -populateVideo(); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/23/f8a3c483a018f807e46ce01e447ade.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/23/f8a3c483a018f807e46ce01e447ade.v8 deleted file mode 100644 index c6c61464b..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/23/f8a3c483a018f807e46ce01e447ade.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/24/147b628f1b7d89e8253d558ec518df.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/24/147b628f1b7d89e8253d558ec518df.blob deleted file mode 100644 index d00311d5a..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/24/147b628f1b7d89e8253d558ec518df.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","clearRect","forEach","drawFace","censor","requestAnimationFrame","boundingBox","face","imageSmoothingEnabled","drawImage","x","y","SCALE","top","left","strokeStyle","lineWidth","strokeRect","stroke","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.a872b1b1.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/25/e728a93b1946b5392904ee269ac9f8.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/25/e728a93b1946b5392904ee269ac9f8.blob deleted file mode 100644 index 2fca3f32d..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/25/e728a93b1946b5392904ee269ac9f8.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/26/15464e70f54e71b5d08f4133033273.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/26/15464e70f54e71b5d08f4133033273.v8 deleted file mode 100644 index 8f8a7d93c..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/26/15464e70f54e71b5d08f4133033273.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/26/41cca34bc4f6c7727f6456b4943a52.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/26/41cca34bc4f6c7727f6456b4943a52.v8 deleted file mode 100644 index 9ba2cfb5a..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/26/41cca34bc4f6c7727f6456b4943a52.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/26/81e0b763cd4948ce80deb0806c0d49.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/26/81e0b763cd4948ce80deb0806c0d49.blob deleted file mode 100644 index 1a746134d..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/26/81e0b763cd4948ce80deb0806c0d49.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/26/86f2c16d27b7f05a5f4464d561eb0d.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/26/86f2c16d27b7f05a5f4464d561eb0d.blob deleted file mode 100644 index b9b56e3d0..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/26/86f2c16d27b7f05a5f4464d561eb0d.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/27/1d8ccc7aa2e57cb4c3ea67e13a248f.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/27/1d8ccc7aa2e57cb4c3ea67e13a248f.v8 deleted file mode 100644 index be37d3e9d..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/27/1d8ccc7aa2e57cb4c3ea67e13a248f.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/27/6855d09498f68ea2f3de0fd478d61d.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/27/6855d09498f68ea2f3de0fd478d61d.v8 deleted file mode 100644 index a446383e1..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/27/6855d09498f68ea2f3de0fd478d61d.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/27/7afc3e12b84c2f74d7e4919d497d2e.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/27/7afc3e12b84c2f74d7e4919d497d2e.blob deleted file mode 100644 index b5de76196..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/27/7afc3e12b84c2f74d7e4919d497d2e.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/27/8bea23b419e85098a2e6289ee1db63.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/27/8bea23b419e85098a2e6289ee1db63.v8 deleted file mode 100644 index 237f19f34..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/27/8bea23b419e85098a2e6289ee1db63.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/27/d2c9d16f85a4cb32c045331593f3b6.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/27/d2c9d16f85a4cb32c045331593f3b6.blob deleted file mode 100644 index a63fc254b..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/27/d2c9d16f85a4cb32c045331593f3b6.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","console","log","populateVideo","stream","navigator","meidaDevices","getUserMedia","width","height","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","forEach","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAMA,KAAK,GAAGC,QAAQ,CAACC,aAAT,CAAuB,SAAvB,CAAd;AAEA,MAAMC,MAAM,GAAGF,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAf;AACA,MAAME,GAAG,GAAGD,MAAM,CAACE,UAAP,CAAkB,IAAlB,CAAZ;AAEA,MAAMC,UAAU,GAAGL,QAAQ,CAACC,aAAT,CAAuB,OAAvB,CAAnB;AACA,MAAMK,OAAO,GAAGJ,MAAM,CAACE,UAAP,CAAkB,IAAlB,CAAhB;AAEA,MAAMG,YAAY,GAAG,IAAIC,MAAM,CAACC,YAAX,EAArB;AACAC,OAAO,CAACC,GAAR,CAAYZ,KAAZ,EAAmBG,MAAnB,EAA2BG,UAA3B,EAAuCE,YAAvC,E,CAEA;;AAEA,SAASK,aAAT,GAAyB;AACvB,QAAMC,MAAM,GAAGC,SAAS,CAACC,YAAV,CAAuBC,YAAvB,CAAoC;AACjDjB,IAAAA,KAAK,EAAE;AAAEkB,MAAAA,KAAK,EAAE,IAAT;AAAeC,MAAAA,MAAM,EAAE;AAAvB;AAD0C,GAApC,CAAf;AAGD;;ACjBD,IAAIC,qBAAqB,GAAG,kCAA5B;AAA+D,IAAIC,UAAU,GAAG,4BAAjB;AAE/D,IAAIC,SAAS,GAAGC,MAAM,CAACC,MAAP,CAAcC,MAA9B;;AAEA,SAASA,MAAT,CAAgBC,UAAhB,EAA4B;AAC1BJ,EAAAA,SAAS,CAACK,IAAV,CAAe,IAAf,EAAqBD,UAArB;AACA,OAAKE,GAAL,GAAW;AACTC,IAAAA,IAAI,EAAEN,MAAM,CAACC,MAAP,CAAcM,OADX;AAETC,IAAAA,gBAAgB,EAAE,EAFT;AAGTC,IAAAA,iBAAiB,EAAE,EAHV;AAITC,IAAAA,MAAM,EAAE,UAASC,EAAT,EAAa;AACnB,WAAKH,gBAAL,CAAsBI,IAAtB,CAA2BD,EAAE,IAAI,YAAW,CAAE,CAA9C;AACD,KANQ;AAOTE,IAAAA,OAAO,EAAE,UAASF,EAAT,EAAa;AACpB,WAAKF,iBAAL,CAAuBG,IAAvB,CAA4BD,EAA5B;AACD;AATQ,GAAX;AAYAX,EAAAA,MAAM,CAACC,MAAP,CAAcM,OAAd,GAAwB,IAAxB;AACD;;AAEDP,MAAM,CAACC,MAAP,CAAcC,MAAd,GAAuBA,MAAvB;AACA,IAAIY,aAAJ,EAAmBC,cAAnB;AAEA,IAAIC,MAAM,GAAGhB,MAAM,CAACC,MAAP,CAAce,MAA3B;;AACA,IAAI,CAAC,CAACA,MAAD,IAAW,CAACA,MAAM,CAACC,eAApB,KAAwC,OAAOC,SAAP,KAAqB,WAAjE,EAA8E;AAC5E,MAAIC,QAAQ,GAAG,MAA4BC,QAAQ,CAACD,QAApD;AACA,MAAIE,QAAQ,GAAGD,QAAQ,CAACC,QAAT,KAAsB,QAAtB,GAAiC,KAAjC,GAAyC,IAAxD;AACA,MAAIC,EAAE,GAAG,IAAIJ,SAAJ,CACPG,QAAQ,GAAG,KAAX,GAAmBF,QAAnB,GAA8B,GAA9B,aAA2D,GADpD,CAAT;;AAGAG,EAAAA,EAAE,CAACC,SAAH,GAAe,UAASC,KAAT,EAAgB;AAC7BV,IAAAA,aAAa,GAAG,EAAhB;AACAC,IAAAA,cAAc,GAAG,EAAjB;AAEA,QAAIT,IAAI,GAAGmB,IAAI,CAACC,KAAL,CAAWF,KAAK,CAAClB,IAAjB,CAAX;;AAEA,QAAIA,IAAI,CAACqB,IAAL,KAAc,QAAlB,EAA4B;AAC1B;AACAC,MAAAA,kBAAkB;AAElB,UAAIC,MAAM,GAAGvB,IAAI,CAACuB,MAAL,CAAYC,MAAZ,EACX;AACAC,MAAAA,KAAK,IAAIA,KAAK,CAACC,OAAN,KAAkBnC,qBAFhB,CAAb,CAJ0B,CAS1B;;AACA,UAAIoC,OAAO,GAAG,KAAd;AACAJ,MAAAA,MAAM,CAACK,OAAP,CAAeH,KAAK,IAAI;AACtB,YAAI,CAACA,KAAK,CAACI,KAAX,EAAkB;AAChB,cAAIC,SAAS,GAAGC,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBR,KAAK,CAACS,EAA7B,CAA9B;;AACA,cAAIJ,SAAJ,EAAe;AACbH,YAAAA,OAAO,GAAG,IAAV;AACD;AACF;AACF,OAPD;;AASA,UAAIA,OAAJ,EAAa;AACX7C,QAAAA,OAAO,CAACqD,KAAR;AAEAZ,QAAAA,MAAM,CAACK,OAAP,CAAe,UAASH,KAAT,EAAgB;AAC7BW,UAAAA,QAAQ,CAACJ,MAAM,CAACC,aAAR,EAAuBR,KAAvB,CAAR;AACD,SAFD;AAIAhB,QAAAA,cAAc,CAACmB,OAAf,CAAuB,UAASS,CAAT,EAAY;AACjCC,UAAAA,YAAY,CAACD,CAAC,CAAC,CAAD,CAAF,EAAOA,CAAC,CAAC,CAAD,CAAR,CAAZ;AACD,SAFD;AAGD,OAVD,MAUO;AACLzD,QAAAA,MAAM,CAACkC,QAAP,CAAgByB,MAAhB;AACD;AACF;;AAED,QAAIvC,IAAI,CAACqB,IAAL,KAAc,OAAlB,EAA2B;AACzBvC,MAAAA,OAAO,CAAC0D,KAAR,CACE,kBAAkBxC,IAAI,CAACyC,SAAL,CAAeC,OAAjC,GAA2C,IAA3C,GAAkD1C,IAAI,CAACyC,SAAL,CAAeE,KADnE;AAIArB,MAAAA,kBAAkB;AAElB,UAAIsB,OAAO,GAAGC,kBAAkB,CAAC7C,IAAD,CAAhC;AACA5B,MAAAA,QAAQ,CAAC0E,IAAT,CAAcC,WAAd,CAA0BH,OAA1B;AACD;AACF,GAnDD;AAoDD;;AAED,SAAStB,kBAAT,GAA8B;AAC5B,MAAIsB,OAAO,GAAGxE,QAAQ,CAAC4E,cAAT,CAAwBxD,UAAxB,CAAd;;AACA,MAAIoD,OAAJ,EAAa;AACXA,IAAAA,OAAO,CAACK,MAAR;AACAnE,IAAAA,OAAO,CAACC,GAAR,CAAY,2BAAZ;AACD;AACF;;AAED,SAAS8D,kBAAT,CAA4B7C,IAA5B,EAAkC;AAChC,MAAI4C,OAAO,GAAGxE,QAAQ,CAAC8E,aAAT,CAAuB,KAAvB,CAAd;AACAN,EAAAA,OAAO,CAACV,EAAR,GAAa1C,UAAb,CAFgC,CAIhC;;AACA,MAAIkD,OAAO,GAAGtE,QAAQ,CAAC8E,aAAT,CAAuB,KAAvB,CAAd;AACA,MAAIC,UAAU,GAAG/E,QAAQ,CAAC8E,aAAT,CAAuB,KAAvB,CAAjB;AACAR,EAAAA,OAAO,CAACU,SAAR,GAAoBpD,IAAI,CAACqD,SAAL,CAAeX,OAAnC;AACAS,EAAAA,UAAU,CAACC,SAAX,GAAuBpD,IAAI,CAACqD,SAAL,CAAeV,KAAtC;AAEAC,EAAAA,OAAO,CAACQ,SAAR,GACE,2NACA,mFADA,GAEA,yEAFA,GAGA,qEAHA,GAIAV,OAAO,CAACU,SAJR,GAKA,QALA,GAMA,OANA,GAOAD,UAAU,CAACC,SAPX,GAQA,QARA,GASA,QAVF;AAYA,SAAOR,OAAP;AACD;;AAED,SAASU,UAAT,CAAoB3D,MAApB,EAA4BuC,EAA5B,EAAgC;AAC9B,MAAIqB,OAAO,GAAG5D,MAAM,CAAC4D,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ,WAAO,EAAP;AACD;;AAED,MAAIC,OAAO,GAAG,EAAd;AACA,MAAIC,CAAJ,EAAOC,CAAP,EAAUC,GAAV;;AAEA,OAAKF,CAAL,IAAUF,OAAV,EAAmB;AACjB,SAAKG,CAAL,IAAUH,OAAO,CAACE,CAAD,CAAP,CAAW,CAAX,CAAV,EAAyB;AACvBE,MAAAA,GAAG,GAAGJ,OAAO,CAACE,CAAD,CAAP,CAAW,CAAX,EAAcC,CAAd,CAAN;;AAEA,UAAIC,GAAG,KAAKzB,EAAR,IAAe0B,KAAK,CAACC,OAAN,CAAcF,GAAd,KAAsBA,GAAG,CAACA,GAAG,CAACG,MAAJ,GAAa,CAAd,CAAH,KAAwB5B,EAAjE,EAAsE;AACpEsB,QAAAA,OAAO,CAAClD,IAAR,CAAamD,CAAb;AACD;AACF;AACF;;AAED,MAAI9D,MAAM,CAACe,MAAX,EAAmB;AACjB8C,IAAAA,OAAO,GAAGA,OAAO,CAACO,MAAR,CAAeT,UAAU,CAAC3D,MAAM,CAACe,MAAR,EAAgBwB,EAAhB,CAAzB,CAAV;AACD;;AAED,SAAOsB,OAAP;AACD;;AAED,SAASpB,QAAT,CAAkBzC,MAAlB,EAA0B8B,KAA1B,EAAiC;AAC/B,MAAI8B,OAAO,GAAG5D,MAAM,CAAC4D,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAIA,OAAO,CAAC9B,KAAK,CAACS,EAAP,CAAP,IAAqB,CAACvC,MAAM,CAACe,MAAjC,EAAyC;AACvC,QAAIL,EAAE,GAAG,IAAI2D,QAAJ,CAAa,SAAb,EAAwB,QAAxB,EAAkC,SAAlC,EAA6CvC,KAAK,CAACwC,MAAnD,CAAT;AACAxC,IAAAA,KAAK,CAACI,KAAN,GAAc,CAAC0B,OAAO,CAAC9B,KAAK,CAACS,EAAP,CAAtB;AACAqB,IAAAA,OAAO,CAAC9B,KAAK,CAACS,EAAP,CAAP,GAAoB,CAAC7B,EAAD,EAAKoB,KAAK,CAACyC,IAAX,CAApB;AACD,GAJD,MAIO,IAAIvE,MAAM,CAACe,MAAX,EAAmB;AACxB0B,IAAAA,QAAQ,CAACzC,MAAM,CAACe,MAAR,EAAgBe,KAAhB,CAAR;AACD;AACF;;AAED,SAASM,cAAT,CAAwBpC,MAAxB,EAAgCuC,EAAhC,EAAoC;AAClC,MAAIqB,OAAO,GAAG5D,MAAM,CAAC4D,OAArB;;AAEA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAI,CAACA,OAAO,CAACrB,EAAD,CAAR,IAAgBvC,MAAM,CAACe,MAA3B,EAAmC;AACjC,WAAOqB,cAAc,CAACpC,MAAM,CAACe,MAAR,EAAgBwB,EAAhB,CAArB;AACD;;AAED,MAAI1B,aAAa,CAAC0B,EAAD,CAAjB,EAAuB;AACrB;AACD;;AAED1B,EAAAA,aAAa,CAAC0B,EAAD,CAAb,GAAoB,IAApB;AAEA,MAAIiC,MAAM,GAAGxE,MAAM,CAACyE,KAAP,CAAalC,EAAb,CAAb;AAEAzB,EAAAA,cAAc,CAACH,IAAf,CAAoB,CAACX,MAAD,EAASuC,EAAT,CAApB;;AAEA,MAAIiC,MAAM,IAAIA,MAAM,CAACpE,GAAjB,IAAwBoE,MAAM,CAACpE,GAAP,CAAWG,gBAAX,CAA4B4D,MAAxD,EAAgE;AAC9D,WAAO,IAAP;AACD;;AAED,SAAOR,UAAU,CAACtB,MAAM,CAACC,aAAR,EAAuBC,EAAvB,CAAV,CAAqCmC,IAArC,CAA0C,UAASnC,EAAT,EAAa;AAC5D,WAAOH,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBC,EAAvB,CAArB;AACD,GAFM,CAAP;AAGD;;AAED,SAASI,YAAT,CAAsB3C,MAAtB,EAA8BuC,EAA9B,EAAkC;AAChC,MAAIiC,MAAM,GAAGxE,MAAM,CAACyE,KAAP,CAAalC,EAAb,CAAb;AACAvC,EAAAA,MAAM,CAACM,OAAP,GAAiB,EAAjB;;AACA,MAAIkE,MAAJ,EAAY;AACVA,IAAAA,MAAM,CAACpE,GAAP,CAAWC,IAAX,GAAkBL,MAAM,CAACM,OAAzB;AACD;;AAED,MAAIkE,MAAM,IAAIA,MAAM,CAACpE,GAAjB,IAAwBoE,MAAM,CAACpE,GAAP,CAAWI,iBAAX,CAA6B2D,MAAzD,EAAiE;AAC/DK,IAAAA,MAAM,CAACpE,GAAP,CAAWI,iBAAX,CAA6ByB,OAA7B,CAAqC,UAAS0C,EAAT,EAAa;AAChDA,MAAAA,EAAE,CAAC3E,MAAM,CAACM,OAAR,CAAF;AACD,KAFD;AAGD;;AAED,SAAON,MAAM,CAACyE,KAAP,CAAalC,EAAb,CAAP;AACAvC,EAAAA,MAAM,CAACuC,EAAD,CAAN;AAEAiC,EAAAA,MAAM,GAAGxE,MAAM,CAACyE,KAAP,CAAalC,EAAb,CAAT;;AACA,MAAIiC,MAAM,IAAIA,MAAM,CAACpE,GAAjB,IAAwBoE,MAAM,CAACpE,GAAP,CAAWG,gBAAX,CAA4B4D,MAAxD,EAAgE;AAC9DK,IAAAA,MAAM,CAACpE,GAAP,CAAWG,gBAAX,CAA4B0B,OAA5B,CAAoC,UAAS0C,EAAT,EAAa;AAC/CA,MAAAA,EAAE;AACH,KAFD;;AAGA,WAAO,IAAP;AACD;AACF","file":"pixelated-face.53aff0e2.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/27/d74a7dc3bc13de06c95f03fbdf3fcb.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/27/d74a7dc3bc13de06c95f03fbdf3fcb.blob deleted file mode 100644 index 636fb0a8c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/27/d74a7dc3bc13de06c95f03fbdf3fcb.blob +++ /dev/null @@ -1,398 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/28/a2e4040906c9fe36e1cf14ca5c28fc.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/28/a2e4040906c9fe36e1cf14ca5c28fc.v8 deleted file mode 100644 index b75dafef4..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/28/a2e4040906c9fe36e1cf14ca5c28fc.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/28/b86643dca37b56c8dfa69cf703b0c9.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/28/b86643dca37b56c8dfa69cf703b0c9.v8 deleted file mode 100644 index 7d19f291b..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/28/b86643dca37b56c8dfa69cf703b0c9.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/29/8ab67538dcc9c4825145e3d58c7f4b.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/29/8ab67538dcc9c4825145e3d58c7f4b.blob deleted file mode 100644 index 95a9dbe11..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/29/8ab67538dcc9c4825145e3d58c7f4b.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","censor","requestAnimationFrame","drawFace","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.6ea3e75e.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/29/918c50ebe62ba7679d2d5ab037f4fd.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/29/918c50ebe62ba7679d2d5ab037f4fd.v8 deleted file mode 100644 index 8bada5a31..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/29/918c50ebe62ba7679d2d5ab037f4fd.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/29/bf746c2e86ee29277cc63baa67ab9a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/29/bf746c2e86ee29277cc63baa67ab9a.blob deleted file mode 100644 index 495e8cc9c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/29/bf746c2e86ee29277cc63baa67ab9a.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.9a640c41.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/2a/38d5c3f9eec7452e5be5cc091597c4.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/2a/38d5c3f9eec7452e5be5cc091597c4.blob deleted file mode 100644 index c4453f1a5..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/2a/38d5c3f9eec7452e5be5cc091597c4.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/2a/9f56f6cfb0b739fd5d1226b5251432.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/2a/9f56f6cfb0b739fd5d1226b5251432.blob deleted file mode 100644 index 9f5ecdb68..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/2a/9f56f6cfb0b739fd5d1226b5251432.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","optionsInputs","querySelectorAll","options","SIZE","SCALE","handleOption","event","console","log","currentTarget","value","name","forEach","input","addEventListener","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","videoWidth","videoHeight","detect","faces","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.18bdcae0.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/2a/ce7e2349b04b11189c5c0540c99300.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/2a/ce7e2349b04b11189c5c0540c99300.blob deleted file mode 100644 index 8859c1174..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/2a/ce7e2349b04b11189c5c0540c99300.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","scale","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","SCALE","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.229020e3.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/2c/08e74716cae7c874edffb779b502f7.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/2c/08e74716cae7c874edffb779b502f7.blob deleted file mode 100644 index 6c75b36de..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/2c/08e74716cae7c874edffb779b502f7.blob +++ /dev/null @@ -1,402 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/2d/a1092c8f30c277570c86c3a5df24c9.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/2d/a1092c8f30c277570c86c3a5df24c9.v8 deleted file mode 100644 index 0a3693a91..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/2d/a1092c8f30c277570c86c3a5df24c9.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/2d/a810de093fecc8475df47f64b88458.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/2d/a810de093fecc8475df47f64b88458.v8 deleted file mode 100644 index 5501953ed..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/2d/a810de093fecc8475df47f64b88458.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/2d/b4a8b4777c1195f8ce9f8acb391d47.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/2d/b4a8b4777c1195f8ce9f8acb391d47.v8 deleted file mode 100644 index 6d9f74a3e..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/2d/b4a8b4777c1195f8ce9f8acb391d47.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/2e/6cefd4195e207ec05dacd78d55f6c5.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/2e/6cefd4195e207ec05dacd78d55f6c5.v8 deleted file mode 100644 index f92a0ca98..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/2e/6cefd4195e207ec05dacd78d55f6c5.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/2e/88df76cf89906aa01e44e376f40c08.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/2e/88df76cf89906aa01e44e376f40c08.blob deleted file mode 100644 index a666ca4a3..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/2e/88df76cf89906aa01e44e376f40c08.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/2e/aac76e64a192dac1a547ac855aa4eb.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/2e/aac76e64a192dac1a547ac855aa4eb.v8 deleted file mode 100644 index 4f35e8e99..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/2e/aac76e64a192dac1a547ac855aa4eb.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/2f/1f68d9b034c4209b5154deb7c46951.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/2f/1f68d9b034c4209b5154deb7c46951.v8 deleted file mode 100644 index c3c9409bb..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/2f/1f68d9b034c4209b5154deb7c46951.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/30/6942e00ecc320424eadedc488536ad.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/30/6942e00ecc320424eadedc488536ad.blob deleted file mode 100644 index d59001e03..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/30/6942e00ecc320424eadedc488536ad.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/30/6d7dd753855b346365326136662cee.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/30/6d7dd753855b346365326136662cee.blob deleted file mode 100644 index 4fe58cee1..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/30/6d7dd753855b346365326136662cee.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","SCALE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAMA,KAAK,GAAGC,QAAQ,CAACC,aAAT,CAAuB,SAAvB,CAAd;AACA,MAAMC,MAAM,GAAGF,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAf;AACA,MAAME,GAAG,GAAGD,MAAM,CAACE,UAAP,CAAkB,IAAlB,CAAZ;AACA,MAAMC,UAAU,GAAGL,QAAQ,CAACC,aAAT,CAAuB,OAAvB,CAAnB;AACA,MAAMK,OAAO,GAAGJ,MAAM,CAACE,UAAP,CAAkB,IAAlB,CAAhB;AACA,MAAMG,YAAY,GAAG,IAAIC,MAAM,CAACC,YAAX,EAArB;AACA,MAAMC,IAAI,GAAG,GAAb;AACA,MAAMC,KAAK,GAAG,GAAd,C,CAEA;;AACA,eAAeC,aAAf,GAA+B;AAC7B,QAAMC,MAAM,GAAG,MAAMC,SAAS,CAACC,YAAV,CAAuBC,YAAvB,CAAoC;AACvDjB,IAAAA,KAAK,EAAE;AAAEkB,MAAAA,KAAK,EAAE,IAAT;AAAeC,MAAAA,MAAM,EAAE;AAAvB;AADgD,GAApC,CAArB;AAGAnB,EAAAA,KAAK,CAACoB,SAAN,GAAkBN,MAAlB;AACA,QAAMd,KAAK,CAACqB,IAAN,EAAN,CAL6B,CAM7B;;AACAC,EAAAA,OAAO,CAACC,GAAR,CAAYvB,KAAK,CAACwB,UAAlB,EAA8BxB,KAAK,CAACyB,WAApC;AACAtB,EAAAA,MAAM,CAACe,KAAP,GAAelB,KAAK,CAACwB,UAArB;AACArB,EAAAA,MAAM,CAACgB,MAAP,GAAgBnB,KAAK,CAACyB,WAAtB;AACAnB,EAAAA,UAAU,CAACY,KAAX,GAAmBlB,KAAK,CAACwB,UAAzB;AACAlB,EAAAA,UAAU,CAACa,MAAX,GAAoBnB,KAAK,CAACyB,WAA1B;AACD;;AAED,eAAeC,MAAf,GAAwB;AACtB,QAAMC,KAAK,GAAG,MAAMnB,YAAY,CAACkB,MAAb,CAAoB1B,KAApB,CAApB,CADsB,CAEtB;;AACA2B,EAAAA,KAAK,CAACC,OAAN,CAAcC,QAAd;AACAF,EAAAA,KAAK,CAACC,OAAN,CAAcE,MAAd;AACAC,EAAAA,qBAAqB,CAACL,MAAD,CAArB;AACD;;AAED,SAASG,QAAT,CAAkBG,IAAlB,EAAwB;AACtB,QAAM;AAAEd,IAAAA,KAAF;AAASC,IAAAA,MAAT;AAAiBc,IAAAA,GAAjB;AAAsBC,IAAAA;AAAtB,MAA+BF,IAAI,CAACG,WAA1C;AACA/B,EAAAA,GAAG,CAACgC,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoBjC,MAAM,CAACe,KAA3B,EAAkCf,MAAM,CAACgB,MAAzC;AACAf,EAAAA,GAAG,CAACiC,WAAJ,GAAkB,SAAlB;AACAjC,EAAAA,GAAG,CAACkC,SAAJ,GAAgB,CAAhB;AACAlC,EAAAA,GAAG,CAACmC,UAAJ,CAAeL,IAAf,EAAqBD,GAArB,EAA0Bf,KAA1B,EAAiCC,MAAjC;AACD;;AAED,SAASW,MAAT,CAAgB;AAAEK,EAAAA,WAAW,EAAEH;AAAf,CAAhB,EAAuC;AACrCzB,EAAAA,OAAO,CAACiC,qBAAR,GAAgC,KAAhC;AACAjC,EAAAA,OAAO,CAAC6B,SAAR,CAAkB,CAAlB,EAAqB,CAArB,EAAwB9B,UAAU,CAACY,KAAnC,EAA0CZ,UAAU,CAACa,MAArD,EAFqC,CAGrC;;AACAZ,EAAAA,OAAO,CAACkC,SAAR,CACEzC,KADF,EACS;AACPgC,EAAAA,IAAI,CAACU,CAFP,EAEU;AACRV,EAAAA,IAAI,CAACW,CAHP,EAIEX,IAAI,CAACd,KAJP,EAIc;AACZc,EAAAA,IAAI,CAACb,MALP,EAMEa,IAAI,CAACU,CANP,EAMU;AACRV,EAAAA,IAAI,CAACW,CAPP,EAQEhC,IARF,EAQQ;AACNA,EAAAA,IATF;AAYA,QAAMO,KAAK,GAAGc,IAAI,CAACd,KAAL,GAAaN,KAA3B;AACA,QAAMO,MAAM,GAAGa,IAAI,CAACb,MAAL,GAAcP,KAA7B,CAjBqC,CAmBrC;;AACAL,EAAAA,OAAO,CAACkC,SAAR,CACEnC,UADF,EACc;AACZ0B,EAAAA,IAAI,CAACU,CAFP,EAEU;AACRV,EAAAA,IAAI,CAACW,CAHP,EAGU;AACRhC,EAAAA,IAJF,EAKEA,IALF,EAME;AACAqB,EAAAA,IAAI,CAACU,CAAL,GAAS,CAACxB,KAAK,GAAGc,IAAI,CAACd,KAAd,IAAuB,CAPlC,EAQEc,IAAI,CAACW,CAAL,GAAS,CAACxB,MAAM,GAAGa,IAAI,CAACb,MAAf,IAAyB,CARpC,EASED,KATF,EAUEC,MAVF;AAYD;;AAEDN,aAAa,GAAG+B,IAAhB,CAAqBlB,MAArB;;AC1EA,IAAImB,qBAAqB,GAAG,kCAA5B;AAA+D,IAAIC,UAAU,GAAG,4BAAjB;AAE/D,IAAIC,SAAS,GAAGC,MAAM,CAACC,MAAP,CAAcC,MAA9B;;AAEA,SAASA,MAAT,CAAgBC,UAAhB,EAA4B;AAC1BJ,EAAAA,SAAS,CAACK,IAAV,CAAe,IAAf,EAAqBD,UAArB;AACA,OAAKE,GAAL,GAAW;AACTC,IAAAA,IAAI,EAAEN,MAAM,CAACC,MAAP,CAAcM,OADX;AAETC,IAAAA,gBAAgB,EAAE,EAFT;AAGTC,IAAAA,iBAAiB,EAAE,EAHV;AAITC,IAAAA,MAAM,EAAE,UAASC,EAAT,EAAa;AACnB,WAAKH,gBAAL,CAAsBI,IAAtB,CAA2BD,EAAE,IAAI,YAAW,CAAE,CAA9C;AACD,KANQ;AAOTE,IAAAA,OAAO,EAAE,UAASF,EAAT,EAAa;AACpB,WAAKF,iBAAL,CAAuBG,IAAvB,CAA4BD,EAA5B;AACD;AATQ,GAAX;AAYAX,EAAAA,MAAM,CAACC,MAAP,CAAcM,OAAd,GAAwB,IAAxB;AACD;;AAEDP,MAAM,CAACC,MAAP,CAAcC,MAAd,GAAuBA,MAAvB;AACA,IAAIY,aAAJ,EAAmBC,cAAnB;AAEA,IAAIC,MAAM,GAAGhB,MAAM,CAACC,MAAP,CAAce,MAA3B;;AACA,IAAI,CAAC,CAACA,MAAD,IAAW,CAACA,MAAM,CAACC,eAApB,KAAwC,OAAOC,SAAP,KAAqB,WAAjE,EAA8E;AAC5E,MAAIC,QAAQ,GAAG,MAA4BC,QAAQ,CAACD,QAApD;AACA,MAAIE,QAAQ,GAAGD,QAAQ,CAACC,QAAT,KAAsB,QAAtB,GAAiC,KAAjC,GAAyC,IAAxD;AACA,MAAIC,EAAE,GAAG,IAAIJ,SAAJ,CACPG,QAAQ,GAAG,KAAX,GAAmBF,QAAnB,GAA8B,GAA9B,aAA2D,GADpD,CAAT;;AAGAG,EAAAA,EAAE,CAACC,SAAH,GAAe,UAASC,KAAT,EAAgB;AAC7BV,IAAAA,aAAa,GAAG,EAAhB;AACAC,IAAAA,cAAc,GAAG,EAAjB;AAEA,QAAIT,IAAI,GAAGmB,IAAI,CAACC,KAAL,CAAWF,KAAK,CAAClB,IAAjB,CAAX;;AAEA,QAAIA,IAAI,CAACqB,IAAL,KAAc,QAAlB,EAA4B;AAC1B;AACAC,MAAAA,kBAAkB;AAElB,UAAIC,MAAM,GAAGvB,IAAI,CAACuB,MAAL,CAAYC,MAAZ,EACX;AACAC,MAAAA,KAAK,IAAIA,KAAK,CAACC,OAAN,KAAkBnC,qBAFhB,CAAb,CAJ0B,CAS1B;;AACA,UAAIoC,OAAO,GAAG,KAAd;AACAJ,MAAAA,MAAM,CAACjD,OAAP,CAAemD,KAAK,IAAI;AACtB,YAAI,CAACA,KAAK,CAACG,KAAX,EAAkB;AAChB,cAAIC,SAAS,GAAGC,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBP,KAAK,CAACQ,EAA7B,CAA9B;;AACA,cAAIJ,SAAJ,EAAe;AACbF,YAAAA,OAAO,GAAG,IAAV;AACD;AACF;AACF,OAPD;;AASA,UAAIA,OAAJ,EAAa;AACX3D,QAAAA,OAAO,CAACkE,KAAR;AAEAX,QAAAA,MAAM,CAACjD,OAAP,CAAe,UAASmD,KAAT,EAAgB;AAC7BU,UAAAA,QAAQ,CAACJ,MAAM,CAACC,aAAR,EAAuBP,KAAvB,CAAR;AACD,SAFD;AAIAhB,QAAAA,cAAc,CAACnC,OAAf,CAAuB,UAAS8D,CAAT,EAAY;AACjCC,UAAAA,YAAY,CAACD,CAAC,CAAC,CAAD,CAAF,EAAOA,CAAC,CAAC,CAAD,CAAR,CAAZ;AACD,SAFD;AAGD,OAVD,MAUO;AACLjF,QAAAA,MAAM,CAAC2D,QAAP,CAAgBwB,MAAhB;AACD;AACF;;AAED,QAAItC,IAAI,CAACqB,IAAL,KAAc,OAAlB,EAA2B;AACzBrD,MAAAA,OAAO,CAACuE,KAAR,CACE,kBAAkBvC,IAAI,CAACwC,SAAL,CAAeC,OAAjC,GAA2C,IAA3C,GAAkDzC,IAAI,CAACwC,SAAL,CAAeE,KADnE;AAIApB,MAAAA,kBAAkB;AAElB,UAAIqB,OAAO,GAAGC,kBAAkB,CAAC5C,IAAD,CAAhC;AACArD,MAAAA,QAAQ,CAACkG,IAAT,CAAcC,WAAd,CAA0BH,OAA1B;AACD;AACF,GAnDD;AAoDD;;AAED,SAASrB,kBAAT,GAA8B;AAC5B,MAAIqB,OAAO,GAAGhG,QAAQ,CAACoG,cAAT,CAAwBvD,UAAxB,CAAd;;AACA,MAAImD,OAAJ,EAAa;AACXA,IAAAA,OAAO,CAACK,MAAR;AACAhF,IAAAA,OAAO,CAACC,GAAR,CAAY,2BAAZ;AACD;AACF;;AAED,SAAS2E,kBAAT,CAA4B5C,IAA5B,EAAkC;AAChC,MAAI2C,OAAO,GAAGhG,QAAQ,CAACsG,aAAT,CAAuB,KAAvB,CAAd;AACAN,EAAAA,OAAO,CAACV,EAAR,GAAazC,UAAb,CAFgC,CAIhC;;AACA,MAAIiD,OAAO,GAAG9F,QAAQ,CAACsG,aAAT,CAAuB,KAAvB,CAAd;AACA,MAAIC,UAAU,GAAGvG,QAAQ,CAACsG,aAAT,CAAuB,KAAvB,CAAjB;AACAR,EAAAA,OAAO,CAACU,SAAR,GAAoBnD,IAAI,CAACoD,SAAL,CAAeX,OAAnC;AACAS,EAAAA,UAAU,CAACC,SAAX,GAAuBnD,IAAI,CAACoD,SAAL,CAAeV,KAAtC;AAEAC,EAAAA,OAAO,CAACQ,SAAR,GACE,2NACA,mFADA,GAEA,yEAFA,GAGA,qEAHA,GAIAV,OAAO,CAACU,SAJR,GAKA,QALA,GAMA,OANA,GAOAD,UAAU,CAACC,SAPX,GAQA,QARA,GASA,QAVF;AAYA,SAAOR,OAAP;AACD;;AAED,SAASU,UAAT,CAAoB1D,MAApB,EAA4BsC,EAA5B,EAAgC;AAC9B,MAAIqB,OAAO,GAAG3D,MAAM,CAAC2D,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ,WAAO,EAAP;AACD;;AAED,MAAIC,OAAO,GAAG,EAAd;AACA,MAAIC,CAAJ,EAAOC,CAAP,EAAUC,GAAV;;AAEA,OAAKF,CAAL,IAAUF,OAAV,EAAmB;AACjB,SAAKG,CAAL,IAAUH,OAAO,CAACE,CAAD,CAAP,CAAW,CAAX,CAAV,EAAyB;AACvBE,MAAAA,GAAG,GAAGJ,OAAO,CAACE,CAAD,CAAP,CAAW,CAAX,EAAcC,CAAd,CAAN;;AAEA,UAAIC,GAAG,KAAKzB,EAAR,IAAe0B,KAAK,CAACC,OAAN,CAAcF,GAAd,KAAsBA,GAAG,CAACA,GAAG,CAACG,MAAJ,GAAa,CAAd,CAAH,KAAwB5B,EAAjE,EAAsE;AACpEsB,QAAAA,OAAO,CAACjD,IAAR,CAAakD,CAAb;AACD;AACF;AACF;;AAED,MAAI7D,MAAM,CAACe,MAAX,EAAmB;AACjB6C,IAAAA,OAAO,GAAGA,OAAO,CAACO,MAAR,CAAeT,UAAU,CAAC1D,MAAM,CAACe,MAAR,EAAgBuB,EAAhB,CAAzB,CAAV;AACD;;AAED,SAAOsB,OAAP;AACD;;AAED,SAASpB,QAAT,CAAkBxC,MAAlB,EAA0B8B,KAA1B,EAAiC;AAC/B,MAAI6B,OAAO,GAAG3D,MAAM,CAAC2D,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAIA,OAAO,CAAC7B,KAAK,CAACQ,EAAP,CAAP,IAAqB,CAACtC,MAAM,CAACe,MAAjC,EAAyC;AACvC,QAAIL,EAAE,GAAG,IAAI0D,QAAJ,CAAa,SAAb,EAAwB,QAAxB,EAAkC,SAAlC,EAA6CtC,KAAK,CAACuC,MAAnD,CAAT;AACAvC,IAAAA,KAAK,CAACG,KAAN,GAAc,CAAC0B,OAAO,CAAC7B,KAAK,CAACQ,EAAP,CAAtB;AACAqB,IAAAA,OAAO,CAAC7B,KAAK,CAACQ,EAAP,CAAP,GAAoB,CAAC5B,EAAD,EAAKoB,KAAK,CAACwC,IAAX,CAApB;AACD,GAJD,MAIO,IAAItE,MAAM,CAACe,MAAX,EAAmB;AACxByB,IAAAA,QAAQ,CAACxC,MAAM,CAACe,MAAR,EAAgBe,KAAhB,CAAR;AACD;AACF;;AAED,SAASK,cAAT,CAAwBnC,MAAxB,EAAgCsC,EAAhC,EAAoC;AAClC,MAAIqB,OAAO,GAAG3D,MAAM,CAAC2D,OAArB;;AAEA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAI,CAACA,OAAO,CAACrB,EAAD,CAAR,IAAgBtC,MAAM,CAACe,MAA3B,EAAmC;AACjC,WAAOoB,cAAc,CAACnC,MAAM,CAACe,MAAR,EAAgBuB,EAAhB,CAArB;AACD;;AAED,MAAIzB,aAAa,CAACyB,EAAD,CAAjB,EAAuB;AACrB;AACD;;AAEDzB,EAAAA,aAAa,CAACyB,EAAD,CAAb,GAAoB,IAApB;AAEA,MAAIiC,MAAM,GAAGvE,MAAM,CAACwE,KAAP,CAAalC,EAAb,CAAb;AAEAxB,EAAAA,cAAc,CAACH,IAAf,CAAoB,CAACX,MAAD,EAASsC,EAAT,CAApB;;AAEA,MAAIiC,MAAM,IAAIA,MAAM,CAACnE,GAAjB,IAAwBmE,MAAM,CAACnE,GAAP,CAAWG,gBAAX,CAA4B2D,MAAxD,EAAgE;AAC9D,WAAO,IAAP;AACD;;AAED,SAAOR,UAAU,CAACtB,MAAM,CAACC,aAAR,EAAuBC,EAAvB,CAAV,CAAqCmC,IAArC,CAA0C,UAASnC,EAAT,EAAa;AAC5D,WAAOH,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBC,EAAvB,CAArB;AACD,GAFM,CAAP;AAGD;;AAED,SAASI,YAAT,CAAsB1C,MAAtB,EAA8BsC,EAA9B,EAAkC;AAChC,MAAIiC,MAAM,GAAGvE,MAAM,CAACwE,KAAP,CAAalC,EAAb,CAAb;AACAtC,EAAAA,MAAM,CAACM,OAAP,GAAiB,EAAjB;;AACA,MAAIiE,MAAJ,EAAY;AACVA,IAAAA,MAAM,CAACnE,GAAP,CAAWC,IAAX,GAAkBL,MAAM,CAACM,OAAzB;AACD;;AAED,MAAIiE,MAAM,IAAIA,MAAM,CAACnE,GAAjB,IAAwBmE,MAAM,CAACnE,GAAP,CAAWI,iBAAX,CAA6B0D,MAAzD,EAAiE;AAC/DK,IAAAA,MAAM,CAACnE,GAAP,CAAWI,iBAAX,CAA6B7B,OAA7B,CAAqC,UAAS+F,EAAT,EAAa;AAChDA,MAAAA,EAAE,CAAC1E,MAAM,CAACM,OAAR,CAAF;AACD,KAFD;AAGD;;AAED,SAAON,MAAM,CAACwE,KAAP,CAAalC,EAAb,CAAP;AACAtC,EAAAA,MAAM,CAACsC,EAAD,CAAN;AAEAiC,EAAAA,MAAM,GAAGvE,MAAM,CAACwE,KAAP,CAAalC,EAAb,CAAT;;AACA,MAAIiC,MAAM,IAAIA,MAAM,CAACnE,GAAjB,IAAwBmE,MAAM,CAACnE,GAAP,CAAWG,gBAAX,CAA4B2D,MAAxD,EAAgE;AAC9DK,IAAAA,MAAM,CAACnE,GAAP,CAAWG,gBAAX,CAA4B5B,OAA5B,CAAoC,UAAS+F,EAAT,EAAa;AAC/CA,MAAAA,EAAE;AACH,KAFD;;AAGA,WAAO,IAAP;AACD;AACF","file":"pixelated-face.8be37775.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/30/7ca2ec95d5a6e1b0aa5019fb03454a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/30/7ca2ec95d5a6e1b0aa5019fb03454a.blob deleted file mode 100644 index e23e66f27..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/30/7ca2ec95d5a6e1b0aa5019fb03454a.blob +++ /dev/null @@ -1,116 +0,0 @@ -/* normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */button,hr,input{overflow:visible}progress,sub,sup{vertical-align:baseline}[type=checkbox],[type=radio],legend{box-sizing:border-box;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}details,main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{padding:.35em .75em .625em}legend{color:inherit;display:table;max-width:100%;white-space:normal}textarea{overflow:auto}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}[hidden],template{display:none} - - - -/* Variables */ -html { - --grey: #e7e7e7; - --gray: var(--grey); - --blue: #0072B9; - --pink: #D60087; - --yellow: #ffc600; - --black: #2e2e2e; - --red: #c73737; - --green: #61e846; - --text-shadow: 2px 2px 0 rgba(0,0,0,0.2); - --box-shadow: 0 0 5px 5px rgba(0,0,0,0.2); - font-size: 62.5%; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; - box-sizing: border-box; -} - -*, *:before, *:after { - box-sizing: inherit; -} - -body { - font-size: 2rem; - line-height: 1.5; - background-color: var(--blue); - background-image: url("data:image/svg+xml,%3Csvg width='20' height='100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 21.184c.13.357.264.72.402 1.088l.661 1.768C4.653 33.64 6 39.647 6 50c0 10.271-1.222 15.362-4.928 24.629-.383.955-.74 1.869-1.072 2.75v6.225c.73-2.51 1.691-5.139 2.928-8.233C6.722 65.888 8 60.562 8 50c0-10.626-1.397-16.855-5.063-26.66l-.662-1.767C1.352 19.098.601 16.913 0 14.85v6.335zm20 0C17.108 13.258 16 8.077 16 0h2c0 5.744.574 9.951 2 14.85v6.334zm0 56.195c-2.966 7.86-4 13.123-4 22.621h2c0-6.842.542-11.386 2-16.396v-6.225zM6 0c0 8.44 1.21 13.718 4.402 22.272l.661 1.768C14.653 33.64 16 39.647 16 50c0 10.271-1.222 15.362-4.928 24.629C7.278 84.112 6 89.438 6 100h2c0-10.271 1.222-15.362 4.928-24.629C16.722 65.888 18 60.562 18 50c0-10.626-1.397-16.855-5.063-26.66l-.662-1.767C9.16 13.223 8 8.163 8 0H6z' fill='%23fff' fill-rule='nonzero' fill-opacity='.1' opacity='.349'/%3E%3C/svg%3E%0A"); - background-size: 15px; -} - - -/* Table Styles */ - -table { - border-radius: 5px; - overflow: hidden; - margin-bottom: 2rem; - border-collapse: collapse; -} - -td, th { - border: 1px solid var(--grey); - padding: 0.5rem; -} - - -/* Helper Divs */ - -.wrapper { - max-width: 1000px; - margin: 4rem auto; - padding: 2rem; - background: white; -} - -.box, .wrapper { - box-shadow: 0 0 3px 5px rgba(0,0,0,0.08653); -} -a { - color: var(--blue); - text-decoration-color: var(--yellow); -} - - -a.button, button, input[type="button"] { - color: white; - background: var(--pink); - padding: 1rem; - border: 0; - border: 2px solid transparent; - text-decoration: none; - font-weight: 600; - font-size:2rem; -} - -:focus { - outline-color: var(--pink); -} - -fieldset { - border: 1px solid black; -} - -input:not([type="checkbox"]):not([type="radio"]), textarea, select { - display: block; - padding: 1rem; - border: 1px solid var(--grey); -} - -.success { - border: 1px solid red; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - color: white; - margin-top: 0; - line-height: 1; - text-shadow: var(--text-shadow); -} -.wrapper h1, -.wrapper h2, -.wrapper h3, -.wrapper h4, -.wrapper h5, -.wrapper h6 { - color: var(--black); - text-shadow: none; -} diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/30/ba7d4e6cf8c6d510746d279a69b3af.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/30/ba7d4e6cf8c6d510746d279a69b3af.blob deleted file mode 100644 index ec8dd69a1..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/30/ba7d4e6cf8c6d510746d279a69b3af.blob +++ /dev/null @@ -1,16 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -function populateVideo() { - const stream = navigator.meidaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - console.log(stream); -} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/30/fe6e19fec9385bc56563b1393182fd.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/30/fe6e19fec9385bc56563b1393182fd.v8 deleted file mode 100644 index 2dcb8b40f..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/30/fe6e19fec9385bc56563b1393182fd.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/31/141b09e3bcfccef2623aabf683650e.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/31/141b09e3bcfccef2623aabf683650e.blob deleted file mode 100644 index 447e80cd2..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/31/141b09e3bcfccef2623aabf683650e.blob +++ /dev/null @@ -1,396 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/32/147f673352a0e73db4adf9e1556279.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/32/147f673352a0e73db4adf9e1556279.v8 deleted file mode 100644 index db96786f0..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/32/147f673352a0e73db4adf9e1556279.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/32/73c3c2742f26e8acf7e9180149ebb8.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/32/73c3c2742f26e8acf7e9180149ebb8.blob deleted file mode 100644 index b2e45ac69..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/32/73c3c2742f26e8acf7e9180149ebb8.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.7d0d43df.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/33/4ab4471d562a8472b1e085e60e9d7a.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/33/4ab4471d562a8472b1e085e60e9d7a.v8 deleted file mode 100644 index cbf8868b1..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/33/4ab4471d562a8472b1e085e60e9d7a.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/34/bc53627ff4bd6836250ab128d23482.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/34/bc53627ff4bd6836250ab128d23482.blob deleted file mode 100644 index 519f6ec25..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/34/bc53627ff4bd6836250ab128d23482.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/35/7bb6f799eb259e4542b26d36135c06.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/35/7bb6f799eb259e4542b26d36135c06.v8 deleted file mode 100644 index b568ef7f9..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/35/7bb6f799eb259e4542b26d36135c06.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/36/0d407238b27e481c32bca1dc362af1.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/36/0d407238b27e481c32bca1dc362af1.blob deleted file mode 100644 index 88da2f4d1..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/36/0d407238b27e481c32bca1dc362af1.blob +++ /dev/null @@ -1,67 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - ctx.clearRect(0, 0, canvas.width, canvas.height); - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/36/2bca671fd59d503086d12c94d92b46.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/36/2bca671fd59d503086d12c94d92b46.blob deleted file mode 100644 index e7bd5e9a5..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/36/2bca671fd59d503086d12c94d92b46.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","optionsInputs","querySelectorAll","console","log","options","SIZE","SCALE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.22c454ab.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/36/2f861a680217a9c28d6e8d157a8ebe.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/36/2f861a680217a9c28d6e8d157a8ebe.blob deleted file mode 100644 index d956fe56f..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/36/2f861a680217a9c28d6e8d157a8ebe.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/36/8094c6bd18320cb3e7a7ee27c32d25.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/36/8094c6bd18320cb3e7a7ee27c32d25.blob deleted file mode 100644 index ac8ea3a86..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/36/8094c6bd18320cb3e7a7ee27c32d25.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/36/8e72350e8631ab11189e9ce096b799.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/36/8e72350e8631ab11189e9ce096b799.v8 deleted file mode 100644 index c54ed3aab..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/36/8e72350e8631ab11189e9ce096b799.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/36/a698f995fbb8e56f42e18b3ed530e0.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/36/a698f995fbb8e56f42e18b3ed530e0.v8 deleted file mode 100644 index aa403acbe..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/36/a698f995fbb8e56f42e18b3ed530e0.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/36/baaf9ef53ede108e95aea491e3a2f7.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/36/baaf9ef53ede108e95aea491e3a2f7.blob deleted file mode 100644 index 8386755d3..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/36/baaf9ef53ede108e95aea491e3a2f7.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/36/bcf117233edd9905525fc3508eab7f.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/36/bcf117233edd9905525fc3508eab7f.blob deleted file mode 100644 index e3c5849d1..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/36/bcf117233edd9905525fc3508eab7f.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["faceDetector","window","FaceDetector","video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","SCALE","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","videoWidth","videoHeight","detect","faces","clearRect","forEach","drawFace","requestAnimationFrame","censor","boundingBox","face","imageSmoothingEnabled","drawImage","x","y","top","left","strokeStyle","lineWidth","strokeRect","stroke","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","console","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","log","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.5ce2d663.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/37/2b49082edbb22f5ae17d88cda122e3.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/37/2b49082edbb22f5ae17d88cda122e3.blob deleted file mode 100644 index 49a28fc9d..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/37/2b49082edbb22f5ae17d88cda122e3.blob +++ /dev/null @@ -1,60 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - // draw the small face - faceCtx.drawImage( // Capture Settings - video, // where should I grab the frame from? - face.x, // Where should we start capturing the face from? X and Y? - face.y, face.width, // how wide and how high should the face be? - face.height, // Paint Settings - face.x, // where should we start drawing the face on? - face.y, // how wide and how high should we paint it - 10, 10); // take that face back out and draw it back at normal size. -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/37/891645c97b4738fdeb435d26dbf07f.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/37/891645c97b4738fdeb435d26dbf07f.v8 deleted file mode 100644 index e69de29bb..000000000 diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/37/dad6d5657e0a48dce59f672b947578.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/37/dad6d5657e0a48dce59f672b947578.v8 deleted file mode 100644 index ef6314f8a..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/37/dad6d5657e0a48dce59f672b947578.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/37/e1e4eee7dbf28b9df63cf8fd482e08.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/37/e1e4eee7dbf28b9df63cf8fd482e08.blob deleted file mode 100644 index 70cc4911e..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/37/e1e4eee7dbf28b9df63cf8fd482e08.blob +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Censorship - - - - - -
- - -
-
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/38/93ed96e7eaef61b60f5cfec2ed06a3.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/38/93ed96e7eaef61b60f5cfec2ed06a3.blob deleted file mode 100644 index 9c589970c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/38/93ed96e7eaef61b60f5cfec2ed06a3.blob +++ /dev/null @@ -1,71 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const options = { - SIZE: 10, - SCALE: 1.35 -}; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, options.SIZE, options.SIZE); // draw the small face back on, but scale up - - const width = face.width * options.SCALE; - const height = face.height * options.SCALE; - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, options.SIZE, options.SIZE, // Drawing args - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/38/ea893d4ea7fe6efce02a24cb149c0d.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/38/ea893d4ea7fe6efce02a24cb149c0d.blob deleted file mode 100644 index a32831a77..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/38/ea893d4ea7fe6efce02a24cb149c0d.blob +++ /dev/null @@ -1,399 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/3b/62ab82859b659f3e241d4f49af0762.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/3b/62ab82859b659f3e241d4f49af0762.blob deleted file mode 100644 index e23e66f27..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/3b/62ab82859b659f3e241d4f49af0762.blob +++ /dev/null @@ -1,116 +0,0 @@ -/* normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */button,hr,input{overflow:visible}progress,sub,sup{vertical-align:baseline}[type=checkbox],[type=radio],legend{box-sizing:border-box;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}details,main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{padding:.35em .75em .625em}legend{color:inherit;display:table;max-width:100%;white-space:normal}textarea{overflow:auto}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}[hidden],template{display:none} - - - -/* Variables */ -html { - --grey: #e7e7e7; - --gray: var(--grey); - --blue: #0072B9; - --pink: #D60087; - --yellow: #ffc600; - --black: #2e2e2e; - --red: #c73737; - --green: #61e846; - --text-shadow: 2px 2px 0 rgba(0,0,0,0.2); - --box-shadow: 0 0 5px 5px rgba(0,0,0,0.2); - font-size: 62.5%; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; - box-sizing: border-box; -} - -*, *:before, *:after { - box-sizing: inherit; -} - -body { - font-size: 2rem; - line-height: 1.5; - background-color: var(--blue); - background-image: url("data:image/svg+xml,%3Csvg width='20' height='100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 21.184c.13.357.264.72.402 1.088l.661 1.768C4.653 33.64 6 39.647 6 50c0 10.271-1.222 15.362-4.928 24.629-.383.955-.74 1.869-1.072 2.75v6.225c.73-2.51 1.691-5.139 2.928-8.233C6.722 65.888 8 60.562 8 50c0-10.626-1.397-16.855-5.063-26.66l-.662-1.767C1.352 19.098.601 16.913 0 14.85v6.335zm20 0C17.108 13.258 16 8.077 16 0h2c0 5.744.574 9.951 2 14.85v6.334zm0 56.195c-2.966 7.86-4 13.123-4 22.621h2c0-6.842.542-11.386 2-16.396v-6.225zM6 0c0 8.44 1.21 13.718 4.402 22.272l.661 1.768C14.653 33.64 16 39.647 16 50c0 10.271-1.222 15.362-4.928 24.629C7.278 84.112 6 89.438 6 100h2c0-10.271 1.222-15.362 4.928-24.629C16.722 65.888 18 60.562 18 50c0-10.626-1.397-16.855-5.063-26.66l-.662-1.767C9.16 13.223 8 8.163 8 0H6z' fill='%23fff' fill-rule='nonzero' fill-opacity='.1' opacity='.349'/%3E%3C/svg%3E%0A"); - background-size: 15px; -} - - -/* Table Styles */ - -table { - border-radius: 5px; - overflow: hidden; - margin-bottom: 2rem; - border-collapse: collapse; -} - -td, th { - border: 1px solid var(--grey); - padding: 0.5rem; -} - - -/* Helper Divs */ - -.wrapper { - max-width: 1000px; - margin: 4rem auto; - padding: 2rem; - background: white; -} - -.box, .wrapper { - box-shadow: 0 0 3px 5px rgba(0,0,0,0.08653); -} -a { - color: var(--blue); - text-decoration-color: var(--yellow); -} - - -a.button, button, input[type="button"] { - color: white; - background: var(--pink); - padding: 1rem; - border: 0; - border: 2px solid transparent; - text-decoration: none; - font-weight: 600; - font-size:2rem; -} - -:focus { - outline-color: var(--pink); -} - -fieldset { - border: 1px solid black; -} - -input:not([type="checkbox"]):not([type="radio"]), textarea, select { - display: block; - padding: 1rem; - border: 1px solid var(--grey); -} - -.success { - border: 1px solid red; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - color: white; - margin-top: 0; - line-height: 1; - text-shadow: var(--text-shadow); -} -.wrapper h1, -.wrapper h2, -.wrapper h3, -.wrapper h4, -.wrapper h5, -.wrapper h6 { - color: var(--black); - text-shadow: none; -} diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/3b/ff8cbd80c667c2a134da568e1f628d.txt b/exercises/55 - Face Detection Censorship/.parcel-cache/3b/ff8cbd80c667c2a134da568e1f628d.txt deleted file mode 100644 index 98d21b8f4..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/3b/ff8cbd80c667c2a134da568e1f628d.txt +++ /dev/null @@ -1,2 +0,0 @@ -18427041928689502290 -1572542831061707000 \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/3c/174366ab28814ec6bc59b9baac74b9.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/3c/174366ab28814ec6bc59b9baac74b9.blob deleted file mode 100644 index 915399784..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/3c/174366ab28814ec6bc59b9baac74b9.blob +++ /dev/null @@ -1,69 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; -const SCALE = 2; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - const width = face.width * SCALE; - const height = face.height * SCALE; - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/3c/5bb761cd20700de78860f8ddfdf55b.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/3c/5bb761cd20700de78860f8ddfdf55b.v8 deleted file mode 100644 index 89a26c0e8..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/3c/5bb761cd20700de78860f8ddfdf55b.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/3d/1594f413b0fd67d308bae7219a0212.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/3d/1594f413b0fd67d308bae7219a0212.blob deleted file mode 100644 index ff3b898bc..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/3d/1594f413b0fd67d308bae7219a0212.blob +++ /dev/null @@ -1,399 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/3d/dabda015e754985e2f524210ae76e3.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/3d/dabda015e754985e2f524210ae76e3.v8 deleted file mode 100644 index 26d940197..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/3d/dabda015e754985e2f524210ae76e3.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/3e/4ef0d4a0ff1d5108467cc7124ec250.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/3e/4ef0d4a0ff1d5108467cc7124ec250.blob deleted file mode 100644 index fc38b9642..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/3e/4ef0d4a0ff1d5108467cc7124ec250.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/3e/cd8e355597dc0e0e566803176421fc.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/3e/cd8e355597dc0e0e566803176421fc.blob deleted file mode 100644 index 9b7d11fda..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/3e/cd8e355597dc0e0e566803176421fc.blob +++ /dev/null @@ -1,400 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/45/07a7338e0278cfb0fd0e8d0ec697b8.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/45/07a7338e0278cfb0fd0e8d0ec697b8.v8 deleted file mode 100644 index 141959e5e..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/45/07a7338e0278cfb0fd0e8d0ec697b8.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/45/3d0f73fb82f045cb99aa22d611c709.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/45/3d0f73fb82f045cb99aa22d611c709.blob deleted file mode 100644 index 021eb52e7..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/45/3d0f73fb82f045cb99aa22d611c709.blob +++ /dev/null @@ -1,395 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/46/21882fd332457d98d699086ec2f164.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/46/21882fd332457d98d699086ec2f164.v8 deleted file mode 100644 index 2d6e7a640..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/46/21882fd332457d98d699086ec2f164.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/46/31b12006264ff1670fedae09320702.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/46/31b12006264ff1670fedae09320702.v8 deleted file mode 100644 index 1b246c6b2..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/46/31b12006264ff1670fedae09320702.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/46/62f28af4c2c22ed8e875f5956612f4.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/46/62f28af4c2c22ed8e875f5956612f4.blob deleted file mode 100644 index bbfbe6eb6..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/46/62f28af4c2c22ed8e875f5956612f4.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/46/d6abaa961b3d63e7affe5e2ebbd2e1.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/46/d6abaa961b3d63e7affe5e2ebbd2e1.blob deleted file mode 100644 index a6f8410a6..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/46/d6abaa961b3d63e7affe5e2ebbd2e1.blob +++ /dev/null @@ -1,362 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/4f/5d03c58f6a57df69ae2f4b1278ee63.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/4f/5d03c58f6a57df69ae2f4b1278ee63.blob deleted file mode 100644 index 5ebec156e..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/4f/5d03c58f6a57df69ae2f4b1278ee63.blob +++ /dev/null @@ -1,389 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/51/63a817c95b0f8c30ab38473d169cb4.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/51/63a817c95b0f8c30ab38473d169cb4.blob deleted file mode 100644 index 686ecddf7..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/51/63a817c95b0f8c30ab38473d169cb4.blob +++ /dev/null @@ -1,362 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/55/e65f93c7ff0111da7a377b44ef4418.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/55/e65f93c7ff0111da7a377b44ef4418.v8 deleted file mode 100644 index ea96f168c..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/55/e65f93c7ff0111da7a377b44ef4418.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/56/c7b5fb6aa436095bb73a93a42bb8dc.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/56/c7b5fb6aa436095bb73a93a42bb8dc.blob deleted file mode 100644 index b8cca6c01..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/56/c7b5fb6aa436095bb73a93a42bb8dc.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","strokeStyle","lineWidth","strokeRect","stroke","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.9be9ef2c.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/57/0e46cef4aaf3e1bcdf2d88d29c729d.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/57/0e46cef4aaf3e1bcdf2d88d29c729d.v8 deleted file mode 100644 index 8ff02355a..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/57/0e46cef4aaf3e1bcdf2d88d29c729d.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/57/6bbad77de8f4046ab94132b28a6792.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/57/6bbad77de8f4046ab94132b28a6792.blob deleted file mode 100644 index 8d5dfeb77..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/57/6bbad77de8f4046ab94132b28a6792.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","forEach","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.2eb21f79.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/57/fdbfbbb2a7b321711e327582093fe8.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/57/fdbfbbb2a7b321711e327582093fe8.v8 deleted file mode 100644 index 1206482d7..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/57/fdbfbbb2a7b321711e327582093fe8.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/58/4bb0c33e62dc22e53c5c3cde9d2f22.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/58/4bb0c33e62dc22e53c5c3cde9d2f22.v8 deleted file mode 100644 index e665e80f3..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/58/4bb0c33e62dc22e53c5c3cde9d2f22.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/58/559f0ffb6a326ceaae5277fb6e51b1.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/58/559f0ffb6a326ceaae5277fb6e51b1.v8 deleted file mode 100644 index 97ecf38c4..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/58/559f0ffb6a326ceaae5277fb6e51b1.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/58/eb2dc531195768f92a9461f5638177.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/58/eb2dc531195768f92a9461f5638177.blob deleted file mode 100644 index 5186a0d8a..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/58/eb2dc531195768f92a9461f5638177.blob +++ /dev/null @@ -1,396 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/5f/c6c50f7624363a875dce67247624df.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/5f/c6c50f7624363a875dce67247624df.blob deleted file mode 100644 index 21b3f682c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/5f/c6c50f7624363a875dce67247624df.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.ee4cfc58.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/5f/d210552b956249858a762c31b80aae.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/5f/d210552b956249858a762c31b80aae.v8 deleted file mode 100644 index ea56c4283..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/5f/d210552b956249858a762c31b80aae.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/5f/dcc004665531f44eb04ef0b1858f42.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/5f/dcc004665531f44eb04ef0b1858f42.blob deleted file mode 100644 index 45bd4763c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/5f/dcc004665531f44eb04ef0b1858f42.blob +++ /dev/null @@ -1,59 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 100; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - // draw the small face - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, 10, 10); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/60/a62eda4a1f1938becec5509d15c02b.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/60/a62eda4a1f1938becec5509d15c02b.v8 deleted file mode 100644 index 887fa2c27..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/60/a62eda4a1f1938becec5509d15c02b.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/60/ca021faef3e03ad7cc355165b68ef0.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/60/ca021faef3e03ad7cc355165b68ef0.blob deleted file mode 100644 index 99366f6dd..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/60/ca021faef3e03ad7cc355165b68ef0.blob +++ /dev/null @@ -1,400 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/61/b8ff189925b66e76608d959e41e873.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/61/b8ff189925b66e76608d959e41e873.blob deleted file mode 100644 index 1c9aaacff..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/61/b8ff189925b66e76608d959e41e873.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/61/f8643ca8bda452602c30ff27207cfc.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/61/f8643ca8bda452602c30ff27207cfc.v8 deleted file mode 100644 index bbedd66f6..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/61/f8643ca8bda452602c30ff27207cfc.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/62/0a415bd6174a945174ade2a66ee302.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/62/0a415bd6174a945174ade2a66ee302.blob deleted file mode 100644 index 5d02e260d..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/62/0a415bd6174a945174ade2a66ee302.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","SCALE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.c9311820.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/62/2bb224bdc23900516d611571f1ecc0.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/62/2bb224bdc23900516d611571f1ecc0.v8 deleted file mode 100644 index e15d63960..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/62/2bb224bdc23900516d611571f1ecc0.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/62/471f5452d0e8969881f597caae7778.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/62/471f5452d0e8969881f597caae7778.blob deleted file mode 100644 index 5d99fb122..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/62/471f5452d0e8969881f597caae7778.blob +++ /dev/null @@ -1,65 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - // faces.forEach(drawFace); - - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/62/6354c296d29d3452e08583b9f84228.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/62/6354c296d29d3452e08583b9f84228.blob deleted file mode 100644 index bd89fe37e..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/62/6354c296d29d3452e08583b9f84228.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.81502beb.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/63/47f1742f799a0ad5e04957450d479f.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/63/47f1742f799a0ad5e04957450d479f.blob deleted file mode 100644 index 1168aa454..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/63/47f1742f799a0ad5e04957450d479f.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/63/66a25323b59d5ac9b78d461d656155.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/63/66a25323b59d5ac9b78d461d656155.v8 deleted file mode 100644 index d32146f7c..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/63/66a25323b59d5ac9b78d461d656155.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/63/73ce5a63dec74722e0f7609e3fa157.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/63/73ce5a63dec74722e0f7609e3fa157.blob deleted file mode 100644 index f9d8774d2..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/63/73ce5a63dec74722e0f7609e3fa157.blob +++ /dev/null @@ -1,397 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/64/1255f75edc2761b210183436c4f4a9.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/64/1255f75edc2761b210183436c4f4a9.v8 deleted file mode 100644 index fb9f5e9da..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/64/1255f75edc2761b210183436c4f4a9.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/64/129032f54ea617d884069fc055f800.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/64/129032f54ea617d884069fc055f800.blob deleted file mode 100644 index 087c1aeeb..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/64/129032f54ea617d884069fc055f800.blob +++ /dev/null @@ -1,395 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/65/926e18c82313c3f0e3a95a83302d8f.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/65/926e18c82313c3f0e3a95a83302d8f.v8 deleted file mode 100644 index fab7dfe88..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/65/926e18c82313c3f0e3a95a83302d8f.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/65/c61e2c79f6d3f41a837ed8eb2480aa.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/65/c61e2c79f6d3f41a837ed8eb2480aa.v8 deleted file mode 100644 index 85492909d..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/65/c61e2c79f6d3f41a837ed8eb2480aa.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/65/f0573064dc375521a10842d2b9dd03.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/65/f0573064dc375521a10842d2b9dd03.v8 deleted file mode 100644 index a95280a7a..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/65/f0573064dc375521a10842d2b9dd03.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/66/eddf704016690a5a15eb89c2ad1a39.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/66/eddf704016690a5a15eb89c2ad1a39.blob deleted file mode 100644 index 85b903184..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/66/eddf704016690a5a15eb89c2ad1a39.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/67/52e040907c21a76b243a2e7d895861.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/67/52e040907c21a76b243a2e7d895861.blob deleted file mode 100644 index 0f31100d9..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/67/52e040907c21a76b243a2e7d895861.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","forEach","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.997b9c20.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/67/5fb32fdd4edf146a95c67f42a77f2c.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/67/5fb32fdd4edf146a95c67f42a77f2c.blob deleted file mode 100644 index 628502b88..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/67/5fb32fdd4edf146a95c67f42a77f2c.blob +++ /dev/null @@ -1,399 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/6f/a34668fd690c083de1b0e1d90d2fbd.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/6f/a34668fd690c083de1b0e1d90d2fbd.v8 deleted file mode 100644 index 5993c350f..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/6f/a34668fd690c083de1b0e1d90d2fbd.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/70/2d3e0a89b580cdc8f755ddc192738d.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/70/2d3e0a89b580cdc8f755ddc192738d.blob deleted file mode 100644 index 0af88381e..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/70/2d3e0a89b580cdc8f755ddc192738d.blob +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Censorship - - - - - -
- - -
-
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/70/3c9e91a8806df813c5f361ccef1dcc.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/70/3c9e91a8806df813c5f361ccef1dcc.v8 deleted file mode 100644 index 793a523cd..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/70/3c9e91a8806df813c5f361ccef1dcc.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/70/6b296e7bbf96b168ca5b2b5c2e61eb.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/70/6b296e7bbf96b168ca5b2b5c2e61eb.blob deleted file mode 100644 index c7e1a2880..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/70/6b296e7bbf96b168ca5b2b5c2e61eb.blob +++ /dev/null @@ -1,64 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 100; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - // draw the small face - faceCtx.drawImage( // Capture Settings - video, // where should I grab the frame from? - face.x, // Where should we start capturing the face from? X and Y? - face.y, face.width, // how wide and how high should the face be? - face.height, // Paint Settings - face.x, // where should we start drawing the face on? - face.y, // how wide and how high should we paint it - SIZE, SIZE); // take that face back out and draw it back at normal size. - - faceCtx.drawImage(faceCanvas, face.x, face.y, SIZE, SIZE, // Drawing or paint settings - face.x, face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/70/c264b30620e59e346149d758a75dad.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/70/c264b30620e59e346149d758a75dad.blob deleted file mode 100644 index 098a9a13c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/70/c264b30620e59e346149d758a75dad.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/70/fc258882c394e9ae357dcddb4a3bbb.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/70/fc258882c394e9ae357dcddb4a3bbb.v8 deleted file mode 100644 index 6f8a1bda7..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/70/fc258882c394e9ae357dcddb4a3bbb.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/71/b0ca296080aa3fa3117fd4c8e54f1e.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/71/b0ca296080aa3fa3117fd4c8e54f1e.blob deleted file mode 100644 index 5b3e02b11..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/71/b0ca296080aa3fa3117fd4c8e54f1e.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/72/446e9f35625c9c5eb2858966954488.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/72/446e9f35625c9c5eb2858966954488.v8 deleted file mode 100644 index 344b3edd1..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/72/446e9f35625c9c5eb2858966954488.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/72/68ddbd60fd585b327bfc07b8f6660c.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/72/68ddbd60fd585b327bfc07b8f6660c.blob deleted file mode 100644 index ad708656b..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/72/68ddbd60fd585b327bfc07b8f6660c.blob +++ /dev/null @@ -1,400 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/73/208fcbfa1c008e0bd140ff4799636d.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/73/208fcbfa1c008e0bd140ff4799636d.v8 deleted file mode 100644 index 5dd84ec61..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/73/208fcbfa1c008e0bd140ff4799636d.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/73/c8291a4a0dcee55b49ad28b4cf8949.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/73/c8291a4a0dcee55b49ad28b4cf8949.blob deleted file mode 100644 index c6ec451bc..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/73/c8291a4a0dcee55b49ad28b4cf8949.blob +++ /dev/null @@ -1,64 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - // draw the small face - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/73/d1a9b4245144148cc0da47660d69e8.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/73/d1a9b4245144148cc0da47660d69e8.blob deleted file mode 100644 index 3624db12f..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/73/d1a9b4245144148cc0da47660d69e8.blob +++ /dev/null @@ -1,66 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - ctx.clearRect(0, 0, canvas.width, canvas.height); - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/74/3f0c7a19c3f9058bb8653603c2a867.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/74/3f0c7a19c3f9058bb8653603c2a867.v8 deleted file mode 100644 index 61c17dccd..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/74/3f0c7a19c3f9058bb8653603c2a867.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/74/6c13b9eca569a04fb252dcc0ed0f11.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/74/6c13b9eca569a04fb252dcc0ed0f11.blob deleted file mode 100644 index ff6c3ab39..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/74/6c13b9eca569a04fb252dcc0ed0f11.blob +++ /dev/null @@ -1,396 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/75/d7acf4213974e0824f1f5a48ac7058.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/75/d7acf4213974e0824f1f5a48ac7058.blob deleted file mode 100644 index 3f123699b..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/75/d7acf4213974e0824f1f5a48ac7058.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","console","log","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","forEach","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.bf3a9995.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/76/2598f316b425d2966ded84ab4f93f1.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/76/2598f316b425d2966ded84ab4f93f1.v8 deleted file mode 100644 index 91984d425..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/76/2598f316b425d2966ded84ab4f93f1.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/76/53e1310dce71f8bb0535fa4579eada.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/76/53e1310dce71f8bb0535fa4579eada.blob deleted file mode 100644 index 5cca75050..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/76/53e1310dce71f8bb0535fa4579eada.blob +++ /dev/null @@ -1,400 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/76/cb7d9bbf380917df0a75c5edf0629a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/76/cb7d9bbf380917df0a75c5edf0629a.blob deleted file mode 100644 index 220b89d2a..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/76/cb7d9bbf380917df0a75c5edf0629a.blob +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Censorship - - - - - -
- - -
-
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/76/e1268c78e38669e01f96d4495676a9.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/76/e1268c78e38669e01f96d4495676a9.blob deleted file mode 100644 index 29314aec9..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/76/e1268c78e38669e01f96d4495676a9.blob +++ /dev/null @@ -1,73 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const optionsInputs = document.querySelector('.controls inputs[type="range"]'); -console.log(optionsInputs); -const options = { - SIZE: 10, - SCALE: 1.35 -}; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, options.SIZE, options.SIZE); // draw the small face back on, but scale up - - const width = face.width * options.SCALE; - const height = face.height * options.SCALE; - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, options.SIZE, options.SIZE, // Drawing args - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/77/66a06de76416213338d8563b77054b.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/77/66a06de76416213338d8563b77054b.blob deleted file mode 100644 index 73a98d438..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/77/66a06de76416213338d8563b77054b.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.b4d6c790.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/77/7f80d3999546112b6e32bf82e7b44b.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/77/7f80d3999546112b6e32bf82e7b44b.blob deleted file mode 100644 index 28c20e62c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/77/7f80d3999546112b6e32bf82e7b44b.blob +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Censorship - - - - - -
- - -
-
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/77/d197c5d6c654ef187afc80748b46ff.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/77/d197c5d6c654ef187afc80748b46ff.blob deleted file mode 100644 index d6b914326..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/77/d197c5d6c654ef187afc80748b46ff.blob +++ /dev/null @@ -1,68 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - // draw the small face - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - const width = face.width * SCALE; - const height = face.height * SCALE; // then draw it back on, but scaled up - - faceCtx.drawImage(faceCanvas, // Where should I grab the photo from? - face.x, // from what x and y should I start capturing from? - face.y, // from what x and y should I start capturing from? - SIZE, SIZE, // Drawing - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/78/10f4d19bd288a3167b03af4aa0bfa0.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/78/10f4d19bd288a3167b03af4aa0bfa0.blob deleted file mode 100644 index e69de29bb..000000000 diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/78/39f54358397ca7eb511b6f197a4468.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/78/39f54358397ca7eb511b6f197a4468.blob deleted file mode 100644 index 690528c41..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/78/39f54358397ca7eb511b6f197a4468.blob +++ /dev/null @@ -1,65 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 1; - ctx.strokeRect(left, top, width, height); - ctx.stroke(); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/78/6fb293b794ba36e7ae09c3d3618f3e.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/78/6fb293b794ba36e7ae09c3d3618f3e.v8 deleted file mode 100644 index 705dd7ace..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/78/6fb293b794ba36e7ae09c3d3618f3e.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/79/2a3c9c62193454dfbc5c2953e65f94.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/79/2a3c9c62193454dfbc5c2953e65f94.blob deleted file mode 100644 index c76893824..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/79/2a3c9c62193454dfbc5c2953e65f94.blob +++ /dev/null @@ -1,69 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 3; -const SCALE = 2; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - const width = face.width * SCALE; - const height = face.height * SCALE; - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/79/fdef30b8b2fd543f74b090165af628.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/79/fdef30b8b2fd543f74b090165af628.blob deleted file mode 100644 index 54e1665ea..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/79/fdef30b8b2fd543f74b090165af628.blob +++ /dev/null @@ -1,69 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 20; -const SCALE = 2; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - const width = face.width * SCALE; - const height = face.height * SCALE; - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/7a/1f4aa02ebbc9637c154f1ff7489878.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/7a/1f4aa02ebbc9637c154f1ff7489878.v8 deleted file mode 100644 index fc763c002..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/7a/1f4aa02ebbc9637c154f1ff7489878.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/7a/4fc2de8957fa2b4ac7e14b21b2c7f8.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/7a/4fc2de8957fa2b4ac7e14b21b2c7f8.v8 deleted file mode 100644 index 1dca6d6fb..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/7a/4fc2de8957fa2b4ac7e14b21b2c7f8.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/7a/d0d3186d803581b2821e65f1bd368d.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/7a/d0d3186d803581b2821e65f1bd368d.blob deleted file mode 100644 index addfcb48a..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/7a/d0d3186d803581b2821e65f1bd368d.blob +++ /dev/null @@ -1,389 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/81/81bb47122b055ca713795945d47080.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/81/81bb47122b055ca713795945d47080.blob deleted file mode 100644 index 6445a46d6..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/81/81bb47122b055ca713795945d47080.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/81/8a788b6b296e05aac7e9c0f3bee7a6.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/81/8a788b6b296e05aac7e9c0f3bee7a6.v8 deleted file mode 100644 index 4597e9f42..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/81/8a788b6b296e05aac7e9c0f3bee7a6.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/81/c959a51d09c0aefbbaec7f2e2294bd.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/81/c959a51d09c0aefbbaec7f2e2294bd.blob deleted file mode 100644 index 23bddc867..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/81/c959a51d09c0aefbbaec7f2e2294bd.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","forEach","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.878ea558.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/81/cc3005104c4c9e65f7c4f9768ebfa5.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/81/cc3005104c4c9e65f7c4f9768ebfa5.blob deleted file mode 100644 index 8f3430dd0..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/81/cc3005104c4c9e65f7c4f9768ebfa5.blob +++ /dev/null @@ -1,70 +0,0 @@ -const faceDetector = new window.FaceDetector(); -const video = document.querySelector('video.webcam'); -const canvas = document.querySelector('canvas.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('canvas.face'); -const faceCtx = faceCanvas.getContext('2d'); -const SCALE = 1.2; -const SIZE = 10; - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ctx.drawImage(video, 0, 0, canvas.width, canvas.height); - - ctx.clearRect(0, 0, canvas.width, canvas.height); // paintFace(faces); - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // First draw it small - - faceCtx.drawImage(video, // Where should I grab the photo from? - face.x, // from what x and y should I start capturing from? - face.y, face.width, // how wide and high should I capture from? - face.height, face.x, // now to draw it, where should I start x and y? - face.y, SIZE, // how wide and high should it be? - SIZE); - const width = face.width * SCALE; - const height = face.height * SCALE; // then draw it back on, but scaled up - - faceCtx.drawImage(faceCanvas, // Where should I grab the photo from? - face.x, // from what x and y should I start capturing from? - face.y, // from what x and y should I start capturing from? - SIZE, SIZE, // Drawing - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 1; - ctx.strokeRect(left, top, width, height); - ctx.stroke(); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/82/0474e2e098c448e3628ec9c31f3ec6.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/82/0474e2e098c448e3628ec9c31f3ec6.blob deleted file mode 100644 index 00e781684..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/82/0474e2e098c448e3628ec9c31f3ec6.blob +++ /dev/null @@ -1,374 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/82/95e9ab5e621d7eb2054cd04b50d9fc.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/82/95e9ab5e621d7eb2054cd04b50d9fc.blob deleted file mode 100644 index 4e95875e1..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/82/95e9ab5e621d7eb2054cd04b50d9fc.blob +++ /dev/null @@ -1,71 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ctx.drawImage(video, 0, 0, canvas.width, canvas.height); - - ctx.clearRect(0, 0, canvas.width, canvas.height); // paintFace(faces); - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // First draw it small - - faceCtx.drawImage(video, // Where should I grab the photo from? - face.x, // from what x and y should I start capturing from? - face.y, face.width, // how wide and high should I capture from? - face.height, face.x, // now to draw it, where should I start x and y? - face.y, SIZE, // how wide and high should it be? - SIZE); - const width = face.width * SCALE; - const height = face.height * SCALE; // then draw it back on, but scaled up - - faceCtx.drawImage(faceCanvas, // Where should I grab the photo from? - face.x, // from what x and y should I start capturing from? - face.y, // from what x and y should I start capturing from? - SIZE, SIZE, // Drawing - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 1; - ctx.strokeRect(left, top, width, height); - ctx.stroke(); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/82/cd0858a9977225a17ac7f27a4d2946.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/82/cd0858a9977225a17ac7f27a4d2946.v8 deleted file mode 100644 index 10c925dd3..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/82/cd0858a9977225a17ac7f27a4d2946.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/83/377cb5032b7fa035d34cda01202a5c.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/83/377cb5032b7fa035d34cda01202a5c.blob deleted file mode 100644 index 653655d22..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/83/377cb5032b7fa035d34cda01202a5c.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","optionsInputs","querySelectorAll","options","SIZE","SCALE","handleOption","event","console","log","currentTarget","value","name","forEach","input","addEventListener","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","videoWidth","videoHeight","detect","faces","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.dce8a777.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/83/3bce9152245a022028722fe7877ae2.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/83/3bce9152245a022028722fe7877ae2.blob deleted file mode 100644 index bbdefd77a..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/83/3bce9152245a022028722fe7877ae2.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/83/66632e3cc7a015931398178ced87b0.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/83/66632e3cc7a015931398178ced87b0.blob deleted file mode 100644 index 71af70611..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/83/66632e3cc7a015931398178ced87b0.blob +++ /dev/null @@ -1,390 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/86/ca1d4279ca2b9ca22d6cc4c575e93f.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/86/ca1d4279ca2b9ca22d6cc4c575e93f.blob deleted file mode 100644 index 1d3b0a66e..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/86/ca1d4279ca2b9ca22d6cc4c575e93f.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/87/05cd336efd1c14e804ec90d84f784f.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/87/05cd336efd1c14e804ec90d84f784f.blob deleted file mode 100644 index f134aab96..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/87/05cd336efd1c14e804ec90d84f784f.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/87/9ac3c8cf7d9d180b7dcf0cc6487d17.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/87/9ac3c8cf7d9d180b7dcf0cc6487d17.blob deleted file mode 100644 index 48d7e153c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/87/9ac3c8cf7d9d180b7dcf0cc6487d17.blob +++ /dev/null @@ -1,53 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - // draw the small face - faceCtx.drawImage(video, 0, 0); // take that face back out and draw it back at normal size. -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/87/9cdade3aed6904238f11aaf00a9a25.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/87/9cdade3aed6904238f11aaf00a9a25.blob deleted file mode 100644 index 8ab1f8c51..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/87/9cdade3aed6904238f11aaf00a9a25.blob +++ /dev/null @@ -1,395 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/88/340713f6cb6d89ad1dd0246181e0a5.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/88/340713f6cb6d89ad1dd0246181e0a5.v8 deleted file mode 100644 index 8cc6c0281..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/88/340713f6cb6d89ad1dd0246181e0a5.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/88/924b685df56461a341b8821fd89413.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/88/924b685df56461a341b8821fd89413.blob deleted file mode 100644 index 37c9ab814..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/88/924b685df56461a341b8821fd89413.blob +++ /dev/null @@ -1,394 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/89/4997ea06aca421bf452e85f8d3588b.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/89/4997ea06aca421bf452e85f8d3588b.blob deleted file mode 100644 index 4be000bb7..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/89/4997ea06aca421bf452e85f8d3588b.blob +++ /dev/null @@ -1,348 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/89/645c5e68e0726264ccce29741df15a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/89/645c5e68e0726264ccce29741df15a.blob deleted file mode 100644 index c99ddf2b5..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/89/645c5e68e0726264ccce29741df15a.blob +++ /dev/null @@ -1,383 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/8f/906c1fc14d39e9b1c2dda6247d538b.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/8f/906c1fc14d39e9b1c2dda6247d538b.v8 deleted file mode 100644 index 35d53f9c1..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/8f/906c1fc14d39e9b1c2dda6247d538b.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/90/22c8654ec1e844705eaebaf09897e9.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/90/22c8654ec1e844705eaebaf09897e9.blob deleted file mode 100644 index 845ed62b1..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/90/22c8654ec1e844705eaebaf09897e9.blob +++ /dev/null @@ -1,66 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - // draw the small face - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - setTimeout(function () { - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); - }, 0); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/90/28b9402e61aff0badd2cd2b0264be5.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/90/28b9402e61aff0badd2cd2b0264be5.blob deleted file mode 100644 index 34e40c3db..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/90/28b9402e61aff0badd2cd2b0264be5.blob +++ /dev/null @@ -1,395 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/90/eba0bbc1dd73375d0cd58c36caeaef.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/90/eba0bbc1dd73375d0cd58c36caeaef.v8 deleted file mode 100644 index 0e190fe48..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/90/eba0bbc1dd73375d0cd58c36caeaef.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/91/13ad494aa8bd06100a2760fbd2ad3a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/91/13ad494aa8bd06100a2760fbd2ad3a.blob deleted file mode 100644 index 9730d8588..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/91/13ad494aa8bd06100a2760fbd2ad3a.blob +++ /dev/null @@ -1,403 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/93/32f1d7f8f96541fbc3b7323ddc6c14.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/93/32f1d7f8f96541fbc3b7323ddc6c14.v8 deleted file mode 100644 index a019338fc..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/93/32f1d7f8f96541fbc3b7323ddc6c14.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/93/6b886e0ed26648590b51925712029f.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/93/6b886e0ed26648590b51925712029f.v8 deleted file mode 100644 index 9676d6722..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/93/6b886e0ed26648590b51925712029f.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/93/c7160e0bcfa0f11fc4d493f1731b2e.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/93/c7160e0bcfa0f11fc4d493f1731b2e.blob deleted file mode 100644 index 2b1de5e0c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/93/c7160e0bcfa0f11fc4d493f1731b2e.blob +++ /dev/null @@ -1,44 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -ctx.strokeStyle = '#ffc600'; -ctx.lineWidth = 2; -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.strokeRect(left, top, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/93/f3cc7dedd0edea18067cfdb98e1e87.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/93/f3cc7dedd0edea18067cfdb98e1e87.blob deleted file mode 100644 index a61300f08..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/93/f3cc7dedd0edea18067cfdb98e1e87.blob +++ /dev/null @@ -1,17 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -console.log(video, canvas, faceCanvas, faceDetector); // Write a fucntion that will populate the users video - -function populateVideo() { - const stream = navigator.meidaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - console.log(stream); -} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/94/78b287174ecbbcef0f175771dba002.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/94/78b287174ecbbcef0f175771dba002.v8 deleted file mode 100644 index f30f787ff..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/94/78b287174ecbbcef0f175771dba002.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/95/1f57160433c76d24a035633e3029d1.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/95/1f57160433c76d24a035633e3029d1.blob deleted file mode 100644 index 0be2bf3eb..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/95/1f57160433c76d24a035633e3029d1.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","SCALE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.9c3b5de0.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/95/990cd6561b648dbb7c02b43cdd3db2.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/95/990cd6561b648dbb7c02b43cdd3db2.blob deleted file mode 100644 index f2cb95b8a..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/95/990cd6561b648dbb7c02b43cdd3db2.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","console","log","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","forEach","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.6bff835e.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/95/fe9c4e533f6a16bf838e744076804e.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/95/fe9c4e533f6a16bf838e744076804e.v8 deleted file mode 100644 index ea7f8e678..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/95/fe9c4e533f6a16bf838e744076804e.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/96/2f35d3eb3abf4744dfb56e85bb69b7.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/96/2f35d3eb3abf4744dfb56e85bb69b7.v8 deleted file mode 100644 index 6b8729444..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/96/2f35d3eb3abf4744dfb56e85bb69b7.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/97/dfcd0b9a84ca9de929b5cee9fb5de0.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/97/dfcd0b9a84ca9de929b5cee9fb5de0.v8 deleted file mode 100644 index ac9ad8af2..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/97/dfcd0b9a84ca9de929b5cee9fb5de0.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/98/380a47622e6cd8d3db6b96772ebc43.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/98/380a47622e6cd8d3db6b96772ebc43.v8 deleted file mode 100644 index eafd61463..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/98/380a47622e6cd8d3db6b96772ebc43.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/98/3b77f67d2ecdda85677e07c75f3107.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/98/3b77f67d2ecdda85677e07c75f3107.v8 deleted file mode 100644 index 900927651..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/98/3b77f67d2ecdda85677e07c75f3107.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/98/5767358048da5bd699b6a143bb6744.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/98/5767358048da5bd699b6a143bb6744.blob deleted file mode 100644 index 14b1e4980..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/98/5767358048da5bd699b6a143bb6744.blob +++ /dev/null @@ -1,64 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 100; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - // draw the small face - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/98/8445ac5a82dee18d1a5ff004cf7166.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/98/8445ac5a82dee18d1a5ff004cf7166.v8 deleted file mode 100644 index 7821778d8..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/98/8445ac5a82dee18d1a5ff004cf7166.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/99/080f1711850486b94a1eaa2ff98404.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/99/080f1711850486b94a1eaa2ff98404.blob deleted file mode 100644 index 0f459a1fe..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/99/080f1711850486b94a1eaa2ff98404.blob +++ /dev/null @@ -1,395 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/9f/e8dafe76b5aece62e02e0010ff3dd5.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/9f/e8dafe76b5aece62e02e0010ff3dd5.blob deleted file mode 100644 index 5b15950aa..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/9f/e8dafe76b5aece62e02e0010ff3dd5.blob +++ /dev/null @@ -1,78 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const optionsInputs = document.querySelectorAll('.controls input[type="range"]'); -const options = { - SIZE: 10, - SCALE: 1.35 -}; - -function handleOption(event) { - console.log(event.currentTarget.value); -} - -optionsInputs.forEach(input => input.addEventListener('input', handlOption)); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, options.SIZE, options.SIZE); // draw the small face back on, but scale up - - const width = face.width * options.SCALE; - const height = face.height * options.SCALE; - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, options.SIZE, options.SIZE, // Drawing args - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a0/197c7bb241997447a285863c1a9c88.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/a0/197c7bb241997447a285863c1a9c88.blob deleted file mode 100644 index e934533b3..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/a0/197c7bb241997447a285863c1a9c88.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a0/86c8c4ac27d28495dbf1f4d692c071.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/a0/86c8c4ac27d28495dbf1f4d692c071.v8 deleted file mode 100644 index 1a26fb060..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/a0/86c8c4ac27d28495dbf1f4d692c071.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a1/af80cc3cab3660c4100cbb6bd3597e.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/a1/af80cc3cab3660c4100cbb6bd3597e.v8 deleted file mode 100644 index c0c07fe5c..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/a1/af80cc3cab3660c4100cbb6bd3597e.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a1/cc87386ae106c470c8e3779fbc3c56.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/a1/cc87386ae106c470c8e3779fbc3c56.v8 deleted file mode 100644 index fa7ac1a8e..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/a1/cc87386ae106c470c8e3779fbc3c56.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a2/34588608eb8b59c8a4a47d890f013e.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/a2/34588608eb8b59c8a4a47d890f013e.v8 deleted file mode 100644 index 1dbd215b7..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/a2/34588608eb8b59c8a4a47d890f013e.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a2/5773fd2786d782ba37ef446586918a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/a2/5773fd2786d782ba37ef446586918a.blob deleted file mode 100644 index 174e53603..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/a2/5773fd2786d782ba37ef446586918a.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a2/e8b9641d996e533cfc2e9638df894f.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/a2/e8b9641d996e533cfc2e9638df894f.blob deleted file mode 100644 index c4e08192a..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/a2/e8b9641d996e533cfc2e9638df894f.blob +++ /dev/null @@ -1,16 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -console.log(video, canvas, faceCanvas, faceDetector); // Write a fucntion that will populate the users video - -function populateVideo() { - const stream = navigator.meidaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); -} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a3/13b6513414ae20022e923683dda5b5.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/a3/13b6513414ae20022e923683dda5b5.v8 deleted file mode 100644 index f852c2d8e..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/a3/13b6513414ae20022e923683dda5b5.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a3/6690cc7fced904358fade50e4dfdfa.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/a3/6690cc7fced904358fade50e4dfdfa.v8 deleted file mode 100644 index 15e7f88bb..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/a3/6690cc7fced904358fade50e4dfdfa.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a3/f58f0064dceed7820e372029138d77.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/a3/f58f0064dceed7820e372029138d77.blob deleted file mode 100644 index 373870b45..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/a3/f58f0064dceed7820e372029138d77.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","SCALE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.57930563.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a5/0db25e53a0927dffecb2e31e258069.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/a5/0db25e53a0927dffecb2e31e258069.v8 deleted file mode 100644 index 3426bb4d4..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/a5/0db25e53a0927dffecb2e31e258069.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a5/5e78a3f6202b80d802fe1f38840c8f.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/a5/5e78a3f6202b80d802fe1f38840c8f.blob deleted file mode 100644 index 4dd8d1df7..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/a5/5e78a3f6202b80d802fe1f38840c8f.blob +++ /dev/null @@ -1 +0,0 @@ -console.log('it works!'); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a5/77b78bfc5e5d0335f82107b9fa5f15.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/a5/77b78bfc5e5d0335f82107b9fa5f15.blob deleted file mode 100644 index 8799e25de..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/a5/77b78bfc5e5d0335f82107b9fa5f15.blob +++ /dev/null @@ -1,402 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a5/e1673e252b3c9900e1600b070d4a45.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/a5/e1673e252b3c9900e1600b070d4a45.blob deleted file mode 100644 index 97ba1b266..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/a5/e1673e252b3c9900e1600b070d4a45.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","drawImage","x","y","SCALE","imageSmoothingEnabled","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAMA,KAAK,GAAGC,QAAQ,CAACC,aAAT,CAAuB,SAAvB,CAAd;AACA,MAAMC,MAAM,GAAGF,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAf;AACA,MAAME,GAAG,GAAGD,MAAM,CAACE,UAAP,CAAkB,IAAlB,CAAZ;AACA,MAAMC,UAAU,GAAGL,QAAQ,CAACC,aAAT,CAAuB,OAAvB,CAAnB;AACA,MAAMK,OAAO,GAAGJ,MAAM,CAACE,UAAP,CAAkB,IAAlB,CAAhB;AACA,MAAMG,YAAY,GAAG,IAAIC,MAAM,CAACC,YAAX,EAArB;AACA,MAAMC,IAAI,GAAG,EAAb,C,CAEA;;AACA,eAAeC,aAAf,GAA+B;AAC7B,QAAMC,MAAM,GAAG,MAAMC,SAAS,CAACC,YAAV,CAAuBC,YAAvB,CAAoC;AACvDhB,IAAAA,KAAK,EAAE;AAAEiB,MAAAA,KAAK,EAAE,IAAT;AAAeC,MAAAA,MAAM,EAAE;AAAvB;AADgD,GAApC,CAArB;AAGAlB,EAAAA,KAAK,CAACmB,SAAN,GAAkBN,MAAlB;AACA,QAAMb,KAAK,CAACoB,IAAN,EAAN,CAL6B,CAM7B;;AACAC,EAAAA,OAAO,CAACC,GAAR,CAAYtB,KAAK,CAACuB,UAAlB,EAA8BvB,KAAK,CAACwB,WAApC;AACArB,EAAAA,MAAM,CAACc,KAAP,GAAejB,KAAK,CAACuB,UAArB;AACApB,EAAAA,MAAM,CAACe,MAAP,GAAgBlB,KAAK,CAACwB,WAAtB;AACAlB,EAAAA,UAAU,CAACW,KAAX,GAAmBjB,KAAK,CAACuB,UAAzB;AACAjB,EAAAA,UAAU,CAACY,MAAX,GAAoBlB,KAAK,CAACwB,WAA1B;AACD;;AAED,eAAeC,MAAf,GAAwB;AACtB,QAAMC,KAAK,GAAG,MAAMlB,YAAY,CAACiB,MAAb,CAAoBzB,KAApB,CAApB,CADsB,CAEtB;;AACA0B,EAAAA,KAAK,CAACC,OAAN,CAAcC,QAAd;AACAF,EAAAA,KAAK,CAACC,OAAN,CAAcE,MAAd;AACAC,EAAAA,qBAAqB,CAACL,MAAD,CAArB;AACD;;AAED,SAASG,QAAT,CAAkBG,IAAlB,EAAwB;AACtB,QAAM;AAAEd,IAAAA,KAAF;AAASC,IAAAA,MAAT;AAAiBc,IAAAA,GAAjB;AAAsBC,IAAAA;AAAtB,MAA+BF,IAAI,CAACG,WAA1C;AACA9B,EAAAA,GAAG,CAAC+B,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoBhC,MAAM,CAACc,KAA3B,EAAkCd,MAAM,CAACe,MAAzC;AACAd,EAAAA,GAAG,CAACgC,WAAJ,GAAkB,SAAlB;AACAhC,EAAAA,GAAG,CAACiC,SAAJ,GAAgB,CAAhB;AACAjC,EAAAA,GAAG,CAACkC,UAAJ,CAAeL,IAAf,EAAqBD,GAArB,EAA0Bf,KAA1B,EAAiCC,MAAjC;AACD;;AAED,SAASW,MAAT,CAAgB;AAAEK,EAAAA,WAAW,EAAEH;AAAf,CAAhB,EAAuC;AACrC;AACAxB,EAAAA,OAAO,CAACgC,SAAR,EACE;AACAvC,EAAAA,KAFF,EAES;AACP+B,EAAAA,IAAI,CAACS,CAHP,EAGU;AACRT,EAAAA,IAAI,CAACU,CAJP,EAKEV,IAAI,CAACd,KALP,EAMEc,IAAI,CAACb,MANP,EAOE;AACAa,EAAAA,IAAI,CAACS,CARP,EAQU;AACRT,EAAAA,IAAI,CAACU,CATP,EAUE9B,IAVF,EAWEA,IAXF,EAFqC,CAerC;;AACA,QAAM+B,KAAK,GAAG,GAAd;AACA,QAAMzB,KAAK,GAAGc,IAAI,CAACd,KAAL,GAAayB,KAA3B;AACA,QAAMxB,MAAM,GAAGa,IAAI,CAACb,MAAL,GAAcwB,KAA7B;AACAnC,EAAAA,OAAO,CAACoC,qBAAR,GAAgC,KAAhC,CAnBqC,CAqBrC;;AACApC,EAAAA,OAAO,CAACgC,SAAR,CACEjC,UADF,EACc;AACZyB,EAAAA,IAAI,CAACS,CAFP,EAEU;AACRT,EAAAA,IAAI,CAACU,CAHP,EAGU;AACR9B,EAAAA,IAJF,EAKEA,IALF,EAME;AACAoB,EAAAA,IAAI,CAACS,CAAL,GAAS,CAACvB,KAAK,GAAGc,IAAI,CAACd,KAAd,IAAuB,CAPlC,EAQEc,IAAI,CAACU,CAAL,GAAS,CAACvB,MAAM,GAAGa,IAAI,CAACb,MAAf,IAAyB,CARpC,EASED,KATF,EAUEC,MAVF;AAYD;;AAEDN,aAAa,GAAGgC,IAAhB,CAAqBnB,MAArB;;AC3EA,IAAIoB,qBAAqB,GAAG,kCAA5B;AAA+D,IAAIC,UAAU,GAAG,4BAAjB;AAE/D,IAAIC,SAAS,GAAGC,MAAM,CAACC,MAAP,CAAcC,MAA9B;;AAEA,SAASA,MAAT,CAAgBC,UAAhB,EAA4B;AAC1BJ,EAAAA,SAAS,CAACK,IAAV,CAAe,IAAf,EAAqBD,UAArB;AACA,OAAKE,GAAL,GAAW;AACTC,IAAAA,IAAI,EAAEN,MAAM,CAACC,MAAP,CAAcM,OADX;AAETC,IAAAA,gBAAgB,EAAE,EAFT;AAGTC,IAAAA,iBAAiB,EAAE,EAHV;AAITC,IAAAA,MAAM,EAAE,UAASC,EAAT,EAAa;AACnB,WAAKH,gBAAL,CAAsBI,IAAtB,CAA2BD,EAAE,IAAI,YAAW,CAAE,CAA9C;AACD,KANQ;AAOTE,IAAAA,OAAO,EAAE,UAASF,EAAT,EAAa;AACpB,WAAKF,iBAAL,CAAuBG,IAAvB,CAA4BD,EAA5B;AACD;AATQ,GAAX;AAYAX,EAAAA,MAAM,CAACC,MAAP,CAAcM,OAAd,GAAwB,IAAxB;AACD;;AAEDP,MAAM,CAACC,MAAP,CAAcC,MAAd,GAAuBA,MAAvB;AACA,IAAIY,aAAJ,EAAmBC,cAAnB;AAEA,IAAIC,MAAM,GAAGhB,MAAM,CAACC,MAAP,CAAce,MAA3B;;AACA,IAAI,CAAC,CAACA,MAAD,IAAW,CAACA,MAAM,CAACC,eAApB,KAAwC,OAAOC,SAAP,KAAqB,WAAjE,EAA8E;AAC5E,MAAIC,QAAQ,GAAG,MAA4BC,QAAQ,CAACD,QAApD;AACA,MAAIE,QAAQ,GAAGD,QAAQ,CAACC,QAAT,KAAsB,QAAtB,GAAiC,KAAjC,GAAyC,IAAxD;AACA,MAAIC,EAAE,GAAG,IAAIJ,SAAJ,CACPG,QAAQ,GAAG,KAAX,GAAmBF,QAAnB,GAA8B,GAA9B,aAA2D,GADpD,CAAT;;AAGAG,EAAAA,EAAE,CAACC,SAAH,GAAe,UAASC,KAAT,EAAgB;AAC7BV,IAAAA,aAAa,GAAG,EAAhB;AACAC,IAAAA,cAAc,GAAG,EAAjB;AAEA,QAAIT,IAAI,GAAGmB,IAAI,CAACC,KAAL,CAAWF,KAAK,CAAClB,IAAjB,CAAX;;AAEA,QAAIA,IAAI,CAACqB,IAAL,KAAc,QAAlB,EAA4B;AAC1B;AACAC,MAAAA,kBAAkB;AAElB,UAAIC,MAAM,GAAGvB,IAAI,CAACuB,MAAL,CAAYC,MAAZ,EACX;AACAC,MAAAA,KAAK,IAAIA,KAAK,CAACC,OAAN,KAAkBnC,qBAFhB,CAAb,CAJ0B,CAS1B;;AACA,UAAIoC,OAAO,GAAG,KAAd;AACAJ,MAAAA,MAAM,CAAClD,OAAP,CAAeoD,KAAK,IAAI;AACtB,YAAI,CAACA,KAAK,CAACG,KAAX,EAAkB;AAChB,cAAIC,SAAS,GAAGC,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBP,KAAK,CAACQ,EAA7B,CAA9B;;AACA,cAAIJ,SAAJ,EAAe;AACbF,YAAAA,OAAO,GAAG,IAAV;AACD;AACF;AACF,OAPD;;AASA,UAAIA,OAAJ,EAAa;AACX5D,QAAAA,OAAO,CAACmE,KAAR;AAEAX,QAAAA,MAAM,CAAClD,OAAP,CAAe,UAASoD,KAAT,EAAgB;AAC7BU,UAAAA,QAAQ,CAACJ,MAAM,CAACC,aAAR,EAAuBP,KAAvB,CAAR;AACD,SAFD;AAIAhB,QAAAA,cAAc,CAACpC,OAAf,CAAuB,UAAS+D,CAAT,EAAY;AACjCC,UAAAA,YAAY,CAACD,CAAC,CAAC,CAAD,CAAF,EAAOA,CAAC,CAAC,CAAD,CAAR,CAAZ;AACD,SAFD;AAGD,OAVD,MAUO;AACLjF,QAAAA,MAAM,CAAC2D,QAAP,CAAgBwB,MAAhB;AACD;AACF;;AAED,QAAItC,IAAI,CAACqB,IAAL,KAAc,OAAlB,EAA2B;AACzBtD,MAAAA,OAAO,CAACwE,KAAR,CACE,kBAAkBvC,IAAI,CAACwC,SAAL,CAAeC,OAAjC,GAA2C,IAA3C,GAAkDzC,IAAI,CAACwC,SAAL,CAAeE,KADnE;AAIApB,MAAAA,kBAAkB;AAElB,UAAIqB,OAAO,GAAGC,kBAAkB,CAAC5C,IAAD,CAAhC;AACArD,MAAAA,QAAQ,CAACkG,IAAT,CAAcC,WAAd,CAA0BH,OAA1B;AACD;AACF,GAnDD;AAoDD;;AAED,SAASrB,kBAAT,GAA8B;AAC5B,MAAIqB,OAAO,GAAGhG,QAAQ,CAACoG,cAAT,CAAwBvD,UAAxB,CAAd;;AACA,MAAImD,OAAJ,EAAa;AACXA,IAAAA,OAAO,CAACK,MAAR;AACAjF,IAAAA,OAAO,CAACC,GAAR,CAAY,2BAAZ;AACD;AACF;;AAED,SAAS4E,kBAAT,CAA4B5C,IAA5B,EAAkC;AAChC,MAAI2C,OAAO,GAAGhG,QAAQ,CAACsG,aAAT,CAAuB,KAAvB,CAAd;AACAN,EAAAA,OAAO,CAACV,EAAR,GAAazC,UAAb,CAFgC,CAIhC;;AACA,MAAIiD,OAAO,GAAG9F,QAAQ,CAACsG,aAAT,CAAuB,KAAvB,CAAd;AACA,MAAIC,UAAU,GAAGvG,QAAQ,CAACsG,aAAT,CAAuB,KAAvB,CAAjB;AACAR,EAAAA,OAAO,CAACU,SAAR,GAAoBnD,IAAI,CAACoD,SAAL,CAAeX,OAAnC;AACAS,EAAAA,UAAU,CAACC,SAAX,GAAuBnD,IAAI,CAACoD,SAAL,CAAeV,KAAtC;AAEAC,EAAAA,OAAO,CAACQ,SAAR,GACE,2NACA,mFADA,GAEA,yEAFA,GAGA,qEAHA,GAIAV,OAAO,CAACU,SAJR,GAKA,QALA,GAMA,OANA,GAOAD,UAAU,CAACC,SAPX,GAQA,QARA,GASA,QAVF;AAYA,SAAOR,OAAP;AACD;;AAED,SAASU,UAAT,CAAoB1D,MAApB,EAA4BsC,EAA5B,EAAgC;AAC9B,MAAIqB,OAAO,GAAG3D,MAAM,CAAC2D,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ,WAAO,EAAP;AACD;;AAED,MAAIC,OAAO,GAAG,EAAd;AACA,MAAIC,CAAJ,EAAOC,CAAP,EAAUC,GAAV;;AAEA,OAAKF,CAAL,IAAUF,OAAV,EAAmB;AACjB,SAAKG,CAAL,IAAUH,OAAO,CAACE,CAAD,CAAP,CAAW,CAAX,CAAV,EAAyB;AACvBE,MAAAA,GAAG,GAAGJ,OAAO,CAACE,CAAD,CAAP,CAAW,CAAX,EAAcC,CAAd,CAAN;;AAEA,UAAIC,GAAG,KAAKzB,EAAR,IAAe0B,KAAK,CAACC,OAAN,CAAcF,GAAd,KAAsBA,GAAG,CAACA,GAAG,CAACG,MAAJ,GAAa,CAAd,CAAH,KAAwB5B,EAAjE,EAAsE;AACpEsB,QAAAA,OAAO,CAACjD,IAAR,CAAakD,CAAb;AACD;AACF;AACF;;AAED,MAAI7D,MAAM,CAACe,MAAX,EAAmB;AACjB6C,IAAAA,OAAO,GAAGA,OAAO,CAACO,MAAR,CAAeT,UAAU,CAAC1D,MAAM,CAACe,MAAR,EAAgBuB,EAAhB,CAAzB,CAAV;AACD;;AAED,SAAOsB,OAAP;AACD;;AAED,SAASpB,QAAT,CAAkBxC,MAAlB,EAA0B8B,KAA1B,EAAiC;AAC/B,MAAI6B,OAAO,GAAG3D,MAAM,CAAC2D,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAIA,OAAO,CAAC7B,KAAK,CAACQ,EAAP,CAAP,IAAqB,CAACtC,MAAM,CAACe,MAAjC,EAAyC;AACvC,QAAIL,EAAE,GAAG,IAAI0D,QAAJ,CAAa,SAAb,EAAwB,QAAxB,EAAkC,SAAlC,EAA6CtC,KAAK,CAACuC,MAAnD,CAAT;AACAvC,IAAAA,KAAK,CAACG,KAAN,GAAc,CAAC0B,OAAO,CAAC7B,KAAK,CAACQ,EAAP,CAAtB;AACAqB,IAAAA,OAAO,CAAC7B,KAAK,CAACQ,EAAP,CAAP,GAAoB,CAAC5B,EAAD,EAAKoB,KAAK,CAACwC,IAAX,CAApB;AACD,GAJD,MAIO,IAAItE,MAAM,CAACe,MAAX,EAAmB;AACxByB,IAAAA,QAAQ,CAACxC,MAAM,CAACe,MAAR,EAAgBe,KAAhB,CAAR;AACD;AACF;;AAED,SAASK,cAAT,CAAwBnC,MAAxB,EAAgCsC,EAAhC,EAAoC;AAClC,MAAIqB,OAAO,GAAG3D,MAAM,CAAC2D,OAArB;;AAEA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAI,CAACA,OAAO,CAACrB,EAAD,CAAR,IAAgBtC,MAAM,CAACe,MAA3B,EAAmC;AACjC,WAAOoB,cAAc,CAACnC,MAAM,CAACe,MAAR,EAAgBuB,EAAhB,CAArB;AACD;;AAED,MAAIzB,aAAa,CAACyB,EAAD,CAAjB,EAAuB;AACrB;AACD;;AAEDzB,EAAAA,aAAa,CAACyB,EAAD,CAAb,GAAoB,IAApB;AAEA,MAAIiC,MAAM,GAAGvE,MAAM,CAACwE,KAAP,CAAalC,EAAb,CAAb;AAEAxB,EAAAA,cAAc,CAACH,IAAf,CAAoB,CAACX,MAAD,EAASsC,EAAT,CAApB;;AAEA,MAAIiC,MAAM,IAAIA,MAAM,CAACnE,GAAjB,IAAwBmE,MAAM,CAACnE,GAAP,CAAWG,gBAAX,CAA4B2D,MAAxD,EAAgE;AAC9D,WAAO,IAAP;AACD;;AAED,SAAOR,UAAU,CAACtB,MAAM,CAACC,aAAR,EAAuBC,EAAvB,CAAV,CAAqCmC,IAArC,CAA0C,UAASnC,EAAT,EAAa;AAC5D,WAAOH,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBC,EAAvB,CAArB;AACD,GAFM,CAAP;AAGD;;AAED,SAASI,YAAT,CAAsB1C,MAAtB,EAA8BsC,EAA9B,EAAkC;AAChC,MAAIiC,MAAM,GAAGvE,MAAM,CAACwE,KAAP,CAAalC,EAAb,CAAb;AACAtC,EAAAA,MAAM,CAACM,OAAP,GAAiB,EAAjB;;AACA,MAAIiE,MAAJ,EAAY;AACVA,IAAAA,MAAM,CAACnE,GAAP,CAAWC,IAAX,GAAkBL,MAAM,CAACM,OAAzB;AACD;;AAED,MAAIiE,MAAM,IAAIA,MAAM,CAACnE,GAAjB,IAAwBmE,MAAM,CAACnE,GAAP,CAAWI,iBAAX,CAA6B0D,MAAzD,EAAiE;AAC/DK,IAAAA,MAAM,CAACnE,GAAP,CAAWI,iBAAX,CAA6B9B,OAA7B,CAAqC,UAASgG,EAAT,EAAa;AAChDA,MAAAA,EAAE,CAAC1E,MAAM,CAACM,OAAR,CAAF;AACD,KAFD;AAGD;;AAED,SAAON,MAAM,CAACwE,KAAP,CAAalC,EAAb,CAAP;AACAtC,EAAAA,MAAM,CAACsC,EAAD,CAAN;AAEAiC,EAAAA,MAAM,GAAGvE,MAAM,CAACwE,KAAP,CAAalC,EAAb,CAAT;;AACA,MAAIiC,MAAM,IAAIA,MAAM,CAACnE,GAAjB,IAAwBmE,MAAM,CAACnE,GAAP,CAAWG,gBAAX,CAA4B2D,MAAxD,EAAgE;AAC9DK,IAAAA,MAAM,CAACnE,GAAP,CAAWG,gBAAX,CAA4B7B,OAA5B,CAAoC,UAASgG,EAAT,EAAa;AAC/CA,MAAAA,EAAE;AACH,KAFD;;AAGA,WAAO,IAAP;AACD;AACF","file":"pixelated-face.f102d4a7.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a6/0081d4695c1702e773680a699439de.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/a6/0081d4695c1702e773680a699439de.blob deleted file mode 100644 index 9b7ab53dc..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/a6/0081d4695c1702e773680a699439de.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.4b91d510.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a6/c2acc3a50ed9f69c5bf114878c39d6.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/a6/c2acc3a50ed9f69c5bf114878c39d6.v8 deleted file mode 100644 index e36de9c09..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/a6/c2acc3a50ed9f69c5bf114878c39d6.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a6/ffcb9e6431295ba719bdcd6387155b.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/a6/ffcb9e6431295ba719bdcd6387155b.blob deleted file mode 100644 index 5499ffb91..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/a6/ffcb9e6431295ba719bdcd6387155b.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a7/ce934e4ef968295a84ed96a1e6617d.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/a7/ce934e4ef968295a84ed96a1e6617d.v8 deleted file mode 100644 index 860761f33..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/a7/ce934e4ef968295a84ed96a1e6617d.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a7/fc0f92547489bbf27c8a5a7f9e8388.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/a7/fc0f92547489bbf27c8a5a7f9e8388.v8 deleted file mode 100644 index a6238ccfc..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/a7/fc0f92547489bbf27c8a5a7f9e8388.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a8/18102f36c763f5b1eb2442b8fce7bb.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/a8/18102f36c763f5b1eb2442b8fce7bb.blob deleted file mode 100644 index 5e6a67943..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/a8/18102f36c763f5b1eb2442b8fce7bb.blob +++ /dev/null @@ -1,373 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a8/6fd33ae17de71653859fb3342ffdc4.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/a8/6fd33ae17de71653859fb3342ffdc4.v8 deleted file mode 100644 index 849c7edc4..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/a8/6fd33ae17de71653859fb3342ffdc4.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a8/e0b149b2a03347fe78c522f6d729e4.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/a8/e0b149b2a03347fe78c522f6d729e4.blob deleted file mode 100644 index f2bc5db48..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/a8/e0b149b2a03347fe78c522f6d729e4.blob +++ /dev/null @@ -1,70 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 100; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - // draw the small face - faceCtx.drawImage( // Capture Settings - video, // where should I grab the frame from? - face.x, // Where should we start capturing the face from? X and Y? - face.y, face.width, // how wide and how high should the face be? - face.height, // Paint Settings - face.x, // where should we start drawing the face on? - face.y, // how wide and how high should we paint it - SIZE, SIZE); // take that face back out and draw it back at normal size. - - const width = face.width * SCALE; - const height = face.height * SCALE; // then draw it back on, but scaled up - - faceCtx.drawImage(faceCanvas, // Where should I grab the photo from? - face.x, // from what x and y should I start capturing from? - face.y, // from what x and y should I start capturing from? - SIZE, SIZE, // Drawing - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/a8/f09b1a7e751fdc04880ea565b0231e.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/a8/f09b1a7e751fdc04880ea565b0231e.v8 deleted file mode 100644 index cd338d179..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/a8/f09b1a7e751fdc04880ea565b0231e.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/aa/ec78432bbb35d45e43658653eeb0e1.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/aa/ec78432bbb35d45e43658653eeb0e1.v8 deleted file mode 100644 index cc3357579..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/aa/ec78432bbb35d45e43658653eeb0e1.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ab/06190dfe712529184c40e9a758141c.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ab/06190dfe712529184c40e9a758141c.blob deleted file mode 100644 index 1c757430f..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ab/06190dfe712529184c40e9a758141c.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ab/0c310b7272d4051109cf7a6d5a1579.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/ab/0c310b7272d4051109cf7a6d5a1579.v8 deleted file mode 100644 index b74b871fb..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/ab/0c310b7272d4051109cf7a6d5a1579.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ab/28b6e056c7f0c215acd83f2c8e0443.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/ab/28b6e056c7f0c215acd83f2c8e0443.v8 deleted file mode 100644 index 8a232abba..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/ab/28b6e056c7f0c215acd83f2c8e0443.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ab/5fd0fe1113e15a32ca4ddea6738242.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ab/5fd0fe1113e15a32ca4ddea6738242.blob deleted file mode 100644 index 8c1458084..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ab/5fd0fe1113e15a32ca4ddea6738242.blob +++ /dev/null @@ -1,331 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ac/aee0bb74254e5cc6f724a1c9de67f9.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ac/aee0bb74254e5cc6f724a1c9de67f9.blob deleted file mode 100644 index 2ca0e9e17..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ac/aee0bb74254e5cc6f724a1c9de67f9.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ad/3a03f7e06e0d9e3d5c1586a12a1c1c.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/ad/3a03f7e06e0d9e3d5c1586a12a1c1c.v8 deleted file mode 100644 index 230fb5d0e..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/ad/3a03f7e06e0d9e3d5c1586a12a1c1c.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ad/9130b58e86e7e4410ab7fed2eceb3a.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/ad/9130b58e86e7e4410ab7fed2eceb3a.v8 deleted file mode 100644 index 8fc4ed2b0..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/ad/9130b58e86e7e4410ab7fed2eceb3a.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ad/bd9255927c3fbdd29fb5a8d4ba0ff4.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ad/bd9255927c3fbdd29fb5a8d4ba0ff4.blob deleted file mode 100644 index b98b0c6c2..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ad/bd9255927c3fbdd29fb5a8d4ba0ff4.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ae/2d2aec0524bfb1d0845a316230d8eb.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ae/2d2aec0524bfb1d0845a316230d8eb.blob deleted file mode 100644 index 02eefce14..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ae/2d2aec0524bfb1d0845a316230d8eb.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ae/630249c865921263c92364b0526dac.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ae/630249c865921263c92364b0526dac.blob deleted file mode 100644 index 8e6d7abdf..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ae/630249c865921263c92364b0526dac.blob +++ /dev/null @@ -1,82 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const optionsInputs = document.querySelectorAll('.controls input[type="range"]'); -const options = { - SIZE: 10, - SCALE: 1.35 -}; - -function handleOption(event) { - const { - value, - name - } = event.currentTarget; - options[name] = parseFloat(value); -} - -optionsInputs.forEach(input => input.addEventListener('input', handleOption)); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, options.SIZE, options.SIZE); // draw the small face back on, but scale up - - const width = face.width * options.SCALE; - const height = face.height * options.SCALE; - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, options.SIZE, options.SIZE, // Drawing args - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ae/66897f6d1478716763e70038083d3a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ae/66897f6d1478716763e70038083d3a.blob deleted file mode 100644 index e880b99d4..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ae/66897f6d1478716763e70038083d3a.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ae/a23452e6dcc3d3bb3a2dc2367fd899.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/ae/a23452e6dcc3d3bb3a2dc2367fd899.v8 deleted file mode 100644 index 896fa8ea4..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/ae/a23452e6dcc3d3bb3a2dc2367fd899.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/af/12cb1a107d0a7247e90da3b32018ce.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/af/12cb1a107d0a7247e90da3b32018ce.blob deleted file mode 100644 index 34416786b..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/af/12cb1a107d0a7247e90da3b32018ce.blob +++ /dev/null @@ -1,18 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - console.log(stream); -} - -populateVideo(); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/af/92c8fba16f8def6c68f356df576808.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/af/92c8fba16f8def6c68f356df576808.v8 deleted file mode 100644 index b0e949649..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/af/92c8fba16f8def6c68f356df576808.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/af/a72eb75aecc490fa568cc4a0557b9a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/af/a72eb75aecc490fa568cc4a0557b9a.blob deleted file mode 100644 index 344a18dab..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/af/a72eb75aecc490fa568cc4a0557b9a.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/af/c9e44fc601fa07790cbbec520598f2.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/af/c9e44fc601fa07790cbbec520598f2.v8 deleted file mode 100644 index 69f8fb304..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/af/c9e44fc601fa07790cbbec520598f2.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/133cf6d56f976873927ef06b268c73.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b0/133cf6d56f976873927ef06b268c73.blob deleted file mode 100644 index 04dd6939a..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/133cf6d56f976873927ef06b268c73.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/16dafe59f952adafd7b85c77c41687.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/b0/16dafe59f952adafd7b85c77c41687.v8 deleted file mode 100644 index 0bfb2bfdf..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/16dafe59f952adafd7b85c77c41687.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/2a64fad9062b2b728c2a794612fb0f.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b0/2a64fad9062b2b728c2a794612fb0f.blob deleted file mode 100644 index 84e5f3f4e..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/2a64fad9062b2b728c2a794612fb0f.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face-DEMO.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["faceDetector","window","FaceDetector","video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","SCALE","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","videoWidth","videoHeight","detect","faces","clearRect","forEach","drawFace","censor","requestAnimationFrame","boundingBox","face","imageSmoothingEnabled","drawImage","x","y","top","left","strokeStyle","lineWidth","strokeRect","stroke","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","console","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","log","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face-DEMO.b11a9c3d.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/41641e1715a113a66ca3235c815b48.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/b0/41641e1715a113a66ca3235c815b48.v8 deleted file mode 100644 index c180ccded..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/41641e1715a113a66ca3235c815b48.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/4207c59fb79a8a3e302ca1d796bf7b.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b0/4207c59fb79a8a3e302ca1d796bf7b.blob deleted file mode 100644 index 885b93053..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/4207c59fb79a8a3e302ca1d796bf7b.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","optionsInputs","querySelectorAll","options","SIZE","SCALE","handleOption","event","console","log","currentTarget","value","forEach","input","addEventListener","handlOption","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","videoWidth","videoHeight","detect","faces","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAMA,KAAK,GAAGC,QAAQ,CAACC,aAAT,CAAuB,SAAvB,CAAd;AACA,MAAMC,MAAM,GAAGF,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAf;AACA,MAAME,GAAG,GAAGD,MAAM,CAACE,UAAP,CAAkB,IAAlB,CAAZ;AACA,MAAMC,UAAU,GAAGL,QAAQ,CAACC,aAAT,CAAuB,OAAvB,CAAnB;AACA,MAAMK,OAAO,GAAGD,UAAU,CAACD,UAAX,CAAsB,IAAtB,CAAhB;AACA,MAAMG,YAAY,GAAG,IAAIC,MAAM,CAACC,YAAX,EAArB;AACA,MAAMC,aAAa,GAAGV,QAAQ,CAACW,gBAAT,CACpB,+BADoB,CAAtB;AAIA,MAAMC,OAAO,GAAG;AACdC,EAAAA,IAAI,EAAE,EADQ;AAEdC,EAAAA,KAAK,EAAE;AAFO,CAAhB;;AAKA,SAASC,YAAT,CAAsBC,KAAtB,EAA6B;AAC3BC,EAAAA,OAAO,CAACC,GAAR,CAAYF,KAAK,CAACG,aAAN,CAAoBC,KAAhC;AACD;;AACDV,aAAa,CAACW,OAAd,CAAsBC,KAAK,IAAIA,KAAK,CAACC,gBAAN,CAAuB,OAAvB,EAAgCC,WAAhC,CAA/B,E,CAEA;;AACA,eAAeC,aAAf,GAA+B;AAC7B,QAAMC,MAAM,GAAG,MAAMC,SAAS,CAACC,YAAV,CAAuBC,YAAvB,CAAoC;AACvD9B,IAAAA,KAAK,EAAE;AAAE+B,MAAAA,KAAK,EAAE,IAAT;AAAeC,MAAAA,MAAM,EAAE;AAAvB;AADgD,GAApC,CAArB;AAGAhC,EAAAA,KAAK,CAACiC,SAAN,GAAkBN,MAAlB;AACA,QAAM3B,KAAK,CAACkC,IAAN,EAAN,CAL6B,CAM7B;;AACAhB,EAAAA,OAAO,CAACC,GAAR,CAAYnB,KAAK,CAACmC,UAAlB,EAA8BnC,KAAK,CAACoC,WAApC;AACAjC,EAAAA,MAAM,CAAC4B,KAAP,GAAe/B,KAAK,CAACmC,UAArB;AACAhC,EAAAA,MAAM,CAAC6B,MAAP,GAAgBhC,KAAK,CAACoC,WAAtB;AACA9B,EAAAA,UAAU,CAACyB,KAAX,GAAmB/B,KAAK,CAACmC,UAAzB;AACA7B,EAAAA,UAAU,CAAC0B,MAAX,GAAoBhC,KAAK,CAACoC,WAA1B;AACD;;AAED,eAAeC,MAAf,GAAwB;AACtB,QAAMC,KAAK,GAAG,MAAM9B,YAAY,CAAC6B,MAAb,CAAoBrC,KAApB,CAApB,CADsB,CAEtB;;AACAsC,EAAAA,KAAK,CAAChB,OAAN,CAAciB,QAAd;AACAD,EAAAA,KAAK,CAAChB,OAAN,CAAckB,MAAd;AACAC,EAAAA,qBAAqB,CAACJ,MAAD,CAArB;AACD;;AAED,SAASE,QAAT,CAAkBG,IAAlB,EAAwB;AACtB,QAAM;AAAEX,IAAAA,KAAF;AAASC,IAAAA,MAAT;AAAiBW,IAAAA,GAAjB;AAAsBC,IAAAA;AAAtB,MAA+BF,IAAI,CAACG,WAA1C;AACAzC,EAAAA,GAAG,CAAC0C,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoB3C,MAAM,CAAC4B,KAA3B,EAAkC5B,MAAM,CAAC6B,MAAzC;AACA5B,EAAAA,GAAG,CAAC2C,WAAJ,GAAkB,SAAlB;AACA3C,EAAAA,GAAG,CAAC4C,SAAJ,GAAgB,CAAhB;AACA5C,EAAAA,GAAG,CAAC6C,UAAJ,CAAeL,IAAf,EAAqBD,GAArB,EAA0BZ,KAA1B,EAAiCC,MAAjC;AACD;;AAED,SAASQ,MAAT,CAAgB;AAAEK,EAAAA,WAAW,EAAEH;AAAf,CAAhB,EAAuC;AACrCnC,EAAAA,OAAO,CAAC2C,qBAAR,GAAgC,KAAhC;AACA3C,EAAAA,OAAO,CAACuC,SAAR,CAAkB,CAAlB,EAAqB,CAArB,EAAwBxC,UAAU,CAACyB,KAAnC,EAA0CzB,UAAU,CAAC0B,MAArD,EAFqC,CAGrC;;AACAzB,EAAAA,OAAO,CAAC4C,SAAR,EACE;AACAnD,EAAAA,KAFF,EAES;AACP0C,EAAAA,IAAI,CAACU,CAHP,EAGU;AACRV,EAAAA,IAAI,CAACW,CAJP,EAKEX,IAAI,CAACX,KALP,EAMEW,IAAI,CAACV,MANP,EAOE;AACAU,EAAAA,IAAI,CAACU,CARP,EAQU;AACRV,EAAAA,IAAI,CAACW,CATP,EAUExC,OAAO,CAACC,IAVV,EAWED,OAAO,CAACC,IAXV,EAJqC,CAiBrC;;AAEA,QAAMiB,KAAK,GAAGW,IAAI,CAACX,KAAL,GAAalB,OAAO,CAACE,KAAnC;AACA,QAAMiB,MAAM,GAAGU,IAAI,CAACV,MAAL,GAAcnB,OAAO,CAACE,KAArC;AACAR,EAAAA,OAAO,CAAC4C,SAAR,CACE7C,UADF,EACc;AACZoC,EAAAA,IAAI,CAACU,CAFP,EAEU;AACRV,EAAAA,IAAI,CAACW,CAHP,EAIExC,OAAO,CAACC,IAJV,EAKED,OAAO,CAACC,IALV,EAME;AACA4B,EAAAA,IAAI,CAACU,CAAL,GAAS,CAACrB,KAAK,GAAGW,IAAI,CAACX,KAAd,IAAuB,CAPlC,EAQEW,IAAI,CAACW,CAAL,GAAS,CAACrB,MAAM,GAAGU,IAAI,CAACV,MAAf,IAAyB,CARpC,EASED,KATF,EAUEC,MAVF;AAYD;;AAEDN,aAAa,GAAG4B,IAAhB,CAAqBjB,MAArB;;ACtFA,IAAIkB,qBAAqB,GAAG,kCAA5B;AAA+D,IAAIC,UAAU,GAAG,4BAAjB;AAE/D,IAAIC,SAAS,GAAGC,MAAM,CAACC,MAAP,CAAcC,MAA9B;;AAEA,SAASA,MAAT,CAAgBC,UAAhB,EAA4B;AAC1BJ,EAAAA,SAAS,CAACK,IAAV,CAAe,IAAf,EAAqBD,UAArB;AACA,OAAKE,GAAL,GAAW;AACTC,IAAAA,IAAI,EAAEN,MAAM,CAACC,MAAP,CAAcM,OADX;AAETC,IAAAA,gBAAgB,EAAE,EAFT;AAGTC,IAAAA,iBAAiB,EAAE,EAHV;AAITC,IAAAA,MAAM,EAAE,UAASC,EAAT,EAAa;AACnB,WAAKH,gBAAL,CAAsBI,IAAtB,CAA2BD,EAAE,IAAI,YAAW,CAAE,CAA9C;AACD,KANQ;AAOTE,IAAAA,OAAO,EAAE,UAASF,EAAT,EAAa;AACpB,WAAKF,iBAAL,CAAuBG,IAAvB,CAA4BD,EAA5B;AACD;AATQ,GAAX;AAYAX,EAAAA,MAAM,CAACC,MAAP,CAAcM,OAAd,GAAwB,IAAxB;AACD;;AAEDP,MAAM,CAACC,MAAP,CAAcC,MAAd,GAAuBA,MAAvB;AACA,IAAIY,aAAJ,EAAmBC,cAAnB;AAEA,IAAIC,MAAM,GAAGhB,MAAM,CAACC,MAAP,CAAce,MAA3B;;AACA,IAAI,CAAC,CAACA,MAAD,IAAW,CAACA,MAAM,CAACC,eAApB,KAAwC,OAAOC,SAAP,KAAqB,WAAjE,EAA8E;AAC5E,MAAIC,QAAQ,GAAG,MAA4BC,QAAQ,CAACD,QAApD;AACA,MAAIE,QAAQ,GAAGD,QAAQ,CAACC,QAAT,KAAsB,QAAtB,GAAiC,KAAjC,GAAyC,IAAxD;AACA,MAAIC,EAAE,GAAG,IAAIJ,SAAJ,CACPG,QAAQ,GAAG,KAAX,GAAmBF,QAAnB,GAA8B,GAA9B,aAA2D,GADpD,CAAT;;AAGAG,EAAAA,EAAE,CAACC,SAAH,GAAe,UAAShE,KAAT,EAAgB;AAC7BuD,IAAAA,aAAa,GAAG,EAAhB;AACAC,IAAAA,cAAc,GAAG,EAAjB;AAEA,QAAIT,IAAI,GAAGkB,IAAI,CAACC,KAAL,CAAWlE,KAAK,CAAC+C,IAAjB,CAAX;;AAEA,QAAIA,IAAI,CAACoB,IAAL,KAAc,QAAlB,EAA4B;AAC1B;AACAC,MAAAA,kBAAkB;AAElB,UAAIC,MAAM,GAAGtB,IAAI,CAACsB,MAAL,CAAYC,MAAZ,EACX;AACAC,MAAAA,KAAK,IAAIA,KAAK,CAACC,OAAN,KAAkBlC,qBAFhB,CAAb,CAJ0B,CAS1B;;AACA,UAAImC,OAAO,GAAG,KAAd;AACAJ,MAAAA,MAAM,CAAChE,OAAP,CAAekE,KAAK,IAAI;AACtB,YAAI,CAACA,KAAK,CAACG,KAAX,EAAkB;AAChB,cAAIC,SAAS,GAAGC,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBP,KAAK,CAACQ,EAA7B,CAA9B;;AACA,cAAIJ,SAAJ,EAAe;AACbF,YAAAA,OAAO,GAAG,IAAV;AACD;AACF;AACF,OAPD;;AASA,UAAIA,OAAJ,EAAa;AACXxE,QAAAA,OAAO,CAAC+E,KAAR;AAEAX,QAAAA,MAAM,CAAChE,OAAP,CAAe,UAASkE,KAAT,EAAgB;AAC7BU,UAAAA,QAAQ,CAACJ,MAAM,CAACC,aAAR,EAAuBP,KAAvB,CAAR;AACD,SAFD;AAIAf,QAAAA,cAAc,CAACnD,OAAf,CAAuB,UAAS6E,CAAT,EAAY;AACjCC,UAAAA,YAAY,CAACD,CAAC,CAAC,CAAD,CAAF,EAAOA,CAAC,CAAC,CAAD,CAAR,CAAZ;AACD,SAFD;AAGD,OAVD,MAUO;AACL1F,QAAAA,MAAM,CAACqE,QAAP,CAAgBuB,MAAhB;AACD;AACF;;AAED,QAAIrC,IAAI,CAACoB,IAAL,KAAc,OAAlB,EAA2B;AACzBlE,MAAAA,OAAO,CAACoF,KAAR,CACE,kBAAkBtC,IAAI,CAACuC,SAAL,CAAeC,OAAjC,GAA2C,IAA3C,GAAkDxC,IAAI,CAACuC,SAAL,CAAeE,KADnE;AAIApB,MAAAA,kBAAkB;AAElB,UAAIqB,OAAO,GAAGC,kBAAkB,CAAC3C,IAAD,CAAhC;AACA/D,MAAAA,QAAQ,CAAC2G,IAAT,CAAcC,WAAd,CAA0BH,OAA1B;AACD;AACF,GAnDD;AAoDD;;AAED,SAASrB,kBAAT,GAA8B;AAC5B,MAAIqB,OAAO,GAAGzG,QAAQ,CAAC6G,cAAT,CAAwBtD,UAAxB,CAAd;;AACA,MAAIkD,OAAJ,EAAa;AACXA,IAAAA,OAAO,CAACK,MAAR;AACA7F,IAAAA,OAAO,CAACC,GAAR,CAAY,2BAAZ;AACD;AACF;;AAED,SAASwF,kBAAT,CAA4B3C,IAA5B,EAAkC;AAChC,MAAI0C,OAAO,GAAGzG,QAAQ,CAAC+G,aAAT,CAAuB,KAAvB,CAAd;AACAN,EAAAA,OAAO,CAACV,EAAR,GAAaxC,UAAb,CAFgC,CAIhC;;AACA,MAAIgD,OAAO,GAAGvG,QAAQ,CAAC+G,aAAT,CAAuB,KAAvB,CAAd;AACA,MAAIC,UAAU,GAAGhH,QAAQ,CAAC+G,aAAT,CAAuB,KAAvB,CAAjB;AACAR,EAAAA,OAAO,CAACU,SAAR,GAAoBlD,IAAI,CAACmD,SAAL,CAAeX,OAAnC;AACAS,EAAAA,UAAU,CAACC,SAAX,GAAuBlD,IAAI,CAACmD,SAAL,CAAeV,KAAtC;AAEAC,EAAAA,OAAO,CAACQ,SAAR,GACE,2NACA,mFADA,GAEA,yEAFA,GAGA,qEAHA,GAIAV,OAAO,CAACU,SAJR,GAKA,QALA,GAMA,OANA,GAOAD,UAAU,CAACC,SAPX,GAQA,QARA,GASA,QAVF;AAYA,SAAOR,OAAP;AACD;;AAED,SAASU,UAAT,CAAoBzD,MAApB,EAA4BqC,EAA5B,EAAgC;AAC9B,MAAIqB,OAAO,GAAG1D,MAAM,CAAC0D,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ,WAAO,EAAP;AACD;;AAED,MAAIC,OAAO,GAAG,EAAd;AACA,MAAIC,CAAJ,EAAOC,CAAP,EAAUC,GAAV;;AAEA,OAAKF,CAAL,IAAUF,OAAV,EAAmB;AACjB,SAAKG,CAAL,IAAUH,OAAO,CAACE,CAAD,CAAP,CAAW,CAAX,CAAV,EAAyB;AACvBE,MAAAA,GAAG,GAAGJ,OAAO,CAACE,CAAD,CAAP,CAAW,CAAX,EAAcC,CAAd,CAAN;;AAEA,UAAIC,GAAG,KAAKzB,EAAR,IAAe0B,KAAK,CAACC,OAAN,CAAcF,GAAd,KAAsBA,GAAG,CAACA,GAAG,CAACG,MAAJ,GAAa,CAAd,CAAH,KAAwB5B,EAAjE,EAAsE;AACpEsB,QAAAA,OAAO,CAAChD,IAAR,CAAaiD,CAAb;AACD;AACF;AACF;;AAED,MAAI5D,MAAM,CAACe,MAAX,EAAmB;AACjB4C,IAAAA,OAAO,GAAGA,OAAO,CAACO,MAAR,CAAeT,UAAU,CAACzD,MAAM,CAACe,MAAR,EAAgBsB,EAAhB,CAAzB,CAAV;AACD;;AAED,SAAOsB,OAAP;AACD;;AAED,SAASpB,QAAT,CAAkBvC,MAAlB,EAA0B6B,KAA1B,EAAiC;AAC/B,MAAI6B,OAAO,GAAG1D,MAAM,CAAC0D,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAIA,OAAO,CAAC7B,KAAK,CAACQ,EAAP,CAAP,IAAqB,CAACrC,MAAM,CAACe,MAAjC,EAAyC;AACvC,QAAIL,EAAE,GAAG,IAAIyD,QAAJ,CAAa,SAAb,EAAwB,QAAxB,EAAkC,SAAlC,EAA6CtC,KAAK,CAACuC,MAAnD,CAAT;AACAvC,IAAAA,KAAK,CAACG,KAAN,GAAc,CAAC0B,OAAO,CAAC7B,KAAK,CAACQ,EAAP,CAAtB;AACAqB,IAAAA,OAAO,CAAC7B,KAAK,CAACQ,EAAP,CAAP,GAAoB,CAAC3B,EAAD,EAAKmB,KAAK,CAACwC,IAAX,CAApB;AACD,GAJD,MAIO,IAAIrE,MAAM,CAACe,MAAX,EAAmB;AACxBwB,IAAAA,QAAQ,CAACvC,MAAM,CAACe,MAAR,EAAgBc,KAAhB,CAAR;AACD;AACF;;AAED,SAASK,cAAT,CAAwBlC,MAAxB,EAAgCqC,EAAhC,EAAoC;AAClC,MAAIqB,OAAO,GAAG1D,MAAM,CAAC0D,OAArB;;AAEA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAI,CAACA,OAAO,CAACrB,EAAD,CAAR,IAAgBrC,MAAM,CAACe,MAA3B,EAAmC;AACjC,WAAOmB,cAAc,CAAClC,MAAM,CAACe,MAAR,EAAgBsB,EAAhB,CAArB;AACD;;AAED,MAAIxB,aAAa,CAACwB,EAAD,CAAjB,EAAuB;AACrB;AACD;;AAEDxB,EAAAA,aAAa,CAACwB,EAAD,CAAb,GAAoB,IAApB;AAEA,MAAIiC,MAAM,GAAGtE,MAAM,CAACuE,KAAP,CAAalC,EAAb,CAAb;AAEAvB,EAAAA,cAAc,CAACH,IAAf,CAAoB,CAACX,MAAD,EAASqC,EAAT,CAApB;;AAEA,MAAIiC,MAAM,IAAIA,MAAM,CAAClE,GAAjB,IAAwBkE,MAAM,CAAClE,GAAP,CAAWG,gBAAX,CAA4B0D,MAAxD,EAAgE;AAC9D,WAAO,IAAP;AACD;;AAED,SAAOR,UAAU,CAACtB,MAAM,CAACC,aAAR,EAAuBC,EAAvB,CAAV,CAAqCmC,IAArC,CAA0C,UAASnC,EAAT,EAAa;AAC5D,WAAOH,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBC,EAAvB,CAArB;AACD,GAFM,CAAP;AAGD;;AAED,SAASI,YAAT,CAAsBzC,MAAtB,EAA8BqC,EAA9B,EAAkC;AAChC,MAAIiC,MAAM,GAAGtE,MAAM,CAACuE,KAAP,CAAalC,EAAb,CAAb;AACArC,EAAAA,MAAM,CAACM,OAAP,GAAiB,EAAjB;;AACA,MAAIgE,MAAJ,EAAY;AACVA,IAAAA,MAAM,CAAClE,GAAP,CAAWC,IAAX,GAAkBL,MAAM,CAACM,OAAzB;AACD;;AAED,MAAIgE,MAAM,IAAIA,MAAM,CAAClE,GAAjB,IAAwBkE,MAAM,CAAClE,GAAP,CAAWI,iBAAX,CAA6ByD,MAAzD,EAAiE;AAC/DK,IAAAA,MAAM,CAAClE,GAAP,CAAWI,iBAAX,CAA6B7C,OAA7B,CAAqC,UAAS8G,EAAT,EAAa;AAChDA,MAAAA,EAAE,CAACzE,MAAM,CAACM,OAAR,CAAF;AACD,KAFD;AAGD;;AAED,SAAON,MAAM,CAACuE,KAAP,CAAalC,EAAb,CAAP;AACArC,EAAAA,MAAM,CAACqC,EAAD,CAAN;AAEAiC,EAAAA,MAAM,GAAGtE,MAAM,CAACuE,KAAP,CAAalC,EAAb,CAAT;;AACA,MAAIiC,MAAM,IAAIA,MAAM,CAAClE,GAAjB,IAAwBkE,MAAM,CAAClE,GAAP,CAAWG,gBAAX,CAA4B0D,MAAxD,EAAgE;AAC9DK,IAAAA,MAAM,CAAClE,GAAP,CAAWG,gBAAX,CAA4B5C,OAA5B,CAAoC,UAAS8G,EAAT,EAAa;AAC/CA,MAAAA,EAAE;AACH,KAFD;;AAGA,WAAO,IAAP;AACD;AACF","file":"pixelated-face.01674366.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/86d2fb0983a6352ddf2babde0e9cfc.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b0/86d2fb0983a6352ddf2babde0e9cfc.blob deleted file mode 100644 index 324ee1010..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/86d2fb0983a6352ddf2babde0e9cfc.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","optionsInputs","querySelectorAll","options","SIZE","SCALE","handleOption","event","console","log","currentTarget","value","forEach","input","addEventListener","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","videoWidth","videoHeight","detect","faces","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.e967ffe2.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/9b1cca2e299c3c6f2f43ecaaf551a8.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/b0/9b1cca2e299c3c6f2f43ecaaf551a8.v8 deleted file mode 100644 index 1e93499d1..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/9b1cca2e299c3c6f2f43ecaaf551a8.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/ab409659de1871ddf8ddeb74132cc2.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b0/ab409659de1871ddf8ddeb74132cc2.blob deleted file mode 100644 index 79fc0264f..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/ab409659de1871ddf8ddeb74132cc2.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","forEach","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.27dc063e.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/b516c4c0ce8fa1778f99b0b3f1601c.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b0/b516c4c0ce8fa1778f99b0b3f1601c.blob deleted file mode 100644 index ff1dc42c2..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/b516c4c0ce8fa1778f99b0b3f1601c.blob +++ /dev/null @@ -1,69 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; -const SCALE = 1.5; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - const width = face.width * SCALE; - const height = face.height * SCALE; - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/cd4954e6376e5092bd583015b4b3b2.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/b0/cd4954e6376e5092bd583015b4b3b2.v8 deleted file mode 100644 index 5bafc818b..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/cd4954e6376e5092bd583015b4b3b2.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/daa860589ae5ef6856e46f4d5c302b.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b0/daa860589ae5ef6856e46f4d5c302b.blob deleted file mode 100644 index 54519c395..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b0/daa860589ae5ef6856e46f4d5c302b.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","drawImage","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.49f4a2b1.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b1/459b1cc13f62b3bd47e804e69f5f9b.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/b1/459b1cc13f62b3bd47e804e69f5f9b.v8 deleted file mode 100644 index e96b232c3..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/b1/459b1cc13f62b3bd47e804e69f5f9b.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b2/1a38c4c840405ea07541984f1f56fc.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/b2/1a38c4c840405ea07541984f1f56fc.v8 deleted file mode 100644 index c0f60a47b..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/b2/1a38c4c840405ea07541984f1f56fc.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b2/53dd098f20d673cf982d273a542fbc.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b2/53dd098f20d673cf982d273a542fbc.blob deleted file mode 100644 index 7449f0878..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b2/53dd098f20d673cf982d273a542fbc.blob +++ /dev/null @@ -1,30 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); - console.log(faces); -} - -populateVideo(); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b2/67e6d02a91c02f9281eb52183093c7.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b2/67e6d02a91c02f9281eb52183093c7.blob deleted file mode 100644 index 077eea58d..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b2/67e6d02a91c02f9281eb52183093c7.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b2/8ccf768fb14cb1e52de4dac5558488.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b2/8ccf768fb14cb1e52de4dac5558488.blob deleted file mode 100644 index 66b28aac4..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b2/8ccf768fb14cb1e52de4dac5558488.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b2/aa891a92508362eaab47257a119b4c.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b2/aa891a92508362eaab47257a119b4c.blob deleted file mode 100644 index 0da6cf5c9..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b2/aa891a92508362eaab47257a119b4c.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b2/bdbe36bd2ee3ca394d55ec4674ff62.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b2/bdbe36bd2ee3ca394d55ec4674ff62.blob deleted file mode 100644 index eca5ae546..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b2/bdbe36bd2ee3ca394d55ec4674ff62.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","strokeStyle","lineWidth","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","requestAnimationFrame","face","top","left","boundingBox","strokeRect","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.389fbd1f.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b3/388ea673543e8b9a080e326cd209fb.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b3/388ea673543e8b9a080e326cd209fb.blob deleted file mode 100644 index fd42a7061..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b3/388ea673543e8b9a080e326cd209fb.blob +++ /dev/null @@ -1,348 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b4/1a057cca68196910effab5fb7a7013.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b4/1a057cca68196910effab5fb7a7013.blob deleted file mode 100644 index fe9cee382..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b4/1a057cca68196910effab5fb7a7013.blob +++ /dev/null @@ -1,384 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b4/9c0e4bb6f70ae5d8d7d9700c02a328.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/b4/9c0e4bb6f70ae5d8d7d9700c02a328.v8 deleted file mode 100644 index e1a9daa4f..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/b4/9c0e4bb6f70ae5d8d7d9700c02a328.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b5/1e0a54ebeb9213665970d54b375f41.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/b5/1e0a54ebeb9213665970d54b375f41.v8 deleted file mode 100644 index 31dfdeba2..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/b5/1e0a54ebeb9213665970d54b375f41.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b5/3943d561e48f670936dcb43feb5f93.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/b5/3943d561e48f670936dcb43feb5f93.v8 deleted file mode 100644 index 1656e3f00..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/b5/3943d561e48f670936dcb43feb5f93.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b5/85181b3d6ad137b3990bea4344036a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b5/85181b3d6ad137b3990bea4344036a.blob deleted file mode 100644 index af4acd723..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b5/85181b3d6ad137b3990bea4344036a.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b5/8c9ee141b7f3fb6fc2d3b13b97de12.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b5/8c9ee141b7f3fb6fc2d3b13b97de12.blob deleted file mode 100644 index b3b54c91c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b5/8c9ee141b7f3fb6fc2d3b13b97de12.blob +++ /dev/null @@ -1,79 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const optionsInputs = document.querySelectorAll('.controls input[type="range"]'); -const options = { - SIZE: 10, - SCALE: 1.35 -}; - -function handleOption(event) { - console.log(event.currentTarget.value); - console.log(event.currentTarget.name); -} - -optionsInputs.forEach(input => input.addEventListener('input', handleOption)); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, options.SIZE, options.SIZE); // draw the small face back on, but scale up - - const width = face.width * options.SCALE; - const height = face.height * options.SCALE; - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, options.SIZE, options.SIZE, // Drawing args - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b5/905228b954b3ee07c338f7bb08ecb1.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/b5/905228b954b3ee07c338f7bb08ecb1.v8 deleted file mode 100644 index 992ea5247..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/b5/905228b954b3ee07c338f7bb08ecb1.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b5/ad781704927c676f95f771d029894e.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/b5/ad781704927c676f95f771d029894e.v8 deleted file mode 100644 index e07863928..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/b5/ad781704927c676f95f771d029894e.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b6/00160697430a4e56e270e1e2f3907b.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/b6/00160697430a4e56e270e1e2f3907b.v8 deleted file mode 100644 index 1113824fe..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/b6/00160697430a4e56e270e1e2f3907b.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b7/92cd580cf2c959029267e19cfd1e77.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b7/92cd580cf2c959029267e19cfd1e77.blob deleted file mode 100644 index 01e29f502..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b7/92cd580cf2c959029267e19cfd1e77.blob +++ /dev/null @@ -1,31 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - requestAnimationFrame(detect); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/b7/e861b13f2abfbb36d1db5335b5ded6.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/b7/e861b13f2abfbb36d1db5335b5ded6.blob deleted file mode 100644 index 0858f30d3..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/b7/e861b13f2abfbb36d1db5335b5ded6.blob +++ /dev/null @@ -1,397 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/bd/230a5b5614b8bfa426dec86a437783.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/bd/230a5b5614b8bfa426dec86a437783.v8 deleted file mode 100644 index ce8a24553..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/bd/230a5b5614b8bfa426dec86a437783.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/bd/2fa3bd2fbe49840b5f50a057c7c5a3.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/bd/2fa3bd2fbe49840b5f50a057c7c5a3.v8 deleted file mode 100644 index 9e894e6d1..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/bd/2fa3bd2fbe49840b5f50a057c7c5a3.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/bd/47600fd1dbf1fa73c4d0b613168bc8.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/bd/47600fd1dbf1fa73c4d0b613168bc8.v8 deleted file mode 100644 index 24c0d7e57..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/bd/47600fd1dbf1fa73c4d0b613168bc8.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/bd/487aece62bdedd480f436c4054580e.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/bd/487aece62bdedd480f436c4054580e.v8 deleted file mode 100644 index cc46fb8a4..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/bd/487aece62bdedd480f436c4054580e.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/bd/49be52f8b44142d91895af4e607671.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/bd/49be52f8b44142d91895af4e607671.v8 deleted file mode 100644 index f21f212d6..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/bd/49be52f8b44142d91895af4e607671.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/be/5dae851d4b7e5c4223445c5a249ab2.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/be/5dae851d4b7e5c4223445c5a249ab2.blob deleted file mode 100644 index 0cd9cca9a..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/be/5dae851d4b7e5c4223445c5a249ab2.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.e32b49a9.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/bf/e5a923fc404ef5c436f83f69a7b129.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/bf/e5a923fc404ef5c436f83f69a7b129.blob deleted file mode 100644 index 911cbfc73..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/bf/e5a923fc404ef5c436f83f69a7b129.blob +++ /dev/null @@ -1,348 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c0/be0e7fca2013563a97796cbe999367.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/c0/be0e7fca2013563a97796cbe999367.v8 deleted file mode 100644 index 06714a910..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/c0/be0e7fca2013563a97796cbe999367.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c0/d0e83f97a3ee21a5f750fa6d4079c2.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/c0/d0e83f97a3ee21a5f750fa6d4079c2.blob deleted file mode 100644 index d1e313986..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/c0/d0e83f97a3ee21a5f750fa6d4079c2.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c1/17dd6b46d9412fde72b729ae30dae2.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/c1/17dd6b46d9412fde72b729ae30dae2.v8 deleted file mode 100644 index a812664ed..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/c1/17dd6b46d9412fde72b729ae30dae2.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c1/9b92822b1db01b4523403843d37bb1.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/c1/9b92822b1db01b4523403843d37bb1.blob deleted file mode 100644 index f2f5efece..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/c1/9b92822b1db01b4523403843d37bb1.blob +++ /dev/null @@ -1,395 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c2/ea13080ddf16a1b6a7a9e0b18f6c0c.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/c2/ea13080ddf16a1b6a7a9e0b18f6c0c.v8 deleted file mode 100644 index bfd8bfa5d..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/c2/ea13080ddf16a1b6a7a9e0b18f6c0c.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c2/ed89ac470a1eb93bdf654e0093897f.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/c2/ed89ac470a1eb93bdf654e0093897f.blob deleted file mode 100644 index 21adcf1ab..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/c2/ed89ac470a1eb93bdf654e0093897f.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c3/306fe059b7a5a1f183dcc3e3da15f2.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/c3/306fe059b7a5a1f183dcc3e3da15f2.blob deleted file mode 100644 index 670b5dbd8..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/c3/306fe059b7a5a1f183dcc3e3da15f2.blob +++ /dev/null @@ -1,42 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -ctx.strokeStyle = '#ffc600'; -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c4/218098489a558b857e991f018fbe71.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/c4/218098489a558b857e991f018fbe71.blob deleted file mode 100644 index bd40eece3..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/c4/218098489a558b857e991f018fbe71.blob +++ /dev/null @@ -1,5 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c4/4a68879942b9fcef5d0f94da5151d2.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/c4/4a68879942b9fcef5d0f94da5151d2.blob deleted file mode 100644 index 109ca2d2a..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/c4/4a68879942b9fcef5d0f94da5151d2.blob +++ /dev/null @@ -1,43 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -ctx.strokeStyle = '#ffc600'; -ctx.lineWidth = 2; -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c5/217569aea0200615b1b7ed23b36b5a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/c5/217569aea0200615b1b7ed23b36b5a.blob deleted file mode 100644 index e3096366a..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/c5/217569aea0200615b1b7ed23b36b5a.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c5/762185e9da283511e814a54f895f47.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/c5/762185e9da283511e814a54f895f47.blob deleted file mode 100644 index 09d66a5f3..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/c5/762185e9da283511e814a54f895f47.blob +++ /dev/null @@ -1,30 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); - console.log(faces); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c5/c2bfe76d44e6166e1f9a470aa47e6b.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/c5/c2bfe76d44e6166e1f9a470aa47e6b.v8 deleted file mode 100644 index 3c1cbae66..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/c5/c2bfe76d44e6166e1f9a470aa47e6b.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c6/0e3634023d2e4418e9e8e6b9bf1cc8.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/c6/0e3634023d2e4418e9e8e6b9bf1cc8.v8 deleted file mode 100644 index c9bd0c82f..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/c6/0e3634023d2e4418e9e8e6b9bf1cc8.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c6/51350d73d2cd62e285c9d7c458abd5.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/c6/51350d73d2cd62e285c9d7c458abd5.v8 deleted file mode 100644 index 949a921bc..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/c6/51350d73d2cd62e285c9d7c458abd5.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c6/9e53a931ef87d30e255241434434f2.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/c6/9e53a931ef87d30e255241434434f2.v8 deleted file mode 100644 index 82fdcc2ff..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/c6/9e53a931ef87d30e255241434434f2.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c7/22373d9d474e966f3bcb54855aeafb.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/c7/22373d9d474e966f3bcb54855aeafb.v8 deleted file mode 100644 index 946e069df..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/c7/22373d9d474e966f3bcb54855aeafb.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c7/a16976af73178c7e3e277c708ce48c.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/c7/a16976af73178c7e3e277c708ce48c.v8 deleted file mode 100644 index 8118d6c89..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/c7/a16976af73178c7e3e277c708ce48c.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c8/20070ce2d2f7e75a83e0bbfc52ab02.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/c8/20070ce2d2f7e75a83e0bbfc52ab02.blob deleted file mode 100644 index 824b5f0db..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/c8/20070ce2d2f7e75a83e0bbfc52ab02.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c8/fb9ede61fea3775f7ec68e7c33726d.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/c8/fb9ede61fea3775f7ec68e7c33726d.v8 deleted file mode 100644 index defb1c9c9..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/c8/fb9ede61fea3775f7ec68e7c33726d.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c9/2324fb7b588511914c8a344f370867.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/c9/2324fb7b588511914c8a344f370867.blob deleted file mode 100644 index 6570d6926..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/c9/2324fb7b588511914c8a344f370867.blob +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Censorship - - - - - -
- - -
-
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c9/c2b8afcd5bd575bc103184c352a44a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/c9/c2b8afcd5bd575bc103184c352a44a.blob deleted file mode 100644 index 9aab71741..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/c9/c2b8afcd5bd575bc103184c352a44a.blob +++ /dev/null @@ -1,61 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - // draw the small face - faceCtx.drawImage( // Capture Settings - video, // where should I grab the frame from? - face.x, // Where should we start capturing the face from? X and Y? - face.y, face.width, // how wide and how high should the face be? - face.height, // Paint Settings - face.x, // where should we start drawing the face on? - face.y, // how wide and how high should we paint it - SIZE, SIZE); // take that face back out and draw it back at normal size. -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c9/d6cf420b922309bad95a307407c079.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/c9/d6cf420b922309bad95a307407c079.v8 deleted file mode 100644 index d4b7e96d0..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/c9/d6cf420b922309bad95a307407c079.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c9/f82e5316da900e584fdaa9257fc613.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/c9/f82e5316da900e584fdaa9257fc613.blob deleted file mode 100644 index 70f6747d1..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/c9/f82e5316da900e584fdaa9257fc613.blob +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/c9/fd8831db3356963c938e7acfefe1ec.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/c9/fd8831db3356963c938e7acfefe1ec.v8 deleted file mode 100644 index e229a32cd..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/c9/fd8831db3356963c938e7acfefe1ec.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ca/9ba5e18a5892662c896c26e304e0ca.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ca/9ba5e18a5892662c896c26e304e0ca.blob deleted file mode 100644 index 1488a9166..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ca/9ba5e18a5892662c896c26e304e0ca.blob +++ /dev/null @@ -1,59 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 100; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - // draw the small face - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ca/9d4994d7fca3d9a2ccc42c859634ac.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ca/9d4994d7fca3d9a2ccc42c859634ac.blob deleted file mode 100644 index a4f9bed9b..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ca/9d4994d7fca3d9a2ccc42c859634ac.blob +++ /dev/null @@ -1,41 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ca/a231c9de68c8cb28f26dfe110ce09b.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/ca/a231c9de68c8cb28f26dfe110ce09b.v8 deleted file mode 100644 index 046ab79e8..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/ca/a231c9de68c8cb28f26dfe110ce09b.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/cb/ae7176dfde0ff2ae4a2273cbff5c63.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/cb/ae7176dfde0ff2ae4a2273cbff5c63.v8 deleted file mode 100644 index 4c3da006b..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/cb/ae7176dfde0ff2ae4a2273cbff5c63.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/cb/caa280ba1fb8028792d367c2f58254.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/cb/caa280ba1fb8028792d367c2f58254.v8 deleted file mode 100644 index 4dede2f10..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/cb/caa280ba1fb8028792d367c2f58254.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/cc/50977c050345d929ec8ee662179915.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/cc/50977c050345d929ec8ee662179915.blob deleted file mode 100644 index 32d30b137..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/cc/50977c050345d929ec8ee662179915.blob +++ /dev/null @@ -1,366 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/cd/0455f92f893515c9065dcc8e6c3d2a.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/cd/0455f92f893515c9065dcc8e6c3d2a.v8 deleted file mode 100644 index 9824130c9..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/cd/0455f92f893515c9065dcc8e6c3d2a.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/cd/2cf34e990509dca142aface3b3fb51.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/cd/2cf34e990509dca142aface3b3fb51.blob deleted file mode 100644 index 77179a0cc..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/cd/2cf34e990509dca142aface3b3fb51.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","SCALE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.04db56d6.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/cd/b8f17460802ea8bea245fbddd940f9.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/cd/b8f17460802ea8bea245fbddd940f9.v8 deleted file mode 100644 index a4e7a0281..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/cd/b8f17460802ea8bea245fbddd940f9.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ce/04fe9eddc91d9662324310bd5027a9.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/ce/04fe9eddc91d9662324310bd5027a9.v8 deleted file mode 100644 index edaecd0fa..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/ce/04fe9eddc91d9662324310bd5027a9.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ce/9e7ab58bdc8b78b0e747a36d151878.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/ce/9e7ab58bdc8b78b0e747a36d151878.v8 deleted file mode 100644 index d319994cf..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/ce/9e7ab58bdc8b78b0e747a36d151878.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ce/c2778c883a97a64788174101fa02a2.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ce/c2778c883a97a64788174101fa02a2.blob deleted file mode 100644 index 7c76c16eb..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ce/c2778c883a97a64788174101fa02a2.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","meidaDevices","getUserMedia","width","height","console","log","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","forEach","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.6fc05646.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ce/df7ec962546c64903ef345f88b1f54.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ce/df7ec962546c64903ef345f88b1f54.blob deleted file mode 100644 index eff37a1b6..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ce/df7ec962546c64903ef345f88b1f54.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","SCALE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.48e924f8.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ce/e0dfb5229651a644dd2b3ed26f8b84.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ce/e0dfb5229651a644dd2b3ed26f8b84.blob deleted file mode 100644 index f96a1fa59..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ce/e0dfb5229651a644dd2b3ed26f8b84.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","stroke","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.22a2c2ab.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ce/e62ff419f7cd1b96cb7e68096f7e03.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ce/e62ff419f7cd1b96cb7e68096f7e03.blob deleted file mode 100644 index e46bb3559..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ce/e62ff419f7cd1b96cb7e68096f7e03.blob +++ /dev/null @@ -1,382 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d0/12e0ab134ae075ec4bf46d50d896b7.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/d0/12e0ab134ae075ec4bf46d50d896b7.v8 deleted file mode 100644 index 4a1ad62f3..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/d0/12e0ab134ae075ec4bf46d50d896b7.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d0/25d79ee6d9d06383ae69e458c06b8a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/d0/25d79ee6d9d06383ae69e458c06b8a.blob deleted file mode 100644 index 2c87ab951..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/d0/25d79ee6d9d06383ae69e458c06b8a.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","requestAnimationFrame","face","top","left","boundingBox","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAMA,KAAK,GAAGC,QAAQ,CAACC,aAAT,CAAuB,SAAvB,CAAd;AACA,MAAMC,MAAM,GAAGF,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAf;AACA,MAAME,GAAG,GAAGD,MAAM,CAACE,UAAP,CAAkB,IAAlB,CAAZ;AACA,MAAMC,UAAU,GAAGL,QAAQ,CAACC,aAAT,CAAuB,OAAvB,CAAnB;AACA,MAAMK,OAAO,GAAGJ,MAAM,CAACE,UAAP,CAAkB,IAAlB,CAAhB;AACA,MAAMG,YAAY,GAAG,IAAIC,MAAM,CAACC,YAAX,EAArB,C,CAEA;;AACA,eAAeC,aAAf,GAA+B;AAC7B,QAAMC,MAAM,GAAG,MAAMC,SAAS,CAACC,YAAV,CAAuBC,YAAvB,CAAoC;AACvDf,IAAAA,KAAK,EAAE;AAAEgB,MAAAA,KAAK,EAAE,IAAT;AAAeC,MAAAA,MAAM,EAAE;AAAvB;AADgD,GAApC,CAArB;AAGAjB,EAAAA,KAAK,CAACkB,SAAN,GAAkBN,MAAlB;AACA,QAAMZ,KAAK,CAACmB,IAAN,EAAN,CAL6B,CAM7B;;AACAC,EAAAA,OAAO,CAACC,GAAR,CAAYrB,KAAK,CAACsB,UAAlB,EAA8BtB,KAAK,CAACuB,WAApC;AACApB,EAAAA,MAAM,CAACa,KAAP,GAAehB,KAAK,CAACsB,UAArB;AACAnB,EAAAA,MAAM,CAACc,MAAP,GAAgBjB,KAAK,CAACuB,WAAtB;AACAjB,EAAAA,UAAU,CAACU,KAAX,GAAmBhB,KAAK,CAACsB,UAAzB;AACAhB,EAAAA,UAAU,CAACW,MAAX,GAAoBjB,KAAK,CAACuB,WAA1B;AACD;;AAED,eAAeC,MAAf,GAAwB;AACtB,QAAMC,KAAK,GAAG,MAAMjB,YAAY,CAACgB,MAAb,CAAoBxB,KAApB,CAApB,CADsB,CAEtB;;AACAyB,EAAAA,KAAK,CAACC,OAAN,CAAcC,QAAd;AACAC,EAAAA,qBAAqB,CAACJ,MAAD,CAArB;AACD;;AAED,SAASG,QAAT,CAAkBE,IAAlB,EAAwB;AACtB,QAAM;AAAEb,IAAAA,KAAF;AAASC,IAAAA,MAAT;AAAiBa,IAAAA,GAAjB;AAAsBC,IAAAA;AAAtB,MAA+BF,IAAI,CAACG,WAA1C;AACAZ,EAAAA,OAAO,CAACC,GAAR,CAAY;AAAEL,IAAAA,KAAF;AAASC,IAAAA,MAAT;AAAiBa,IAAAA,GAAjB;AAAsBC,IAAAA;AAAtB,GAAZ;AACD;;AAEDpB,aAAa,GAAGsB,IAAhB,CAAqBT,MAArB;;AClCA,IAAIU,qBAAqB,GAAG,kCAA5B;AAA+D,IAAIC,UAAU,GAAG,4BAAjB;AAE/D,IAAIC,SAAS,GAAGC,MAAM,CAACC,MAAP,CAAcC,MAA9B;;AAEA,SAASA,MAAT,CAAgBC,UAAhB,EAA4B;AAC1BJ,EAAAA,SAAS,CAACK,IAAV,CAAe,IAAf,EAAqBD,UAArB;AACA,OAAKE,GAAL,GAAW;AACTC,IAAAA,IAAI,EAAEN,MAAM,CAACC,MAAP,CAAcM,OADX;AAETC,IAAAA,gBAAgB,EAAE,EAFT;AAGTC,IAAAA,iBAAiB,EAAE,EAHV;AAITC,IAAAA,MAAM,EAAE,UAASC,EAAT,EAAa;AACnB,WAAKH,gBAAL,CAAsBI,IAAtB,CAA2BD,EAAE,IAAI,YAAW,CAAE,CAA9C;AACD,KANQ;AAOTE,IAAAA,OAAO,EAAE,UAASF,EAAT,EAAa;AACpB,WAAKF,iBAAL,CAAuBG,IAAvB,CAA4BD,EAA5B;AACD;AATQ,GAAX;AAYAX,EAAAA,MAAM,CAACC,MAAP,CAAcM,OAAd,GAAwB,IAAxB;AACD;;AAEDP,MAAM,CAACC,MAAP,CAAcC,MAAd,GAAuBA,MAAvB;AACA,IAAIY,aAAJ,EAAmBC,cAAnB;AAEA,IAAIC,MAAM,GAAGhB,MAAM,CAACC,MAAP,CAAce,MAA3B;;AACA,IAAI,CAAC,CAACA,MAAD,IAAW,CAACA,MAAM,CAACC,eAApB,KAAwC,OAAOC,SAAP,KAAqB,WAAjE,EAA8E;AAC5E,MAAIC,QAAQ,GAAG,MAA4BC,QAAQ,CAACD,QAApD;AACA,MAAIE,QAAQ,GAAGD,QAAQ,CAACC,QAAT,KAAsB,QAAtB,GAAiC,KAAjC,GAAyC,IAAxD;AACA,MAAIC,EAAE,GAAG,IAAIJ,SAAJ,CACPG,QAAQ,GAAG,KAAX,GAAmBF,QAAnB,GAA8B,GAA9B,aAA2D,GADpD,CAAT;;AAGAG,EAAAA,EAAE,CAACC,SAAH,GAAe,UAASC,KAAT,EAAgB;AAC7BV,IAAAA,aAAa,GAAG,EAAhB;AACAC,IAAAA,cAAc,GAAG,EAAjB;AAEA,QAAIT,IAAI,GAAGmB,IAAI,CAACC,KAAL,CAAWF,KAAK,CAAClB,IAAjB,CAAX;;AAEA,QAAIA,IAAI,CAACqB,IAAL,KAAc,QAAlB,EAA4B;AAC1B;AACAC,MAAAA,kBAAkB;AAElB,UAAIC,MAAM,GAAGvB,IAAI,CAACuB,MAAL,CAAYC,MAAZ,EACX;AACAC,MAAAA,KAAK,IAAIA,KAAK,CAACC,OAAN,KAAkBnC,qBAFhB,CAAb,CAJ0B,CAS1B;;AACA,UAAIoC,OAAO,GAAG,KAAd;AACAJ,MAAAA,MAAM,CAACxC,OAAP,CAAe0C,KAAK,IAAI;AACtB,YAAI,CAACA,KAAK,CAACG,KAAX,EAAkB;AAChB,cAAIC,SAAS,GAAGC,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBP,KAAK,CAACQ,EAA7B,CAA9B;;AACA,cAAIJ,SAAJ,EAAe;AACbF,YAAAA,OAAO,GAAG,IAAV;AACD;AACF;AACF,OAPD;;AASA,UAAIA,OAAJ,EAAa;AACXlD,QAAAA,OAAO,CAACyD,KAAR;AAEAX,QAAAA,MAAM,CAACxC,OAAP,CAAe,UAAS0C,KAAT,EAAgB;AAC7BU,UAAAA,QAAQ,CAACJ,MAAM,CAACC,aAAR,EAAuBP,KAAvB,CAAR;AACD,SAFD;AAIAhB,QAAAA,cAAc,CAAC1B,OAAf,CAAuB,UAASqD,CAAT,EAAY;AACjCC,UAAAA,YAAY,CAACD,CAAC,CAAC,CAAD,CAAF,EAAOA,CAAC,CAAC,CAAD,CAAR,CAAZ;AACD,SAFD;AAGD,OAVD,MAUO;AACLtE,QAAAA,MAAM,CAACgD,QAAP,CAAgBwB,MAAhB;AACD;AACF;;AAED,QAAItC,IAAI,CAACqB,IAAL,KAAc,OAAlB,EAA2B;AACzB5C,MAAAA,OAAO,CAAC8D,KAAR,CACE,kBAAkBvC,IAAI,CAACwC,SAAL,CAAeC,OAAjC,GAA2C,IAA3C,GAAkDzC,IAAI,CAACwC,SAAL,CAAeE,KADnE;AAIApB,MAAAA,kBAAkB;AAElB,UAAIqB,OAAO,GAAGC,kBAAkB,CAAC5C,IAAD,CAAhC;AACA1C,MAAAA,QAAQ,CAACuF,IAAT,CAAcC,WAAd,CAA0BH,OAA1B;AACD;AACF,GAnDD;AAoDD;;AAED,SAASrB,kBAAT,GAA8B;AAC5B,MAAIqB,OAAO,GAAGrF,QAAQ,CAACyF,cAAT,CAAwBvD,UAAxB,CAAd;;AACA,MAAImD,OAAJ,EAAa;AACXA,IAAAA,OAAO,CAACK,MAAR;AACAvE,IAAAA,OAAO,CAACC,GAAR,CAAY,2BAAZ;AACD;AACF;;AAED,SAASkE,kBAAT,CAA4B5C,IAA5B,EAAkC;AAChC,MAAI2C,OAAO,GAAGrF,QAAQ,CAAC2F,aAAT,CAAuB,KAAvB,CAAd;AACAN,EAAAA,OAAO,CAACV,EAAR,GAAazC,UAAb,CAFgC,CAIhC;;AACA,MAAIiD,OAAO,GAAGnF,QAAQ,CAAC2F,aAAT,CAAuB,KAAvB,CAAd;AACA,MAAIC,UAAU,GAAG5F,QAAQ,CAAC2F,aAAT,CAAuB,KAAvB,CAAjB;AACAR,EAAAA,OAAO,CAACU,SAAR,GAAoBnD,IAAI,CAACoD,SAAL,CAAeX,OAAnC;AACAS,EAAAA,UAAU,CAACC,SAAX,GAAuBnD,IAAI,CAACoD,SAAL,CAAeV,KAAtC;AAEAC,EAAAA,OAAO,CAACQ,SAAR,GACE,2NACA,mFADA,GAEA,yEAFA,GAGA,qEAHA,GAIAV,OAAO,CAACU,SAJR,GAKA,QALA,GAMA,OANA,GAOAD,UAAU,CAACC,SAPX,GAQA,QARA,GASA,QAVF;AAYA,SAAOR,OAAP;AACD;;AAED,SAASU,UAAT,CAAoB1D,MAApB,EAA4BsC,EAA5B,EAAgC;AAC9B,MAAIqB,OAAO,GAAG3D,MAAM,CAAC2D,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ,WAAO,EAAP;AACD;;AAED,MAAIC,OAAO,GAAG,EAAd;AACA,MAAIC,CAAJ,EAAOC,CAAP,EAAUC,GAAV;;AAEA,OAAKF,CAAL,IAAUF,OAAV,EAAmB;AACjB,SAAKG,CAAL,IAAUH,OAAO,CAACE,CAAD,CAAP,CAAW,CAAX,CAAV,EAAyB;AACvBE,MAAAA,GAAG,GAAGJ,OAAO,CAACE,CAAD,CAAP,CAAW,CAAX,EAAcC,CAAd,CAAN;;AAEA,UAAIC,GAAG,KAAKzB,EAAR,IAAe0B,KAAK,CAACC,OAAN,CAAcF,GAAd,KAAsBA,GAAG,CAACA,GAAG,CAACG,MAAJ,GAAa,CAAd,CAAH,KAAwB5B,EAAjE,EAAsE;AACpEsB,QAAAA,OAAO,CAACjD,IAAR,CAAakD,CAAb;AACD;AACF;AACF;;AAED,MAAI7D,MAAM,CAACe,MAAX,EAAmB;AACjB6C,IAAAA,OAAO,GAAGA,OAAO,CAACO,MAAR,CAAeT,UAAU,CAAC1D,MAAM,CAACe,MAAR,EAAgBuB,EAAhB,CAAzB,CAAV;AACD;;AAED,SAAOsB,OAAP;AACD;;AAED,SAASpB,QAAT,CAAkBxC,MAAlB,EAA0B8B,KAA1B,EAAiC;AAC/B,MAAI6B,OAAO,GAAG3D,MAAM,CAAC2D,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAIA,OAAO,CAAC7B,KAAK,CAACQ,EAAP,CAAP,IAAqB,CAACtC,MAAM,CAACe,MAAjC,EAAyC;AACvC,QAAIL,EAAE,GAAG,IAAI0D,QAAJ,CAAa,SAAb,EAAwB,QAAxB,EAAkC,SAAlC,EAA6CtC,KAAK,CAACuC,MAAnD,CAAT;AACAvC,IAAAA,KAAK,CAACG,KAAN,GAAc,CAAC0B,OAAO,CAAC7B,KAAK,CAACQ,EAAP,CAAtB;AACAqB,IAAAA,OAAO,CAAC7B,KAAK,CAACQ,EAAP,CAAP,GAAoB,CAAC5B,EAAD,EAAKoB,KAAK,CAACwC,IAAX,CAApB;AACD,GAJD,MAIO,IAAItE,MAAM,CAACe,MAAX,EAAmB;AACxByB,IAAAA,QAAQ,CAACxC,MAAM,CAACe,MAAR,EAAgBe,KAAhB,CAAR;AACD;AACF;;AAED,SAASK,cAAT,CAAwBnC,MAAxB,EAAgCsC,EAAhC,EAAoC;AAClC,MAAIqB,OAAO,GAAG3D,MAAM,CAAC2D,OAArB;;AAEA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAI,CAACA,OAAO,CAACrB,EAAD,CAAR,IAAgBtC,MAAM,CAACe,MAA3B,EAAmC;AACjC,WAAOoB,cAAc,CAACnC,MAAM,CAACe,MAAR,EAAgBuB,EAAhB,CAArB;AACD;;AAED,MAAIzB,aAAa,CAACyB,EAAD,CAAjB,EAAuB;AACrB;AACD;;AAEDzB,EAAAA,aAAa,CAACyB,EAAD,CAAb,GAAoB,IAApB;AAEA,MAAIiC,MAAM,GAAGvE,MAAM,CAACwE,KAAP,CAAalC,EAAb,CAAb;AAEAxB,EAAAA,cAAc,CAACH,IAAf,CAAoB,CAACX,MAAD,EAASsC,EAAT,CAApB;;AAEA,MAAIiC,MAAM,IAAIA,MAAM,CAACnE,GAAjB,IAAwBmE,MAAM,CAACnE,GAAP,CAAWG,gBAAX,CAA4B2D,MAAxD,EAAgE;AAC9D,WAAO,IAAP;AACD;;AAED,SAAOR,UAAU,CAACtB,MAAM,CAACC,aAAR,EAAuBC,EAAvB,CAAV,CAAqCmC,IAArC,CAA0C,UAASnC,EAAT,EAAa;AAC5D,WAAOH,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBC,EAAvB,CAArB;AACD,GAFM,CAAP;AAGD;;AAED,SAASI,YAAT,CAAsB1C,MAAtB,EAA8BsC,EAA9B,EAAkC;AAChC,MAAIiC,MAAM,GAAGvE,MAAM,CAACwE,KAAP,CAAalC,EAAb,CAAb;AACAtC,EAAAA,MAAM,CAACM,OAAP,GAAiB,EAAjB;;AACA,MAAIiE,MAAJ,EAAY;AACVA,IAAAA,MAAM,CAACnE,GAAP,CAAWC,IAAX,GAAkBL,MAAM,CAACM,OAAzB;AACD;;AAED,MAAIiE,MAAM,IAAIA,MAAM,CAACnE,GAAjB,IAAwBmE,MAAM,CAACnE,GAAP,CAAWI,iBAAX,CAA6B0D,MAAzD,EAAiE;AAC/DK,IAAAA,MAAM,CAACnE,GAAP,CAAWI,iBAAX,CAA6BpB,OAA7B,CAAqC,UAASsF,EAAT,EAAa;AAChDA,MAAAA,EAAE,CAAC1E,MAAM,CAACM,OAAR,CAAF;AACD,KAFD;AAGD;;AAED,SAAON,MAAM,CAACwE,KAAP,CAAalC,EAAb,CAAP;AACAtC,EAAAA,MAAM,CAACsC,EAAD,CAAN;AAEAiC,EAAAA,MAAM,GAAGvE,MAAM,CAACwE,KAAP,CAAalC,EAAb,CAAT;;AACA,MAAIiC,MAAM,IAAIA,MAAM,CAACnE,GAAjB,IAAwBmE,MAAM,CAACnE,GAAP,CAAWG,gBAAX,CAA4B2D,MAAxD,EAAgE;AAC9DK,IAAAA,MAAM,CAACnE,GAAP,CAAWG,gBAAX,CAA4BnB,OAA5B,CAAoC,UAASsF,EAAT,EAAa;AAC/CA,MAAAA,EAAE;AACH,KAFD;;AAGA,WAAO,IAAP;AACD;AACF","file":"pixelated-face.8b15ed16.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d0/43bfd2827513b100162682f9aef63b.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/d0/43bfd2827513b100162682f9aef63b.v8 deleted file mode 100644 index 3a70274ae..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/d0/43bfd2827513b100162682f9aef63b.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d0/6ab988707192ef6ad7063cdf500eb1.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/d0/6ab988707192ef6ad7063cdf500eb1.blob deleted file mode 100644 index 07a294d1e..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/d0/6ab988707192ef6ad7063cdf500eb1.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.f1d93d3c.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d1/e6d40c4ed7154c6db56a2a39c2ebcc.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/d1/e6d40c4ed7154c6db56a2a39c2ebcc.blob deleted file mode 100644 index 0e14e260a..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/d1/e6d40c4ed7154c6db56a2a39c2ebcc.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d2/14f256f35330e852bab72b304b1ad1.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/d2/14f256f35330e852bab72b304b1ad1.blob deleted file mode 100644 index 8e8c7898d..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/d2/14f256f35330e852bab72b304b1ad1.blob +++ /dev/null @@ -1,192 +0,0 @@ -var global = arguments[3]; -var __PARCEL_HMR_ENV_HASH = "d751713988987e9331980363e24189ce"; -var OVERLAY_ID = '__parcel__error__overlay__'; -var OldModule = module.bundle.Module; - -function Module(moduleName) { - OldModule.call(this, moduleName); - this.hot = { - data: module.bundle.hotData, - _acceptCallbacks: [], - _disposeCallbacks: [], - accept: function (fn) { - this._acceptCallbacks.push(fn || function () {}); - }, - dispose: function (fn) { - this._disposeCallbacks.push(fn); - } - }; - module.bundle.hotData = null; -} - -module.bundle.Module = Module; -var checkedAssets, assetsToAccept; -var parent = module.bundle.parent; - -if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') { - var hostname = "" || location.hostname; - var protocol = location.protocol === 'https:' ? 'wss' : 'ws'; - var ws = new WebSocket(protocol + '://' + hostname + ':' + "12345" + '/'); - - ws.onmessage = function (event) { - checkedAssets = {}; - assetsToAccept = []; - var data = JSON.parse(event.data); - - if (data.type === 'update') { - // Remove error overlay if there is one - removeErrorOverlay(); - let assets = data.assets.filter( // eslint-disable-next-line no-undef - asset => asset.envHash === __PARCEL_HMR_ENV_HASH); // Handle HMR Update - - var handled = false; - assets.forEach(asset => { - if (!asset.isNew) { - var didAccept = hmrAcceptCheck(global.parcelRequire, asset.id); - - if (didAccept) { - handled = true; - } - } - }); - - if (handled) { - console.clear(); - assets.forEach(function (asset) { - hmrApply(global.parcelRequire, asset); - }); - assetsToAccept.forEach(function (v) { - hmrAcceptRun(v[0], v[1]); - }); - } else { - window.location.reload(); - } - } - - if (data.type === 'error') { - console.error('[parcel] 🚨 ' + data.ansiError.message + '\n' + data.ansiError.stack); - removeErrorOverlay(); - var overlay = createErrorOverlay(data); - document.body.appendChild(overlay); - } - }; -} - -function removeErrorOverlay() { - var overlay = document.getElementById(OVERLAY_ID); - - if (overlay) { - overlay.remove(); - console.log('[parcel] ✨ Error resolved'); - } -} - -function createErrorOverlay(data) { - var overlay = document.createElement('div'); - overlay.id = OVERLAY_ID; // html encode message and stack trace - - var message = document.createElement('div'); - var stackTrace = document.createElement('pre'); - message.innerHTML = data.htmlError.message; - stackTrace.innerHTML = data.htmlError.stack; - overlay.innerHTML = '
' + 'ERROR' + '🚨' + '
' + message.innerHTML + '
' + '
' + stackTrace.innerHTML + '
' + '
'; - return overlay; -} - -function getParents(bundle, id) { - var modules = bundle.modules; - - if (!modules) { - return []; - } - - var parents = []; - var k, d, dep; - - for (k in modules) { - for (d in modules[k][1]) { - dep = modules[k][1][d]; - - if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) { - parents.push(k); - } - } - } - - if (bundle.parent) { - parents = parents.concat(getParents(bundle.parent, id)); - } - - return parents; -} - -function hmrApply(bundle, asset) { - var modules = bundle.modules; - - if (!modules) { - return; - } - - if (modules[asset.id] || !bundle.parent) { - var fn = new Function('require', 'module', 'exports', asset.output); - asset.isNew = !modules[asset.id]; - modules[asset.id] = [fn, asset.deps]; - } else if (bundle.parent) { - hmrApply(bundle.parent, asset); - } -} - -function hmrAcceptCheck(bundle, id) { - var modules = bundle.modules; - - if (!modules) { - return; - } - - if (!modules[id] && bundle.parent) { - return hmrAcceptCheck(bundle.parent, id); - } - - if (checkedAssets[id]) { - return; - } - - checkedAssets[id] = true; - var cached = bundle.cache[id]; - assetsToAccept.push([bundle, id]); - - if (cached && cached.hot && cached.hot._acceptCallbacks.length) { - return true; - } - - return getParents(global.parcelRequire, id).some(function (id) { - return hmrAcceptCheck(global.parcelRequire, id); - }); -} - -function hmrAcceptRun(bundle, id) { - var cached = bundle.cache[id]; - bundle.hotData = {}; - - if (cached) { - cached.hot.data = bundle.hotData; - } - - if (cached && cached.hot && cached.hot._disposeCallbacks.length) { - cached.hot._disposeCallbacks.forEach(function (cb) { - cb(bundle.hotData); - }); - } - - delete bundle.cache[id]; - bundle(id); - cached = bundle.cache[id]; - - if (cached && cached.hot && cached.hot._acceptCallbacks.length) { - cached.hot._acceptCallbacks.forEach(function (cb) { - cb(); - }); - - return true; - } -} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d2/3ec36232a4d2961207b9bf9093d2cb.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/d2/3ec36232a4d2961207b9bf9093d2cb.v8 deleted file mode 100644 index 377056c4e..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/d2/3ec36232a4d2961207b9bf9093d2cb.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d3/a4ed80d287bf235ba2c50a615cf5c0.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/d3/a4ed80d287bf235ba2c50a615cf5c0.blob deleted file mode 100644 index a84ed2a27..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/d3/a4ed80d287bf235ba2c50a615cf5c0.blob +++ /dev/null @@ -1,67 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); - ctx.stroke(); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d4/61c968f993e25f016dbf1dffdaf223.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/d4/61c968f993e25f016dbf1dffdaf223.v8 deleted file mode 100644 index efea24c10..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/d4/61c968f993e25f016dbf1dffdaf223.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d4/8c890d5dd3fc255e452d6dd72a4884.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/d4/8c890d5dd3fc255e452d6dd72a4884.v8 deleted file mode 100644 index 407370d6e..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/d4/8c890d5dd3fc255e452d6dd72a4884.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d4/deaee22761c23adb08b08aaa6dca80.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/d4/deaee22761c23adb08b08aaa6dca80.blob deleted file mode 100644 index 541a90829..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/d4/deaee22761c23adb08b08aaa6dca80.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d4/fd7b4b397572a1e27c7b14362c8b59.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/d4/fd7b4b397572a1e27c7b14362c8b59.blob deleted file mode 100644 index 4481965b4..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/d4/fd7b4b397572a1e27c7b14362c8b59.blob +++ /dev/null @@ -1,382 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d5/c86984432160c8095f8e2c612ae830.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/d5/c86984432160c8095f8e2c612ae830.v8 deleted file mode 100644 index 4e572e3a0..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/d5/c86984432160c8095f8e2c612ae830.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d6/2056937b3fd4120848bf97b356f6a6.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/d6/2056937b3fd4120848bf97b356f6a6.v8 deleted file mode 100644 index c8558cafd..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/d6/2056937b3fd4120848bf97b356f6a6.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d6/ad0b1f6d3de6692fa5967366e4d046.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/d6/ad0b1f6d3de6692fa5967366e4d046.v8 deleted file mode 100644 index 0c74c3e43..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/d6/ad0b1f6d3de6692fa5967366e4d046.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d7/382c7967598dc517734ec22763c991.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/d7/382c7967598dc517734ec22763c991.blob deleted file mode 100644 index 46f325a31..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/d7/382c7967598dc517734ec22763c991.blob +++ /dev/null @@ -1,69 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 2; -const SCALE = 2; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - const width = face.width * SCALE; - const height = face.height * SCALE; - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d7/6456096d72c72c522bb89f684f23a6.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/d7/6456096d72c72c522bb89f684f23a6.v8 deleted file mode 100644 index 35c6d035f..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/d7/6456096d72c72c522bb89f684f23a6.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d8/2dedfc01580f3db3ff6ec82c3e681e.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/d8/2dedfc01580f3db3ff6ec82c3e681e.v8 deleted file mode 100644 index d0068b71d..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/d8/2dedfc01580f3db3ff6ec82c3e681e.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/d8/d5e8804a4279b4f0c63ea34b757f74.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/d8/d5e8804a4279b4f0c63ea34b757f74.blob deleted file mode 100644 index 3ffd34ec2..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/d8/d5e8804a4279b4f0c63ea34b757f74.blob +++ /dev/null @@ -1,403 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/db/17b7239073e5be33eaad83b0e10574.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/db/17b7239073e5be33eaad83b0e10574.v8 deleted file mode 100644 index ae5ad9e63..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/db/17b7239073e5be33eaad83b0e10574.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/db/1c5675ffb3574bb47f326937269805.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/db/1c5675ffb3574bb47f326937269805.blob deleted file mode 100644 index c88cfc9e3..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/db/1c5675ffb3574bb47f326937269805.blob +++ /dev/null @@ -1,337 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/e0/6ff67b40ff633ed4f4ae8b0f54a7bf.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/e0/6ff67b40ff633ed4f4ae8b0f54a7bf.blob deleted file mode 100644 index f7d8c3f0d..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/e0/6ff67b40ff633ed4f4ae8b0f54a7bf.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","SCALE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.93b79e2c.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/e0/b7b5d0a839a18ed890f02b85b7368f.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/e0/b7b5d0a839a18ed890f02b85b7368f.v8 deleted file mode 100644 index 87c30bccc..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/e0/b7b5d0a839a18ed890f02b85b7368f.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/e0/c0c141e63a06601be55c2d55707e69.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/e0/c0c141e63a06601be55c2d55707e69.v8 deleted file mode 100644 index 76a64f6a0..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/e0/c0c141e63a06601be55c2d55707e69.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/e0/d8cc0775b19de3d2b9aca050a7d169.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/e0/d8cc0775b19de3d2b9aca050a7d169.blob deleted file mode 100644 index 95a87c417..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/e0/d8cc0775b19de3d2b9aca050a7d169.blob +++ /dev/null @@ -1,394 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/e1/64a050ae129153c0c7ebc55fd95c9a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/e1/64a050ae129153c0c7ebc55fd95c9a.blob deleted file mode 100644 index ba6af83e1..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/e1/64a050ae129153c0c7ebc55fd95c9a.blob +++ /dev/null @@ -1,36 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - requestAnimationFrame(detect); -} - -function drawFace(face) { - console.log(face); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/e1/cb17d4628d7fd6981f13187a2745e9.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/e1/cb17d4628d7fd6981f13187a2745e9.blob deleted file mode 100644 index ec7e05d02..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/e1/cb17d4628d7fd6981f13187a2745e9.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/e2/0e4e4480d11fe4944cd5f50c5b4c1f.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/e2/0e4e4480d11fe4944cd5f50c5b4c1f.blob deleted file mode 100644 index 6fdf22a86..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/e2/0e4e4480d11fe4944cd5f50c5b4c1f.blob +++ /dev/null @@ -1,381 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/e3/bc01836052413f36616873ec60cead.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/e3/bc01836052413f36616873ec60cead.blob deleted file mode 100644 index 53d40e445..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/e3/bc01836052413f36616873ec60cead.blob +++ /dev/null @@ -1,391 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/e4/bc729ce23ab3978f35a6c17f9fe613.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/e4/bc729ce23ab3978f35a6c17f9fe613.v8 deleted file mode 100644 index 0c6d37ff0..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/e4/bc729ce23ab3978f35a6c17f9fe613.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/e4/d621a120d83386c836ebc559bc0c69.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/e4/d621a120d83386c836ebc559bc0c69.v8 deleted file mode 100644 index 4f4682f58..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/e4/d621a120d83386c836ebc559bc0c69.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/e4/f4b082134c1cc65b1bf1d7d33282e1.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/e4/f4b082134c1cc65b1bf1d7d33282e1.v8 deleted file mode 100644 index e761a2343..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/e4/f4b082134c1cc65b1bf1d7d33282e1.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/e5/05dbcce0ccf407e9e44cfdbc945376.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/e5/05dbcce0ccf407e9e44cfdbc945376.blob deleted file mode 100644 index 079e987ba..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/e5/05dbcce0ccf407e9e44cfdbc945376.blob +++ /dev/null @@ -1,383 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/e9/290d1feb0179aaa499d85bdf8836bb.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/e9/290d1feb0179aaa499d85bdf8836bb.blob deleted file mode 100644 index 1d431d610..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/e9/290d1feb0179aaa499d85bdf8836bb.blob +++ /dev/null @@ -1,399 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f0/59082d6191adfeb7d7ebafbad83b9d.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f0/59082d6191adfeb7d7ebafbad83b9d.blob deleted file mode 100644 index 5e2299cb1..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f0/59082d6191adfeb7d7ebafbad83b9d.blob +++ /dev/null @@ -1,7 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new FaceDetector(); -console.log(video, canvas, faceCanvas, faceDetect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f0/8c9d9415eae2fe841a5af94d5e35e9.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f0/8c9d9415eae2fe841a5af94d5e35e9.v8 deleted file mode 100644 index 9ac956d9d..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f0/8c9d9415eae2fe841a5af94d5e35e9.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f0/d0a613a98c02b32dcfa90e775f5f04.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f0/d0a613a98c02b32dcfa90e775f5f04.v8 deleted file mode 100644 index 40a366006..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f0/d0a613a98c02b32dcfa90e775f5f04.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f0/faaeef2fac88f0d6c166f1b21a8d9a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f0/faaeef2fac88f0d6c166f1b21a8d9a.blob deleted file mode 100644 index 42b328678..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f0/faaeef2fac88f0d6c166f1b21a8d9a.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.860477d1.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f1/0c3182f8e478ea091fd54c07881303.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f1/0c3182f8e478ea091fd54c07881303.v8 deleted file mode 100644 index 2c39c4c55..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f1/0c3182f8e478ea091fd54c07881303.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f2/4fbb5ea6cded3a3fed7f384f5200d4.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f2/4fbb5ea6cded3a3fed7f384f5200d4.v8 deleted file mode 100644 index 35b47bbf9..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f2/4fbb5ea6cded3a3fed7f384f5200d4.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f2/5d68bf90933022d73ba1109cbcec61.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f2/5d68bf90933022d73ba1109cbcec61.v8 deleted file mode 100644 index d4b7e96d0..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f2/5d68bf90933022d73ba1109cbcec61.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f2/ac2f61d4c8b3ba6b1999ee8264096c.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f2/ac2f61d4c8b3ba6b1999ee8264096c.v8 deleted file mode 100644 index adfba8c31..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f2/ac2f61d4c8b3ba6b1999ee8264096c.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f2/b3a42485cfc4c4d0f231d263b3a399.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f2/b3a42485cfc4c4d0f231d263b3a399.blob deleted file mode 100644 index 48478f359..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f2/b3a42485cfc4c4d0f231d263b3a399.blob +++ /dev/null @@ -1,65 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f3/28d0c3c1ba4050ac9b134ec5e384e3.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f3/28d0c3c1ba4050ac9b134ec5e384e3.blob deleted file mode 100644 index 132720c70..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f3/28d0c3c1ba4050ac9b134ec5e384e3.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f3/2c49bf88a2db2a8e77eba4adaebba8.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f3/2c49bf88a2db2a8e77eba4adaebba8.v8 deleted file mode 100644 index 4547c4cf9..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f3/2c49bf88a2db2a8e77eba4adaebba8.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f3/c605e8e6ed7159f5bfcbc551d9924c.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f3/c605e8e6ed7159f5bfcbc551d9924c.v8 deleted file mode 100644 index 3f886f479..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f3/c605e8e6ed7159f5bfcbc551d9924c.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/2ad578288c7b6efcfd75352d36b36f.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f4/2ad578288c7b6efcfd75352d36b36f.blob deleted file mode 100644 index 87926a78c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/2ad578288c7b6efcfd75352d36b36f.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/40296b1bc5c38ac38899f5824bad4d.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f4/40296b1bc5c38ac38899f5824bad4d.v8 deleted file mode 100644 index 6fda60083..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/40296b1bc5c38ac38899f5824bad4d.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/69119d5c27e41ecaed6fa2cda109ab.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f4/69119d5c27e41ecaed6fa2cda109ab.blob deleted file mode 100644 index 06d32e53f..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/69119d5c27e41ecaed6fa2cda109ab.blob +++ /dev/null @@ -1,66 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 10; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x, face.y, face.width, face.height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/78193b030cb1f13a7847811f542e37.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f4/78193b030cb1f13a7847811f542e37.blob deleted file mode 100644 index dfe2d2f36..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/78193b030cb1f13a7847811f542e37.blob +++ /dev/null @@ -1,18 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -function populateVideo() { - const stream = navigator.meidaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - console.log(stream); -} - -window.populateVideo = populateVideo; \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/8d0441efd00c0d58516d9ee198c7eb.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f4/8d0441efd00c0d58516d9ee198c7eb.v8 deleted file mode 100644 index 0d63c48f2..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/8d0441efd00c0d58516d9ee198c7eb.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/9b8c83e567c85dcf1a52b3322ebb41.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f4/9b8c83e567c85dcf1a52b3322ebb41.v8 deleted file mode 100644 index 3681c7abe..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/9b8c83e567c85dcf1a52b3322ebb41.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/d54c6d93079dfd20b1af7f97a58402.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f4/d54c6d93079dfd20b1af7f97a58402.blob deleted file mode 100644 index 1e2f92d7b..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/d54c6d93079dfd20b1af7f97a58402.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/d6b3321a6c353e98db066805f94576.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f4/d6b3321a6c353e98db066805f94576.blob deleted file mode 100644 index 227603ea7..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/d6b3321a6c353e98db066805f94576.blob +++ /dev/null @@ -1,7 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new FaceDetector(); -console.log(video, canvas, faceCanvas, faceDetector); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/fad9740bb7d3b0d656c4da8166de7a.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f4/fad9740bb7d3b0d656c4da8166de7a.v8 deleted file mode 100644 index 91984d425..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f4/fad9740bb7d3b0d656c4da8166de7a.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f5/0ddb32a090e0283d9f120a8c557899.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f5/0ddb32a090e0283d9f120a8c557899.v8 deleted file mode 100644 index f32fd5a9c..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f5/0ddb32a090e0283d9f120a8c557899.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f5/a1da22ef2e95c680fbd430198e5cad.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f5/a1da22ef2e95c680fbd430198e5cad.v8 deleted file mode 100644 index 1aa9a162f..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f5/a1da22ef2e95c680fbd430198e5cad.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f5/b37bf2da779de59cedc89056df006a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f5/b37bf2da779de59cedc89056df006a.blob deleted file mode 100644 index 68773f4a1..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f5/b37bf2da779de59cedc89056df006a.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","srcObject","play","console","log","videoWidth","videoHeight","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","forEach","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.0988420a.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f5/c58c55e20681440be0043cd4e59436.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f5/c58c55e20681440be0043cd4e59436.blob deleted file mode 100644 index 8f3430dd0..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f5/c58c55e20681440be0043cd4e59436.blob +++ /dev/null @@ -1,70 +0,0 @@ -const faceDetector = new window.FaceDetector(); -const video = document.querySelector('video.webcam'); -const canvas = document.querySelector('canvas.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('canvas.face'); -const faceCtx = faceCanvas.getContext('2d'); -const SCALE = 1.2; -const SIZE = 10; - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ctx.drawImage(video, 0, 0, canvas.width, canvas.height); - - ctx.clearRect(0, 0, canvas.width, canvas.height); // paintFace(faces); - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // First draw it small - - faceCtx.drawImage(video, // Where should I grab the photo from? - face.x, // from what x and y should I start capturing from? - face.y, face.width, // how wide and high should I capture from? - face.height, face.x, // now to draw it, where should I start x and y? - face.y, SIZE, // how wide and high should it be? - SIZE); - const width = face.width * SCALE; - const height = face.height * SCALE; // then draw it back on, but scaled up - - faceCtx.drawImage(faceCanvas, // Where should I grab the photo from? - face.x, // from what x and y should I start capturing from? - face.y, // from what x and y should I start capturing from? - SIZE, SIZE, // Drawing - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 1; - ctx.strokeRect(left, top, width, height); - ctx.stroke(); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f6/14354b414c7f4812e1a77e35ce45ab.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f6/14354b414c7f4812e1a77e35ce45ab.v8 deleted file mode 100644 index 8197be866..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f6/14354b414c7f4812e1a77e35ce45ab.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f6/200792c5d399a36a0d6d23338c3f1c.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f6/200792c5d399a36a0d6d23338c3f1c.v8 deleted file mode 100644 index acba4b95e..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f6/200792c5d399a36a0d6d23338c3f1c.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f6/4e755a831b85702a1e3ac3dca21590.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f6/4e755a831b85702a1e3ac3dca21590.v8 deleted file mode 100644 index 1cd4a3f68..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f6/4e755a831b85702a1e3ac3dca21590.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f6/aa83c55103f94efbdf825b02fb3756.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f6/aa83c55103f94efbdf825b02fb3756.blob deleted file mode 100644 index b1712f979..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f6/aa83c55103f94efbdf825b02fb3756.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f7/1787eec3ab55486189cac4a55c2c0a.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f7/1787eec3ab55486189cac4a55c2c0a.blob deleted file mode 100644 index 4ac49690c..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f7/1787eec3ab55486189cac4a55c2c0a.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","SCALE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.5e763493.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f7/86b82ab63d92dda2784ea7240889cb.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f7/86b82ab63d92dda2784ea7240889cb.blob deleted file mode 100644 index 5f75eddcd..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f7/86b82ab63d92dda2784ea7240889cb.blob +++ /dev/null @@ -1,69 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const SIZE = 100; -const SCALE = 2; // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 2; - ctx.strokeRect(left, top, width, height); -} - -function censor({ - boundingBox: face -}) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); // draw the small face - - faceCtx.drawImage( // 5 source args - video, // where does the source come from? - face.x, // where do we start the source pull from? - face.y, face.width, face.height, // 4 draw args - face.x, // where should we start drawing the x and y? - face.y, SIZE, SIZE); // draw the small face back on, but scale up - - const width = face.width * SCALE; - const height = face.height * SCALE; - faceCtx.drawImage(faceCanvas, // source - face.x, // where do we start the source pull from? - face.y, SIZE, SIZE, // Drawing args - face.x - (width - face.width) / 2, face.y - (height - face.height) / 2, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f7/d6cc4875d3c46431fff9e56454c84b.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f7/d6cc4875d3c46431fff9e56454c84b.v8 deleted file mode 100644 index cbc4f8cd7..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f7/d6cc4875d3c46431fff9e56454c84b.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f8/205a9124f77881259cc5d7c025f499.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f8/205a9124f77881259cc5d7c025f499.blob deleted file mode 100644 index fc6a1ad31..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f8/205a9124f77881259cc5d7c025f499.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","drawImage","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.7e6aab5b.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f8/71d1a38d1b63572d7a179a54c179b0.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f8/71d1a38d1b63572d7a179a54c179b0.v8 deleted file mode 100644 index 042eb005e..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f8/71d1a38d1b63572d7a179a54c179b0.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f8/795242b6f66f1e97573fd12e443db7.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/f8/795242b6f66f1e97573fd12e443db7.v8 deleted file mode 100644 index 0d91fe484..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/f8/795242b6f66f1e97573fd12e443db7.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/f8/7c91f25fa0e747d752f7fcce1f7f42.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/f8/7c91f25fa0e747d752f7fcce1f7f42.blob deleted file mode 100644 index dd8332dac..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/f8/7c91f25fa0e747d752f7fcce1f7f42.blob +++ /dev/null @@ -1,362 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/fb/5cda155a4ab9732a17f09f3a034827.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/fb/5cda155a4ab9732a17f09f3a034827.blob deleted file mode 100644 index 711fe2276..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/fb/5cda155a4ab9732a17f09f3a034827.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","SCALE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","imageSmoothingEnabled","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.fac43d03.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/fb/abd6de0f02138f70d3ee6a00864cc6.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/fb/abd6de0f02138f70d3ee6a00864cc6.v8 deleted file mode 100644 index 4d79b5eba..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/fb/abd6de0f02138f70d3ee6a00864cc6.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/fb/dd6bcd3802738f60a4931a3333287e.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/fb/dd6bcd3802738f60a4931a3333287e.blob deleted file mode 100644 index 3e716f4c5..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/fb/dd6bcd3802738f60a4931a3333287e.blob +++ /dev/null @@ -1,348 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/fd/dadcf747c8223b237ec3c307941afb.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/fd/dadcf747c8223b237ec3c307941afb.v8 deleted file mode 100644 index de809bee2..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/fd/dadcf747c8223b237ec3c307941afb.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/fe/11286d959e3b7eb9142cb3aeb662e3.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/fe/11286d959e3b7eb9142cb3aeb662e3.v8 deleted file mode 100644 index 50d730f9e..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/fe/11286d959e3b7eb9142cb3aeb662e3.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/fe/3ff4beae837f625d2df4d02e9125f4.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/fe/3ff4beae837f625d2df4d02e9125f4.blob deleted file mode 100644 index 8a27c31d5..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/fe/3ff4beae837f625d2df4d02e9125f4.blob +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixelated-face.js","node_modules/@parcel/runtime-browser-hmr/lib/HMRRuntime.js"],"names":["video","document","querySelector","canvas","ctx","getContext","faceCanvas","faceCtx","faceDetector","window","FaceDetector","SIZE","populateVideo","stream","navigator","mediaDevices","getUserMedia","width","height","srcObject","play","console","log","videoWidth","videoHeight","detect","faces","forEach","drawFace","censor","requestAnimationFrame","face","top","left","boundingBox","clearRect","strokeStyle","lineWidth","strokeRect","drawImage","x","y","then","__PARCEL_HMR_ENV_HASH","OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","removeErrorOverlay","assets","filter","asset","envHash","handled","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","clear","hmrApply","v","hmrAcceptRun","reload","error","ansiError","message","stack","overlay","createErrorOverlay","body","appendChild","getElementById","remove","createElement","stackTrace","innerHTML","htmlError","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","output","deps","cached","cache","some","cb"],"mappings":"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","file":"pixelated-face.d9920b9b.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/fe/8d4db571cc3d201fd33186d18c6d61.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/fe/8d4db571cc3d201fd33186d18c6d61.blob deleted file mode 100644 index d7aeda5f1..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/fe/8d4db571cc3d201fd33186d18c6d61.blob +++ /dev/null @@ -1,371 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -(function(modules, cache, entry, globalName) { - /* eslint-disable no-undef */ - var globalObject = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; - /* eslint-enable no-undef */ - - // Save the require from previous bundle to this closure if any - var previousRequire = - typeof globalObject.parcelRequire === 'function' && - globalObject.parcelRequire; - // Do not use `require` to prevent Webpack from trying to bundle this call - var nodeRequire = - typeof module !== 'undefined' && - typeof module.require === 'function' && - module.require.bind(module); - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = - typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error("Cannot find module '" + name + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = (cache[name] = new newRequire.Module(name)); - - modules[name][0].call( - module.exports, - localRequire, - module, - module.exports, - this - ); - } - - return cache[name].exports; - - function localRequire(x) { - return newRequire(localRequire.resolve(x)); - } - - function resolve(x) { - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function(id, exports) { - modules[id] = [ - function(require, module) { - module.exports = exports; - }, - {} - ]; - }; - - globalObject.parcelRequire = newRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === 'function' && define.amd) { - define(function() { - return mainExports; - }); - - // - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ff/319ebe775e1edc87794fe8b68803d2.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ff/319ebe775e1edc87794fe8b68803d2.blob deleted file mode 100644 index 6a2404ac1..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ff/319ebe775e1edc87794fe8b68803d2.blob +++ /dev/null @@ -1,44 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - faces.forEach(drawFace); - requestAnimationFrame(detect); -} - -function drawFace(face) { - const { - width, - height, - top, - left - } = face.boundingBox; - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 200; - ctx.strokeRect(left, top, width, height); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ff/620db99845d238259d4073a9e0098f.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ff/620db99845d238259d4073a9e0098f.blob deleted file mode 100644 index b3f37b5bf..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ff/620db99845d238259d4073a9e0098f.blob +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Censorship - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ff/9ffc07e5e837a6b9d1cc444f04d4f5.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/ff/9ffc07e5e837a6b9d1cc444f04d4f5.v8 deleted file mode 100644 index 39b158bf2..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/ff/9ffc07e5e837a6b9d1cc444f04d4f5.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ff/c35a0b257f05234d9e65e3117ba5f3.v8 b/exercises/55 - Face Detection Censorship/.parcel-cache/ff/c35a0b257f05234d9e65e3117ba5f3.v8 deleted file mode 100644 index 297c0d991..000000000 Binary files a/exercises/55 - Face Detection Censorship/.parcel-cache/ff/c35a0b257f05234d9e65e3117ba5f3.v8 and /dev/null differ diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ff/eac6980103fb556abf93aa6f1845d4.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ff/eac6980103fb556abf93aa6f1845d4.blob deleted file mode 100644 index 6db47c5ba..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ff/eac6980103fb556abf93aa6f1845d4.blob +++ /dev/null @@ -1,35 +0,0 @@ -const video = document.querySelector('.webcam'); -const canvas = document.querySelector('.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('.face'); -const faceCtx = canvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); // Write a fucntion that will populate the users video - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { - width: 1280, - height: 720 - } - }); - video.srcObject = stream; - await video.play(); // size the canvases to be the same size as the video - - console.log(video.videoWidth, video.videoHeight); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); // ask the browser when the next animation frame is, and tell it to run detect for us - - requestAnimationFrame(detect); -} - -function drawFace(face) { - console.log(face); -} - -populateVideo().then(detect); \ No newline at end of file diff --git a/exercises/55 - Face Detection Censorship/.parcel-cache/ff/efbf88e4ec49e210c32051833ee0d2.blob b/exercises/55 - Face Detection Censorship/.parcel-cache/ff/efbf88e4ec49e210c32051833ee0d2.blob deleted file mode 100644 index 67f7d8039..000000000 --- a/exercises/55 - Face Detection Censorship/.parcel-cache/ff/efbf88e4ec49e210c32051833ee0d2.blob +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Censorship - - - - - -
- - - -
- - - - - - diff --git a/exercises/55 - Face Detection Censorship/face.html b/exercises/55 - Face Detection Censorship/face.html index 04213793e..b8ee21f72 100644 --- a/exercises/55 - Face Detection Censorship/face.html +++ b/exercises/55 - Face Detection Censorship/face.html @@ -1,58 +1,60 @@ - - - - Censorship - - - - - -
- - -
-
- - - -
- - - - - + + + Censorship + + + + + +
+ + +
+
+ + + +
+ + diff --git a/exercises/55 - Face Detection Censorship/package-lock.json b/exercises/55 - Face Detection Censorship/package-lock.json index 8f369226e..551477cf3 100644 --- a/exercises/55 - Face Detection Censorship/package-lock.json +++ b/exercises/55 - Face Detection Censorship/package-lock.json @@ -5,28 +5,40 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.8.3" + } + }, + "@babel/compat-data": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", + "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", + "requires": { + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "semver": "^5.5.0" } }, "@babel/core": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.4.tgz", - "integrity": "sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ==", - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.4", - "@babel/helpers": "^7.6.2", - "@babel/parser": "^7.6.4", - "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.3", - "@babel/types": "^7.6.3", - "convert-source-map": "^1.1.0", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", @@ -34,11 +46,11 @@ }, "dependencies": { "json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" } }, "source-map": { @@ -49,11 +61,11 @@ } }, "@babel/generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", - "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", "requires": { - "@babel/types": "^7.6.3", + "@babel/types": "^7.9.5", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -67,740 +79,825 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-builder-react-jsx": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz", - "integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz", + "integrity": "sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw==", "requires": { - "@babel/types": "^7.3.0", - "esutils": "^2.0.0" + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/types": "^7.9.0" } }, - "@babel/helper-call-delegate": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", - "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.5.tgz", + "integrity": "sha512-HAagjAC93tk748jcXpZ7oYRZH485RCq/+yEv9SIWezHRPv9moZArTnkUNciUNzvwHUABmiWKlcxJvMcu59UwTg==", "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-module-imports": "^7.8.3", + "@babel/types": "^7.9.5" } }, - "@babel/helper-create-class-features-plugin": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.6.0.tgz", - "integrity": "sha512-O1QWBko4fzGju6VoVvrZg0RROCVifcLxiApnGP3OWfWzvxRZFCoBD81K5ur5e3bVY2Vf/5rIJm8cqPKn8HUJng==", + "@babel/helper-compilation-targets": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", + "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-member-expression-to-functions": "^7.5.5", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5", - "@babel/helper-split-export-declaration": "^7.4.4" + "@babel/compat-data": "^7.8.6", + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", - "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.5.5", + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", "lodash": "^4.17.13" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-hoist-variables": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", - "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.8.3" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", - "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", "requires": { - "@babel/types": "^7.5.5" + "@babel/types": "^7.8.3" } }, "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-module-transforms": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", - "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/types": "^7.5.5", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", "lodash": "^4.17.13" } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==" + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==" }, "@babel/helper-regex": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", - "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", "requires": { "lodash": "^4.17.13" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-replace-supers": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz", - "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.5.5", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5" + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.8.3" } }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==" + }, "@babel/helper-wrap-function": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helpers": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.2.tgz", - "integrity": "sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA==", + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", "requires": { - "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.2", - "@babel/types": "^7.6.0" + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.4.tgz", - "integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==" + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==" }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", - "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", - "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz", + "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.9.5" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz", - "integrity": "sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" + "@babel/helper-create-regexp-features-plugin": "^7.8.8", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-dynamic-import": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", - "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-flow": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz", - "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz", + "integrity": "sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-jsx": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz", - "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz", + "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-syntax-typescript": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz", - "integrity": "sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag==", + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", - "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz", - "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-plugin-utils": "^7.8.3", "lodash": "^4.17.13" } }, "@babel/plugin-transform-classes": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", - "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5", - "@babel/helper-split-export-declaration": "^7.4.4", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz", + "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-destructuring": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", - "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz", + "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz", - "integrity": "sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", - "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.6.3.tgz", - "integrity": "sha512-l0ETkyEofkqFJ9LS6HChNIKtVJw2ylKbhYMlJ5C6df+ldxxaLIyXY4yOdDQQspfFpV8/vDiaWoJlvflstlYNxg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz", + "integrity": "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-flow": "^7.8.3" } }, "@babel/plugin-transform-for-of": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", - "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", + "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-function-name": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", - "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", - "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz", - "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", + "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz", - "integrity": "sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", + "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", "requires": { - "@babel/helper-module-transforms": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", - "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", + "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz", - "integrity": "sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", "requires": { - "regexpu-core": "^4.6.0" + "@babel/helper-create-regexp-features-plugin": "^7.8.3" } }, "@babel/plugin-transform-new-target": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", - "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-object-super": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", - "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" } }, "@babel/plugin-transform-parameters": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", - "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz", + "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==", "requires": { - "@babel/helper-call-delegate": "^7.4.4", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-property-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", - "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz", - "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz", + "integrity": "sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw==", "requires": { - "@babel/helper-builder-react-jsx": "^7.3.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" + "@babel/helper-builder-react-jsx": "^7.9.0", + "@babel/helper-builder-react-jsx-experimental": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" } }, "@babel/plugin-transform-regenerator": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", - "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", "requires": { - "regenerator-transform": "^0.14.0" + "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", - "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-spread": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", - "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" } }, "@babel/plugin-transform-template-literals": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", - "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", - "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, - "@babel/plugin-transform-typescript": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.6.3.tgz", - "integrity": "sha512-aiWINBrPMSC3xTXRNM/dfmyYuPNKY/aexYqBgh0HBI5Y+WO5oRAqW/oROYeYHrF4Zw12r9rK4fMk/ZlAmqx/FQ==", + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.6.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-typescript": "^7.2.0" + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz", - "integrity": "sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw==", + "@babel/preset-env": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.5.tgz", + "integrity": "sha512-eWGYeADTlPJH+wq1F0wNfPbVS1w1wtmMJiYk55Td5Yu28AsdR9AsC97sZ0Qq8fHqQuslVSIYSGJMcblr345GfQ==", + "requires": { + "@babel/compat-data": "^7.9.0", + "@babel/helper-compilation-targets": "^7.8.7", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.5", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.5", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.9.5", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.0", + "@babel/plugin-transform-modules-systemjs": "^7.9.0", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.9.5", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.5", + "browserslist": "^4.9.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" } }, - "@babel/preset-env": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.3.tgz", - "integrity": "sha512-CWQkn7EVnwzlOdR5NOm2+pfgSNEZmvGjOhlCHBDq0J8/EStr+G+FvPEiz9B56dR6MoiUFjXhfE4hjLoAKKJtIQ==", + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-dynamic-import": "^7.5.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.6.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.6.2", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.5.0", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.6.3", - "@babel/plugin-transform-classes": "^7.5.5", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.6.0", - "@babel/plugin-transform-dotall-regex": "^7.6.2", - "@babel/plugin-transform-duplicate-keys": "^7.5.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.4.4", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-member-expression-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.5.0", - "@babel/plugin-transform-modules-commonjs": "^7.6.0", - "@babel/plugin-transform-modules-systemjs": "^7.5.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.3", - "@babel/plugin-transform-new-target": "^7.4.4", - "@babel/plugin-transform-object-super": "^7.5.5", - "@babel/plugin-transform-parameters": "^7.4.4", - "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", - "@babel/plugin-transform-reserved-words": "^7.2.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.6.2", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.4.4", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.6.2", - "@babel/types": "^7.6.3", - "browserslist": "^4.6.0", - "core-js-compat": "^3.1.1", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.5.0" + "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/traverse": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", - "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.3", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.3", - "@babel/types": "^7.6.3", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -810,947 +907,271 @@ "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.3.tgz", "integrity": "sha512-FmuxfCuolpLl0AnQ2NHSzoUKWEJDFl63qXjzdoWBVyFCXzMGm1spBzk7LeHNoVCiWCF7mRVms9e6jEV9+MoPbg==" }, - "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", "requires": { - "@nodelib/fs.stat": "2.0.3", - "run-parallel": "^1.1.9" + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" } }, "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==" - }, - "@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", - "requires": { - "@nodelib/fs.scandir": "2.1.3", - "fastq": "^1.6.0" - } - }, - "@parcel/babel-preset-env": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/babel-preset-env/-/babel-preset-env-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-g9LgjuYqrJRerxEu6BAyzwLNp9lYsNr5TyFxq9mMJ/1Ki3unNPVkc1MHKeuDG90m+CMti4XOecsXOlvuef5RVA==", - "requires": { - "@babel/preset-env": "^7.0.0", - "semver": "^5.4.1" - } - }, - "@parcel/bundler-default": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-cOhK61b7VvBiN3OD0O9PQSW1zgfBDHqMs3iirjS5WEdXY5xAq7vOLPkrW/RapsNHFs/9fuBlnUMekspGgwJvAA==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "nullthrows": "^1.1.1" - } - }, - "@parcel/cache": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-GJMxY8B5LSEIrlkoHipgah2l7ZetZlSbHNv8kuyk5r16oVczKbiXko4koP7vy1lsPo7I75U0037mWRHbEYf00w==", - "requires": { - "@parcel/logger": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1" - } - }, - "@parcel/config-default": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-4NfB74HOC/jRKYLGfQpaweYi6NZ6ptPdPhSHTKTBFgMNCzJxrO7HLl3ZRSPqDu0AaQh0E6PgaGNVpKFUFoUj6w==", - "requires": { - "@parcel/bundler-default": "^2.0.0-alpha.2.1", - "@parcel/namer-default": "^2.0.0-alpha.2.1", - "@parcel/optimizer-cssnano": "^2.0.0-alpha.2.1", - "@parcel/optimizer-terser": "^2.0.0-alpha.2.1", - "@parcel/packager-css": "^2.0.0-alpha.2.1", - "@parcel/packager-html": "^2.0.0-alpha.2.1", - "@parcel/packager-js": "^2.0.0-alpha.2.1", - "@parcel/packager-raw": "^2.0.0-alpha.2.1", - "@parcel/packager-ts": "^2.0.0-alpha.2.1", - "@parcel/reporter-cli": "^2.0.0-alpha.2.1", - "@parcel/reporter-dev-server": "^2.0.0-alpha.2.1", - "@parcel/reporter-hmr-server": "^2.0.0-alpha.2.1", - "@parcel/resolver-default": "^2.0.0-alpha.2.1", - "@parcel/runtime-browser-hmr": "^2.0.0-alpha.2.1", - "@parcel/runtime-js": "^2.0.0-alpha.2.1", - "@parcel/transformer-babel": "^2.0.0-alpha.2.1", - "@parcel/transformer-coffeescript": "^2.0.0-alpha.2.1", - "@parcel/transformer-css": "^2.0.0-alpha.2.1", - "@parcel/transformer-html": "^2.0.0-alpha.2.1", - "@parcel/transformer-js": "^2.0.0-alpha.2.1", - "@parcel/transformer-json": "^2.0.0-alpha.2.1", - "@parcel/transformer-less": "^2.0.0-alpha.2.1", - "@parcel/transformer-postcss": "^2.0.0-alpha.2.1", - "@parcel/transformer-posthtml": "^2.0.0-alpha.2.1", - "@parcel/transformer-pug": "^2.0.0-alpha.2.1", - "@parcel/transformer-raw": "^2.0.0-alpha.2.1", - "@parcel/transformer-sass": "^2.0.0-alpha.2.1", - "@parcel/transformer-stylus": "^2.0.0-alpha.2.1", - "@parcel/transformer-sugarss": "^2.0.0-alpha.2.1", - "@parcel/transformer-toml": "^2.0.0-alpha.2.1", - "@parcel/transformer-typescript-types": "^2.0.0-alpha.2.1", - "@parcel/transformer-yaml": "^2.0.0-alpha.2.1" - } - }, - "@parcel/core": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-e8h31lj5Jm+qrmY6EHvnew9rPwQfMxT3ew+Np1oVjM9ztrFfFf2PG9OborV/chlZ1zJo+z1aGqEvyYoj+hwVxg==", - "requires": { - "@parcel/cache": "^2.0.0-alpha.2.1", - "@parcel/events": "^2.0.0-alpha.2.1", - "@parcel/fs": "^2.0.0-alpha.2.1", - "@parcel/logger": "^2.0.0-alpha.2.1", - "@parcel/package-manager": "^2.0.0-alpha.2.1", - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/source-map": "^2.0.0-alpha.2.1", - "@parcel/types": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "@parcel/workers": "^2.0.0-alpha.2.1", - "abortcontroller-polyfill": "^1.1.9", - "browserslist": "^4.6.6", - "clone": "^2.1.1", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", - "json5": "^1.0.1", - "micromatch": "^4.0.2", - "nullthrows": "^1.1.1", - "pirates": "^4.0.0", - "semver": "^5.4.1" - } - }, - "@parcel/events": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-D71w9QnmPdnvcytC0wozVmn7DYrPr5rxcO5CxGbvkoXiPeVl5sr1B5mnosDlvNhsIUMmy//CVy6mkbek8baJRA==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" }, "@parcel/fs": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-o6kKPXewhS74drk9SWKX0Oevby/FnbWwLHkfqf59duuXcbN5CrPmRmQF7OBKzowtTDSmvyxGSvavmPGr5bkyHw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", + "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", "requires": { - "@parcel/utils": "^2.0.0-alpha.2.1", - "@parcel/watcher": "^2.0.0-alpha.3", - "@parcel/workers": "^2.0.0-alpha.2.1", + "@parcel/utils": "^1.11.0", "mkdirp": "^0.5.1", - "ncp": "^2.0.0", - "nullthrows": "^1.1.1", "rimraf": "^2.6.2" } }, "@parcel/logger": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-RHvgoYVjxCMFoXmA6kQTzpItr4pLSoYBydpnbaUcR7S/+RbeoqWTVioXjIVcprH4fvHjW0yVYNBq2c0TrynmVg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", + "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", "requires": { - "@parcel/events": "^2.0.0-alpha.2.1" + "@parcel/workers": "^1.11.0", + "chalk": "^2.1.0", + "grapheme-breaker": "^0.3.2", + "ora": "^2.1.0", + "strip-ansi": "^4.0.0" } }, - "@parcel/namer-default": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-d/0VWAMCzJ5igHLREGOKe96ZwJOp64SNB0RUtMXzDsPDvmONQEZ0o5CQI4m0Zj6R3ffhayEM8oitWAA2EdLueQ==", + "@parcel/utils": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", + "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==" + }, + "@parcel/watcher": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", + "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "nullthrows": "^1.1.1" + "@parcel/utils": "^1.11.0", + "chokidar": "^2.1.5" } }, - "@parcel/optimizer-cssnano": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-cssnano/-/optimizer-cssnano-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-ZOGIe2KyWEia0OY+YxjKmbtVYFHmu1GI9wrRYkOwbCQtMFIOb3pUtZAp/3/sfp0xI24Oo5/bQAwV3X57rUJ7lg==", + "@parcel/workers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", + "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "cssnano": "^4.1.10", - "postcss": "^7.0.5" + "@parcel/utils": "^1.11.0", + "physical-cpu-count": "^2.0.0" } }, - "@parcel/optimizer-terser": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-S/gNj4mBMV6SZBCQjFKxaO9dTODAkozbjAUgw6ViJXUWDSOgHuZOX5aE05mYwCStCh9h+Df6Y3i7qVDlsVu0ag==", + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==" + }, + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==" + }, + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==" + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/source-map": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "nullthrows": "^1.1.1", - "terser": "^4.0.0" + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" }, "dependencies": { - "terser": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.9.tgz", - "integrity": "sha512-NFGMpHjlzmyOtPL+fDw3G7+6Ueh/sz4mkaUYa4lJCxOPTNzd0Uj0aZJOmsDYoSQyfuVoWDMSWTPU3huyOm2zdA==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" } } }, - "@parcel/package-manager": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-JGSRaokflmI58SbJOglVN0C80yiAf2eBBZnrErUs9Y0IB/aKe9pnLkfP7CV6/N/WZK0zFedMOf5zwr/0Ez5cZg==", - "requires": { - "@parcel/fs": "^2.0.0-alpha.2.1", - "@parcel/logger": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "@parcel/workers": "^2.0.0-alpha.2.1", - "command-exists": "^1.2.6", - "cross-spawn": "^6.0.4", - "nullthrows": "^1.1.1", - "resolve": "^1.12.0", - "split2": "^3.1.1" - } - }, - "@parcel/packager-css": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-DO/1v8gjLs06CFnzwa+G7lKhlLYVWelkxOJ1x3SuBrBePfGsJcGCYO5YxU9mqd/XqZczLyii/FFMGS83skkUug==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1" - } + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" }, - "@parcel/packager-html": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-J0T39TAZPt9SB7LSF91MDYqg05+CNPQAA9pXS86ESOmCdH9qzM/aaPVtNkgaEPsgzKLz/FQVbS1lHXeBKJRvtg==", + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/types": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "nullthrows": "^1.1.1", - "posthtml": "^0.11.3" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "@parcel/packager-js": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-9YA62hnVAg8B1gmuPZdoaH1kh9lvS0cZX/2KWoHZPWWvnMDbHPkD1ipyRmkW6w28WB98phKZ3vGcyd0mLyTxMg==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/scope-hoisting": "^2.0.0-alpha.2.1", - "@parcel/source-map": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1" - } + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" }, - "@parcel/packager-raw": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-YOvu5bCBHDZ5RFMo3OAi1wTffS5Fk+z3SN46gPCdk4bberKZBOfo3KkGwJ8TTSDI6uuQ4zJAi8ZTAGFcmQy5kA==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1" - } + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, - "@parcel/packager-ts": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/packager-ts/-/packager-ts-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-DrW+Dv0eIIkg4koNkZ7Pixaz0J9Ak9vsZqj88OeEIffUA1YyNcwz69/s4F0B+GHT3SuY1W4RvLTUAPC+cJeT8A==", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1" + "color-convert": "^1.9.0" } }, - "@parcel/plugin": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-TjKuHgSQk9Sq39OUYNButauvZ6a9e2iCiibMov+taWrRqK76fc5TgVuCudzm12oxt/AIR7SDHHRjZs2R9cjq1Q==", + "ansi-to-html": { + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz", + "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==", "requires": { - "@parcel/types": "^2.0.0-alpha.2.1" + "entities": "^1.1.2" } }, - "@parcel/reporter-cli": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-yBgLLaIkLF+17hbqrgg5dKpgpsT8qFtcNyBL1WoXv7HwxVq2eNwC4gRQja5XYGBxWo3zaZ4I6pbX78QW4fdF7A==", + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "requires": { - "@parcel/events": "^2.0.0-alpha.2.1", - "@parcel/logger": "^2.0.0-alpha.2.1", - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/types": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "cli-spinners": "^2.0.0", - "filesize": "^3.6.0", - "grapheme-breaker": "^0.3.2", - "ink": "^2.1.1", - "ink-spinner": "^3.0.1", - "nullthrows": "^1.1.1", - "react": "^16.7.0" - } - }, - "@parcel/reporter-dev-server": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-nA0RMgyFdxjqZ7GwXiSFrl+vy/I5gY0Vwexw1Gr//AuKxE1gzPZlrCBHSjklPa3dC9HXS02PWhhfsvxTaOZRew==", - "requires": { - "@parcel/logger": "^2.0.0-alpha.2.1", - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "ansi-html": "^0.0.7", - "connect": "^3.7.0", - "ejs": "^2.6.1", - "http-proxy-middleware": "^0.19.1", - "mime": "^2.4.4" - } - }, - "@parcel/reporter-hmr-server": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/reporter-hmr-server/-/reporter-hmr-server-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-kuDwg8bKRexqDgCzIIby3Wtjdp51iGLqSIp8W1M45mvqbrmPpD2uM5NIqITEjtSc0HrfVWii5zUGQCIfqBvzmA==", - "requires": { - "@parcel/logger": "^2.0.0-alpha.2.1", - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/reporter-cli": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "ansi-html": "^0.0.7", - "ws": "^6.2.0" - } - }, - "@parcel/resolver-default": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-NwIjXb62KZQ9VF4Clu4oGD6TJP7w3oRwO2e7ucuv6ecfs4vbiU4sdgRacGmcWDZYCccfIlJK3R0UALzs9XfxSQ==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "micromatch": "^3.0.4", - "node-libs-browser": "^2.1.0" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" }, "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { + "normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "remove-trailing-separator": "^1.0.1" } } } }, - "@parcel/runtime-browser-hmr": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-CiCeTOKOCbi6WvHqaEzblq3mGEV/cxTk8keUuAfd7On17Yg1d+19aBR9iuxTvD4NXffqSCZVF38IyC//bIauDg==", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1" + "sprintf-js": "~1.0.2" } }, - "@parcel/runtime-js": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-DYAPszAppjffW3EjvThHHxhjk7bkqvQQv6VUc4ab7hqRaggGBGEAI1JG9efD4rgIhwDqshxgnT1aYCordhaiNg==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "nullthrows": "^1.1.1" - } + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, - "@parcel/scope-hoisting": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/scope-hoisting/-/scope-hoisting-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-e4LXQIRLl5ffXTmphhRDTeC7OqKgwHZJn3idSHnWpAard1bC53yqu/uEBiMtBLdU/sdFJEQOyZKNYn0XTgUxfw==", - "requires": { - "@babel/generator": "^7.3.3", - "@babel/parser": "^7.0.0", - "@babel/template": "^7.2.2", - "@babel/traverse": "^7.2.3", - "@babel/types": "^7.3.3", - "@parcel/utils": "^2.0.0-alpha.2.1", - "babylon-walk": "^1.0.2", - "nullthrows": "^1.1.1" - } + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, - "@parcel/source-map": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-Eb+eu1OQJM3S8arEcQD86UGTLJlScSsJraD7pmOZTKCLeVf8rD7IaQ/J36+LjoD4Zza4J5eUBFURS7MiI+FyHw==", - "requires": { - "@parcel/utils": "^2.0.0-alpha.2.1", - "nullthrows": "^1.1.1", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - } - } + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, - "@parcel/transformer-babel": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-6ronI6mbAEKH3gq4x1bdYVtJlxgcUO9rPjQpWTOsSRPmPj7v9NgQjL3JuIkpdYPgZSzgBuJaxg4RQ057YYvO4A==", - "requires": { - "@babel/core": "^7.0.0", - "@babel/generator": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.4.5", - "@babel/preset-env": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@parcel/babel-preset-env": "^2.0.0-alpha.2.1", - "@parcel/logger": "^2.0.0-alpha.2.1", - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/source-map": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "browserslist": "^4.6.6", - "core-js": "^3.2.1", - "nullthrows": "^1.1.1", - "semver": "^5.4.1" - }, - "dependencies": { - "core-js": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.5.tgz", - "integrity": "sha512-0J3K+Par/ZydhKg8pEiTcK/9d65/nqJOzY62uMkjeBmt05fDOt/khUVjDdh8TpeIuGQDy1yLDDCjiWN/8pFIuw==" - } - } + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" }, - "@parcel/transformer-coffeescript": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-coffeescript/-/transformer-coffeescript-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-Ricz570WHtqIkkA41zB082oNxBbi90eMNiXLClbmhNCbMQrC+XiwbFVzPrTuM2Ex7Z/3AMKKzCHNzVN2XU0kuA==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/source-map": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "coffeescript": "^2.0.3", - "nullthrows": "^1.1.1", - "semver": "^5.4.1" - } + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, - "@parcel/transformer-css": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-UJB8LeCh3Nd40voSlBjx4BvyhnBFyKHrBSxYQTQJkvNSe2qcA3D3kxg10/y4LTcL7TfK8U/Wd4u17EAG1/Z8xw==", + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "postcss": "^7.0.5", - "postcss-value-parser": "^3.3.1", - "semver": "^5.4.1" + "safer-buffer": "~2.1.0" } }, - "@parcel/transformer-html": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-BTYyCcXXkNAXOvfHmkqX5Pcio7cn3zIB6McUqjUe6Jy+9bsX+suNH14ZWOHnmKnIAsWzg7Cp/QW7CGffyErplA==", + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "nullthrows": "^1.1.1", - "posthtml": "^0.11.3", - "posthtml-parser": "^0.4.1", - "posthtml-render": "^1.1.5", - "semver": "^5.4.1" - } - }, - "@parcel/transformer-js": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-HPiu8taHRhPacclDrK4Qg63RIV7UDpnLHTlH8Xz9Nsooh0nY+YLuwMiMUen6GBzPpvumXurFZVuTe2w4D9n4sA==", - "requires": { - "@babel/core": "^7.0.0", - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "@parcel/logger": "^2.0.0-alpha.2.1", - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/scope-hoisting": "^2.0.0-alpha.2.1", - "@parcel/source-map": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "babylon-walk": "^1.0.2", - "node-libs-browser": "^2.0.0", - "nullthrows": "^1.1.1", - "semver": "^5.4.1" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "@parcel/transformer-json": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-jbfKU2IHafnlcCFgiRIF/MICgyeQv/Y4v5/y64+4NVM3U2Qn1nSQ26Qe9VIn8klf1EPMHWe9JLsuGR15ooq0gQ==", + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "json5": "^2.1.0" + "object-assign": "^4.1.1", + "util": "0.10.3" }, "dependencies": { - "json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "requires": { - "minimist": "^1.2.0" + "inherits": "2.0.1" } } } }, - "@parcel/transformer-less": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-less/-/transformer-less-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-ElhKQfy8qXJIjpGoIXuQFam3Q+r7ZhN6iYBSeidqKig1X95P2Yi6yprp3HPgwUDS2+V9b0jDsN9Bwp2yD9dpHA==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1" - } + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, - "@parcel/transformer-postcss": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-pTFZkAVnLfyvhcKtoG/HwtZ1UyIzuTN95PUqIPPd9LUVKnuzDZyhqty8jDNwKAIg0PNQ//0iJrEM7avZSV5Bbw==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "css-modules-loader-core": "^1.1.0", - "nullthrows": "^1.1.1", - "postcss": "^7.0.5", - "postcss-value-parser": "^3.3.1", - "semver": "^5.4.1" - } + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, - "@parcel/transformer-posthtml": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-Th4RxffegE8lHTrsIj0RB7x3+S7CYKJT4beLYYzmiI2JbShhUe+n5pYrNTrLsOtOIGP9pPhg2GlB7FSunEMT6Q==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "nullthrows": "^1.1.1", - "posthtml": "^0.11.3", - "posthtml-parser": "^0.4.1", - "posthtml-render": "^1.1.5", - "semver": "^5.4.1" - } - }, - "@parcel/transformer-pug": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-pug/-/transformer-pug-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-YNupeD9ZOmDI//ziLdaLuEAgxLsEjILXtwLeV8VXBAf/L4C+2j+5oeQwo7APd/ru5dMDJMusWEA8WKDBNayUjg==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1" - } - }, - "@parcel/transformer-raw": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-nw9NznP0STlDYGhpWDSN285KPpwJhKpk3k8K5oNk31R7byF1wra1kDPD9cxfL0nGBwg73q/W9azMDCjdhOe60A==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1" - } - }, - "@parcel/transformer-sass": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-sass/-/transformer-sass-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-V7IUx9a1wnsSXhOtwYO65iRcF+GKPQ9XiPkuQZ3o6BWUcrMu+cNzsSnh/3Dfu0kJebOgGBAgoDE/JvByx0uPSg==", - "requires": { - "@parcel/fs": "^2.0.0-alpha.2.1", - "@parcel/logger": "^2.0.0-alpha.2.1", - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1" - } - }, - "@parcel/transformer-stylus": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-stylus/-/transformer-stylus-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-0xU6bm6+h5v8uPTSuUAoRPHqCKApL2WgREhIxIFjcBpmKwMdOEdGk80PUBHQJeN2PelQq9zq7PbYGW3zMVHrbw==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1" - } - }, - "@parcel/transformer-sugarss": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-sugarss/-/transformer-sugarss-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-9LmYlaGnRXNNITLGV18dQQ5PlnCiuu2oShugbQI6dVX1tvAbXwhzBejYRJFJ9/4VFuj1peyWUu6ut7O8fV5bQQ==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "postcss": "^7.0.5" - } - }, - "@parcel/transformer-toml": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-toml/-/transformer-toml-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-WYQ79OtS2xvKg6+wuKhob2j3I6B07CAvt5mntC3ShOe6NrgUOfNqcbnWfxRdmAa2EFrvUNynvcrYD4DiNFdDHg==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1" - } - }, - "@parcel/transformer-typescript-types": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-typescript-types/-/transformer-typescript-types-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-xMKcvkBwvztPBHSC/d2R/7ipd/a7bPpI9II9fePQiXZKt+EnUwECKF2/pr8V4b09jdauj0l2lJFjBzNusWrLXQ==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1", - "@parcel/source-map": "^2.0.0-alpha.2.1", - "nullthrows": "^1.1.1" - } - }, - "@parcel/transformer-yaml": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-yaml/-/transformer-yaml-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-P+MYcL3pSPYXRjh3g50enve+5QAYRcM93vNAZlrbrRu6xKqIWf1aDJa3/g+2eIWfM5+fwhedfiv4QKlAFdNHCQ==", - "requires": { - "@parcel/plugin": "^2.0.0-alpha.2.1" - } - }, - "@parcel/types": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-YyA3+Syx0QYTYMd4ssCXQgBxoyRCZmbFfEYQoT7Uyf8hpDIXSdcl9BA5WvCKyZMkmpQQv0If86ivbfxNMrNpoA==" - }, - "@parcel/utils": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-4wsG3q8HuiKu2WprjmnoCmHnE1kNIjggpOdVAg1bUsv6odDVTyqXoll47H0RE5+aEykitDNKEJjXCYLDddRB3A==", - "requires": { - "@iarna/toml": "^2.2.0", - "@parcel/logger": "^2.0.0-alpha.2.1", - "clone": "^2.1.1", - "deasync": "^0.1.14", - "fast-glob": "^3.0.4", - "is-glob": "^4.0.0", - "is-url": "^1.2.2", - "json5": "^1.0.1", - "micromatch": "^4.0.2", - "node-forge": "^0.8.1", - "nullthrows": "^1.1.1", - "resolve": "^1.12.0", - "serialize-to-js": "^1.1.1", - "terser": "^3.7.3" - } - }, - "@parcel/watcher": { - "version": "2.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.0-alpha.3.tgz", - "integrity": "sha512-kR30TWdVrApH2R/UZ6uIWp72SdINaCC5Tk63TPMthDbSMbjwb1kXJvOrNbIDTOoxyitHH6xZICeyBCTf78oWag==", - "requires": { - "bindings": "^1.5.0", - "node-addon-api": "^1.6.2", - "prebuild-install": "^5.2.5" - }, - "dependencies": { - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "requires": { - "file-uri-to-path": "1.0.0" - } - } - } - }, - "@parcel/workers": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-miet7+jjV3S1AxlWolfMh9ZhRLq7JzHoBkk/zLNPjNaBZh6wTh1BFzOwMAHFBA70kHTf4KvuJdB3AhzrbhYoTA==", - "requires": { - "@parcel/logger": "^2.0.0-alpha.2.1", - "@parcel/utils": "^2.0.0-alpha.2.1", - "chrome-trace-event": "^1.0.2", - "nullthrows": "^1.1.1", - "physical-cpu-count": "^2.0.0" - } - }, - "@types/prop-types": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" - }, - "@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==" - }, - "@types/react": { - "version": "16.9.11", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.11.tgz", - "integrity": "sha512-UBT4GZ3PokTXSWmdgC/GeCGEJXE5ofWyibCcecRLUVN2ZBpXQGVgQGtG2foS7CrTKFKlQVVswLvf7Js6XA/CVQ==", - "requires": { - "@types/prop-types": "*", - "csstype": "^2.2.0" - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "abortcontroller-polyfill": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.4.0.tgz", - "integrity": "sha512-3ZFfCRfDzx3GFjO6RAkYx81lPGpUS20ISxux9gLxuKnqafNcFQo59+IoZqpO2WvQlyc287B62HDnDdNYRmlvWA==" - }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" - }, - "ansi-escapes": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", - "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", - "requires": { - "type-fest": "^0.5.2" - } - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, - "auto-bind": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-2.1.1.tgz", - "integrity": "sha512-NUwV1i9D3vxxY1KnfZgSZ716d6ovY7o8LfOwLhGIPFBowIb6Ln6DBW64+jCqPzUznel2hRSkQnYQqvh7/ldw8A==", - "requires": { - "@types/react": "^16.8.12" - } + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" }, "babel-plugin-dynamic-import-node": { "version": "2.3.0", @@ -1767,6 +1188,13 @@ "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } } }, "babel-types": { @@ -1857,17 +1285,25 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, - "bindings": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=" + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } }, - "bl": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-3.0.0.tgz", - "integrity": "sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A==", + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "requires": { - "readable-stream": "^3.0.1" + "file-uri-to-path": "1.0.0" } }, "bn.js": { @@ -1890,11 +1326,30 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "fill-range": "^7.0.1" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, "brfs": { @@ -1913,6 +1368,11 @@ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -1979,26 +1439,27 @@ }, "dependencies": { "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" } } }, "browserslist": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", - "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz", + "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==", "requires": { - "caniuse-lite": "^1.0.30001004", - "electron-to-chromium": "^1.3.295", - "node-releases": "^1.1.38" + "caniuse-lite": "^1.0.30001038", + "electron-to-chromium": "^1.3.390", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" } }, "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -2041,6 +1502,11 @@ "unset-value": "^1.0.0" } }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", @@ -2062,6 +1528,11 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -2074,9 +1545,14 @@ } }, "caniuse-lite": { - "version": "1.0.30001006", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001006.tgz", - "integrity": "sha512-MXnUVX27aGs/QINz+QG1sWSLDr3P1A3Hq5EUWoIt0T7K24DuvMxZEnh3Y5aHlJW6Bz2aApJdSewdYLd8zQnUuw==" + "version": "1.0.30001042", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001042.tgz", + "integrity": "sha512-igMQ4dlqnf4tWv0xjaaE02op9AJ2oQzXKjWf4EuAHFN694Uo9/EfPVIPJcmn2WkU9RqozCxx5e2KPcVClHDbDw==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { "version": "2.4.2", @@ -2086,36 +1562,27 @@ "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } } }, - "chownr": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "requires": { - "tslib": "^1.9.0" + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -2155,30 +1622,41 @@ } }, "cli-spinners": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz", - "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==" }, - "cli-truncate": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", - "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "requires": { - "slice-ansi": "^1.0.0", - "string-width": "^2.0.0" - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" - }, - "clones": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/clones/-/clones-1.2.0.tgz", - "integrity": "sha512-FXDYw4TjR8wgPZYui2LeTqWh1BLpfQ8lB6upMtlpDF6WlOOxghmTTxWyngdKTgozqBgKnHbTVwTE+hOHqAykuQ==" - }, - "coa": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "coa": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", @@ -2188,16 +1666,6 @@ "q": "^1.1.2" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "coffeescript": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.4.1.tgz", - "integrity": "sha512-34GV1aHrsMpTaO3KfMJL40ZNuvKDR/g98THHnE9bQj8HjMaZvSrLik99WWqyMhRtbe8V5hpx5iLgdcSvM/S2wg==" - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -2238,10 +1706,18 @@ "simple-swizzle": "^0.2.2" } }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "command-exists": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz", - "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw==" + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" }, "commander": { "version": "2.20.3", @@ -2267,70 +1743,6 @@ "inherits": "^2.0.3", "readable-stream": "^2.2.2", "typedarray": "^0.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } } }, "console-browserify": { @@ -2338,29 +1750,17 @@ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" }, "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "requires": { "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } } }, "copy-descriptor": { @@ -2369,23 +1769,23 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" }, "core-js-compat": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.3.5.tgz", - "integrity": "sha512-44ZORuapx0MUht0MUk0p9lcQPh7n/LDXehimTmjCs0CYblpKZcqVd5w0OQDUDq5OQjEbazWObHDQJWvvHYPNTg==", + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", "requires": { - "browserslist": "^4.7.2", - "semver": "^6.3.0" + "browserslist": "^4.8.5", + "semver": "7.0.0" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" } } }, @@ -2564,12 +1964,12 @@ } }, "css-select": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz", - "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", "requires": { "boolbase": "^1.0.0", - "css-what": "^2.1.2", + "css-what": "^3.2.1", "domutils": "^1.7.0", "nth-check": "^1.0.2" } @@ -2580,48 +1980,13 @@ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" }, "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", + "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" - }, - "dependencies": { - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "requires": { - "jsesc": "~0.5.0" - } - } + "cssesc": "^3.0.0", + "fastparse": "^1.1.2", + "regexpu-core": "^4.6.0" } }, "css-tree": { @@ -2633,20 +1998,15 @@ "source-map": "^0.6.1" } }, - "css-unit-converter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", - "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=" - }, "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", + "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==" }, "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "cssnano": { "version": "4.1.10", @@ -2720,25 +2080,67 @@ "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" }, "csso": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", - "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==" + } + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", "requires": { - "css-tree": "1.0.0-alpha.37" + "cssom": "0.3.x" } }, - "csstype": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.7.tgz", - "integrity": "sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ==" + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } }, "deasync": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.15.tgz", - "integrity": "sha512-pxMaCYu8cQIbGkA4Y1R0PLSooPIpH1WgFBLeJ+zLxQgHfkZG86ViJSmZmONSjZJ/R3NjwkMcIWZAzpLB2G9/CA==", + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.19.tgz", + "integrity": "sha512-oh3MRktfnPlLysCPpBpKZZzb4cUC/p0aA3SyRGp15lN30juJBTo/CiD0d4fR+f1kBtUQoJj1NE9RPNWQ7BQ9Mg==", "requires": { - "bindings": "~1.2.1", - "node-addon-api": "^1.6.0" + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" } }, "debug": { @@ -2749,29 +2151,36 @@ "ms": "^2.1.1" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, - "decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "requires": { - "mimic-response": "^2.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + } + } + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -2817,24 +2226,29 @@ } } }, - "delegates": { + "delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" } }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, "diffie-hellman": { "version": "5.0.3", @@ -2847,9 +2261,9 @@ } }, "dom-serializer": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz", - "integrity": "sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", "requires": { "domelementtype": "^2.0.1", "entities": "^2.0.0" @@ -2859,6 +2273,11 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==" } } }, @@ -2872,6 +2291,14 @@ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, "domhandler": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", @@ -2890,17 +2317,17 @@ } }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", "requires": { - "is-obj": "^1.0.0" + "is-obj": "^2.0.0" } }, "dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==" }, "dotenv-expand": { "version": "5.1.0", @@ -2913,46 +2340,15 @@ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "requires": { "readable-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, - "editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "ee-first": { @@ -2960,20 +2356,15 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, - "ejs": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.1.tgz", - "integrity": "sha512-kS/gEPzZs3Y1rRsbGX4UOSjtP/CeJP0CxSNZHYxGfVM/VgLcv0ZqM7C45YyTj2DI2g7+P9Dd24C+IMIg6D0nYQ==" - }, "electron-to-chromium": { - "version": "1.3.296", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.296.tgz", - "integrity": "sha512-s5hv+TSJSVRsxH190De66YHb50pBGTweT9XGWYu/LMR20KX6TsjFzObo36CjVAzM+PUeeKSBRtm/mISlCzeojQ==" + "version": "1.3.410", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.410.tgz", + "integrity": "sha512-DbCBdwtARI0l3e3m6ZIxVaTNahb6dSsmGjuag/twiVcWuM4MSpL5IfsJsJSyqLqxosE/m0CXlZaBmxegQW/dAg==" }, "elliptic": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", - "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -2994,18 +2385,15 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, "entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", - "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "envinfo": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.5.0.tgz", + "integrity": "sha512-jDgnJaF/Btomk+m3PZDTTCb5XIIIX3zYItnCRfF73zVgvinLoRomuhi75Y4su0PtQxWz4v66XnLLckyvyJTOIQ==" }, "error-ex": { "version": "1.3.2", @@ -3016,26 +2404,34 @@ } }, "es-abstract": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", - "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", "requires": { - "es-to-primitive": "^1.2.0", + "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.0", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-inspect": "^1.6.0", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", "object-keys": "^1.1.1", - "string.prototype.trimleft": "^2.1.0", - "string.prototype.trimright": "^2.1.0" + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "dependencies": { + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + } } }, "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -3062,19 +2458,12 @@ "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - } } }, "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" }, "estraverse": { "version": "4.3.0", @@ -3086,15 +2475,15 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, - "eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==" + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==" }, "evp_bytestokey": { "version": "1.0.3", @@ -3150,10 +2539,10 @@ } } }, - "expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { "version": "3.0.2", @@ -3233,36 +2622,52 @@ } } }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, "falafel": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", - "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", + "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", "requires": { - "acorn": "^5.0.0", + "acorn": "^7.1.1", "foreach": "^2.0.5", - "isarray": "0.0.1", + "isarray": "^2.0.1", "object-keys": "^1.0.6" }, "dependencies": { "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" } } }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + }, "fast-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.0.tgz", - "integrity": "sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2" + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" } }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -3273,14 +2678,6 @@ "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" }, - "fastq": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", - "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==", - "requires": { - "reusify": "^1.0.0" - } - }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -3292,58 +2689,32 @@ "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==" }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "ms": "2.0.0" + "is-extendable": "^0.1.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, - "follow-redirects": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", - "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "debug": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - } + "locate-path": "^2.0.0" } }, "for-in": { @@ -3356,6 +2727,21 @@ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -3364,88 +2750,537 @@ "map-cache": "^0.2.2" } }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" }, "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" } }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "optional": true } } }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, "get-port": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", - "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } }, "glob": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", - "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3456,18 +3291,39 @@ } }, "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "is-glob": "^4.0.1" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } } }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, "grapheme-breaker": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", @@ -3477,6 +3333,20 @@ "unicode-trie": "^0.3.1" } }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3506,14 +3376,9 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, "has-value": { "version": "1.0.0", @@ -3533,25 +3398,7 @@ "is-number": "^3.0.0", "kind-of": "^4.0.0" }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, + "dependencies": { "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -3610,6 +3457,55 @@ "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-tags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", + "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=" + }, + "htmlnano": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.5.tgz", + "integrity": "sha512-X1iPSwXG/iF9bVs+/obt2n6F64uH0ETkA8zp7qFDmLW9/+A6ueHGeb/+qD67T21qUY22owZPMdawljN50ajkqA==", + "requires": { + "cssnano": "^4.1.10", + "normalize-html-whitespace": "^1.0.0", + "posthtml": "^0.12.0", + "posthtml-render": "^1.1.5", + "purgecss": "^1.4.0", + "svgo": "^1.3.2", + "terser": "^4.3.9", + "uncss": "^0.17.2" + }, + "dependencies": { + "posthtml": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.12.2.tgz", + "integrity": "sha512-vDMikGrmr2Ce4ralyBwfoTymA9Ycv2QSeaV+U9CdF/kHstsGSBVsTZ3Jt/BdACFuqCNyaICMdJI/rvGEreL7pA==", + "requires": { + "posthtml-parser": "^0.4.2", + "posthtml-render": "^1.2.2" + } + }, + "terser": { + "version": "4.6.11", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.11.tgz", + "integrity": "sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + } + } + }, "htmlparser2": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", @@ -3623,129 +3519,38 @@ "readable-stream": "^3.1.1" }, "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } } } }, - "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" } }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "https-browserify": { @@ -3753,6 +3558,14 @@ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, "icss-replace-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", @@ -3791,53 +3604,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "ink": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/ink/-/ink-2.5.0.tgz", - "integrity": "sha512-HUkVglJ11cXK+W1a5cKNoOCxLkDi5hbDMAWSFDcwF2kpNd0eoX+2/cpaTP9BTFaQ8RJk7O59NxKMmyPXkmxo7w==", - "requires": { - "@types/react": "^16.8.6", - "ansi-escapes": "^4.2.1", - "arrify": "^1.0.1", - "auto-bind": "^2.0.0", - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "cli-truncate": "^1.1.0", - "is-ci": "^2.0.0", - "lodash.throttle": "^4.1.1", - "log-update": "^3.0.0", - "prop-types": "^15.6.2", - "react-reconciler": "^0.21.0", - "scheduler": "^0.15.0", - "signal-exit": "^3.0.2", - "slice-ansi": "^1.0.0", - "string-length": "^2.0.0", - "widest-line": "^2.0.0", - "wrap-ansi": "^5.0.0", - "yoga-layout-prebuilt": "^1.9.3" - } - }, - "ink-spinner": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ink-spinner/-/ink-spinner-3.0.1.tgz", - "integrity": "sha512-AVR4Z/NXDQ7dT5ltWcCzFS9Dd4T8eaO//E2UO8VYNiJcZpPCSJ11o5A0UVPcMlZxGbGD6ikUFDR3ZgPUQk5haQ==", - "requires": { - "cli-spinners": "^1.0.0", - "prop-types": "^15.5.10" - }, - "dependencies": { - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==" - } - } - }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -3874,23 +3640,23 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "requires": { - "ci-info": "^2.0.0" - } + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" }, "is-color-stop": { "version": "1.1.0", @@ -3924,9 +3690,9 @@ } }, "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" }, "is-descriptor": { "version": "0.1.6", @@ -3973,15 +3739,36 @@ "is-extglob": "^2.1.1" } }, + "is-html": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", + "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", + "requires": { + "html-tags": "^1.0.0" + } + }, "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } }, "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" }, "is-plain-object": { "version": "2.0.4", @@ -3992,11 +3779,11 @@ } }, "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", "requires": { - "has": "^1.0.1" + "has": "^1.0.3" } }, "is-resolvable": { @@ -4013,13 +3800,18 @@ } }, "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "^1.0.1" } }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, "is-url": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", @@ -4030,6 +3822,11 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -4045,22 +3842,10 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, - "js-beautify": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.2.tgz", - "integrity": "sha512-ZtBYyNUYJIsBWERnQP0rPN9KjkrDfJcMjuVGcvXOUJrD1zmOGwhRwQ4msG+HJ+Ni/FA7+sRQEMYVzdTQDvnzvQ==", - "requires": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "mkdirp": "~0.5.1", - "nopt": "~4.0.1" - } - }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==" + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "js-tokens": { "version": "4.0.0", @@ -4074,6 +3859,83 @@ "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + }, + "escodegen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + } } }, "jsesc": { @@ -4086,6 +3948,21 @@ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -4094,10 +3971,34 @@ "minimist": "^1.2.0" } }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "requires": { + "leven": "^3.1.0" + } }, "levn": { "version": "0.3.0", @@ -4108,6 +4009,15 @@ "type-check": "~0.3.2" } }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", @@ -4123,31 +4033,22 @@ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, - "lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, - "log-update": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-3.3.0.tgz", - "integrity": "sha512-YSKm5n+YjZoGZT5lfmOqasVH1fIH9xQA9A81Y48nZ99PxAP62vdCCtua+Gcu6oTn0nqtZd/LwRV+Vflo53ZDWA==", + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", "requires": { - "ansi-escapes": "^3.2.0", - "cli-cursor": "^2.1.0", - "wrap-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - } + "chalk": "^2.0.1" } }, "loose-envify": { @@ -4158,15 +4059,6 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "magic-string": { "version": "0.22.5", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", @@ -4224,12 +4116,23 @@ "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==" }, "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } }, "miller-rabin": { @@ -4242,20 +4145,28 @@ } }, "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "requires": { + "mime-db": "1.43.0" + } }, "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, - "mimic-response": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.0.0.tgz", - "integrity": "sha512-8ilDoEapqA4uQ3TwS0jakGONKXVJqpy+RpM+3b7pLdOjghCrEiGp9SRkFbUHAmZW9vdnrENWHjaweIoTIJExSQ==" - }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -4275,9 +4186,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "mixin-deep": { "version": "1.3.2", @@ -4299,18 +4210,11 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } + "minimist": "^1.2.5" } }, "ms": { @@ -4318,6 +4222,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -4336,38 +4246,20 @@ "to-regex": "^3.0.1" } }, - "napi-build-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.1.tgz", - "integrity": "sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA==" - }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, - "node-abi": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.12.0.tgz", - "integrity": "sha512-VhPBXCIcvmo/5K8HPmnWJyyhvgKxnHTUMXR/XwGHV68+wrgkzST4UmQrY/XszSWA5dtnXpNp528zkcyJ/pzVcw==", - "requires": { - "semver": "^5.4.1" - } - }, "node-addon-api": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz", "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==" }, "node-forge": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", - "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==" + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", + "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==" }, "node-libs-browser": { "version": "2.2.1", @@ -4377,109 +4269,55 @@ "assert": "^1.1.1", "browserify-zlib": "^0.2.0", "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" - }, - "node-releases": { - "version": "1.1.39", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.39.tgz", - "integrity": "sha512-8MRC/ErwNCHOlAFycy9OPca46fQYUjbJRDcZTHVWIGXIjYLM73k70vv3WkYutVnM4cCo4hE0MqBVVZjP6vjISA==", - "requires": { - "semver": "^6.3.0" + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" } } }, - "noop-logger": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", - "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" + "node-releases": { + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==" }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } + "normalize-html-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz", + "integrity": "sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "normalize-url": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, "nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", @@ -4488,15 +4326,15 @@ "boolbase": "~1.0.0" } }, - "nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, "object-assign": { "version": "4.1.1", @@ -4532,9 +4370,9 @@ } }, "object-inspect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", + "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==" }, "object-keys": { "version": "1.1.1", @@ -4561,12 +4399,12 @@ } }, "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "object.pick": { @@ -4578,12 +4416,12 @@ } }, "object.values": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", - "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", + "es-abstract": "^1.17.0-next.1", "function-bind": "^1.1.1", "has": "^1.0.3" } @@ -4612,17 +4450,38 @@ "mimic-fn": "^1.0.0" } }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "requires": { + "is-wsl": "^1.1.0" + } + }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", + "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "requires": { + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" } }, "os-browserify": { @@ -4630,43 +4489,96 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "p-limit": "^1.1.0" } }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, "pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" }, "parcel": { - "version": "2.0.0-alpha.2.1", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.0.0-alpha.2.1.tgz", - "integrity": "sha512-Oy0X76YFQ77vqKCIslrgri8UYtsXkQstqt19Wb0Gek76EUUUIKsgLTWtwZhWCjCRMkNEk/DmRPqHZ6spNJc7dA==", + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-1.12.4.tgz", + "integrity": "sha512-qfc74e2/R4pCoU6L/ZZnK9k3iDS6ir4uHea0e9th9w52eehcAGf2ido/iABq9PBXdsIOe4NSY3oUm7Khe7+S3w==", "requires": { - "@parcel/config-default": "^2.0.0-alpha.2.1", - "@parcel/core": "^2.0.0-alpha.2.1", - "@parcel/logger": "^2.0.0-alpha.2.1", + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.4.4", + "@babel/generator": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/plugin-transform-flow-strip-types": "^7.4.4", + "@babel/plugin-transform-modules-commonjs": "^7.4.4", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/preset-env": "^7.4.4", + "@babel/runtime": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", + "@iarna/toml": "^2.2.0", + "@parcel/fs": "^1.11.0", + "@parcel/logger": "^1.11.1", + "@parcel/utils": "^1.11.0", + "@parcel/watcher": "^1.12.1", + "@parcel/workers": "^1.11.0", + "ansi-to-html": "^0.6.4", + "babylon-walk": "^1.0.2", + "browserslist": "^4.1.0", "chalk": "^2.1.0", - "commander": "^2.19.0", - "get-port": "^4.2.0", - "react": "^16.7.0", - "v8-compile-cache": "^2.0.0" + "clone": "^2.1.1", + "command-exists": "^1.2.6", + "commander": "^2.11.0", + "core-js": "^2.6.5", + "cross-spawn": "^6.0.4", + "css-modules-loader-core": "^1.1.0", + "cssnano": "^4.0.0", + "deasync": "^0.1.14", + "dotenv": "^5.0.0", + "dotenv-expand": "^5.1.0", + "envinfo": "^7.3.1", + "fast-glob": "^2.2.2", + "filesize": "^3.6.0", + "get-port": "^3.2.0", + "htmlnano": "^0.2.2", + "is-glob": "^4.0.0", + "is-url": "^1.2.2", + "js-yaml": "^3.10.0", + "json5": "^1.0.1", + "micromatch": "^3.0.4", + "mkdirp": "^0.5.1", + "node-forge": "^0.7.1", + "node-libs-browser": "^2.0.0", + "opn": "^5.1.0", + "postcss": "^7.0.11", + "postcss-value-parser": "^3.3.1", + "posthtml": "^0.11.2", + "posthtml-parser": "^0.4.0", + "posthtml-render": "^1.1.3", + "resolve": "^1.4.0", + "semver": "^5.4.1", + "serialize-to-js": "^3.0.0", + "serve-static": "^1.12.4", + "source-map": "0.6.1", + "terser": "^3.7.3", + "v8-compile-cache": "^2.0.0", + "ws": "^5.1.1" } }, "parse-asn1": { @@ -4691,6 +4603,11 @@ "json-parse-better-errors": "^1.0.1" } }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -4706,6 +4623,16 @@ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -4733,48 +4660,69 @@ "sha.js": "^2.4.8" } }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, "physical-cpu-count": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=" }, - "picomatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.0.tgz", - "integrity": "sha512-uhnEDzAbrcJ8R3g2fANnSuXZMBtkpSjxTTgn2LeSiQlfmq72enQJWdQllXW24MBLYnA1SBD2vfvx2o0Zw3Ielw==" - }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", "requires": { - "node-modules-regexp": "^1.0.0" + "find-up": "^2.1.0" } }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", - "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-calc": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", - "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", "requires": { - "css-unit-converter": "^1.1.1", - "postcss": "^7.0.5", - "postcss-selector-parser": "^5.0.0-rc.4", - "postcss-value-parser": "^3.3.1" + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==" + } } }, "postcss-colormin": { @@ -4855,11 +4803,11 @@ }, "dependencies": { "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -4911,11 +4859,11 @@ }, "dependencies": { "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -4939,14 +4887,6 @@ "source-map": "^0.6.1", "supports-color": "^5.4.0" } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -4968,14 +4908,6 @@ "source-map": "^0.6.1", "supports-color": "^5.4.0" } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -4997,14 +4929,6 @@ "source-map": "^0.6.1", "supports-color": "^5.4.0" } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -5026,14 +4950,6 @@ "source-map": "^0.6.1", "supports-color": "^5.4.0" } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -5160,11 +5076,11 @@ } }, "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "requires": { - "cssesc": "^2.0.0", + "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -5205,40 +5121,17 @@ } }, "posthtml-parser": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.1.tgz", - "integrity": "sha512-h7vXIQ21Ikz2w5wPClPakNP6mJeJCK6BT0GpqnQrNNABdR7/TchNlFyryL1Bz6Ww53YWCKkr6tdZuHlxY1AVdQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", + "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", "requires": { - "htmlparser2": "^3.9.2", - "object-assign": "^4.1.1" + "htmlparser2": "^3.9.2" } }, "posthtml-render": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.1.5.tgz", - "integrity": "sha512-yvt54j0zCBHQVEFAuR+yHld8CZrCa/E1Z/OcFNCV1IEWTLVxT8O7nYnM4IIw1CD4r8kaRd3lc42+0lgCKgm87w==" - }, - "prebuild-install": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.2.tgz", - "integrity": "sha512-INDfXzTPnhT+WYQemqnAXlP7SvfiFMopMozSgXCZ+RDLb279gKfIuLk4o7PgEawLp3WrMgIYGBpkxpraROHsSA==", - "requires": { - "detect-libc": "^1.0.3", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "napi-build-utils": "^1.0.1", - "node-abi": "^2.7.0", - "noop-logger": "^0.1.1", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^3.0.3", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0", - "which-pm-runs": "^1.0.0" - } + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.2.tgz", + "integrity": "sha512-MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ==" }, "prelude-ls": { "version": "1.1.2", @@ -5260,25 +5153,10 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "public-encrypt": { "version": "4.0.3", @@ -5293,25 +5171,32 @@ "safe-buffer": "^5.1.2" } }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "purgecss": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-1.4.2.tgz", + "integrity": "sha512-hkOreFTgiyMHMmC2BxzdIw5DuC6kxAbP/gGOGd3MEsF3+5m69rIvUEPaxrnoUtfODTFKe9hcXjGwC6jcjoyhOw==", "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "glob": "^7.1.3", + "postcss": "^7.0.14", + "postcss-selector-parser": "^6.0.0", + "yargs": "^14.0.0" } }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -5349,51 +5234,33 @@ "safe-buffer": "^5.1.0" } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "react": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.11.0.tgz", - "integrity": "sha512-M5Y8yITaLmU0ynd0r1Yvfq98Rmll6q8AxaEe88c8e7LxO8fZ2cNgmFt0aGAS9wzf1Ao32NKXtCl+/tVVtkxq6g==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-is": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", - "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==" + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, - "react-reconciler": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.21.0.tgz", - "integrity": "sha512-h4Rl3L3O6G9V4Ff+F+tCXX8ElDVn0Psk/odT+NPWeA55Yk5G7+kHT8D+Q3yE+51C72LbrYcX6OfLmCZ/7Nx9cw==", + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.15.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" } }, "regenerate": { @@ -5402,24 +5269,25 @@ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" }, "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "requires": { "regenerate": "^1.4.0" } }, "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" }, "regenerator-transform": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", - "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", "requires": { - "private": "^0.1.6" + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" } }, "regex-not": { @@ -5432,16 +5300,16 @@ } }, "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "regjsgen": { @@ -5450,9 +5318,9 @@ "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==" }, "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "requires": { "jsesc": "~0.5.0" }, @@ -5464,6 +5332,11 @@ } } }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", @@ -5474,15 +5347,65 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.16.0.tgz", + "integrity": "sha512-LarL/PIKJvc09k1jaeT4kQb/8/7P+qV4qSnN2K80AES+OHdfZELAKVOBjxsvtToT/uLOfFbvYvKfZmV8cee7nA==", "requires": { "path-parse": "^1.0.6" } @@ -5511,11 +5434,6 @@ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, "rgb-regex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", @@ -5543,15 +5461,10 @@ "inherits": "^2.0.1" } }, - "run-parallel": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" - }, "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", @@ -5561,26 +5474,22 @@ "ret": "~0.1.10" } }, - "safer-eval": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/safer-eval/-/safer-eval-1.3.5.tgz", - "integrity": "sha512-BJ//K2Y+EgCbOHEsDGS5YahYBcYy7JcFpKDo2ba5t4MnOGHYtk7HvQkcxTDFvjQvJ0CRcdas/PyF+gTTCay+3w==", - "requires": { - "clones": "^1.2.0" - } + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, - "scheduler": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz", - "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==", + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "xmlchars": "^2.1.1" } }, "semver": { @@ -5588,13 +5497,62 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, "serialize-to-js": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-1.2.2.tgz", - "integrity": "sha512-mUc8vA5iJghe+O+3s0YDGFLMJcqitVFk787YKiv8a4sf6RX5W0u81b+gcHrp15O0fFa010dRBVZvwcKXOWsL9Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", + "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==" + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "requires": { - "js-beautify": "^1.8.9", - "safer-eval": "^1.3.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" } }, "set-blocking": { @@ -5628,6 +5586,11 @@ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -5655,30 +5618,10 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" - }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "simple-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", - "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" - }, - "simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", - "requires": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "simple-swizzle": { "version": "0.2.2", @@ -5695,14 +5638,6 @@ } } }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "requires": { - "is-fullwidth-code-point": "^2.0.0" - } - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -5824,11 +5759,11 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "requires": { - "atob": "^2.1.1", + "atob": "^2.1.2", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", @@ -5857,30 +5792,57 @@ "extend-shallow": "^3.0.0" } }, - "split2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.1.1.tgz", - "integrity": "sha512-emNzr1s7ruq4N+1993yht631/JH+jaj0NYBosuKmLcq+JkGQ9MmTw1RB1fGaTCzUuseRIClrlSLHRNYGwWQ58Q==", - "requires": { - "readable-stream": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, "stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" }, "static-eval": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", - "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.5.tgz", + "integrity": "sha512-nNbV6LbGtMBgv7e9LFkt5JV8RVlRsyJrphfAt9tOtBBW/SfnzZDf2KnS72an8e434A+9e/BmJuTxeGPvrAK7KA==", "requires": { - "escodegen": "^1.8.1" + "escodegen": "^1.11.1" + }, + "dependencies": { + "escodegen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + } } }, "static-extend": { @@ -5921,40 +5883,6 @@ "shallow-copy": "~0.0.1", "static-eval": "^2.0.0", "through2": "~2.0.3" - }, - "dependencies": { - "object-inspect": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", - "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "statuses": { @@ -5962,6 +5890,11 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, "stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", @@ -5969,35 +5902,6 @@ "requires": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "stream-http": { @@ -6010,79 +5914,77 @@ "readable-stream": "^2.3.6", "to-arraybuffer": "^1.0.0", "xtend": "^4.0.0" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" }, "dependencies": { - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "safe-buffer": "~5.1.0" + "ansi-regex": "^4.1.0" } } } }, - "string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" } }, - "string.prototype.trimleft": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", - "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" } }, - "string.prototype.trimright": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", - "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5" } }, "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.2.0" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -6093,11 +5995,6 @@ "ansi-regex": "^3.0.0" } }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, "stylehacks": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", @@ -6109,11 +6006,11 @@ }, "dependencies": { "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -6121,9 +6018,9 @@ } }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { "has-flag": "^3.0.0" } @@ -6148,28 +6045,10 @@ "util.promisify": "~1.0.0" } }, - "tar-fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", - "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", - "requires": { - "chownr": "^1.1.1", - "mkdirp": "^0.5.1", - "pump": "^3.0.0", - "tar-stream": "^2.0.0" - } - }, - "tar-stream": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.0.tgz", - "integrity": "sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw==", - "requires": { - "bl": "^3.0.0", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "terser": { "version": "3.17.0", @@ -6188,35 +6067,6 @@ "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "timers-browserify": { @@ -6233,9 +6083,9 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, "tiny-inflate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.2.tgz", - "integrity": "sha1-k9nez/yIBb1X6uQxDwt0Xptvs6c=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" }, "to-arraybuffer": { "version": "1.0.1", @@ -6277,17 +6127,35 @@ } }, "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "is-number": "^7.0.0" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, - "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } }, "tty-browserify": { "version": "0.0.0", @@ -6302,6 +6170,11 @@ "safe-buffer": "^5.0.1" } }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -6310,16 +6183,34 @@ "prelude-ls": "~1.1.2" } }, - "type-fest": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", - "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==" - }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "uncss": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", + "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", + "requires": { + "commander": "^2.20.0", + "glob": "^7.1.4", + "is-absolute-url": "^3.0.1", + "is-html": "^1.1.0", + "jsdom": "^14.1.0", + "lodash": "^4.17.15", + "postcss": "^7.0.17", + "postcss-selector-parser": "6.0.2", + "request": "^2.88.0" + }, + "dependencies": { + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" + } + } + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -6335,14 +6226,14 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" }, "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" }, "unicode-trie": { "version": "0.3.1", @@ -6374,11 +6265,6 @@ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, "unquote": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", @@ -6420,6 +6306,19 @@ } } }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -6467,18 +6366,20 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" } }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "v8-compile-cache": { "version": "2.1.0", @@ -6486,9 +6387,19 @@ "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==" }, "vendors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", - "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } }, "vlq": { "version": "0.2.3", @@ -6496,43 +6407,81 @@ "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" }, "vm-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", - "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", "requires": { - "isexe": "^2.0.0" + "browser-process-hrtime": "^1.0.0" } }, - "which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", "requires": { - "string-width": "^1.0.2 || 2" + "defaults": "^1.0.3" } }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "requires": { - "string-width": "^2.1.1" + "iconv-lite": "0.4.24" } }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, "wrap-ansi": { "version": "5.1.0", @@ -6549,16 +6498,6 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -6575,27 +6514,99 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", "requires": { "async-limiter": "~1.0.0" } }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yargs": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^15.0.1" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + } + } }, - "yoga-layout-prebuilt": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.9.3.tgz", - "integrity": "sha512-9SNQpwuEh2NucU83i2KMZnONVudZ86YNcFk9tq74YaqrQfgJWO3yB9uzH1tAg8iqh5c9F5j0wuyJ2z72wcum2w==" + "yargs-parser": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } } diff --git a/exercises/55 - Face Detection Censorship/package.json b/exercises/55 - Face Detection Censorship/package.json index be9924fc0..72242a713 100644 --- a/exercises/55 - Face Detection Censorship/package.json +++ b/exercises/55 - Face Detection Censorship/package.json @@ -8,10 +8,8 @@ }, "author": "", "license": "ISC", - "browserslist": [ - "last 1 Chrome version" - ], + "browserslist": ["last 1 Chrome Version"], "dependencies": { - "parcel": "^2.0.0-alpha.2.1" + "parcel": "latest" } } diff --git a/exercises/55 - Face Detection Censorship/pixelated-face-DEMO.js b/exercises/55 - Face Detection Censorship/pixelated-face-DEMO.js deleted file mode 100644 index 2252fe8cb..000000000 --- a/exercises/55 - Face Detection Censorship/pixelated-face-DEMO.js +++ /dev/null @@ -1,73 +0,0 @@ -const faceDetector = new window.FaceDetector(); -const video = document.querySelector('video.webcam'); -const canvas = document.querySelector('canvas.video'); -const ctx = canvas.getContext('2d'); -const faceCanvas = document.querySelector('canvas.face'); -const faceCtx = faceCanvas.getContext('2d'); -const SCALE = 1.2; -const SIZE = 10; - -async function populateVideo() { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { width: 1280, height: 720 }, - }); - video.srcObject = stream; - await video.play(); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - faceCanvas.width = video.videoWidth; - faceCanvas.height = video.videoHeight; -} - -async function detect() { - const faces = await faceDetector.detect(video); - // ctx.drawImage(video, 0, 0, canvas.width, canvas.height); - ctx.clearRect(0, 0, canvas.width, canvas.height); - // paintFace(faces); - faces.forEach(drawFace); - faces.forEach(censor); - requestAnimationFrame(detect); -} - -function censor({ boundingBox: face }) { - faceCtx.imageSmoothingEnabled = false; - faceCtx.clearRect(0, 0, faceCanvas.width, faceCanvas.height); - // First draw it small - faceCtx.drawImage( - video, // Where should I grab the photo from? - face.x, // from what x and y should I start capturing from? - face.y, - face.width, // how wide and high should I capture from? - face.height, - face.x, // now to draw it, where should I start x and y? - face.y, - SIZE, // how wide and high should it be? - SIZE - ); - - const width = face.width * SCALE; - const height = face.height * SCALE; - - // then draw it back on, but scaled up - faceCtx.drawImage( - faceCanvas, // Where should I grab the photo from? - face.x, // from what x and y should I start capturing from? - face.y, // from what x and y should I start capturing from? - SIZE, - SIZE, - // Drawing - face.x - (width - face.width) / 2, - face.y - (height - face.height) / 2, - width, - height - ); -} -function drawFace(face) { - const { width, height, top, left } = face.boundingBox; - ctx.strokeStyle = '#ffc600'; - ctx.lineWidth = 1; - ctx.strokeRect(left, top, width, height); - ctx.stroke(); -} - -populateVideo().then(detect); diff --git a/exercises/55 - Face Detection Censorship/pixelated-face.js b/exercises/55 - Face Detection Censorship/pixelated-face.js index 2826081d3..3589dbf5e 100644 --- a/exercises/55 - Face Detection Censorship/pixelated-face.js +++ b/exercises/55 - Face Detection Censorship/pixelated-face.js @@ -1,12 +1,15 @@ +/* eslint-disable no-use-before-define */ const video = document.querySelector('.webcam'); + const canvas = document.querySelector('.video'); const ctx = canvas.getContext('2d'); + const faceCanvas = document.querySelector('.face'); const faceCtx = faceCanvas.getContext('2d'); -const faceDetector = new window.FaceDetector(); -const optionsInputs = document.querySelectorAll( - '.controls input[type="range"]' -); + +const faceDetector = new window.FaceDetector({ fastMode: true }); +// console.log(video, canvas, faceCanvas, faceDetector); +const optionsInputs = document.querySelectorAll('.controls input[type="range"]'); const options = { SIZE: 10, @@ -21,22 +24,26 @@ optionsInputs.forEach(input => input.addEventListener('input', handleOption)); // Write a fucntion that will populate the users video async function populateVideo() { + // grab the feed of user webcam const stream = await navigator.mediaDevices.getUserMedia({ - video: { width: 1280, height: 720 }, + video: { width: 1080, height: 624 }, }); + // setting the vid object on the html to the user webcam stream video.srcObject = stream; await video.play(); - // size the canvases to be the same size as the video - console.log(video.videoWidth, video.videoHeight); + + // size the canvases to be same size as video stream canvas.width = video.videoWidth; canvas.height = video.videoHeight; + faceCanvas.width = video.videoWidth; faceCanvas.height = video.videoHeight; } async function detect() { const faces = await faceDetector.detect(video); - // ask the browser when the next animation frame is, and tell it to run detect for us + // ask the browser when the next animation frame is and tell it to run detect for us + // console.log(faces.length); faces.forEach(drawFace); faces.forEach(censor); requestAnimationFrame(detect); @@ -67,8 +74,8 @@ function censor({ boundingBox: face }) { options.SIZE, options.SIZE ); - // draw the small face back on, but scale up + // draw the small face back on, but scale up const width = face.width * options.SCALE; const height = face.height * options.SCALE; faceCtx.drawImage( @@ -84,5 +91,4 @@ function censor({ boundingBox: face }) { height ); } - populateVideo().then(detect); diff --git a/exercises/56 - Sarcastic Text/index.html b/exercises/56 - Sarcastic Text/index.html index 21f549fd9..7c555dfcf 100644 --- a/exercises/56 - Sarcastic Text/index.html +++ b/exercises/56 - Sarcastic Text/index.html @@ -44,7 +44,7 @@ Unable to Structure a Sentence - +

diff --git a/exercises/56 - Sarcastic Text/text.js b/exercises/56 - Sarcastic Text/text.js index e69de29bb..72ff4b971 100644 --- a/exercises/56 - Sarcastic Text/text.js +++ b/exercises/56 - Sarcastic Text/text.js @@ -0,0 +1,61 @@ +const inputs = Array.from(document.querySelectorAll('input[name="filter"]')); +const textarea = document.querySelector('textarea[name="text"]'); +const result = document.querySelector('.result'); +// console.log(inputs, textarea, result); + +/* eslint-disable */ +const funkyLetters = { + '-': '₋', '!': 'ᵎ', '?': 'ˀ', '(': '⁽', ')': '₎', '+': '⁺', '=': '₌', '0': '⁰', '1': '₁', '2': '²', '4': '₄', '5': '₅', '6': '₆', '7': '⁷', '8': '⁸', '9': '⁹', a: 'ᵃ', A: 'ᴬ', B: 'ᴮ', b: 'ᵦ', C: '𝒸', d: 'ᵈ', D: 'ᴰ', e: 'ₑ', E: 'ᴱ', f: '𝒻', F: 'ᶠ', g: 'ᵍ', G: 'ᴳ', h: 'ʰ', H: 'ₕ', I: 'ᵢ', i: 'ᵢ', j: 'ʲ', J: 'ᴶ', K: 'ₖ', k: 'ₖ', l: 'ˡ', L: 'ᴸ', m: 'ᵐ', M: 'ₘ', n: 'ₙ', N: 'ᴺ', o: 'ᵒ', O: 'ᴼ', p: 'ᵖ', P: 'ᴾ', Q: 'ᵠ', q: 'ᑫ', r: 'ʳ', R: 'ᵣ', S: 'ˢ', s: 'ˢ', t: 'ᵗ', T: 'ₜ', u: 'ᵘ', U: 'ᵤ', v: 'ᵛ', V: 'ᵥ', w: '𝓌', W: 'ʷ', x: 'ˣ', X: 'ˣ', y: 'y', Y: 'Y', z: '𝓏', Z: 'ᶻ' +}; +/* eslint-enable */ + +const filters = { + sarcastic(letter, index) { + // if odd, modulo will return 1 => we uppercase + if (index % 2) { + return letter.toUpperCase(); + } + // if even, modulo will return 0 => we lowercase + return letter.toLowerCase(); + }, + funky(letter) { + // check if there is a funky letter for this case + let funkyLetter = funkyLetters[letter]; + if (funkyLetter) return funkyLetter; + // if not check if there is a lower case version + funkyLetter = funkyLetters[letter.toLowerCase()]; + if (funkyLetter) return funkyLetter; + // if nothing return the letter + return letter; + }, + unable(letter) { + // put ... randomly in a space + const random = Math.floor(Math.random() * 3); + if (letter === ' ' && random === 2) { + return '...'; + } + return letter; + }, +}; + +function transformText(text) { + // Grab the filter + // this solution is running query selector on each input ==> not very good performance wise + // const filter = document.querySelector('[name="filter"]:checked').value; + // Solution 2 + const filter = inputs.find(input => input.checked).value; + + // take the text + const mod = Array.from(text).map(filters[filter]); + // console.log(mod); + // and loop over each letter =< uppercase every other letter + result.textContent = mod.join(''); +} + +textarea.addEventListener('input', e => transformText(e.target.value)); + +inputs.forEach(input => { + input.addEventListener('input', () => { + transformText(textarea.value); + }); +}); diff --git a/exercises/57 - Shopping List/index.html b/exercises/57 - Shopping List/index.html index 7578b5d44..020533d62 100644 --- a/exercises/57 - Shopping List/index.html +++ b/exercises/57 - Shopping List/index.html @@ -12,7 +12,7 @@
- +
diff --git a/exercises/57 - Shopping List/shopping.js b/exercises/57 - Shopping List/shopping.js index e69de29bb..f6bf779ca 100644 --- a/exercises/57 - Shopping List/shopping.js +++ b/exercises/57 - Shopping List/shopping.js @@ -0,0 +1,93 @@ +const shoppingForm = document.querySelector('.shopping'); +const list = document.querySelector('.list'); + +// we need an array to hold our state +let items = []; + +// listen for submit event +function handleSubmit(event) { + event.preventDefault(); + // console.log("submited"); + // input can be accessed into with name attribute + const name = event.currentTarget.item.value; + // console.log(event.currentTarget.item); + const item = { + name, + // to have a unique id + id: Date.now(), + complete: false, + }; + items.push(item); + // console.log(`${items.length} in your state`); + // clear the form + event.target.reset(); + // displayItems(); // ok to put this here, but there is better => check refacto below and new listener l45 + // fire off custom event that will tell items has been updated ==> needs to be listened to do something + list.dispatchEvent(new CustomEvent('itemsUpdated')); +} + +function displayItems() { + // console.log(items); + const html = items + .map( + item => `
  • + + ${item.name} + +
  • ` + ) + .join(''); + // console.log(html); + list.innerHTML = html; +} + +function mirrorToLocalStorage() { + // console.log('saving item to localstorage'); + localStorage.setItem('items', JSON.stringify(items)); +} + +function restoreFromLocalStorage() { + // pull items from storage + const lsItems = JSON.parse(localStorage.getItem('items')); + if (lsItems.length) { + // spreading argument into items array + items.push(...lsItems); + list.dispatchEvent(new CustomEvent('itemsUpdated')); + } +} + +function deleteItem(id) { + console.log(`deleting item ${id}`); + // update items array + items = items.filter(item => item.id !== id); + // console.log(items); + list.dispatchEvent(new CustomEvent('itemsUpdated')); +} + +function markAsComplete(id) { + // console.log(`complete ${id}`); + const itemRef = items.find(item => item.id === id); + // we are setting as the opposite for toggling true false + itemRef.complete = !itemRef.complete; + list.dispatchEvent(new CustomEvent('itemsUpdated')); +} + +shoppingForm.addEventListener('submit', handleSubmit); +list.addEventListener('itemsUpdated', displayItems); +list.addEventListener('itemsUpdated', mirrorToLocalStorage); +// Event delegation we listen for click on the LIST UL but then delegate the click over to the button if that is what was clicked +list.addEventListener('click', event => { + // we listen on the list but actually it's the btn + // console.log(event.target); // thing actually clicked on + // console.log(event.currentTarget); // thing we listen for the event on + const id = parseInt(event.target.value); + if (event.target.matches('button')) { + deleteItem(id); + } + if (event.target.matches('input[type="checkbox"]')) { + markAsComplete(id); + } +}); + +// run on page load +restoreFromLocalStorage(); diff --git a/exercises/58 - Gallery/gallery.js b/exercises/58 - Gallery/gallery.js index 1095db98e..c3300f8d8 100644 --- a/exercises/58 - Gallery/gallery.js +++ b/exercises/58 - Gallery/gallery.js @@ -1,39 +1,17 @@ +/* eslint-disable no-use-before-define */ function Gallery(gallery) { if (!gallery) { throw new Error('No Gallery Found!'); } - // select the elements we need + // select elements we need (img, modal, previous btn, next btn) const images = Array.from(gallery.querySelectorAll('img')); const modal = document.querySelector('.modal'); - const prevButton = modal.querySelector('.prev'); - const nextButton = modal.querySelector('.next'); + const prev = modal.querySelector('.prev'); + const next = modal.querySelector('.next'); let currentImage; - function openModal() { - console.info('Opening Modal...'); - // First check if the modal is already open - if (modal.matches('.open')) { - console.info('Madal already open'); - return; // stop the function from running - } - modal.classList.add('open'); - - // Event listeners to be bound when we open the modal: - window.addEventListener('keyup', handleKeyUp); - nextButton.addEventListener('click', showNextImage); - prevButton.addEventListener('click', showPrevImage); - } - - function closeModal() { - modal.classList.remove('open'); - // TODO: add event listeners for clicks and keyboard.. - window.removeEventListener('keyup', handleKeyUp); - nextButton.removeEventListener('click', showNextImage); - prevButton.removeEventListener('click', showPrevImage); - } - - function handleClickOutside(e) { - if (e.target === e.currentTarget) { + function handleClickOutside(event) { + if (event.target === event.currentTarget) { closeModal(); } } @@ -41,14 +19,7 @@ function Gallery(gallery) { function handleKeyUp(event) { if (event.key === 'Escape') return closeModal(); if (event.key === 'ArrowRight') return showNextImage(); - if (event.key === 'ArrowLeft') return showPrevImage(); - } - - function showNextImage() { - showImage(currentImage.nextElementSibling || gallery.firstElementChild); - } - function showPrevImage() { - showImage(currentImage.previousElementSibling || gallery.lastElementChild); + if (event.key === 'ArrowLeft') return showPreviousImage(); } function showImage(el) { @@ -56,28 +27,56 @@ function Gallery(gallery) { console.info('no image to show'); return; } - // update the modal with this info - console.log(el); + // update the modal with infos + // console.log(el); modal.querySelector('img').src = el.src; modal.querySelector('h2').textContent = el.title; modal.querySelector('figure p').textContent = el.dataset.description; currentImage = el; + // console.log(currentImage); openModal(); } - // These are our Event Listeners! - images.forEach(image => - image.addEventListener('click', e => showImage(e.currentTarget)) - ); + function openModal() { + // console.log('opening modal'); + // check if modal already open + if (modal.matches('.open')) { + return; // stop the function from running + } + modal.classList.add('open'); + // listeners to be bound when we open modal + next.addEventListener('click', showNextImage); + prev.addEventListener('click', showPreviousImage); + window.addEventListener('keyup', handleKeyUp); + } + + function closeModal() { + modal.classList.remove('open'); + // TODO : add listener for click outside and keyboard (esc key) + next.removeEventListener('click', showNextImage); + prev.removeEventListener('click', showPreviousImage); + window.removeEventListener('keyup', handleKeyUp); + } + + function showNextImage() { + showImage(currentImage.nextElementSibling || gallery.firstElementChild); + } - // loop over each image - images.forEach(image => { - // attach an event listener for each image - image.addEventListener('keyup', e => { - // when that is keyup'd, check if it was enter - if (e.key === 'Enter') { - // if it was, show that image - showImage(e.currentTarget); + function showPreviousImage() { + showImage(currentImage.previousElementSibling || gallery.lastElementChild); + } + + // ! OUR LISTENER + images.forEach(img => { + img.addEventListener('click', event => showImage(event.currentTarget)); + }); + // loop over each image, attach listener to each image + images.forEach(img => { + img.addEventListener('keyup', event => { + // when it's keyUp check if this is 'Enter" key + if (event.key === 'Enter') { + // if yes show image + showImage(event.currentTarget); } }); }); @@ -85,7 +84,6 @@ function Gallery(gallery) { modal.addEventListener('click', handleClickOutside); } -// Use it on the page - +// Use it on the page const gallery1 = Gallery(document.querySelector('.gallery1')); const gallery2 = Gallery(document.querySelector('.gallery2')); diff --git a/exercises/58 - Gallery/index.html b/exercises/58 - Gallery/index.html index d6b62fd68..1d54a76ad 100644 --- a/exercises/58 - Gallery/index.html +++ b/exercises/58 - Gallery/index.html @@ -107,7 +107,7 @@

    Test Title

    - + diff --git a/exercises/59 - Slider/package-lock.json b/exercises/59 - Slider/package-lock.json index c2d9f7ab9..d7e36f009 100644 --- a/exercises/59 - Slider/package-lock.json +++ b/exercises/59 - Slider/package-lock.json @@ -850,6 +850,27 @@ "requires": { "@parcel/utils": "^1.11.0", "chokidar": "^2.1.5" + }, + "dependencies": { + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + } } }, "@parcel/workers": { @@ -872,9 +893,9 @@ "integrity": "sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg==" }, "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==" }, "acorn-globals": { "version": "4.3.4", @@ -886,9 +907,9 @@ }, "dependencies": { "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==" + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" } } }, @@ -1194,9 +1215,12 @@ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" }, "bindings": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } }, "bn.js": { "version": "4.11.8", @@ -1451,22 +1475,104 @@ } }, "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } } }, "cipher-base": { @@ -2015,12 +2121,12 @@ } }, "deasync": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.15.tgz", - "integrity": "sha512-pxMaCYu8cQIbGkA4Y1R0PLSooPIpH1WgFBLeJ+zLxQgHfkZG86ViJSmZmONSjZJ/R3NjwkMcIWZAzpLB2G9/CA==", + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.20.tgz", + "integrity": "sha512-E1GI7jMI57hL30OX6Ht/hfQU8DO4AuB9m72WFm4c38GNbUD4Q03//XZaOIHZiY+H1xUaomcot5yk2q/qIZQkGQ==", "requires": { - "bindings": "~1.2.1", - "node-addon-api": "^1.6.0" + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" } }, "debug": { @@ -2497,20 +2603,20 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "falafel": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", - "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", + "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", "requires": { - "acorn": "^5.0.0", + "acorn": "^7.1.1", "foreach": "^2.0.5", - "isarray": "0.0.1", + "isarray": "^2.0.1", "object-keys": "^1.0.6" }, "dependencies": { "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" } } }, @@ -2547,6 +2653,11 @@ "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, "filesize": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", @@ -3741,9 +3852,9 @@ }, "dependencies": { "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==" + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" }, "escodegen": { "version": "1.12.0", @@ -3812,9 +3923,9 @@ } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "levn": { "version": "0.3.0", @@ -3993,9 +4104,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "mixin-deep": { "version": "1.3.2", @@ -4017,18 +4128,11 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } + "minimist": "^1.2.5" } }, "ms": { @@ -4468,6 +4572,12 @@ "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=" }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -5266,9 +5376,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sass": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.23.3.tgz", - "integrity": "sha512-1DKRZxJMOh4Bme16AbWTyYeJAjTlrvw2+fWshHHaepeJfGq2soFZTnt0YhWit+bohtDu4LdyPoEj6VFD4APHog==", + "version": "1.26.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.5.tgz", + "integrity": "sha512-FG2swzaZUiX53YzZSjSakzvGtlds0lcbF+URuU9mxOv7WBh7NhXEVDa4kPKN4hN6fC2TkOTOKqiqp6d53N9X5Q==", "dev": true, "requires": { "chokidar": ">=2.0.0 <4.0.0" @@ -5335,9 +5445,9 @@ } }, "serialize-to-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.0.0.tgz", - "integrity": "sha512-WdGgi0jGnWCQXph2p3vkxceDnTfvfyXfYxherQMRcZjSaJzMQdMBAW6i0nojsBKIZ3fFOztZKKVbbm05VbIdRA==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", + "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==" }, "serve-static": { "version": "1.14.1", diff --git a/exercises/59 - Slider/package.json b/exercises/59 - Slider/package.json index 6e90e6e56..66174153d 100644 --- a/exercises/59 - Slider/package.json +++ b/exercises/59 - Slider/package.json @@ -9,9 +9,10 @@ "author": "", "license": "ISC", "devDependencies": { - "sass": "^1.23.3" + "sass": "^1.26.5" }, "dependencies": { + "deasync": "^0.1.20", "parcel": "^1.12.4" } } diff --git a/exercises/59 - Slider/src/index-prototype.js b/exercises/59 - Slider/src/index-prototype.js new file mode 100644 index 000000000..f726a042e --- /dev/null +++ b/exercises/59 - Slider/src/index-prototype.js @@ -0,0 +1,66 @@ +function Slider(sliderEl) { + if (!(sliderEl instanceof Element)) { + throw new Error('no slider passed in'); + } + + // Argument sliderEl needs to be saved on the instance because we use a query selector on it after + this.sliderEl = sliderEl; + this.slides = sliderEl.querySelector('.slides'); + + // these can be kept has variables because we don't need them outside of the constructor + const prevBtn = sliderEl.querySelector('.goToPrev'); + const nextBtn = sliderEl.querySelector('.goToNext'); + + this.startSlider(); + this.applyClasses(); + + prevBtn.addEventListener('click', () => this.move('back')); + nextBtn.addEventListener('click', () => this.move()); +} + +Slider.prototype.startSlider = function() { + this.current = this.sliderEl.querySelector('.current') || this.slides.firstElementChild; + this.prev = this.current.previousElementSibling || this.slides.lastElementChild; + this.next = this.current.nextElementSibling || this.slides.firstElementChild; +}; + +Slider.prototype.applyClasses = function() { + this.current.classList.add('current'); + this.next.classList.add('next'); + this.prev.classList.add('prev'); +}; + +Slider.prototype.move = function(direction) { + const classesToRemove = ['prev', 'current', 'next']; + this.prev.classList.remove(...classesToRemove); + this.current.classList.remove(...classesToRemove); + this.next.classList.remove(...classesToRemove); + if (direction === 'back') { + [this.prev, this.current, this.next] = [ + this.prev.previousElementSibling || this.slides.lastElementChild, + this.prev, + this.current, + ]; + } else { + [this.prev, this.current, this.next] = [ + this.current, + this.next, + this.next.nextElementSibling || this.slides.firstElementChild, + ]; + } + this.applyClasses(); +}; + +const mySlider = new Slider(document.querySelector('.slider')); +const dogSlider = new Slider(document.querySelector('.dog-slider')); + +window.dogSlider = dogSlider; + +window.addEventListener('keyup', function(event) { + if (event.key === 'ArrowRight') { + dogSlider.move(); + } + if (event.key === 'ArrowLeft') { + dogSlider.move('back'); + } +}); diff --git a/exercises/59 - Slider/src/index.js b/exercises/59 - Slider/src/index.js index 53e9f8852..86fff18e6 100644 --- a/exercises/59 - Slider/src/index.js +++ b/exercises/59 - Slider/src/index.js @@ -1,62 +1,54 @@ -function Slider(slider) { - if (!(slider instanceof Element)) { - throw new Error('No slider passed in'); +function Slider(sliderEl) { + if (!(sliderEl instanceof Element)) { + throw new Error('no slider passed in'); } - // create some variables for working iwth the slider + // create var to works with slider let prev; let current; let next; - // select the elements needed for the slider - const slides = slider.querySelector('.slides'); - const prevButton = slider.querySelector('.goToPrev'); - const nextButton = slider.querySelector('.goToNext'); + + // select elements needed for slider (all slides and prv/next btns) + const slides = sliderEl.querySelector('.slides'); + // console.log(slides); + const prevBtn = sliderEl.querySelector('.goToPrev'); + const nextBtn = sliderEl.querySelector('.goToNext'); function startSlider() { - current = slider.querySelector('.current') || slides.firstElementChild; + current = sliderEl.querySelector('.current') || slides.firstElementChild; + // console.log(current); prev = current.previousElementSibling || slides.lastElementChild; next = current.nextElementSibling || slides.firstElementChild; - console.log({ current, prev, next }); + // console.log({ current, prev, next }); } function applyClasses() { current.classList.add('current'); - prev.classList.add('prev'); next.classList.add('next'); + prev.classList.add('prev'); } function move(direction) { - // first strip all the classes off the current slides + // first strip all classes of current slide const classesToRemove = ['prev', 'current', 'next']; prev.classList.remove(...classesToRemove); current.classList.remove(...classesToRemove); next.classList.remove(...classesToRemove); if (direction === 'back') { - // make an new array of the new values, and destructure them over and into the prev, current and next variables - [prev, current, next] = [ - // get the prev slide, if there is none, get the last slide from the entire slider for wrapping - prev.previousElementSibling || slides.lastElementChild, - prev, - current, - ]; + // make a new array of the new values and we destructure them over into next, current prev variables + [prev, current, next] = [prev.previousElementSibling || slides.lastElementChild, prev, current]; } else { - [prev, current, next] = [ - current, - next, - // get the next slide, or if it's at the end, loop around and grab the first slide - next.nextElementSibling || slides.firstElementChild, - ]; + [prev, current, next] = [current, next, next.nextElementSibling || slides.firstElementChild]; } - applyClasses(); } - // when this slider is created, run the start slider function + // When slider is created run start slider function (==> constructor) startSlider(); applyClasses(); - // Event listeners - prevButton.addEventListener('click', () => move('back')); - nextButton.addEventListener('click', move); + // listener + prevBtn.addEventListener('click', () => move('back')); + nextBtn.addEventListener('click', move); } const mySlider = Slider(document.querySelector('.slider')); diff --git a/exercises/72 - Async Prompts/scripts.js b/exercises/72 - Async Prompts/scripts.js index b9b6cfbe1..1abf7924a 100644 --- a/exercises/72 - Async Prompts/scripts.js +++ b/exercises/72 - Async Prompts/scripts.js @@ -1,20 +1,19 @@ function wait(ms = 0) { - return new Promise(resolve => setTimeout(resolve, ms)); + return new Promise(async function(resolve) { + setTimeout(resolve, ms); + }); } async function destroyPopup(popup) { popup.classList.remove('open'); await wait(1000); - // remove the popup entirely! popup.remove(); - /* eslint-disable no-param-reassign */ popup = null; - /* eslint-enable no-param-reassign */ } function ask(options) { return new Promise(async function(resolve) { - // First we need to create a popup with all the fields in it + // first create a popup const popup = document.createElement('form'); popup.classList.add('popup'); popup.insertAdjacentHTML( @@ -26,91 +25,69 @@ function ask(options) { ` ); + console.log(popup); - // check if they want a cancel button + // check if they want a cancel btn if (options.cancel) { - const skipButton = document.createElement('button'); - skipButton.type = 'button'; - skipButton.textContent = 'Cancel'; - console.log(popup.firstChild); - popup.firstElementChild.appendChild(skipButton); - // TODO: listen for a click on that cancel button - skipButton.addEventListener( + const skipBtn = document.createElement('button'); + skipBtn.type = 'button'; + skipBtn.textContent = 'Cancel'; + popup.firstElementChild.append(skipBtn); + skipBtn.addEventListener( 'click', - function() { + () => { resolve(null); destroyPopup(popup); }, { once: true } ); } - // listen for the submit event on the inputs + + // listen for submit event on input popup.addEventListener( 'submit', function(e) { e.preventDefault(); - console.log('SUBMITTED'); resolve(e.target.input.value); - // remove it from the DOM entirely + // remove it from the dom destroyPopup(popup); }, + // remove the listener by passing the once options { once: true } ); - // when someone does submit it, resolve the data that was in the input box! - // insert that popup into the DOM + // when someone does submit, resolve the data that was in the input box + // insert popup into dom document.body.appendChild(popup); - // put a very small timeout before we add the open class - + // put a small timeout to fadeout pop up due to event loop timing await wait(50); popup.classList.add('open'); }); } -// select all button that have a question -async function askQuestion(e) { - const button = e.currentTarget; - const cancel = 'cancel' in button.dataset; - - const answer = await ask({ - title: button.dataset.question, - cancel, - }); +async function askQuestion(event) { + const button = event.currentTarget; + const shouldCancel = 'cancel' in button.dataset; + const answer = await ask({ title: button.dataset.question, cancel: shouldCancel }); console.log(answer); } +// select all btns that have a question const buttons = document.querySelectorAll('[data-question]'); -buttons.forEach(button => button.addEventListener('click', askQuestion)); +buttons.forEach(btn => btn.addEventListener('click', askQuestion)); +// pop up in series const questions = [ { title: 'What is your name?' }, { title: 'What is your age?', cancel: true }, { title: 'What is your dogs name?' }, ]; -async function asyncMap(array, callback) { - // make an array to store our results - const results = []; - // loop over our array - for (const item of array) { - results.push(await callback(item)); +async function askMany() { + for (const question of questions) { + const answer = await ask(question); + console.log(answer); } - // when we are done the loop, return it! - return results; -} - -async function go() { - const answers = await asyncMap(questions, ask); - console.log(answers); } -go(); - -// async function askMany() { -// for (const question of questions) { -// const answer = await ask(question); -// console.log(answer); -// } -// } - -// askMany(); +askMany(); diff --git a/exercises/73 - Async Typer/scripts.js b/exercises/73 - Async Typer/scripts.js index e69de29bb..88f510a7f 100644 --- a/exercises/73 - Async Typer/scripts.js +++ b/exercises/73 - Async Typer/scripts.js @@ -0,0 +1,42 @@ +function wait(ms = 0) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +function getRandomBetween(min = 20, max = 150, randomNumber = Math.random()) { + return Math.floor(randomNumber * (max - min) + min); +} + +// with a async for of loop +// async function draw(element) { +// const text = element.textContent; +// let soFar = ''; +// for (const letter of text) { +// soFar += letter; +// element.textContent = soFar; +// const { typeMin, typeMax } = element.dataset; +// const amountOfTimeToWait = getRandomBetween(typeMin, typeMax); +// await wait(amountOfTimeToWait); +// } +// } + +// same with recursion +function draw(element) { + let index = 1; + const text = element.textContent; + const { typeMin, typeMax } = element.dataset; + async function drawLetter() { + element.textContent = text.slice(0, index); + index += 1; + const amountOfTimeToWait = getRandomBetween(typeMin, typeMax); + await wait(amountOfTimeToWait); + // exit condition ==> if not infinite loop + if (index <= text.length) { + drawLetter(); + } + drawLetter(); + } + // when this function draw runs kick off drawLetter + drawLetter(); +} + +document.querySelectorAll('[data-type]').forEach(draw); diff --git a/exercises/75 - CORS and Recipes/package-lock.json b/exercises/75 - CORS and Recipes/package-lock.json index 81bb9ec4e..d7a82cb4b 100644 --- a/exercises/75 - CORS and Recipes/package-lock.json +++ b/exercises/75 - CORS and Recipes/package-lock.json @@ -2048,9 +2048,9 @@ } }, "deasync": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.16.tgz", - "integrity": "sha512-FNCjDwxGbhK+Ye8fmE3p2ahIjERhkbuwX+WVGZPtSbAh9LfE1Saa2p0l+f0t11sIlk9D8W+Bym+cDp6r5yghAQ==", + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.20.tgz", + "integrity": "sha512-E1GI7jMI57hL30OX6Ht/hfQU8DO4AuB9m72WFm4c38GNbUD4Q03//XZaOIHZiY+H1xUaomcot5yk2q/qIZQkGQ==", "requires": { "bindings": "^1.5.0", "node-addon-api": "^1.7.1" diff --git a/exercises/75 - CORS and Recipes/package.json b/exercises/75 - CORS and Recipes/package.json index 2b3c79d7a..217cb2c11 100644 --- a/exercises/75 - CORS and Recipes/package.json +++ b/exercises/75 - CORS and Recipes/package.json @@ -9,6 +9,7 @@ "author": "", "license": "ISC", "dependencies": { + "deasync": "^0.1.20", "parcel-bundler": "^1.12.4" }, "browserslist": [ diff --git a/exercises/75 - CORS and Recipes/scripts.js b/exercises/75 - CORS and Recipes/scripts.js index 20ea5a86c..fb42ca16b 100644 --- a/exercises/75 - CORS and Recipes/scripts.js +++ b/exercises/75 - CORS and Recipes/scripts.js @@ -1,19 +1,26 @@ const baseEndpoint = 'http://www.recipepuppy.com/api'; -const proxy = `https://cors-anywhere.herokuapp.com/`; +const proxy = `https://cors-anywhere.herokuapp.com`; const form = document.querySelector('form.search'); const recipesGrid = document.querySelector('.recipes'); async function fetchRecipes(query) { - const res = await fetch(`${proxy}${baseEndpoint}?q=${query}`); - const data = await res.json(); + const response = await fetch(`${proxy}/${baseEndpoint}?q=${query}`); + const data = await response.json(); return data; } -async function handleSubmit(event) { - event.preventDefault(); - const el = event.currentTarget; - console.log(form.query.value); - fetchAndDisplay(form.query.value); +function displayRecipes(recipes) { + const html = recipes.map( + recipe => ` +
    +

    ${recipe.title}

    +

    ${recipe.ingredients}

    + ${recipe.thumbnail && `${recipe.title}`} + View recipe → +
    + ` + ); + recipesGrid.innerHTML = html.join(''); } async function fetchAndDisplay(query) { @@ -26,20 +33,11 @@ async function fetchAndDisplay(query) { displayRecipes(recipes.results); } -function displayRecipes(recipes) { - console.log('Creating HTML'); - const html = recipes.map( - recipe => `
    -

    ${recipe.title}

    -

    ${recipe.ingredients}

    - ${recipe.thumbnail && - `${recipe.title}`} - View Recipe → -
    ` - ); - recipesGrid.innerHTML = html.join(''); +async function handleSubmit(event) { + event.preventDefault(); + fetchAndDisplay(form.query.value); } form.addEventListener('submit', handleSubmit); -// on page load run it with pizza +// run on page load fetchAndDisplay('pizza'); diff --git a/exercises/76 - Dad Jokes/jokes.js b/exercises/76 - Dad Jokes/jokes.js index 45e089327..864e2fb83 100644 --- a/exercises/76 - Dad Jokes/jokes.js +++ b/exercises/76 - Dad Jokes/jokes.js @@ -1,3 +1,9 @@ +const jokeBtn = document.querySelector('.getJoke'); +const jokeBtnSpan = document.querySelector('.jokeText'); + +const jokeHolder = document.querySelector('.joke p'); +const loader = document.querySelector('.loader'); + const buttonText = [ 'Ugh.', '🤦🏻‍♂️', @@ -8,3 +14,34 @@ const buttonText = [ 'please stop', 'that was the worst one', ]; + +async function fetchJoke() { + // turn loader on + loader.classList.remove('hidden'); + const response = await fetch('https://icanhazdadjoke.com', { + headers: { + Accept: 'application/json', + }, + }); + const data = await response.json(); + // turn loader off + loader.classList.add('hidden'); + return data; +} + +function randomItemFromArray(arr, not) { + const item = arr[Math.floor(Math.random() * arr.length)]; + if (item === not) { + // recursion => a function calls itself + return randomItemFromArray(arr, not); + } + return item; +} + +async function handleClick() { + const { joke } = await fetchJoke(); + jokeHolder.textContent = joke; + jokeBtnSpan.textContent = randomItemFromArray(buttonText, jokeBtnSpan.textContent); +} + +jokeBtn.addEventListener('click', handleClick); diff --git a/exercises/77 - Currency Converter/money.js b/exercises/77 - Currency Converter/money.js index 3d907ae39..a29bffc49 100644 --- a/exercises/77 - Currency Converter/money.js +++ b/exercises/77 - Currency Converter/money.js @@ -1,3 +1,11 @@ +const fromSelect = document.querySelector('[name="from_currency"]'); +const fromInput = document.querySelector('[name="from_amount"]'); +const toSelect = document.querySelector('[name="to_currency"]'); +const toEl = document.querySelector('.to_amount'); +const form = document.querySelector('.app form'); +const endpoint = 'https://api.exchangeratesapi.io/latest'; +const ratesByBase = {}; + const currencies = { USD: 'United States Dollar', AUD: 'Australian Dollar', @@ -32,3 +40,53 @@ const currencies = { ZAR: 'South African Rand', EUR: 'Euro', }; + +function generateOptions(options) { + return Object.entries(options) + .map( + ([currencyCode, currencyName]) => + ` + + ` + ) + .join(''); +} + +async function fetchRates(base = 'USD') { + const response = await fetch(`${endpoint}?base=${base}`); + const rates = await response.json(); + return rates; +} + +async function convert(amount, fromCcy, toCcy) { + // first check if we have the rates to convert from that ccy + if (!ratesByBase[fromCcy]) { + console.log(`we don't have the rate for this ${fromCcy}/${toCcy} ccy pair`); + const rates = await fetchRates(fromCcy); + // store it + ratesByBase[fromCcy] = rates; + } + // convert the amount + const rate = ratesByBase[fromCcy].rates[toCcy]; + const convertedAmount = rate * amount; + return convertedAmount; +} + +function formatCcy(amount, currency) { + return Intl.NumberFormat('en-US', { + style: 'currency', + currency, + }).format(amount); +} + +async function handleInput() { + const rawAmount = await convert(fromInput.value, fromSelect.value, toSelect.value); + toEl.textContent = formatCcy(rawAmount, toSelect.value); +} + +const optionsHtml = generateOptions(currencies); +fromSelect.innerHTML = optionsHtml; +toSelect.innerHTML = optionsHtml; + +// you can listen for inputs on form, with bubbling listener will cover ALL inputs of that form +form.addEventListener('input', handleInput); diff --git a/exercises/80 - Currency Converter Modules Refactor - FINISHED/handlers.js b/exercises/80 - Currency Converter Modules Refactor - FINISHED/handlers.js index 112263397..c0adbd7fa 100644 --- a/exercises/80 - Currency Converter Modules Refactor - FINISHED/handlers.js +++ b/exercises/80 - Currency Converter Modules Refactor - FINISHED/handlers.js @@ -3,10 +3,6 @@ import { formatCurrency } from './utils.js'; import { fromInput, fromSelect, toSelect, toEl } from './elements.js'; export async function handleInput(e) { - const rawAmount = await convert( - fromInput.value, - fromSelect.value, - toSelect.value - ); + const rawAmount = await convert(fromInput.value, fromSelect.value, toSelect.value); toEl.textContent = formatCurrency(rawAmount, toSelect.value); } diff --git a/exercises/80 - Currency Converter Modules Refactor - FINISHED/lib.js b/exercises/80 - Currency Converter Modules Refactor - FINISHED/lib.js index a5eaa795c..99ed22f3f 100644 --- a/exercises/80 - Currency Converter Modules Refactor - FINISHED/lib.js +++ b/exercises/80 - Currency Converter Modules Refactor - FINISHED/lib.js @@ -10,9 +10,7 @@ export async function fetchRates(base = 'USD') { export async function convert(amount, from, to) { // first check if we even have the rates to convert from that currency if (!ratesByBase[from]) { - console.log( - `Oh no, we dont have ${from} to convert to ${to}. So gets go get it!` - ); + console.log(`Oh no, we dont have ${from} to convert to ${to}. So gets go get it!`); const rates = await fetchRates(from); console.log(rates); // store them for next time diff --git a/exercises/80 - Currency Converter Modules Refactor - FINISHED/utils.js b/exercises/80 - Currency Converter Modules Refactor - FINISHED/utils.js index 1526f8fb3..b8bb721cc 100644 --- a/exercises/80 - Currency Converter Modules Refactor - FINISHED/utils.js +++ b/exercises/80 - Currency Converter Modules Refactor - FINISHED/utils.js @@ -1,9 +1,6 @@ export function generateOptions(options) { return Object.entries(options) - .map( - ([currencyCode, currencyName]) => - `` - ) + .map(([currencyCode, currencyName]) => ``) .join(''); } diff --git a/exercises/82 - npm modules - FINISHED/index.js b/exercises/82 - npm modules - FINISHED/index.js index 0e56e36cf..f6c515e36 100644 --- a/exercises/82 - npm modules - FINISHED/index.js +++ b/exercises/82 - npm modules - FINISHED/index.js @@ -5,10 +5,7 @@ import axios from 'axios'; import { intersection, isEqual } from 'lodash'; import to from 'await-to-js'; -const fakeNames = Array.from( - { length: 10 }, - () => `${name.firstName()} ${name.lastName()}` -); +const fakeNames = Array.from({ length: 10 }, () => `${name.firstName()} ${name.lastName()}`); async function go() { console.log('Going!'); diff --git a/exercises/84 - Web Speech Colour Game/colors.js b/exercises/84 - Web Speech Colour Game/colors.js index 4b11f4495..3853f2029 100644 --- a/exercises/84 - Web Speech Colour Game/colors.js +++ b/exercises/84 - Web Speech Colour Game/colors.js @@ -157,10 +157,8 @@ export function isDark(colorName) { return r * 0.299 + g * 0.587 + b * 0.114 < 120; } -export const colorsByLength = Object.keys(colors).sort( - (a, b) => a.length - b.length -); +export const colorsByLength = Object.keys(colors).sort((a, b) => a.length - b.length); -export function isValidColor(word) { +export function isvalidColor(word) { return !!colors[word]; } diff --git a/exercises/84 - Web Speech Colour Game/handlers.js b/exercises/84 - Web Speech Colour Game/handlers.js index 0c2650b2a..6a32f57e4 100644 --- a/exercises/84 - Web Speech Colour Game/handlers.js +++ b/exercises/84 - Web Speech Colour Game/handlers.js @@ -1,24 +1,23 @@ -import { isValidColor } from './colors'; +import { isvalidColor } from './colors'; function logWords(results) { - // console.log(results[results.length - 1][0].transcript); + console.log(results[results.length - 1][0].transcript); } export function handleResult({ results }) { logWords(results); const words = results[results.length - 1][0].transcript; + console.log(words); // lowercase everything let color = words.toLowerCase(); - // strip any spaces out + // strip any spaces color = color.replace(/\s/g, ''); - // check if it is a valid colour - if (!isValidColor(color)) return; // thats all folks - // if it is, then show the UI for that + // check if it's a valid color + if (!isvalidColor(color)) return; + // if it is then show ui for that + console.log(`${color} is a valid color`); const colorSpan = document.querySelector(`.${color}`); colorSpan.classList.add('got'); - console.log(colorSpan); - console.log('This is a valid color!'); - console.log(color); - // change the background color + // change Background document.body.style.backgroundColor = color; } diff --git a/exercises/84 - Web Speech Colour Game/package-lock.json b/exercises/84 - Web Speech Colour Game/package-lock.json index 387c8bc55..108a44195 100644 --- a/exercises/84 - Web Speech Colour Game/package-lock.json +++ b/exercises/84 - Web Speech Colour Game/package-lock.json @@ -964,9 +964,9 @@ "dev": true }, "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", "dev": true }, "acorn-globals": { @@ -980,9 +980,9 @@ }, "dependencies": { "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true } } @@ -1334,7 +1334,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, "requires": { "file-uri-to-path": "1.0.0" } @@ -2287,10 +2286,9 @@ } }, "deasync": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.16.tgz", - "integrity": "sha512-FNCjDwxGbhK+Ye8fmE3p2ahIjERhkbuwX+WVGZPtSbAh9LfE1Saa2p0l+f0t11sIlk9D8W+Bym+cDp6r5yghAQ==", - "dev": true, + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.20.tgz", + "integrity": "sha512-E1GI7jMI57hL30OX6Ht/hfQU8DO4AuB9m72WFm4c38GNbUD4Q03//XZaOIHZiY+H1xUaomcot5yk2q/qIZQkGQ==", "requires": { "bindings": "^1.5.0", "node-addon-api": "^1.7.1" @@ -2844,21 +2842,21 @@ "dev": true }, "falafel": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", - "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", + "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", "dev": true, "requires": { - "acorn": "^5.0.0", + "acorn": "^7.1.1", "foreach": "^2.0.5", - "isarray": "0.0.1", + "isarray": "^2.0.1", "object-keys": "^1.0.6" }, "dependencies": { "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true } } @@ -2904,8 +2902,7 @@ "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, "filesize": { "version": "3.6.1", @@ -4294,9 +4291,9 @@ }, "dependencies": { "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, "escodegen": { @@ -4375,9 +4372,9 @@ } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "levn": { @@ -4592,9 +4589,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "mixin-deep": { @@ -4619,20 +4616,12 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "minimist": "^1.2.5" } }, "ms": { @@ -4676,8 +4665,7 @@ "node-addon-api": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz", - "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==", - "dev": true + "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==" }, "node-forge": { "version": "0.7.6", @@ -6151,9 +6139,9 @@ } }, "serialize-to-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.0.0.tgz", - "integrity": "sha512-WdGgi0jGnWCQXph2p3vkxceDnTfvfyXfYxherQMRcZjSaJzMQdMBAW6i0nojsBKIZ3fFOztZKKVbbm05VbIdRA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", + "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==", "dev": true }, "serve-static": { @@ -7287,9 +7275,9 @@ } }, "yargs-parser": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz", - "integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==", + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", "dev": true, "requires": { "camelcase": "^5.0.0", diff --git a/exercises/84 - Web Speech Colour Game/package.json b/exercises/84 - Web Speech Colour Game/package.json index f44add497..e567629b9 100644 --- a/exercises/84 - Web Speech Colour Game/package.json +++ b/exercises/84 - Web Speech Colour Game/package.json @@ -13,5 +13,8 @@ ], "devDependencies": { "parcel-bundler": "^1.12.4" + }, + "dependencies": { + "deasync": "^0.1.20" } } diff --git a/exercises/84 - Web Speech Colour Game/speech.js b/exercises/84 - Web Speech Colour Game/speech.js index 556083795..9e9eac9aa 100644 --- a/exercises/84 - Web Speech Colour Game/speech.js +++ b/exercises/84 - Web Speech Colour Game/speech.js @@ -1,31 +1,27 @@ import { handleResult } from './handlers'; import { colorsByLength, isDark } from './colors'; -const colorsEl = document.querySelector('.colors'); +const colorEl = document.querySelector('.colors'); function displayColors(colors) { return colors .map( - color => - `${color}` + color => `${color}` ) .join(''); } -window.SpeechRecognition = - window.SpeechRecognition || window.webkitSpeechRecognition; +window.SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; function start() { - // see if their browser supports this + // see if browser is compatible if (!('SpeechRecognition' in window)) { - console.log('Sorry your browser does not support speech reco. '); + console.log('features not supported by the browser'); return; } - // it does work - console.log('Starting...'); - // make a new speech reco + // supported + console.log('starting app...'); + // Make a new speech reco const recognition = new SpeechRecognition(); recognition.continuous = true; recognition.interimResults = true; @@ -34,4 +30,4 @@ function start() { } start(); -colorsEl.innerHTML = displayColors(colorsByLength); +colorEl.innerHTML = displayColors(colorsByLength); diff --git a/exercises/85 - Audio Visualizer Oscilloscope/index.html b/exercises/85 - Audio Visualizer Oscilloscope/index.html index 2c2e29e5d..e90e6600f 100644 --- a/exercises/85 - Audio Visualizer Oscilloscope/index.html +++ b/exercises/85 - Audio Visualizer Oscilloscope/index.html @@ -2,13 +2,14 @@ - - + + Audio Analyzer +

    Funky Audio visualiser

    @@ -16,11 +17,16 @@ html { margin: 0; background: black; + color: white; + } + + h1 { + margin: 20px auto; } canvas { width: 100%; - height: 100%; + height: 90vh; } body { diff --git a/exercises/85 - Audio Visualizer Oscilloscope/package-lock.json b/exercises/85 - Audio Visualizer Oscilloscope/package-lock.json index 45c20f844..d0c133af5 100644 --- a/exercises/85 - Audio Visualizer Oscilloscope/package-lock.json +++ b/exercises/85 - Audio Visualizer Oscilloscope/package-lock.json @@ -1334,7 +1334,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, "requires": { "file-uri-to-path": "1.0.0" } @@ -2287,10 +2286,9 @@ } }, "deasync": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.16.tgz", - "integrity": "sha512-FNCjDwxGbhK+Ye8fmE3p2ahIjERhkbuwX+WVGZPtSbAh9LfE1Saa2p0l+f0t11sIlk9D8W+Bym+cDp6r5yghAQ==", - "dev": true, + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.20.tgz", + "integrity": "sha512-E1GI7jMI57hL30OX6Ht/hfQU8DO4AuB9m72WFm4c38GNbUD4Q03//XZaOIHZiY+H1xUaomcot5yk2q/qIZQkGQ==", "requires": { "bindings": "^1.5.0", "node-addon-api": "^1.7.1" @@ -2904,8 +2902,7 @@ "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, "filesize": { "version": "3.6.1", @@ -4676,8 +4673,7 @@ "node-addon-api": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz", - "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==", - "dev": true + "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==" }, "node-forge": { "version": "0.7.6", diff --git a/exercises/85 - Audio Visualizer Oscilloscope/package.json b/exercises/85 - Audio Visualizer Oscilloscope/package.json index 3513e7dd6..ebe26a350 100644 --- a/exercises/85 - Audio Visualizer Oscilloscope/package.json +++ b/exercises/85 - Audio Visualizer Oscilloscope/package.json @@ -13,5 +13,8 @@ "license": "ISC", "devDependencies": { "parcel-bundler": "^1.12.4" + }, + "dependencies": { + "deasync": "^0.1.20" } } diff --git a/exercises/85 - Audio Visualizer Oscilloscope/sound.js b/exercises/85 - Audio Visualizer Oscilloscope/sound.js index ed569cab2..d4f1b9ac3 100644 --- a/exercises/85 - Audio Visualizer Oscilloscope/sound.js +++ b/exercises/85 - Audio Visualizer Oscilloscope/sound.js @@ -10,44 +10,49 @@ let analyzer; let bufferLength; function handleError(err) { - console.log('You must give access to your mic in order to proceed'); + console.log('please give permission to the mic'); } async function getAudio() { - const stream = await navigator.mediaDevices - .getUserMedia({ audio: true }) - .catch(handleError); + const stream = await navigator.mediaDevices.getUserMedia({ audio: true }).catch(handleError); + // console.log(stream); const audioCtx = new AudioContext(); analyzer = audioCtx.createAnalyser(); const source = audioCtx.createMediaStreamSource(stream); source.connect(analyzer); - // How much data should we collect - analyzer.fftSize = 2 ** 8; - // pull the data off the audio - // how many pieces of data are there?!? + // audio data we wan to collect + analyzer.fftSize = 2 ** 9; + // how many pieces of data are there bufferLength = analyzer.frequencyBinCount; + // pull data from audio const timeData = new Uint8Array(bufferLength); + // console.log(timeData); const frequencyData = new Uint8Array(bufferLength); + // console.log(frequencyData); drawTimeData(timeData); drawFrequency(frequencyData); } +// draw frequency bars + +// draw time waves function drawTimeData(timeData) { - // inject the time data into our timeData array + // inject time date into array analyzer.getByteTimeDomainData(timeData); - // now that we have the data, lets turn it into something visual - // 1. Clear the canvas TODO + // draw visual + // 1. clear canvas ctx.clearRect(0, 0, WIDTH, HEIGHT); - // 2. setup some canvas drawing + // 2. set up canvas drawing ctx.lineWidth = 10; ctx.strokeStyle = '#ffc600'; ctx.beginPath(); const sliceWidth = WIDTH / bufferLength; + // console.log(sliceWidth); let x = 0; timeData.forEach((data, i) => { const v = data / 128; const y = (v * HEIGHT) / 2; - // draw our lines + // draw lines if (i === 0) { ctx.moveTo(x, y); } else { @@ -55,31 +60,30 @@ function drawTimeData(timeData) { } x += sliceWidth; }); - ctx.stroke(); - - // call itself as soon as possible + // call itself asap requestAnimationFrame(() => drawTimeData(timeData)); } function drawFrequency(frequencyData) { - // get the frequency data into our frequencyData array + // get frequency data into array analyzer.getByteFrequencyData(frequencyData); // figure out the bar width const barWidth = (WIDTH / bufferLength) * 2.5; + console.log(barWidth); let x = 0; frequencyData.forEach(amount => { - // 0 to 255 + // range from 0 to 255 const percent = amount / 255; const [h, s, l] = [360 / (percent * 360) - 0.5, 0.8, 0.5]; const barHeight = HEIGHT * percent * 0.5; - // TODO: Convert the colour to HSL TODO + // convert color to hsl const [r, g, b] = hslToRgb(h, s, l); ctx.fillStyle = `rgb(${r},${g},${b})`; ctx.fillRect(x, HEIGHT - barHeight, barWidth, barHeight); x += barWidth + 2; }); - + // call itself asap requestAnimationFrame(() => drawFrequency(frequencyData)); } diff --git a/package-lock.json b/package-lock.json index 60451c0dd..f36a8270d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,109 +5,133 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.8.3" } }, "@babel/generator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", - "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", "dev": true, "requires": { - "@babel/types": "^7.4.4", + "@babel/types": "^7.9.5", "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "lodash": "^4.17.13", + "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.8.3" } }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", - "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.9.2.tgz", + "integrity": "sha512-HHxmgxbIzOfFlZ+tdeRKtaxWOMUoCG5Mu3wKeUmOxjYrwb3AAHgnmtCUbPPK11/raIWLIBK250t8E2BPO0p7jA==", + "dev": true, + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, "@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/traverse": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz", - "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.4", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.4.5", - "@babel/types": "^7.4.4", + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.11" + "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", - "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } }, @@ -117,25 +141,29 @@ "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", "dev": true }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", "dev": true }, "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", - "dev": true, + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" @@ -154,10 +182,9 @@ "dev": true }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { "version": "3.2.1", @@ -168,6 +195,20 @@ "color-convert": "^1.9.0" } }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -188,15 +229,39 @@ } }, "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" } }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -209,14 +274,26 @@ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" + }, "axobject-query": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", - "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7" - } + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.1.2.tgz", + "integrity": "sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ==", + "dev": true }, "babel-eslint": { "version": "9.0.0", @@ -235,8 +312,23 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } }, "boolbase": { "version": "1.0.0", @@ -248,21 +340,21 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "browserslist": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.3.tgz", - "integrity": "sha512-jWvmhqYpx+9EZm/FxcZSbUZyDEvDTLDi3nSAKbzEkyWvtI0mNSmUosey+5awDW1RUlrgXbQb5A6qY1xQH9U6MQ==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001010", - "electron-to-chromium": "^1.3.306", - "node-releases": "^1.1.40" + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" } }, "caller-callsite": { @@ -272,14 +364,6 @@ "dev": true, "requires": { "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - } } }, "caller-path": { @@ -292,9 +376,9 @@ } }, "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", "dev": true }, "caniuse-api": { @@ -310,11 +394,16 @@ } }, "caniuse-lite": { - "version": "1.0.30001011", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001011.tgz", - "integrity": "sha512-h+Eqyn/YA6o6ZTqpS86PyRmNWOs1r54EBDcd2NTwwfsXQ8re1B38SnB+p2RKF8OUsyEIjeDU8XGec1RGO/wYCg==", + "version": "1.0.30001046", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001046.tgz", + "integrity": "sha512-CsGjBRYWG6FvgbyGy+hBbaezpwiqIOLkxQPY4A4Ea49g1eNsnQuESB+n4QM0BKii1j80MyJ26Ir5ywTQkbRE4g==", "dev": true }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -332,6 +421,11 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -342,9 +436,9 @@ } }, "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", "dev": true }, "coa": { @@ -358,6 +452,11 @@ "q": "^1.1.2" } }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, "color": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", @@ -393,24 +492,53 @@ "simple-swizzle": "^0.2.2" } }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", "dev": true }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", "dev": true }, + "core-js-pure": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", + "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -421,34 +549,6 @@ "is-directory": "^0.3.1", "js-yaml": "^3.13.1", "parse-json": "^4.0.0" - }, - "dependencies": { - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } } }, "cross-spawn": { @@ -516,12 +616,6 @@ } } }, - "css-unit-converter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", - "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", - "dev": true - }, "css-what": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", @@ -529,9 +623,9 @@ "dev": true }, "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, "cssnano": { @@ -612,20 +706,61 @@ "dev": true }, "csso": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", - "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", "dev": true, "requires": { - "css-tree": "1.0.0-alpha.37" + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "damerau-levenshtein": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz", - "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==", "dev": true }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "deasync": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.19.tgz", + "integrity": "sha512-oh3MRktfnPlLysCPpBpKZZzb4cUC/p0aA3SyRGp15lN30juJBTo/CiD0d4fR+f1kBtUQoJj1NE9RPNWQ7BQ9Mg==", + "requires": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -650,6 +785,16 @@ "object-keys": "^1.0.12" } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -660,13 +805,21 @@ } }, "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", "dev": true, "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + } } }, "domelementtype": { @@ -695,18 +848,27 @@ } }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", "dev": true, "requires": { - "is-obj": "^1.0.0" + "is-obj": "^2.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "electron-to-chromium": { - "version": "1.3.309", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.309.tgz", - "integrity": "sha512-NZd91XD15v2UPLjYXoN/gLnkwIUQjdH4SQLpRCCQiYJH6BBkfgp5pWemBJPr1rZ2dl8Ee3o91O9Sa1QuAfZmog==", + "version": "1.3.416", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.416.tgz", + "integrity": "sha512-fmSrpOQC1dEXzsznzAMXbhQLkpAr21WtaUfRXnIbh8kblZIaMwSL6A8u2RZHAzZliSoSOM3FzS2z/j8tVqrAAw==", "dev": true }, "emoji-regex": { @@ -716,11 +878,16 @@ "dev": true }, "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", "dev": true }, + "env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==" + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -731,23 +898,28 @@ } }, "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", "dev": true, "requires": { - "es-to-primitive": "^1.2.0", + "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" } }, "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -805,6 +977,12 @@ "text-table": "^0.2.0" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -814,29 +992,54 @@ "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } } } }, "eslint-config-airbnb": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-17.1.0.tgz", - "integrity": "sha512-R9jw28hFfEQnpPau01NO5K/JWMGLi6aymiF6RsnMURjTk+MqZKllCqGK/0tOvHkPi/NWSSOU2Ced/GX++YxLnw==", + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-17.1.1.tgz", + "integrity": "sha512-xCu//8a/aWqagKljt+1/qAM62BYZeNq04HmdevG5yUGWpja0I/xhqd6GdLRch5oetEGFiJAnvtGuTEAese53Qg==", "dev": true, "requires": { - "eslint-config-airbnb-base": "^13.1.0", + "eslint-config-airbnb-base": "^13.2.0", "object.assign": "^4.1.0", - "object.entries": "^1.0.4" + "object.entries": "^1.1.0" } }, "eslint-config-airbnb-base": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.1.0.tgz", - "integrity": "sha512-XWwQtf3U3zIoKO1BbHh6aUhJZQweOwSt4c2JrPDg9FP3Ltv3+YfEv7jIDB8275tVnO/qOHbfuYg3kzw6Je7uWw==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz", + "integrity": "sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w==", "dev": true, "requires": { - "eslint-restricted-globals": "^0.1.1", + "confusing-browser-globals": "^1.0.5", "object.assign": "^4.1.0", - "object.entries": "^1.0.4" + "object.entries": "^1.1.0" } }, "eslint-config-prettier": { @@ -855,13 +1058,13 @@ "dev": true }, "eslint-import-resolver-node": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", - "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", "dev": true, "requires": { "debug": "^2.6.9", - "resolve": "^1.5.0" + "resolve": "^1.13.1" }, "dependencies": { "debug": { @@ -882,12 +1085,12 @@ } }, "eslint-module-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz", - "integrity": "sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", "dev": true, "requires": { - "debug": "^2.6.8", + "debug": "^2.6.9", "pkg-dir": "^2.0.0" }, "dependencies": { @@ -918,22 +1121,23 @@ } }, "eslint-plugin-import": { - "version": "2.17.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz", - "integrity": "sha512-qeVf/UwXFJbeyLbxuY8RgqDyEKCkqV7YC+E5S5uOjAp4tOc8zj01JP3ucoBM8JcEqd1qRasJSg6LLlisirfy0Q==", + "version": "2.20.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz", + "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", "dev": true, "requires": { "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", "contains-path": "^0.1.0", "debug": "^2.6.9", "doctrine": "1.5.0", "eslint-import-resolver-node": "^0.3.2", - "eslint-module-utils": "^2.4.0", + "eslint-module-utils": "^2.4.1", "has": "^1.0.3", - "lodash": "^4.17.11", "minimatch": "^3.0.4", + "object.values": "^1.1.0", "read-pkg-up": "^2.0.0", - "resolve": "^1.11.0" + "resolve": "^1.12.0" }, "dependencies": { "debug": { @@ -964,11 +1168,12 @@ } }, "eslint-plugin-jsx-a11y": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz", - "integrity": "sha512-cjN2ObWrRz0TTw7vEcGQrx+YltMvZoOEx4hWU8eEERDnBIU00OTq7Vr+jA7DFKxiwLNv4tTh5Pq2GUNEa8b6+w==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", + "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", "dev": true, "requires": { + "@babel/runtime": "^7.4.5", "aria-query": "^3.0.0", "array-includes": "^3.0.3", "ast-types-flow": "^0.0.7", @@ -976,31 +1181,36 @@ "damerau-levenshtein": "^1.0.4", "emoji-regex": "^7.0.2", "has": "^1.0.3", - "jsx-ast-utils": "^2.0.1" + "jsx-ast-utils": "^2.2.1" } }, "eslint-plugin-prettier": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.0.tgz", - "integrity": "sha512-XWX2yVuwVNLOUhQijAkXz+rMPPoCr7WFiAl8ig6I7Xn+pPVhDhzg4DxHpmbeb0iqjO9UronEA3Tb09ChnFVHHA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz", + "integrity": "sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" } }, "eslint-plugin-react": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.13.0.tgz", - "integrity": "sha512-uA5LrHylu8lW/eAH3bEQe9YdzpPaFd9yAJTwTi/i/BKTD7j6aQMKVAdGM/ML72zD6womuSK7EiGtMKuK06lWjQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", + "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", "dev": true, "requires": { - "array-includes": "^3.0.3", + "array-includes": "^3.1.1", "doctrine": "^2.1.0", "has": "^1.0.3", - "jsx-ast-utils": "^2.1.0", - "object.fromentries": "^2.0.0", + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", "prop-types": "^15.7.2", - "resolve": "^1.10.1" + "resolve": "^1.15.1", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.2", + "xregexp": "^4.3.0" }, "dependencies": { "doctrine": { @@ -1011,19 +1221,19 @@ "requires": { "esutils": "^2.0.2" } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, "eslint-plugin-react-hooks": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.6.0.tgz", - "integrity": "sha512-lHBVRIaz5ibnIgNG07JNiAuBUeKhEf8l4etNx5vfAEwqQ5tcuK3jV9yjmopPgQDagQb7HwIuQVsE3IVcGrRnag==", - "dev": true - }, - "eslint-restricted-globals": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", - "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", + "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==", "dev": true }, "eslint-scope": { @@ -1043,20 +1253,12 @@ "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true - } } }, "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", "dev": true }, "espree": { @@ -1077,12 +1279,20 @@ "dev": true }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } } }, "esrecurse": { @@ -1095,21 +1305,26 @@ } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { "chardet": "^0.7.0", @@ -1117,11 +1332,15 @@ "tmp": "^0.0.33" } }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" }, "fast-diff": { "version": "1.2.0", @@ -1130,10 +1349,9 @@ "dev": true }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", @@ -1159,6 +1377,11 @@ "flat-cache": "^2.0.1" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -1177,19 +1400,52 @@ "flatted": "^2.0.0", "rimraf": "2.6.3", "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "flatted": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", - "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "function-bind": { "version": "1.1.1", @@ -1203,17 +1459,39 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", "dev": true }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1230,10 +1508,23 @@ "dev": true }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } }, "has": { "version": "1.0.3", @@ -1251,11 +1542,16 @@ "dev": true }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, "hex-color-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", @@ -1263,9 +1559,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, "hsl-regex": { @@ -1298,6 +1594,35 @@ "entities": "^1.1.1", "inherits": "^2.0.1", "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "iconv-lite": { @@ -1316,13 +1641,13 @@ "dev": true }, "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", "dev": true, "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" } }, "imurmurhash": { @@ -1341,22 +1666,20 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, "requires": { "ansi-escapes": "^3.2.0", @@ -1365,7 +1688,7 @@ "cli-width": "^2.0.0", "external-editor": "^3.0.3", "figures": "^2.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.12", "mute-stream": "0.0.7", "run-async": "^2.2.0", "rxjs": "^6.4.0", @@ -1375,11 +1698,38 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -1387,10 +1737,29 @@ "dev": true, "requires": { "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } } } } }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + } + }, "is-absolute-url": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", @@ -1404,9 +1773,9 @@ "dev": true }, "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", "dev": true }, "is-color-stop": { @@ -1424,9 +1793,9 @@ } }, "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, "is-directory": { @@ -1436,15 +1805,17 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } }, "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, "is-promise": { @@ -1454,12 +1825,12 @@ "dev": true }, "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", "dev": true, "requires": { - "has": "^1.0.1" + "has": "^1.0.3" } }, "is-resolvable": { @@ -1468,6 +1839,12 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-svg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", @@ -1478,25 +1855,33 @@ } }, "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "^1.0.1" } }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "js-tokens": { "version": "4.0.0", @@ -1514,6 +1899,11 @@ "esprima": "^4.0.0" } }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -1526,11 +1916,15 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -1538,13 +1932,30 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, "jsx-ast-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz", - "integrity": "sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", + "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", "dev": true, "requires": { - "array-includes": "^3.0.3" + "array-includes": "^3.0.3", + "object.assign": "^4.1.0" } }, "levn": { @@ -1567,6 +1978,17 @@ "parse-json": "^2.2.0", "pify": "^2.0.0", "strip-bom": "^3.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + } } }, "locate-path": { @@ -1612,6 +2034,19 @@ "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", "dev": true }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", @@ -1622,30 +2057,44 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "mute-stream": { @@ -1666,21 +2115,42 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-addon-api": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz", + "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==" + }, + "node-gyp": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-6.1.0.tgz", + "integrity": "sha512-h4A2zDlOujeeaaTx06r4Vy+8MZ1679lU+wbCKDS4ZtvY2A37DESo37oejIw0mtmR3+rvNwts5B6Kpt1KrNYdNw==", + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.1.2", + "request": "^2.88.0", + "rimraf": "^2.6.3", + "semver": "^5.7.1", + "tar": "^4.4.12", + "which": "^1.3.1" + } + }, "node-releases": { - "version": "1.1.40", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.40.tgz", - "integrity": "sha512-r4LPcC5b/bS8BdtWH1fbeK88ib/wg9aqmg6/s3ngNLn2Ewkn/8J6Iw3P9RTlfIAdSdvYvQl2thCY5Y+qTAQ2iQ==", - "dev": true, + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "dev": true + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "abbrev": "1", + "osenv": "^0.1.4" } }, "normalize-package-data": { @@ -1701,6 +2171,17 @@ "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", "dev": true }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", @@ -1710,10 +2191,25 @@ "boolbase": "~1.0.0" } }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", "dev": true }, "object-keys": { @@ -1735,47 +2231,47 @@ } }, "object.entries": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", - "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", + "es-abstract": "^1.17.0-next.1", "function-bind": "^1.1.1", "has": "^1.0.3" } }, "object.fromentries": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", - "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.11.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", "function-bind": "^1.1.1", - "has": "^1.0.1" + "has": "^1.0.3" } }, "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "object.values": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", - "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", + "es-abstract": "^1.17.0-next.1", "function-bind": "^1.1.1", "has": "^1.0.3" } @@ -1784,7 +2280,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -1799,24 +2294,37 @@ } }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "word-wrap": "~1.2.3" } }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } }, "p-limit": { "version": "1.3.0", @@ -1849,15 +2357,24 @@ "dev": true, "requires": { "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } } }, "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "^1.2.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "path-exists": { @@ -1869,8 +2386,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { "version": "1.0.2", @@ -1899,6 +2415,11 @@ "pify": "^2.0.0" } }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -1914,10 +2435,19 @@ "find-up": "^2.1.0" } }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, "postcss": { - "version": "7.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.23.tgz", - "integrity": "sha512-hOlMf3ouRIFXD+j2VJecwssTwbvsPGJVMzupptg+85WA+i7MwyrydmQAgY3R+m0Bc0exunhbJmijy8u8+vufuQ==", + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -1943,15 +2473,14 @@ } }, "postcss-calc": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", - "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", "dev": true, "requires": { - "css-unit-converter": "^1.1.1", - "postcss": "^7.0.5", - "postcss-selector-parser": "^5.0.0-rc.4", - "postcss-value-parser": "^3.3.1" + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" } }, "postcss-colormin": { @@ -1965,6 +2494,14 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-convert-values": { @@ -1975,6 +2512,14 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-discard-comments": { @@ -2023,6 +2568,14 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-merge-rules": { @@ -2040,12 +2593,12 @@ }, "dependencies": { "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -2060,6 +2613,14 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-minify-gradients": { @@ -2072,6 +2633,14 @@ "is-color-stop": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-minify-params": { @@ -2086,6 +2655,14 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-minify-selectors": { @@ -2101,12 +2678,12 @@ }, "dependencies": { "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -2131,6 +2708,14 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-normalize-positions": { @@ -2143,6 +2728,14 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-normalize-repeat-style": { @@ -2155,6 +2748,14 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-normalize-string": { @@ -2166,6 +2767,14 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-normalize-timing-functions": { @@ -2177,6 +2786,14 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-normalize-unicode": { @@ -2188,6 +2805,14 @@ "browserslist": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-normalize-url": { @@ -2200,6 +2825,14 @@ "normalize-url": "^3.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-normalize-whitespace": { @@ -2210,6 +2843,14 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-ordered-values": { @@ -2221,6 +2862,14 @@ "cssnano-util-get-arguments": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-reduce-initial": { @@ -2245,15 +2894,23 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "requires": { - "cssesc": "^2.0.0", + "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -2268,6 +2925,14 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-unique-selectors": { @@ -2282,9 +2947,9 @@ } }, "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", "dev": true }, "prelude-ls": { @@ -2294,9 +2959,9 @@ "dev": true }, "prettier": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.1.tgz", - "integrity": "sha512-TzGRNvuUSmPgwivDqkZ9tM/qTGW9hqDKWOE9YHiyQdixlKbv7kvEqsmDPrcHJTKwthU774TQwZXVtaQ/mMsvjg==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", "dev": true }, "prettier-linter-helpers": { @@ -2308,6 +2973,11 @@ "fast-diff": "^1.1.2" } }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -2325,11 +2995,15 @@ "react-is": "^16.8.1" } }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "q": { "version": "1.5.1", @@ -2337,10 +3011,15 @@ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, "react-is": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", - "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==", + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true }, "read-pkg": { @@ -2365,14 +3044,33 @@ } }, "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "regexpp": { @@ -2381,19 +3079,46 @@ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dev": true, "requires": { "path-parse": "^1.0.6" } }, "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true }, "restore-cursor": { @@ -2419,27 +3144,26 @@ "dev": true }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { "glob": "^7.1.3" } }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", "dev": true, "requires": { "is-promise": "^2.1.0" } }, "rxjs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -2448,14 +3172,12 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sax": { "version": "1.2.4", @@ -2464,10 +3186,14 @@ "dev": true }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "shebang-command": { "version": "1.2.0", @@ -2484,11 +3210,20 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", + "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + } + }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "simple-swizzle": { "version": "0.2.2", @@ -2516,6 +3251,14 @@ "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } } }, "source-map": { @@ -2535,9 +3278,9 @@ } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { @@ -2551,9 +3294,9 @@ } }, "spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, "sprintf-js": { @@ -2562,6 +3305,22 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, "stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -2569,31 +3328,85 @@ "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" } }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -2620,12 +3433,12 @@ }, "dependencies": { "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -2663,13 +3476,13 @@ } }, "table": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.0.tgz", - "integrity": "sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, "requires": { - "ajv": "^6.9.1", - "lodash": "^4.17.11", + "ajv": "^6.10.2", + "lodash": "^4.17.14", "slice-ansi": "^2.1.0", "string-width": "^3.0.0" }, @@ -2680,6 +3493,12 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -2702,6 +3521,20 @@ } } }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -2735,18 +3568,34 @@ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", "dev": true }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -2778,7 +3627,6 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -2786,19 +3634,25 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" } }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -2810,31 +3664,47 @@ } }, "vendors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", - "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", "dev": true }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "requires": { "isexe": "^2.0.0" } }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { "version": "1.0.3", @@ -2844,6 +3714,20 @@ "requires": { "mkdirp": "^0.5.1" } + }, + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", + "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", + "dev": true, + "requires": { + "@babel/runtime-corejs3": "^7.8.3" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" } } } diff --git a/package.json b/package.json index e7462d5ea..cd75ac714 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,12 @@ { "name": "beginner-javascript", "version": "1.0.0", - "description": "👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀", + "description": "👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀👀", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "lint": "eslint .", + "lint:fix": "eslint . --fix" }, "repository": { "type": "git", @@ -20,15 +22,20 @@ "babel-eslint": "^9.0.0", "cssnano": "^4.1.10", "eslint": "^5.16.0", - "eslint-config-airbnb": "^17.1.0", + "eslint-config-airbnb": "^17.1.1", "eslint-config-prettier": "^4.3.0", "eslint-config-wesbos": "0.0.19", "eslint-plugin-html": "^5.0.5", - "eslint-plugin-import": "^2.17.3", - "eslint-plugin-jsx-a11y": "^6.2.1", - "eslint-plugin-prettier": "^3.1.0", - "eslint-plugin-react": "^7.13.0", - "eslint-plugin-react-hooks": "^1.6.0", - "prettier": "^1.17.1" + "eslint-plugin-import": "^2.20.2", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-prettier": "^3.1.2", + "eslint-plugin-react": "^7.19.0", + "eslint-plugin-react-hooks": "^1.7.0", + "prettier": "^1.19.1" + }, + "dependencies": { + "bindings": "^1.5.0", + "deasync": "^0.1.19", + "node-gyp": "^6.1.0" } } diff --git a/playground/apis-FINISHED.html b/playground/apis-FINISHED.html index 01fcd0ef8..5b7a16898 100644 --- a/playground/apis-FINISHED.html +++ b/playground/apis-FINISHED.html @@ -12,6 +12,11 @@

    diff --git a/playground/arrays.html b/playground/arrays.html index 8c704e6c5..063d3d4d7 100644 --- a/playground/arrays.html +++ b/playground/arrays.html @@ -26,36 +26,55 @@ const names3 = ['poppy', ...names]; console.log(names3); - const bikes = ['bianchi', 'miele', 'panasonic', 'miyata']; - const newBikes = [ - ...bikes.slice(0, 2), - 'benotto', - ...bikes.slice(2) - ]; + // Mutation Methods - DO CHANGE THE ORIGINAL DATA + const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]; + // anytime you want to use a mutation method and NOT mutate the orignal array + // we need to take a copy of the array + const numbersReversed = [...numbers].reverse(); + console.log(numbersReversed); + // numbers.reverse(); + console.log(numbers); + // Immutable - THEY DO NOT CHANGE THE ORIGINAL DATA + const pizzaSlice = numbers.slice(2, 4); + console.log(pizzaSlice); + console.log(numbers); - const newBikes2 = [ - ...newBikes.slice(0, 3), - ...newBikes.slice(4) - ]; + const bikes = ['bianchi', 'miele', 'panasonic', 'miyata']; + // No method exists tu insert at a specific place (index) + const newBikes = [...bikes.slice(0, 2), 'benotto', ...bikes.slice(2)]; + console.log(newBikes); + // remove panasonic from array + const newBikes2 = [...newBikes.slice(0, 3), ...newBikes.slice(4)]; console.log(newBikes2); - // - const comments = [ - { text: 'Cool Beans', id: 123 }, - { text: 'Love this', id: 133 }, - { text: 'Neato', id: 233 }, - { text: 'good bikes', id: 333 }, - { text: 'so good', id: 433 }, + // real life example on for when you need to delete something from an array + const comments = [{ + text: 'cool', + id: 4, + }, + { + text: 'pas cool', + id: 2, + }, + { + text: 'dla marte', + id: 6, + }, + { + text: 'je sais pas', + id: 8, + }, + { + text: 'im a troll', + id: 10, + }, ]; function deleteComment(id, comments) { // first find the index of the item in the array const commentIndex = comments.findIndex(comment => comment.id === id); // make a new array without that item in it - return [ - ...comments.slice(0, commentIndex), - ...comments.slice(commentIndex + 1), - ]; + return [...comments.slice(0, commentIndex), ...comments.slice(commentIndex + 1)]; // return our new array } @@ -64,29 +83,9 @@ // get everything up to kait index ...names.slice(0, kaitIndex), // everything after Kait index - ...names.slice(kaitIndex + 1) + ...names.slice(kaitIndex + 1), ]; console.log(newNamesWithOutKait); - - // const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]; - - // console.log(numbers); - // numbers.splice(3, 2); - // console.log(numbers); - - // // Mutation Methods - DO CHANGE THE ORIGINAL DATA - // const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]; - // // anytime you want to use a mutation method and NOT mutate the orignal array - // // we need to take a copy of the array - // const numbersReversed = [...numbers].reverse(); - // console.log(numbersReversed); - // // numbers.reverse(); - // console.log(numbers); - // // Immutable - THEY DO NOT CHANGE THE ORIGINAL DATA - // const pizzaSlice = numbers.slice(2, 4); - // console.log(pizzaSlice); - // console.log(numbers); - diff --git a/playground/async-await-error-handling-FINISHED.html b/playground/async-await-error-handling-FINISHED.html index 1410f50c1..51faff0e0 100644 --- a/playground/async-await-error-handling-FINISHED.html +++ b/playground/async-await-error-handling-FINISHED.html @@ -11,9 +11,9 @@ diff --git a/playground/async-await.html b/playground/async-await.html index 27c7c051b..2a4e0b5da 100644 --- a/playground/async-await.html +++ b/playground/async-await.html @@ -11,72 +11,64 @@ diff --git a/playground/bind-call-apply.html b/playground/bind-call-apply.html index 5a54be948..4faf5453a 100644 --- a/playground/bind-call-apply.html +++ b/playground/bind-call-apply.html @@ -16,17 +16,21 @@ diff --git a/playground/closures.html b/playground/closures.html index a51c038ce..633dca2e8 100644 --- a/playground/closures.html +++ b/playground/closures.html @@ -10,24 +10,27 @@ diff --git a/playground/custom-functions/cf.js b/playground/custom-functions/cf.js index a465ae844..6fe369439 100644 --- a/playground/custom-functions/cf.js +++ b/playground/custom-functions/cf.js @@ -27,5 +27,6 @@ function yell(name = 'Silly Goose') { return `HEY ${name.toUpperCase()}`; } +// le undefined permet le fallback vers le default params const myBill4 = calculateBill(100, undefined, 0.2); console.log(myBill4); diff --git a/playground/custom-functions/index.html b/playground/custom-functions/index.html index 28cb63763..ecc52bfdf 100644 --- a/playground/custom-functions/index.html +++ b/playground/custom-functions/index.html @@ -11,6 +11,7 @@ + diff --git a/playground/custom-functions/ways-to-make-a-function.js b/playground/custom-functions/ways-to-make-a-function.js index f189e137c..3bc64f4e2 100644 --- a/playground/custom-functions/ways-to-make-a-function.js +++ b/playground/custom-functions/ways-to-make-a-function.js @@ -1,29 +1,29 @@ -// function doctorize(firstName) { -// return `Dr. ${firstName}`; -// } +//! classic function declaration +function doctorize(firstName) { + return `Dr. ${firstName}`; +} -// Anon Function +// Anonymous Function ==> do not work here // function (firstName) { // return `Dr. ${firstName}`; // } -// Function Expression -// const doctorize = function(firstName) { -// return `Dr. ${firstName}`; -// }; +//! Function Expression +// store (anonymous) function has a value in a variable +const doctorize2 = function(firstName) { + return `Dr. ${firstName}`; +}; -/* eslint-disable */ +//! arrow function const inchToCM = inches => inches * 2.54; // function add(a, b = 3) { // const total = a + b; // return total; // } +const add = (a, b = 3) => a + b; -// const add = (a, b = 3) => a + b; - -// returning an object - +//! returning an object // function makeABaby(first, last) { // const baby = { // name: `${first} ${last}`, @@ -31,22 +31,21 @@ const inchToCM = inches => inches * 2.54; // } // return baby; // } - const makeABaby = (first, last) => ({ name: `${first} ${last}`, age: 0 }); - -// IIFE -// Immediately Invoked Function Expression +//! IIFE +//! Immediately Invoked Function Expression (function(age) { return `You are cool and age ${age}`; })(10); -// Methods!!! +//! Methods!!! +//* function that lives inside an an object const wes = { name: 'Westopher Bos', // Method! - sayHi: function() { + sayHi() { console.log(`Hey ${this.name}`); return 'Hey Wes'; }, @@ -57,10 +56,10 @@ const wes = { // Arrow function wisperHi: () => { console.log('hii wesss im a mouse'); - } -} + }, +}; -// Callback Functions +//! Callback Functions // Click Callback const button = document.querySelector('.clickMe'); diff --git a/playground/event-loop-FINISHED.html b/playground/event-loop-FINISHED.html index 67a653efb..9afa63bd2 100644 --- a/playground/event-loop-FINISHED.html +++ b/playground/event-loop-FINISHED.html @@ -38,38 +38,41 @@
    Click Me
    diff --git a/playground/hoisting.js b/playground/hoisting.js index 2f058bf23..f8a5c0b4b 100644 --- a/playground/hoisting.js +++ b/playground/hoisting.js @@ -1,5 +1,10 @@ -/* esline-disable */ +/* eslint-disable */ + +// !! Hoisting permits to access function/variable before they are created + +// !! variable Hoisting ==> let age; +// JS will create above line as variable declaration console.log(age); age = 10; @@ -12,4 +17,5 @@ function sayHi() { console.log(add(10, 2)); } +// will not be hoist. only classing function declaration. const add = (a, b) => a + b; diff --git a/playground/if-statements.html b/playground/if-statements.html index ae5d6eee0..206a9ed5b 100644 --- a/playground/if-statements.html +++ b/playground/if-statements.html @@ -9,28 +9,95 @@ - * empty array - * empty object +

    Truthy values

    * 1 * -10 * full string * a string of "0" + * empty array + * empty object + +

    Falsy values

    * 0 + * undefined variable * Variable set to null * a variable set to `"hello" - 10` NaN * empty string diff --git a/playground/intervals.html b/playground/intervals.html index 98c6be724..2522b6736 100644 --- a/playground/intervals.html +++ b/playground/intervals.html @@ -1,58 +1,44 @@ +/* eslint-disable quotes */ - - - - - Intervals and Timers - - - - - - - + + + + Intervals and Timers + + + + + + diff --git a/playground/maps.html b/playground/maps.html index 6473c8cac..892056439 100644 --- a/playground/maps.html +++ b/playground/maps.html @@ -38,6 +38,9 @@ } // .has() // .delete() + + // Use map if you need to maintain order of the items/entries + // MAP is only to store data ==> no function/method inside diff --git a/playground/new-this.html b/playground/new-this.html index 049a71b31..7befe3d0a 100644 --- a/playground/new-this.html +++ b/playground/new-this.html @@ -12,39 +12,32 @@ diff --git a/playground/objects.html b/playground/objects.html index 4b9a9c681..0be49978b 100644 --- a/playground/objects.html +++ b/playground/objects.html @@ -2,116 +2,67 @@ - - + + - + - + diff --git a/playground/promise-chain-alex.html b/playground/promise-chain-alex.html new file mode 100644 index 000000000..d837273ad --- /dev/null +++ b/playground/promise-chain-alex.html @@ -0,0 +1,135 @@ + + + + + + + Event Loop + + + + + +
    Click Me
    + + + + diff --git a/playground/promises-FINISHED.html b/playground/promises-FINISHED.html index 83596c786..2193f97f8 100644 --- a/playground/promises-FINISHED.html +++ b/playground/promises-FINISHED.html @@ -1,94 +1,100 @@ - - - - - Promises - - - - - - - + + diff --git a/playground/scope.js b/playground/scope.js index c59d64532..b20a0c2a8 100644 --- a/playground/scope.js +++ b/playground/scope.js @@ -1,50 +1,52 @@ -// const age = 100; +// ?? var is global variable function scoped ==> Available everywhere +// !! let & const are block scoped ==> Available in the scope (block or function) -// function go() { -// const myAge = 200; -// const hair = 'blonde'; -// console.log(age); -// console.log(myAge); -// console.log(hair); -// } +const age = 100; -// go(); -/* eslint-disable*/ +function go() { + const myAge = 200; + const hair = 'blonde'; + console.log(age); + console.log(myAge); + console.log(hair); +} -// function isCool(name) { -// if (name === 'wes') { -// var cool = true; -// } -// console.log(cool); -// return cool; -// } +go(); -// for(let i = 0; i < 10; i++) { -// console.log(i); -// } +function isCool(name) { + if (name === 'wes') { + var cool = true; + } + console.log(cool); + return cool; +} +for (let i = 0; i < 10; i++) { + console.log(i); +} +// scope look up ==> lexically. It cares where it's defined NOT where it's run const dog = 'snickers'; function logDog(dog) { console.log(dog); } -function go() { +function go2() { const dog = 'sunny'; logDog('sunny'); } -go(); +go2(); function yell() { - console.log(name.toUpperCase()) + console.log(name.toUpperCase()); } function sayHi(name) { - yell(); } - yell(); + +// !! Function are also function scoped. diff --git a/playground/switch-statements.html b/playground/switch-statements.html index 8dbe27a33..7d78209d6 100644 --- a/playground/switch-statements.html +++ b/playground/switch-statements.html @@ -8,10 +8,69 @@ - + + + Turt + diff --git a/playground/types.html b/playground/types.html index 4c74a844e..edb5cf0d3 100644 --- a/playground/types.html +++ b/playground/types.html @@ -4,11 +4,12 @@ - + Types PLayground +

    Types PLayground