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

Polícia do Rio recua e afirma que total de mortos no Alemão é de 17

21.jul.2022 - Policial em incursão no Complexo do Alemão, zona norte do Rio; operação deixou 17 mortos - REGINALDO PIMENTA/AGÊNCIA O DIA/ESTADÃO CONTEÚDO
21.jul.2022 - Policial em incursão no Complexo do Alemão, zona norte do Rio; operação deixou 17 mortos Imagem: REGINALDO PIMENTA/AGÊNCIA O DIA/ESTADÃO CONTEÚDO

Do UOL, no Rio

22/07/2022 19h18

A Polícia Civil do Rio de Janeiro informou na noite de hoje (22) que o número total de mortos na operação policial do Complexo do Alemão de ontem (21) é de 17. Anteriormente, a corporação afirmou que o número de mortos era de 18, incluindo o policial militar Bruno de Paula Costa.

Na retificação enviada à imprensa por volta das 18h, a Polícia Civil afirma que Roberto de Souza Quimer, 38, na verdade, ficou ferido durante a ação e, posteriormente, foi preso em flagrante. Entre os mortos identificados, ao menos quatro não possuem anotações criminais.

Hoje, mais uma mulher morreu no Complexo: Solange Mendes da Silva, 49, foi vítima durante tiroteio. Moradores acusam a Polícia Militar, que nega.

'É o que o governador tem pra gente? Entrar e matar?', diz filha de vítima

A família de Letícia Marinho Salles, 50, fez hoje duras críticas ao governador Cláudio Castro (PL) e à política de segurança do estado do Rio de Janeiro. Ela está entre os 17 mortos da operação policial realizada ontem no Complexo do Alemão.

Um policial totalmente despreparado atirou na minha mãe. É isso que o governador tem pra gente? Entrar e matar? Toda vez ele só vai mandar matar? A polícia do Rio de Janeiro está aprendendo o quê? A matar um trabalhador?"
Jéssica Salles, 33, filha de Letícia

Mãe de dois filhos, Jéssica —que esteve com a irmã na manhã de hoje no IML (Instituto Médico-Legal) para a liberação do corpo— também criticou policiais que invadem casas em comunidades.

As filhas de Letícia descreveram a mãe como uma mulher prestativa e trabalhadora. Há 12 dias, elas enterraram a avó materna e lamentam mais uma perda em um espaço tão curto de tempo.

PM morto deixa dois filhos autistas

Pai de dois filhos autistas, o PM De Paula, como era conhecido pelos colegas, foi atingido ainda no início da incursão, às 5h39 de ontem, de acordo com o registro de ocorrência ao qual o UOL teve o.

Hoje, por volta das 10h30, a esposa do policial, Lidia Costa, esteve no IML (Instituto Médico-Legal) para a liberação do corpo do marido. A mulher definiu o marido como um "apaixonado pelo militarismo".

"Ele nasceu para isso. Era paraquedista, [foi] por sete anos. Foi cabo do Exército, também. Sempre teve paixão pelo militarismo. Excelente policial militar, excelente cabo do Exército. Todo mundo está chocado, a ficha não caiu", disse Lídia.

Após a perda do marido, Lidia lamentou pela criação, agora sozinha, dos filhos.

"Meu filho mais velho é autista severo, meu filho de 8 anos é autista leve. Uma tragédia. Eu peço que as pessoas continuem orando pela família. Peço saúde a Deus e força para poder criar meus dois filhos que vão precisar de mim."