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

O pior tipo de criminoso é o policial que muda de lado, diz Major Olimpio

Do UOL*, em São Paulo

18/06/2020 15h20

Em uma semana em que ocorreu uma série de casos de violência policial em São Paulo, o senador Major Olimpio (PSL-SP), que é oficial da reserva da Polícia Militar paulista, afirmou em entrevista ao UOL Entrevista que a polícia do estado é bem preparada, no entanto, pontua que o pior tipo de criminoso é o agente que "muda de lado".

"O João Doria (PSDB) sucateou a Policia Civil, mas eles têm um selo muito grande. Agora, o pior tipo de criminoso é o policial que muda de lado. Ele que, com uma farda, uma carteira, um jaleco, barbariza uma cidade, uma região. Nós não somos complacentes com o erro", afirmou em entrevista ao colunista Tales Faria.

Ele citou que "quem prende o mau policial é o bom policial. Nós não aceitamos o mau policial. Quem prendeu o policial nessa morte do menor [Guilherme Silva Guedes, de 15 anos]? A corregedoria, o DHPP (Departamento de Homicídios e de Proteção à Pessoa), da Polícia Civil", disse. Ontem a Corregedoria deteve o sargento Adriano Fernandes de Campos, 41, que teria envolvimento no caso.

"Vivemos nesse limite de vida e morte. Fui policial na zona sul de São Paulo. Sei o que é o tiroteio, gente atirando. Fui na casa de gente que morreu, a mãe, o pai, a mulher, os filhos já sabem que é para avisar que morreu. Não tem lugar do mundo que mata mais polícia que no Brasil", apontou.

Ele citou que há erros pontuais, desde o medo do policial na situação, que, por medo ou imprudência, faz um disparo errado, agride ou sai da linha do policial.

"A PM de SP, que tem 90 mil homens, ela faz 37 milhões de intervenções por ano, desde uma abordagem até uma operação de bloqueio, até um entrevero policial que possam ter pessoas feridas. Nós já enterramos neste ano 12 policias mortos em confronto, o último agora no sábado, no Vale do Paraíba, ferido com um tiro na cabeça", afirmou o major.

"O erro de conduta existe em qualquer lugar do mundo e em qualquer atividade. Em uma turma de médico, você vai ter uma clínica de aborto clandestina. Você tem advogados que são brilhantes até virar pombo-correio de facção criminosa. No serviço policial, eu digo com tristeza que também ocorre."

*Texto de Anaís Motta, Emanuel Colombari e Luís Adorno. Produção de Diego Henrique de Carvalho