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

'Respeito e submissão', diz Maíra Cardi em declaração para Thiago Nigro

Maíra Cardi e Thiago Nigro - Reprodução/@mairacardi
Maíra Cardi e Thiago Nigro Imagem: Reprodução/@mairacardi

Colaboração para Splash, em São Paulo

07/03/2023 17h55

A empresária Maíra Cardi, 39, se declarou para seu novo namorado, Thiago Nigro, o Primo Rico, nas redes sociais. Ela escreveu um textão se derretendo pelo empresário.

"Estar com ele é desafiador! Minha vó sempre me disse: 'A Maíra precisa encontrar um homem que tenha a masculinidade superior à dela!' A mesma vó que ou a vida me dizendo: 'Homem não presta, não acredite neles'. Contraditório, né?", iniciou ela.

"Tive muitos motivos para deixar de respeitar os homens, fui abusada por estranhos, por conhecidos, apanhei, fui estuprada, fui traída, enganada, roubada, culpada... Quem foi ferido sempre fere", continuou.

"Deixar de ser o homem da minha própria vida é assustador, é doloroso. Mas dois homens não ocupam o mesmo espaço, e pela primeira vez na minha vida eu entendo a palavra respeito e submissão. Para entender qualquer coisa, o primeiro o é querer: submissão e respeito aos homens nada tem a ver com disputar, força ou espaço, mas eu estava machucada demais para entender isso", disse ela.

"O espaço de uma mulher, homem nenhum ocupa, mas o espaço de um homem eu não quero ocupar. Abro a porta da minha vida para você, não para entrar, mas para ocupar esse lugar que sempre foi seu. Espaço que ocupei sozinha, sentada com medo e quietinha no porão das minhas lembranças, e sem nem saber onde estavam as chaves. Permaneci paralisada e assustada com os ruídos do lado de fora", desabafou.

"No fundo dos seus olhos coloridos eu me encontrei, olhar que enxerga a minha alma. Eu encontrei o único homem que eu serei e desejo ser submissa todos os dias de minha vida, daqui em diante. Queria que meu pai estivesse vivo para assistir a esse milagre, obrigada por me buscar onde eu nem sabia que estava. Amo você", finalizou Maíra.

 Maíra Cardi se declara para Thiago Nigro - Reprodução/Instagram - Reprodução/Instagram
Imagem: Reprodução/Instagram