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

Ministro: Europa mais perto da guerra do que em qualquer momento em 70 anos

James Heappey, ministro das Forças Armadas do Reino Unido - Reprodução/Twitter/Exército Britânico
James Heappey, ministro das Forças Armadas do Reino Unido Imagem: Reprodução/Twitter/Exército Britânico

Do UOL, em São Paulo

14/02/2022 09h37

A Europa está mais perto da guerra do que em qualquer outro momento nos últimos 70 anos, disse James Heappey, ministro das Forças Armadas do Reino Unido, em meio ao clima de tensão internacional em razão da possibilidade de a Rússia invadir a Ucrânia.

A declaração de Heappey foi dada em entrevista ao programa BBC Radio 4 Today, enquanto soldados russos se acumulam nas fronteiras da Ucrânia e líderes ocidentais alertam que uma invasão pode ocorrer em breve e pedem que seus cidadãos deixem o país.

"Há 130 mil soldados russos nas fronteiras da Ucrânia, milhares mais em navios no Mar Negro e no Mar de Azov", listou ele.

Líderes ocidentais tentam negociar soluções diplomáticas depois que a inteligência dos EUA disse que um ataque poderia ser iminente.

O chanceler alemão, Olaf Scholz, viaja a Kiev hoje para conversar com autoridades ucranianas e depois vai a Moscou. O primeiro-ministro britânico, Boris Johnson, também fará um novo esforço diplomático esta semana para desativar a crise, informou seu gabinete ontem.

Johnson manterá conversas com outros líderes e está interessado especialmente em dialogar com os países nórdicos e bálticos, segundo comunicado de seu gabinete.

Heappey disse que há "urgência real" nas negociações em andamento. "É por isso que este é um momento muito sério para o mundo inteiro, realmente, se unir e enviar uma mensagem à Rússia de que esse é um comportamento que não será aceito e que apoiamos a Ucrânia, e que as sanções financeiras se ele cruzasse a fronteira seriam absolutamente profundas."

EUA dizem que Rússia pode invadir 'a qualquer momento'

O conselheiro de Segurança Nacional da Casa Branca, Jake Sullivan, disse ontem, em entrevista à CNN, que os Estados Unidos acreditam que a Rússia pode invadir a Ucrânia a qualquer momento, mas ainda espera que soluções diplomáticas sejam encontradas.

Sullivan disse que as forças russas estão em um local onde uma invasão pode ocorrer antes do final dos Jogos Olímpicos de Inverno de Pequim, em 20 de fevereiro.

De acordo com o jornal The New York Times, os EUA obtiveram informações que a Rússia está discutindo a próxima quarta-feira (16) como a data prevista para o início.

Ele disse novamente que uma ação militar russa provavelmente começaria com ataques de mísseis e bombas que poderia matar civis.

O conselheiro disse ainda que os EUA e seus aliados estão preparados para responder "imediata e decisivamente" caso a Rússia avance.

Moscou tem negado reiteradamente que queira atacar a antiga república soviética, mas exige certas garantias na questão da segurança, entre elas que a Otan (Organização do Tratado do Atlântico Norte) não ita entre seus membros a Ucrânia, um ponto inegociável para o Ocidente.

* Com AFP

Ucrânia treina civis para defesa em caso de invasão da Rússia; veja fotos