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

Decisão da CCJ do Senado sobre armas causa reações distintas

17.abr.2007 - CCJ do Senado aprovou ontem projetos que anulam o decreto do presidente - AP Photo/Don Petersen
17.abr.2007 - CCJ do Senado aprovou ontem projetos que anulam o decreto do presidente Imagem: AP Photo/Don Petersen

Felipe Resk

Em São Paulo

13/06/2019 08h09

A Comissão de Constituição e Justiça (CCJ) do Senado aprovou ontem por 15 votos a 9, projetos que anulam o decreto do presidente Jair Bolsonaro que flexibilizou o porte de armas no País. Os projetos ainda precisam ar pelo plenário da Casa, o que só deve ocorrer no dia 18, e pela Câmara dos Deputados.

A decisão dividiu especialistas. Na visão do promotor do Ministério Público de São Paulo (MPE-SP) Felipe Zilberman, a comissão foi "corretíssima". Segundo afirma, o decreto seria inconstitucional porque "viola" o Estatuto do Desarmamento, lei federal de 2004, que não pode ser alterada dessa forma.

"Se o presidente quer cumprir uma promessa de campanha, o que não há problema, tem de submeter essas mudanças ao Congresso. Só assim é possível revogar a lei", diz. "O que não é possível é, por uma canetada, fazer do texto legal uma tábula rasa."

Para Zilberman, a decisão da CCJ deve ser confirmada nas próximas votações no Senado e na Câmara.

"Ainda que o texto seja aprovado politicamente, uma possibilidade remota, o decreto não resiste à análise de inconstitucionalidade do Judiciário", projeta.

Já o presidente do Movimento Viva Brasil e líder pró-armas, Bene Barbosa, afirma que a decisão da CCJ foi "ideológica" e "partidária".

"Embora o alegado seja que o decreto extrapolou os limites e entrou na seara do Legislativo, em nenhum momento nenhum dos senadores conseguiu mostrar, tecnicamente, onde aconteceu isso."

Para ele, o decreto não apresentaria "problemas legislativos ou constitucionais".

"Todos os decretos anteriores, dos últimos 30 anos, que eram sempre a favor de mais restrições a armas, jamais tiveram esse problema. O debate tem sido ideológico, entre quem acredita que o Estado tem o monopólio da força e quem acredita que os cidadãos têm direito à legítima defesa, no que me incluo."

Critérios

"O decreto deu objetividade a critérios, que antes eram subjetivos, para que o cidadão possa ter a posse de arma, se quiser", afirma Raquel Kobashi Gallinati, presidente do Sindicato dos Delegados de Polícia do Estado de São Paulo (Sindpesp).

No entanto, a votação da CCJ indica, para ela, que a questão do armamento ainda precisa de uma "discussão mais madura".

"Se há rejeição é porque a opinião da sociedade sobre o próprio decreto ainda não está solidificada, apesar de o presidente ter sido eleito com essa proposta."

Coordenador do estudo Mapa da Violência, o sociólogo Julio Jacobo Waiselfisz afirma que a proposta vai "na contramão da história".

"Não há prova material mostrando que armar pacifica a população. Todas as pesquisas sérias mostram exatamente o contrário: quanto mais armas maior a quantidade de homicídios e de mortes", diz.

Em nota, o Instituto Sou da Paz comemorou a "vitória parcial" na CCJ e disse que a diminuição da circulação de armas no Brasil, desde o Estatuto do Desarmamento, está relacionada à redução de índices de assassinato.

"Antes, o crescimento anual dos homicídios era de 8,1% - índice que foi reduzido para 2,2%." As informações são do jornal O Estado de S. Paulo.

CCJ aprova projeto que anula decreto sobre flexibilização do porte de armas

redetv