), so idempotency matters.) // 2) try/catch around defineProperty — some browsers lock HTMLMediaElement.prototype.src as // non-configurable on the parent prototype, shadowing it would throw. // If the override fails, the setAttribute and MutationObserver below still catch most // dynamic src assignments, so the page still works. const videoProto = HTMLVideoElement.prototype; const srcDesc = Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'src') || Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype, 'src'); if (srcDesc) { try { Object.defineProperty(videoProto, 'src', { configurable: true, enumerable: true, set(v) { srcDesc.set.call(this, rewriteUrl(v)); }, get() { return srcDesc.get.call(this); } }); } catch (e) { /* parent src is non-configurable; rely on setAttribute/MutationObserver */ } } // Override source element src const sourceProto = HTMLSourceElement.prototype; const srcDesc2 = Object.getOwnPropertyDescriptor(sourceProto, 'src'); if (srcDesc2) { try { Object.defineProperty(sourceProto, 'src', { configurable: true, enumerable: true, set(v) { srcDesc2.set.call(this, rewriteUrl(v)); }, get() { return srcDesc2.get.call(this); } }); } catch (e) { /* parent src is non-configurable; rely on setAttribute/MutationObserver */ } } // Override img.src property const imgProto = HTMLImageElement.prototype; const imgSrcDesc = Object.getOwnPropertyDescriptor(imgProto, 'src') || Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'src'); if (imgSrcDesc && imgSrcDesc.set) { try { Object.defineProperty(imgProto, 'src', { configurable: true, enumerable: true, set(v) { imgSrcDesc.set.call(this, rewriteUrl(v)); }, get() { return imgSrcDesc.get.call(this); } }); } catch (e) { /* parent src is non-configurable; rely on setAttribute/MutationObserver */ } } // Override setAttribute for video, source, AND img const origSetAttr = Element.prototype.setAttribute; Element.prototype.setAttribute = function(name, value) { if ((name === 'src' || name === 'data-src') && (this.tagName === 'VIDEO' || this.tagName === 'SOURCE' || this.tagName === 'IMG')) { value = rewriteUrl(value); } return origSetAttr.call(this, name, value); }; // Patch HLS.js if loaded const origAppendChild = Node.prototype.appendChild; const origInsertBefore = Node.prototype.insertBefore; // MutationObserver to catch dynamically added video/source/img elements const observer = new MutationObserver(mutations => { for (const mut of mutations) { for (const node of mut.addedNodes) { if (node.tagName === 'SOURCE' || node.tagName === 'VIDEO' || node.tagName === 'IMG') { const s = node.getAttribute && node.getAttribute('src'); if (s) { const rewritten = rewriteUrl(s); if (rewritten !== s) origSetAttr.call(node, 'src', rewritten); } const ds = node.getAttribute && node.getAttribute('data-src'); if (ds) { const rewritten = rewriteUrl(ds); if (rewritten !== ds) origSetAttr.call(node, 'data-src', rewritten); } } if (node.querySelectorAll) { node.querySelectorAll('source[src], video[src], img[src], img[data-src]').forEach(el => { const s = el.getAttribute('src'); if (s) { const rewritten = rewriteUrl(s); if (rewritten !== s) origSetAttr.call(el, 'src', rewritten); } const ds = el.getAttribute('data-src'); if (ds) { const rewritten = rewriteUrl(ds); if (rewritten !== ds) origSetAttr.call(el, 'data-src', rewritten); } }); } } // Also handle attribute changes on existing elements if (mut.type === 'attributes' && (mut.attributeName === 'src' || mut.attributeName === 'data-src')) { const el = mut.target; if (el.tagName === 'IMG' || el.tagName === 'VIDEO' || el.tagName === 'SOURCE') { const val = el.getAttribute(mut.attributeName); if (val) { const rewritten = rewriteUrl(val); if (rewritten !== val) origSetAttr.call(el, mut.attributeName, rewritten); } } } } }); observer.observe(document.documentElement, { childList: true, subtree: true, attributes: true, attributeFilter: ['src', 'data-src'] }); })();

Morennobrasil15
Man, 35y
35 years old, Man

Agências de novos talentos do pornô nacional para produtoras internacionais.
Discovering new talent in worldwide gay porn.
Collaborating with the best national and international gay video producers.
Representing commercially renowned private party clubs attended by renowned actors from
porn industry.
Organizing tours of international porn stars for interactive shows in clubs and saunas in Brazil.
Advising new models who want to pursue a porn career seriously.
+

Morennobrasil15 2 albums (30 photos)

HOT BOYS

(16 photos) 10,072 views - Rating: 98.7%

Updated: 2 years ago

SEXXY BRAZILIAN PORN STARS

(14 photos) 4,860 views - Rating: 100.0%

Updated: 3 years ago

Gender: Man

Age: 35 years old

Country: Brazil

Secondary location: North america

Profile hits: 202,307

Subscribers: 4,383

Total video views: 9,910,313

Region: Sao Paulo

City: S�o paulo

Languages: Deutsch, English, Español, Português

Personal information: Display

Seeking: Man, Gay man, Gay couple

Relationship: Single

Kids: No but want some

Education: Pos graduation in english

Religion: Catholic

Smoking: Never

Drinking: Occasionally

Webcam: Yes

Signed up: August 1, 2015 (3,964 days ago)

Last activity: 162 days ago

Physical Information: Display

Ethnicity: Latino

Body: Athletic

Height: 180 cm

Weight: 76 kg

Hair length: Short

Hair color: Black

Eyes color: Brown

Interests: Big Cock, Double anal, Muscle, Pornstar, Sexy, Solo & Masturbation, Solo-boy

About me:

Agências de novos talentos do pornô nacional para produtoras internacionais.
Discovering new talent in worldwide gay porn.
Collaborating with the best national and international gay video producers.
Representing commercially renowned private party clubs attended by renowned actors from
porn industry.
Organizing tours of international porn stars for interactive shows in clubs and saunas in Brazil.
Advising new models who want to pursue a porn career seriously.Show more

Remove ads - Upgrade to Premium Ads by TrafficFactory