;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Chefão da Amazon teve seu celular hackeado por príncipe saudita, diz jornal

Jeff Bezos - Abhishek N./Reuters
Jeff Bezos Imagem: Abhishek N./Reuters

De Tilt

21/01/2020 18h49

Chefão da Amazon, o bilionário Jeff Bezos teve seu celular hackeado em 2018 após receber uma mensagem no WhatApp da conta do príncipe saudita Mohammad bin Salman. As informações são do The Guardian.

Segundo análise forense digital, a mensagem criptografada do número pessoal de Salman continha um vírus que se infiltrou no celular do homem mais rico do mundo e dono do The Washington Post.

A dupla costumava trocar mensagens amigáveis pelo aplicativo, até que no dia 1º de maio de 2018 o arquivo foi enviado pela conta do herdeiro saudita.

Uma grande quantidade de dados foi extraída do telefone de Bezos em poucas horas, segundo uma pessoa familiarizada com o assunto disse ao Guardian. O jornal diz não ter conhecimento do que foi retirado do telefone ou como foi usado.

O jornal aponta também que a revelação que o futuro rei da Arábia Saudita teria um envolvimento pessoal ao investigar o fundador da Amazon pode balançar Wall Street e o Vale do Silício.

O que também será questionado, a partir de agora, é a forma como o tabloide norte-americano National Enquirer conseguiu informações íntimas sobre a vida de Bezos nove meses após o suposto hackeamento.

O príncipe saudita Mohammed bin Salman - AFP PHOTO / SAUDI ROYAL PALACE / BANDAR AL-JALOUD - AFP PHOTO / SAUDI ROYAL PALACE / BANDAR AL-JALOUD
O príncipe saudita Mohammed bin Salman
Imagem: AFP PHOTO / SAUDI ROYAL PALACE / BANDAR AL-JALOUD

Em outubro do mesmo ano, o jornalista do Washington Post e dissidente saudita Jamal Khashoggi, foi assassinado.

A Arábia Saudita já havia negado ter tentando roubar informações do telefone de Bezos e insistiu que o assassinato de Khashoggi foi o resultado de uma "operação desonesta".

Em dezembro do ano ado, um tribunal saudita condenou oito pessoas envolvidas no assassinato após um julgamento secreto que foi criticado por especialistas em direitos humanos.

Especialistas em análise forense digital começaram a examinar o celular do bilionário norte-americano após ele ter sua vida pessoal escancarada pelo National Enquirer — que incluía um relacionamento fora do casamento

Enquanto o National Enquirer afirmava que o irmão da amante do CEO que vazou o conteúdo para o tabloide, a investigação bancada por Bezos diz ter "grande confiança", que sauditas tiveram o ao celular do executivo e obtiveram informações privadas.