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

Depois de ter acampamento desmontado, '300 do Brasil' invade cúpula do Congresso

Dida Sampaio

Brasília

13/06/2020 17h31

Depois de ter o acampamento desmontado pelo governo do Distrito Federal, um grupo do movimento que se autodenomina '300 do Brasil' invadiu a parte de cima da cúpula do Congresso, pelo lado do Senado Federal, onde é proibido o o ao público. O grupo, liderado pela militante pró-governo Sara Winter, ficou na cúpula por 30 minutos. Depois, ocupou o gramado em frente ao espelho d'água do Congresso.

Os manifestantes bolsonaristas protestaram contra os demais poderes em Brasília. Eles cobram que o presidente Jair Bolsonaro intervenha em defesa do grupo, alvo de investigações do Ministério Público por suspeita de porte de arma.

Pela manhã, agentes da Polícia Militar do Distrito Federal (PMDF), do Corpo de Bombeiros e da Secretaria de Estado de Proteção da Ordem Urbanística (DF Legal) desmontaram e recolheram faixas, material de lona e estrutura metálica do acampamento, antes montado na Esplanada dos Ministérios, e também na Praça dos Três Poderes. A PM usou gás de pimenta para dispersar um pequeno grupo que resistiu à ação.

A militante Sara Winter, ex-assessora de confiança da ministra Damares Alves, da Mulher, da Família e dos Direitos Humanos, protestou no Twitter. "Hoje às 6 (horas) da manhã a PMDF junto à Secretaria de Segurança desmantelou baixo (sic) gás de pimenta e agressões. Barracas, geradores, tendas, tudo tomado à força! A militância bolsonarista foi destruída hoje. Presidente, reaja!"

O grupo bolsonarista e promotores de Justiça travavam uma disputa judicial há mais de um mês pela manutenção ou remoção do acampamento. A Polícia Militar ainda vai divulgar uma nota com informações da operação. A Secretária de Segurança Pública do Distrito Federal afirmou que a ação se deu com base legal.

Os militantes governistas se dirigiram às proximidades do Congresso Nacional, onde encontraram um grupo que se manifestava em favor do impeachment do presidente e em homenagem a profissionais de saúde. Houve provocações.