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

Carla Araújo

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Defesa vê dificuldades do TSE e quer mais militares em inspeção nas urnas

Ministro da Defesa, general Paulo Sérgio Nogueira  - Roque de Sá/Agência Senado
Ministro da Defesa, general Paulo Sérgio Nogueira Imagem: Roque de Sá/Agência Senado

Do UOL, em Brasília

11/08/2022 09h44Atualizada em 11/08/2022 10h33

Receba os novos posts desta coluna no seu e-mail

Email inválido

O Ministério da Defesa fez uma nova ofensiva no TSE (Tribunal Superior Eleitoral) para inspecionar o sistema das urnas eletrônicas. Além de pedir mais prazo para os trabalhos, o ministro Paulo Sérgio Nogueira enviou um ofício ao presidente da Corte, ministro Edson Fachin, indicando mais nove técnicos para fiscalizarem o chamado código-fonte, que traz a programação dos equipamentos.

A movimentação ocorreu no mesmo dia em que o Exército se recusou a indicar um novo militar para substituir o coronel Ricardo Sant'Anna, excluído da comissão de Fiscalização do Sistema Eletrônico de Votação após divulgação de notícias falsas.

"Diante da necessidade de dispor de conhecimentos específicos em linguagem de programação C++ e Java para realizar a inspeção dos códigos-fonte do sistema de votação eletrônica, informo que os militares, a seguir, foram indicados pelas respectivas Forças Armadas para, até o dia 19 de agosto de 2022, contribuir com o trabalho de inspeção dos códigos-fonte", afirma o ministro no documento.

Segundo fontes da pasta, os novos nomes estão sendo apresentados para um trabalho temporário que exigiria mais mão de obra técnica, já que são milhares de linhas de programação. O argumento da Defesa é que o TSE estaria restringindo o trabalho técnico. Outra reclamação da pasta é que os militares não poderiam utilizar ferramentas que agilizariam o serviço.

De acordo com interlocutores de Paulo Sérgio, a indicação feita agora não teria relação direta com a exclusão do coronel Ricardo Sant'Anna. A avaliação feita na Defesa é que o Exército não indicou substituto direto do coronel para "não endossar uma ação intempestiva do TSE, sem a mínima investigação formal".

No início do mês, Paulo Sérgio havia solicitado de forma "urgentíssima" o o ao código-fonte dos sistemas eleitorais usados nas urnas eletrônicas e pedido que a disponibilização dos dados seja feita até 12 de agosto.

A solicitação foi feita dez meses depois de o TSE ter aberto o código-fonte das urnas às entidades fiscalizadoras, como as Forças Armadas.

No ofício datado de 10 de agosto, Paulo Sérgio consulta a possibilidade de Fachin "conceder, aos militares indicados, o à sala de inspeção dos códigos-fonte, até a data supracitada".

O ministro, que tem mostrado alinhamento com o presidente Jair Bolsonaro (PL) em seus sucessivos ataques infundados às urnas eletrônicas, diz ainda que renova "a permanente interlocução deste Ministério com essa Corte Eleitoral, tendo como maior propósito contribuir para fortalecer o processo eleitoral brasileiro".

Veja a lista de militares indicados:

- Major DIEGO BONATO LANGER (Força Aérea);
- Capitão DAVISON SILVA SANTOS (Força Aérea);
- Primeiro-Tenente (EN) FERNANDO MASCAGNA BITTENCOURT LIMA (Marinha);
- Primeiro-Tenente (EN) RAFAEL COFFI TONON (Marinha);
- Primeiro-Tenente (T) GABRIEL HELENO GONÇALVES DA SILVA (Marinha);
- Primeiro-Tenente LINCOLN DE QUEIROZ VIEIRA (Exército);
- Primeiro-Tenente GABRIEL BOZZA (Exército);
- Primeiro-Tenente YURI RODRIGUES FIALHO (Exército); e
- Primeiro-Sargento DAVID DE SOUZA FRANÇA (Força Aérea).