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

Com Witzel, RJ tem recorde de mortes em confrontos com a polícia: 5 por dia

Polícia Civil do Rio faz simulação no Fallet, onde operação da PM deixou 15 mortos em fevereiro - Thathiana Gurgel / DPRJ
Polícia Civil do Rio faz simulação no Fallet, onde operação da PM deixou 15 mortos em fevereiro Imagem: Thathiana Gurgel / DPRJ

Igor Mello

Do UOL, no Rio

18/06/2019 19h43

Os cinco primeiros meses de 2019 no Rio de Janeiro, sob governo de Wilson Witzel (PSC-RJ), tiveram recorde de mortes em confrontos com a polícia, conforme mostra cruzamento do UOL com base em dados divulgados hoje pelo ISP (Instituto de Segurança Pública) do Rio.

Entre janeiro e maio, as forças de segurança do estado foram responsáveis por 731 mortes -- ou quase 5 por dia. Em relação ao ano ado, houve crescimento de 12% dessas ocorrências, levando-se em conta os mesmos meses.

Até então, o período janeiro-maio com mais homicídios por intervenção policial havia ocorrido em 2008, com 652 mortes.

Desde a campanha eleitoral, Witzel defende o uso de força letal contra suspeitos. O ex-juiz federal já defendeu o "abate" de criminosos flagrados com armas de uso , como fuzil.

Na última sexta-feira, ele defendeu bombardear a Cidade de Deus, comunidade com cerca de 40 mil moradores, onde criminosos armados foram filmados por um helicóptero da TV Globo.

"Se fosse com autorização da ONU, em outros lugares do mundo, nós teríamos autorização para mandar um míssil naquele local e explodir aquelas pessoas", disse durante discurso na Câmara dos Vereadores de Nova Iguaçu, na Baixada Fluminense. Por conta dessas declarações, o PSOL impetrou ontem uma ação no STF contra Witzel.

Segundo mês mais violento

Em maio, foram registradas 171 mortes em confronto com as polícias -- o segundo mês mais violento desde 1998, quando esses dados começaram a ser compilados. O mês sozinho supera quatro semestres inteiros quanto a esse tipo de morte.

Também houve aumento em roubos de rua -- que engloba roubos a transeuntes, a coletivos e de celulares. Foram 56.044 crimes desse tipo entre janeiro e maio, um crescimento de 1% em relação aos cinco primeiros meses de 2018, e também um recorde.

Por outro lado, houve forte redução nos homicídios. Foram registrados 1753 assassinatos entre janeiro e maio deste ano -- queda de 24,3% em relação ao mesmo período de 2018. O índice é o menor registrado desde 1991.

Os roubos de veículo também tiveram queda nesse início de ano. Entre janeiro e maio, foram registrados 18.519 crimes deste tipo -- uma redução de 24,3%. Houve ainda queda de 21% nos roubos de carga em comparação aos cinco primeiros meses de 2018.