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

Operação Lava Jato

Fachin aceita ação de Lula que aponta canal informal da Lava Jato na Suíça

O ex-presidente Luiz Inácio Lula da Silva (PT) - Victor Moriyama/Getty Images
O ex-presidente Luiz Inácio Lula da Silva (PT) Imagem: Victor Moriyama/Getty Images

Gabriel Sabóia e Jamil Chade

Do UOL, no Rio e em Genebra

25/02/2021 16h13

O ministro do STF (Supremo Tribunal Federal) Edson Fachin concedeu hoje habeas corpus à defesa do ex-presidente Luiz lnácio Lula da Silva (PT) em ação em que ela contesta o uso pela Lava Jato de provas oriundas de supostas violações de cooperação internacional com a Suíça.

A decisão do ministro do STF determina que o juiz Luiz Antônio Bonat, que substituiu Sergio Moro na 13ª Vara Federal de Curitiba, julgue a validade de provas usadas na acusação sobre suposta doação pela Odebrecht de imóvel para o Instituto Lula, como forma de propina. Com a decisão, a ação penal fica suspensa até que se decida sobre a licitude do uso das provas. Fachin não analisou contudo o conteúdo da perícia de Lula.

Na ação, os advogados de Lula também argumentaram que houve adulteração das provas colhidas pelo MPF (Ministério Público Federal). A alegação está baseada em perícia do material obtido por meio de sistemas da Odebrecht que operavam contabilidade paralela da empreiteira, e não nas conversas privadas obtidas pela Operação Spoofing após ataque hacker.

Segundo a defesa de Lula, o MPF usou no processo do Instituto Lula informações dos sistemas Drousys e MyWebDay —usados pela Odebrecht para controlar pagamentos de propina a autoridades e políticos— que eram mantidos na Suíça.

Mas, segundo o advogado Cristiano Zanin Martins, a Lava Jato teria tido o a esses sistemas dez meses antes do acordo de leniência da Odebrecht —fechado com o MPF, Suíça e EUA em dezembro de 2016. "O material é usado pelo MPF na acusação contra Lula para tentar dizer que um imóvel que teria sido comprado para o Instituto Lula —mas que nunca foi da entidade e tampouco ela teve a posse— teria saído desse sistema paralelo."

Reportagem do UOL de setembro de 2019, com base em mensagens entregues por fonte anônima ao The Intercept Brasil, mostra que procuradores obtiveram informações sigilosas da contabilidade paralela da empreiteira quase um ano antes de terem o formal aos dados.

A defesa de Lula também alega que teria havido "quebra na cadeia de custódia", ou seja, as provas supostamente obtidas ilegalmente não teriam sido preservadas e podem ter sido adulteradas, o que tiraria o seu valor.

Reportagens do UOL mostraram que a Lava Jato trocou informações com autoridades suíças fora dos canais oficiais de cooperação.

A reportagem aguarda posicionamento do MPF-PR (Ministério Público Federal do Paraná) sobre a decisão do ministro do STF. Ao UOL, a Lava Jato já sustentou que "a troca de informações de inteligência e a cooperação direta entre autoridades estrangeiras é absolutamente legal e constitui boa prática internacional".

Operação Lava Jato