;(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

Esse conteúdo é antigo

EUA: Tiroteios em spas de massagem deixam oito mortos na Geórgia

Tiroteios deixam oito pessoas mortas na Geórgia - Cherokee Sheriff"s Office/ AFP/ Getty Images
Tiroteios deixam oito pessoas mortas na Geórgia Imagem: Cherokee Sheriff's Office/ AFP/ Getty Images

Do UOL, em São Paulo*

16/03/2021 22h06Atualizada em 17/03/2021 06h48

Oito pessoas, a maioria mulheres de origem asiática, morreram na terça-feira em tiroteios em três spas de massagem da Geórgia, Estados Unidos, e um homem foi detido sob a suspeita de ter planejado os ataques.

A polícia não determinou se os tiroteios tiveram motivação racista, mas aconteceram no momento em que muitos americanos de origem asiática estão com medo após o aumento dos crimes de ódio contra sua comunidade.

Muitos temem ataques a negócios dirigidos por asiáticos.

Quatro vítimas morreram no spa Young's Asian Massage perto de Acworth, subúrbio de Atlanta, capital da Geórgia.

O capitão Jay Baker, da polícia do condado de Cherokee, informou ao jornal Atlanta Journal-Constitution que as vítimas eram duas asiáticas e uma mulher e um homem brancos. Um latino foi ferido.

O departamento de polícia de Atlanta confirmou que quatro mulheres de origem asiática foram encontradas mortas em outros dois spas na zona nordeste de Atlanta.

Com as imagens registradas pelas câmeras de segurança, as autoridades identificaram Robert Aaron Long como suspeito de todos os ataques.

"É muito provável que nosso suspeito seja o mesmo que o do condado Cherokee, que está sob custódia", afirmou à AFP o porta-voz da polícia de Atlanta, John Chafee.

Long foi detido após uma "breve perseguição" a 240 quilômetros de Atlanta, segundo um comunicado do Departamento de Segurança da Geórgia.

Ao descrever a cena do crime no nordeste de Atlanta, a polícia informou que os "agentes encontraram três mulheres mortas a tiros".

No local, os policiais foram alertados sobre tiros ouvidos do outro lado da rua, onde encontraram a quarta vítima.

O FBI está colaborando com a investigação.

Os tiroteios aconteceram após denúncias do aumento dos ataques contra asiático-americanos, especialmente idosos, atribuídos à pandemia de covid-19, doença que foi chamada de "vírus chinês" pelo ex-presidente Donald Trump, entre outros.

O departamento de contraterrorismo da polícia de Nova York informou que está "monitorando os ataques a tiros contra asiático-americanos na Geórgia". Também informou ter mobilizado agentes nas grandes comunidades asiáticas da cidade por "excesso de precaução".

A motivação racista pode ser difícil de determinar, mas uma pesquisa do Centro de Estudos do Ódio e Extremismo da Universidade CSU San Bernardino mostrou que os crimes de ódio reportados contra asiáticos quase triplicaram, de 49 a 122 casos, no último ano, em 16 grandes cidades americanas - incluindo Nova York e Los Angeles. O resultado aconteceu apesar de uma queda de 7% na taxa global de crimes de ódio.

Na Geórgia vivem quase 500.000 pessoas de origem asiática, segundo o Asian American Advocacy Fund.

* Com informações da AFP