The best small luxury gifts.

Photo illustration by Slate. Photo by Philosophy. Slate has relationships with various online retailers. If you buy something through our links, Slate may earn an affiliate commission. We update links when possible, but note that deals can expire and all prices are subject to change. All prices were up to […]

Philosophy shower gel.
Photo illustration by Slate. Photo by Philosophy.

In search of the perfect gift? Read more of Slate’s holiday gift guides here.

Small luxuries are always nice, but in 2020 they’ve practically been a necessity. We’ve rounded up some of our staff’s favorite little indulgences that have helped make a tough year a little bit brighter. We hope they bring you and your loved ones some much-needed joy this holiday season. Enjoy!

At the start of the pandemic, I set aside my bottle of Philosophy’s Fresh Cream Warm Cashmere perfume and resigned myself to reserving it for a day when I might go out again. When the days of work from home stretched to months, I returned to the fragrance as a small pick-me-up for sleepy days in my home workspace. Now I spritz myself every day, even if I’m working in slippers and sweats. It’s a warm, comforting scent that reminds me of being at home for the holidays, snuggled up by a fire. (The shower gel is also divine for long winter quarantine bubble baths!) —Madeline Ducharme, production assistant

These days, it’s hard to mark the passage of time, as I barely leave the house and it practically starts getting dark before I’ve finished lunch. My nightly application of Go-To’s Face Hero oil has been one pleasant routine that helps separate day from evening. It feels great to pat onto clean skin, either alone or mixed with a light moisturizer, and smells like a fancy hotel. As a product that keeps my skin looking and feeling fresh, it’s perfectly adequate. As a sensual ritual that gets me out of work-from-home mode and into live-at-home mode, it’s divine. —Christina Cauterucci, staff writer

I discovered Dani Naturals Coconut Hibiscus Lotion at a resort spa, and I’m so happy I bought some. Since I can’t go on vacation right now, I appreciate how much this lovely scent transports me back to that feeling I have when I’m on vacation. The company describes it as aromatherapy, and it definitely has that effect. I always receive compliments on the scent, and I love how deeply it moisturizes. It’s also organic, vegan, and cruelty-free. —Erika Anderson, West Coast sales director

I first discovered this diffuser a few years ago, and I absolutely love how it smells of light and fresh lemon and herbs, almost like a summer garden. I prefer scenting my space with a diffuser over a candle, as I find it lingers a little longer. It is a bit pricey, but I get a lot of use out of it—it typically lasts me at least a year. —Maggie Taylor, marketing and audience development

A few years ago, I read a piece in Racked about Cocofloss, an Instagrammy-looking dental floss that costs $9 a roll. Luxury dental floss! I thought at the time. What will these crooks think of next! I’ll admit, though, I was intrigued by the flavor options: Big Floss never offered much beyond mint, and Cocofloss had orange and strawberry. Still, $9 seemed ridiculous. But then one of my favorite writers (Care and Feeding columnist Emily Gould!) wrote about the floss in her newsletter, and it sold me. I had never flossed much. You might think this would be a reason not to buy fancy floss, but I told myself that maybe it would be what motivated me to become a flosser. For the first time in the history of ever, this worked, sort of. Even though we’re in a pandemic and a lot of people’s personal hygiene has suffered, I am proud to say I now floss (sometimes). —Heather Schwedel, staff writer

We aren’t going anywhere during quarantine, which is what makes it a perfect time to try out the Baby Foot peel if you haven’t already. You put plastic booties filled with an exfoliating formula on your feet and keep them on for an hour. Then, about a week later, the dead skin on the bottom of your feet will begin to peel off. Frankly, it’s kind of a gross process, but it’s oh-so-satisfying once it’s done. Your heels have never felt this soft. —Karen Han, staff writer

I wore eyeliner pretty much daily before quarantine. I stopped wearing it for a while during quarantine, and also did not shower … regularly. Then I had a crisis where I felt like a sad grubby mammal all the time. I ordered Stila Stay All Day Waterproof Liquid Eye Liner. Now I wear eyeliner a couple of times a week, and I shower regularly. I feel a lot better! This is not really an endorsement of eyeliner, or even this eyeliner—here’s a $6 drugstore version I like—but of buying whatever nonessential thing makes you feel a little more like yourself. In gift-giving terms, this means finding the fancy version of whatever frivolous thing your loved one uses routinely, whether it’s eyeliner, candles, aftershave, or something else. (Unfortunately, there’s nothing you can do to make them shower.) —Shannon Palus, staff writer

Let’s be honest, lighting a nice candle at 4 p.m. when it is somehow already dark is one of the things that will help get us all through this winter. My favorite everyday candles are WoodWick. They smell nice enough (I suggest you stick to the “winter” flavors, rather than “sweet” flavors), and they last for a good long while, but their most notable quality, as suggested by their name, is the wick: It is made of wood, and it crackles. It’s very soothing, like having a fire going (a very, very tiny fire). I keep a “tall” one in my office and a “long” one in my living room. —Susan Matthews, news director

Maison Louis Marie’s Bois de Balincourt candle is my absolute favorite candle. I live in a small apartment, so I prefer candles with subtle scents that won’t give me a headache. This one has beautiful, delicate notes of sandalwood and cedarwood. Even when it’s not lit, I can faintly smell the scent in my space. It makes me feel much fancier than I actually am, and I’ve bought it for my friends to luxuriate in, too! —Stephanie Snyder, Slate Studios director of marketing

I have been ordering bath salts 18 pounds at a time. These are Amazon brand bath salts, which I try not to think about too much because it makes me feel weird to be soaking in the offerings of—you know what? Never mind! These are inexpensive, smell nice, come in eucalyptus (my favorite), lavender, rosemary mint, and plain (which you could use to make your own custom scented salts). I’m not entirely sure what they are supposed to do, or if they “work,” but I’m choosing to embrace the fact that they make me feel good, which, right now, is enough. —Shannon Palus, staff writer

I have always been a bath person, but this year I needed my tub’s soothing, womblike retreat even more. I was spending so much time in there I decided that the experience warranted an upgrade, in the form of a bath pillow and tray. The Bath Haven pillow is comfortable and well-designed, sticking handily to the tub and shower wall with suction cups. (It also comes with a washing bag and storage case—nice touch.) The bamboo tray works perfectly for reading, a glass of wine, (careful!) laptop work, more wine, a candle, or grain alcohol, depending on the day’s news. All together, they make my bath time almost like a spa day—not that I really remember what spas are anymore. —J. Bryan Lowder, associate editor

I love a bath. A really good one, with a good book on my Kindle, a nice-smelling candle, some easy-listening music, lights out. (God bless the Paperwhite’s backlight.) But it doesn’t work if your tub doesn’t fill enough to really let you soak. Enter the Madam of Leisure Infinity Bath Overflow Drain Cover. As the name suggests, the small piece of silicone goes over the overflow drain to keep it from doing its dastardly job of skimming the water off the top of your bath. While other drain overflow covers are hideous, the Madam of Leisure one is elegant (well, elegant as a piece of silicone can be) and unobtrusive, and, most importantly, it ensures that my knees are fully submerged. —Torie Bosch, Future Tense editor

When the world went into lockdown last spring, we bought our twin boys electric scooters in an effort to get them off their screens and into the great outdoors. They could not love them more. Given what a hit they were, we decided to opt for more outside fun this Christmas—in the form of unicycles! I cannot wait to see their faces when they see these under the tree. Somehow a wobbly unicycle feels like just the right way to wheel out of 2020. —Holly Allen, associate art director

We spent the weeks before the election, when the news was even louder and scarier than usual, indulging in this audiobook of stories about ancient Greek gods and goddesses, read by Stephen Fry. It was exactly what we needed: entertaining, funny, and set 2,500 years in the past. —Dan Kois, senior writer

');
}

function tryGetCriteoFastBid() {
try {
var fastBidStorageKey = "criteo_fast_bid",
hashPrefix = "// Hash: ",
fastBidFromStorage = storage.getDataFromLocalStorage(fastBidStorageKey),
firstLineEndPosition,
firstLine,
publisherTagHash,
publisherTag;
null !== fastBidFromStorage && (firstLineEndPosition = fastBidFromStorage.indexOf("n"), firstLine = fastBidFromStorage.substr(0, firstLineEndPosition).trim(), firstLine.substr(0, hashPrefix.length) !== hashPrefix ? (__WEBPACK_IMPORTED_MODULE_4__src_utils_js__.logWarn("No hash found in FastBid"), storage.removeDataFromLocalStorage(fastBidStorageKey)) : (publisherTagHash = firstLine.substr(hashPrefix.length), publisherTag = fastBidFromStorage.substr(firstLineEndPosition + 1), Object(__WEBPACK_IMPORTED_MODULE_6_criteo_direct_rsa_validate_build_verify_js__.verify)(publisherTag, publisherTagHash, FAST_BID_PUBKEY_N, FAST_BID_PUBKEY_E) ? (__WEBPACK_IMPORTED_MODULE_4__src_utils_js__.logInfo("Using Criteo FastBid"), eval(publisherTag)) : (__WEBPACK_IMPORTED_MODULE_4__src_utils_js__.logWarn("Invalid Criteo FastBid found"), storage.removeDataFromLocalStorage(fastBidStorageKey))));
} catch (t) {}
}

Object(__WEBPACK_IMPORTED_MODULE_1__src_adapters_bidderFactory_js__.registerBidder)(spec);
},
377: function _(t, e, r) {
"use strict";

Object.defineProperty(e, "__esModule", {
value: !0
});
var a = r(378),
n = r(379);

e.verify = function (t, e, r, i) {
var s = new a.BigInteger(a.b64toHex(e)),
o = new a.BigInteger(a.b64toHex(r)),
_ = s.modPowInt(i, o);

return a.removeExtraSymbols(_.toHexString()) === n.Sha256.hash(t);
};
},
378: function _(t, e, r) {
"use strict";

var i;
Object.defineProperty(e, "__esModule", {
value: !0
});
var s = (T.prototype.toHexString = function () {
if (this.s < 0) return "-" + this.negate().toHexString(); var t, e = !1, r = "", i = this.t, s = this.DB - i * this.DB % 4; if (0 < i--) for (s < this.DB && 0 < (t = this[i] >> s) && (e = !0, r = c(t)); 0 <= i;) { s < 4 ? (t = (this[i] & (1 << s) - 1) << 4 - s, t |= this[--i] >> (s += this.DB - 4)) : (t = this[i] >> (s -= 4) & 15, s <= 0 && (s += this.DB, --i)), 0 < t && (e = !0), e && (r += c(t)); } return e ? r : "0"; }, T.prototype.fromHexString = function (t) { if (null !== t) { this.t = 0, this.s = 0; for (var e = t.length, r = !1, i = 0; 0 <= --e;) { var s = n(t, e); s < 0 ? "-" == t.charAt(e) && (r = !0) : (r = !1, 0 == i ? this[this.t++] = s : i + 4 > this.DB ? (this[this.t - 1] |= (s & (1 << this.DB - i) - 1) << i, this[this.t++] = s >> this.DB - i) : this[this.t - 1] |= s << i, (i += 4) >= this.DB && (i -= this.DB));
}

this.clamp(), r && T.ZERO.subTo(this, this);
}
}, T.prototype.negate = function () {
var t = b();
return T.ZERO.subTo(this, t), t;
}, T.prototype.abs = function () {
return this.s < 0 ? this.negate() : this; }, T.prototype.mod = function (t) { var e = b(); return this.abs().divRemTo(t, null, e), this.s < 0 && 0 < e.compareTo(T.ZERO) && t.subTo(e, e), e; }, T.prototype.copyTo = function (t) { for (var e = this.t - 1; 0 <= e; --e) { t[e] = this[e]; } t.t = this.t, t.s = this.s; }, T.prototype.lShiftTo = function (t, e) { for (var r = t % this.DB, i = this.DB - r, s = (1 << i) - 1, o = Math.floor(t / this.DB), _ = this.s << r & this.DM, a = this.t - 1; 0 <= a; --a) { e[a + o + 1] = this[a] >> i | _, _ = (this[a] & s) << r; } for (a = o - 1; 0 <= a; --a) { e[a] = 0; } e[o] = _, e.t = this.t + o + 1, e.s = this.s, e.clamp(); }, T.prototype.invDigit = function () { if (this.t < 1) return 0; var t = this[0]; if (0 == (1 & t)) return 0; var e = 3 & t; return 0 < (e = (e = (e = (e = e * (2 - (15 & t) * e) & 15) * (2 - (255 & t) * e) & 255) * (2 - ((65535 & t) * e & 65535)) & 65535) * (2 - t * e % this.DV) % this.DV) ? this.DV - e : -e; }, T.prototype.dlShiftTo = function (t, e) { for (var r = this.t - 1; 0 <= r; --r) { e[r + t] = this[r]; } for (r = t - 1; 0 <= r; --r) { e[r] = 0; } e.t = this.t + t, e.s = this.s; }, T.prototype.squareTo = function (t) { for (var e = this.abs(), r = t.t = 2 * e.t; 0 <= --r;) { t[r] = 0; } for (r = 0; r < e.t - 1; ++r) { var i = e.am(r, e[r], t, 2 * r, 0, 1); (t[r + e.t] += e.am(r + 1, 2 * e[r], t, 2 * r + 1, i, e.t - r - 1)) >= e.DV && (t[r + e.t] -= e.DV, t[r + e.t + 1] = 1);
}

0 < t.t && (t[t.t - 1] += e.am(r, e[r], t, 2 * r, 0, 1)), t.s = 0, t.clamp(); }, T.prototype.multiplyTo = function (t, e) { var r = this.abs(), i = t.abs(), s = r.t; for (e.t = s + i.t; 0 <= --s;) { e[s] = 0; } for (s = 0; s < i.t; ++s) { e[s + r.t] = r.am(0, i[s], e, s, 0, r.t); } e.s = 0, e.clamp(), this.s != t.s && T.ZERO.subTo(e, e); }, T.prototype.divRemTo = function (t, e, r) { var i = t.abs(); if (!(i.t <= 0)) { var s = this.abs(); if (s.t < i.t) return null != e && e.fromHexString("0"), void (null != r && this.copyTo(r)); null == r && (r = b()); var o = b(), _ = this.s, a = t.s, n = this.DB - D(i[i.t - 1]); 0 < n ? (i.lShiftTo(n, o), s.lShiftTo(n, r)) : (i.copyTo(o), s.copyTo(r)); var p = o.t, c = o[p - 1]; if (0 != c) { var d = c * (1 << this.F1) + (1 < p ? o[p - 2] >> this.F2 : 0),
u = this.FV / d,
h = (1 << this.F1) / d, l = 1 << this.F2, f = r.t, E = f - p, v = null == e ? b() : e; for (o.dlShiftTo(E, v), 0 <= r.compareTo(v) && (r[r.t++] = 1, r.subTo(v, r)), T.ONE.dlShiftTo(p, v), v.subTo(o, o); o.t < p;) { o[o.t++] = 0; } for (; 0 <= --E;) { var m = r[--f] == c ? this.DM : Math.floor(r[f] * u + (r[f - 1] + l) * h); if ((r[f] += o.am(0, m, r, E, 0, p)) < m) for (o.dlShiftTo(E, v), r.subTo(v, r); r[f] < --m;) { r.subTo(v, r); } } null != e && (r.drShiftTo(p, e), _ != a && T.ZERO.subTo(e, e)), r.t = p, r.clamp(), 0 < n && r.rShiftTo(n, r), _ < 0 && T.ZERO.subTo(r, r); } } }, T.prototype.rShiftTo = function (t, e) { e.s = this.s; var r = Math.floor(t / this.DB); if (r >= this.t) e.t = 0;else {
var i = t % this.DB,
s = this.DB - i,
o = (1 << i) - 1; e[0] = this[r] >> i;

for (var _ = r + 1; _ < this.t; ++_) { e[_ - r - 1] |= (this[_] & o) << s, e[_ - r] = this[_] >> i;
}

0 < i && (e[this.t - r - 1] |= (this.s & o) << s), e.t = this.t - r, e.clamp(); } }, T.prototype.drShiftTo = function (t, e) { for (var r = t; r < this.t; ++r) { e[r - t] = this[r]; } e.t = Math.max(this.t - t, 0), e.s = this.s; }, T.prototype.subTo = function (t, e) { for (var r = 0, i = 0, s = Math.min(t.t, this.t); r < s;) { i += this[r] - t[r], e[r++] = i & this.DM, i >>= this.DB;
}

if (t.t < this.t) { for (i -= t.s; r < this.t;) { i += this[r], e[r++] = i & this.DM, i >>= this.DB;
}

i += this.s;
} else {
for (i += this.s; r < t.t;) { i -= t[r], e[r++] = i & this.DM, i >>= this.DB;
}

i -= t.s;
}

e.s = i < 0 ? -1 : 0, i < -1 ? e[r++] = this.DV + i : 0 < i && (e[r++] = i), e.t = r, e.clamp(); }, T.prototype.clamp = function () { for (var t = this.s & this.DM; 0 < this.t && this[this.t - 1] == t;) { --this.t; } }, T.prototype.modPowInt = function (t, e) { var r = new (t < 256 || e.isEven() ? d : h)(e); return this.exp(t, r); }, T.prototype.exp = function (t, e) { if (4294967295 < t || t < 1) return T.ONE; var r, i = b(), s = b(), o = e.convert(this), _ = D(t) - 1; for (o.copyTo(i); 0 <= --_;) { e.sqrTo(i, s), 0 < (t & 1 << _) ? e.mulTo(s, o, i) : (r = i, i = s, s = r); } return e.revert(i); }, T.prototype.isEven = function () { return 0 == (0 < this.t ? 1 & this[0] : this.s); }, T.prototype.compareTo = function (t) { var e = this.s - t.s; if (0 != e) return e; var r = this.t; if (0 != (e = r - t.t)) return this.s < 0 ? -e : e; for (; 0 <= --r;) { if (0 != (e = this[r] - t[r])) return e; } return 0; }, T.prototype.am1 = function (t, e, r, i, s, o) { for (; 0 <= --o;) { var _ = e * this[t++] + r[i] + s; s = Math.floor(_ / 67108864), r[i++] = 67108863 & _; } return s; }, T.prototype.am2 = function (t, e, r, i, s, o) { for (var _ = 32767 & e, a = e >> 15; 0 <= --o;) { var n = 32767 & this[t], p = this[t++] >> 15,
c = a * n + p * _;
s = ((n = _ * n + ((32767 & c) << 15) + r[i] + (1073741823 & s)) >>> 30) + (c >>> 15) + a * p + (s >>> 30), r[i++] = 1073741823 & n;
}

return s;
}, T.prototype.am3 = function (t, e, r, i, s, o) {
for (var _ = 16383 & e, a = e >> 14; 0 <= --o;) { var n = 16383 & this[t], p = this[t++] >> 14,
c = a * n + p * _;
s = ((n = _ * n + ((16383 & c) << 14) + r[i] + s) >> 28) + (c >> 14) + a * p, r[i++] = 268435455 & n;
}

return s;
}, T);

function T(t) {
null !== t && this.fromHexString(t);
}

function b() {
return new s(null);
}

function D(t) {
var e,
r = 1;
return 0 != (e = t >>> 16) && (t = e, r += 16), 0 != (e = t >> 8) && (t = e, r += 8), 0 != (e = t >> 4) && (t = e, r += 4), 0 != (e = t >> 2) && (t = e, r += 2), 0 != (e = t >> 1) && (t = e, r += 1), r;
}

e.BigInteger = s, e.nbi = b, e.nbits = D;

for (var o = [], _ = "0".charCodeAt(0), a = 0; a <= 9; ++a) { o[_++] = a; } for (_ = "a".charCodeAt(0), a = 10; a < 36; ++a) { o[_++] = a; } for (_ = "A".charCodeAt(0), a = 10; a < 36; ++a) { o[_++] = a; } function n(t, e) { var r = o[t.charCodeAt(e)]; return null == r ? -1 : r; } e.intAt = n; var p = "0123456789abcdefghijklmnopqrstuvwxyz"; function c(t) { return p.charAt(t); } e.int2char = c; e.b64toHex = function (t) { for (var e = "", r = 0, i = 0, s = 0; s < t.length && "=" != t.charAt(s); ++s) { var o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(t.charAt(s)); o < 0 || (r = 0 == r ? (e += c(o >> 2), i = 3 & o, 1) : 1 == r ? (e += c(i << 2 | o >> 4), i = 15 & o, 2) : 2 == r ? (e += c(i), e += c(o >> 2), i = 3 & o, 3) : (e += c(i << 2 | o >> 4), e += c(15 & o), 0));
}

return 1 == r && (e += c(i << 2)), e; }, e.removeExtraSymbols = function (t) { return t.replace(/^1f+00/, "").replace("3031300d060960864801650304020105000420"https://r.search.yahoo.com/,""); }; var d = (u.prototype.convert = function (t) { return t.s < 0 || 0 <= t.compareTo(this.m) ? t.mod(this.m) : t; }, u.prototype.revert = function (t) { return t; }, u.prototype.reduce = function (t) { t.divRemTo(this.m, null, t); }, u.prototype.mulTo = function (t, e, r) { t.multiplyTo(e, r), this.reduce(r); }, u.prototype.sqrTo = function (t, e) { t.squareTo(e), this.reduce(e); }, u); function u(t) { this.m = t; } var h = (l.prototype.convert = function (t) { var e = b(); return t.abs().dlShiftTo(this.m.t, e), e.divRemTo(this.m, null, e), t.s < 0 && 0 < e.compareTo(s.ZERO) && this.m.subTo(e, e), e; }, l.prototype.revert = function (t) { var e = b(); return t.copyTo(e), this.reduce(e), e; }, l.prototype.reduce = function (t) { for (; t.t <= this.mt2;) { t[t.t++] = 0; } for (var e = 0; e < this.m.t; ++e) { var r = 32767 & t[e], i = r * this.mpl + ((r * this.mph + (t[e] >> 15) * this.mpl & this.um) << 15) & t.DM; for (t[r = e + this.m.t] += this.m.am(0, i, t, e, 0, this.m.t); t[r] >= t.DV;) {
t[r] -= t.DV, t[++r]++;
}
}

t.clamp(), t.drShiftTo(this.m.t, t), 0 <= t.compareTo(this.m) && t.subTo(this.m, t); }, l.prototype.mulTo = function (t, e, r) { t.multiplyTo(e, r), this.reduce(r); }, l.prototype.sqrTo = function (t, e) { t.squareTo(e), this.reduce(e); }, l); function l(t) { this.m = t, this.mp = t.invDigit(), this.mpl = 32767 & this.mp, this.mph = this.mp >> 15, this.um = (1 << t.DB - 15) - 1, this.mt2 = 2 * t.t; } function f(t) { var e = b(); return e.fromHexString(t.toString()), e; } e.nbv = f, s.ZERO = f(0), s.ONE = f(1), i = "Microsoft Internet Explorer" == navigator.appName ? (s.prototype.am = s.prototype.am2, 30) : "Netscape" != navigator.appName ? (s.prototype.am = s.prototype.am1, 26) : (s.prototype.am = s.prototype.am3, 28), s.prototype.DB = i, s.prototype.DM = (1 << i) - 1, s.prototype.DV = 1 << i; s.prototype.FV = Math.pow(2, 52), s.prototype.F1 = 52 - i, s.prototype.F2 = 2 * i - 52; }, 379: function _(t, e, r) { "use strict"; Object.defineProperty(e, "__esModule", { value: !0 }); var i = (y.hash = function (t) { t = y.utf8Encode(t || ""); for (var e = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], r = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225], i = (t += String.fromCharCode(128)).length / 4 + 2, s = Math.ceil(i / 16), o = new Array(s), _ = 0; _ < s; _++) { o[_] = new Array(16); for (var a = 0; a < 16; a++) { o[_][a] = t.charCodeAt(64 * _ + 4 * a) << 24 | t.charCodeAt(64 * _ + 4 * a + 1) << 16 | t.charCodeAt(64 * _ + 4 * a + 2) << 8 | t.charCodeAt(64 * _ + 4 * a + 3) << 0; } } var n = 8 * (t.length - 1) / Math.pow(2, 32), p = 8 * (t.length - 1) >>> 0;

for (o[s - 1][14] = Math.floor(n), o[s - 1][15] = p, _ = 0; _ < s; _++) { for (var c = new Array(64), d = 0; d < 16; d++) { c[d] = o[_][d]; } for (d = 16; d < 64; d++) { c[d] = y.q1(c[d - 2]) + c[d - 7] + y.q0(c[d - 15]) + c[d - 16] >>> 0;
}

for (var u = r[0], h = r[1], l = r[2], f = r[3], E = r[4], v = r[5], m = r[6], T = r[7], d = 0; d < 64; d++) { var b = T + y.z1(E) + y.Ch(E, v, m) + e[d] + c[d], D = y.z0(u) + y.Maj(u, h, l); T = m, m = v, v = E, E = f + b >>> 0, f = l, l = h, h = u, u = b + D >>> 0;
}

r[0] = r[0] + u >>> 0, r[1] = r[1] + h >>> 0, r[2] = r[2] + l >>> 0, r[3] = r[3] + f >>> 0, r[4] = r[4] + E >>> 0, r[5] = r[5] + v >>> 0, r[6] = r[6] + m >>> 0, r[7] = r[7] + T >>> 0;
}

for (var P = new Array(r.length), T = 0; T < r.length; T++) { P[T] = ("00000000" + r[T].toString(16)).slice(-8); } return P.join(""); }, y.utf8Encode = function (e) { try { return new TextEncoder().encode(e).reduce(function (t, e) { return t + String.fromCharCode(e); }, ""); } catch (t) { return unescape(encodeURIComponent(e)); } }, y.ROTR = function (t, e) { return e >>> t | e << 32 - t; }, y.z0 = function (t) { return y.ROTR(2, t) ^ y.ROTR(13, t) ^ y.ROTR(22, t); }, y.z1 = function (t) { return y.ROTR(6, t) ^ y.ROTR(11, t) ^ y.ROTR(25, t); }, y.q0 = function (t) { return y.ROTR(7, t) ^ y.ROTR(18, t) ^ t >>> 3;
}, y.q1 = function (t) {
return y.ROTR(17, t) ^ y.ROTR(19, t) ^ t >>> 10;
}, y.Ch = function (t, e, r) {
return t & e ^ ~t & r;
}, y.Maj = function (t, e, r) {
return t & e ^ t & r ^ e & r;
}, y);

function y() {}

e.Sha256 = i;
}
}, [375]);
pbjsChunk([218], {
501: function _(e, r, t) {
e.exports = t(502);
},
502: function _(e, r, t) {
"use strict";

Object.defineProperty(r, "__esModule", {
value: !0
}), t.d(r, "spec", function () {
return c;
});
var F = t(0),
j = t(2),
B = t(3),
i = t(10),
l = t.n(i),
n = t(503),
s = t.n(n),
a = t(1);

function J(e) {
return function (e) {
if (Array.isArray(e)) return o(e);
}(e) || function (e) {
if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e);
}(e) || function (e, r) {
if (!e) return;
if ("string" == typeof e) return o(e, r);
var t = Object.prototype.toString.call(e).slice(8, -1);
"Object" === t && e.constructor && (t = e.constructor.name);
if ("Map" === t || "Set" === t) return Array.from(e);
if ("Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)) return o(e, r);
}(e) || function () {
throw new TypeError("Invalid attempt to spread non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}();
}

function o(e, r) {
(null == r || r > e.length) && (r = e.length);

for (var t = 0, i = new Array(r); t < r; t++) { i[t] = e[t]; } return i; } function d(r, e) { var t, i = Object.keys(r); return Object.getOwnPropertySymbols && (t = Object.getOwnPropertySymbols(r), e && (t = t.filter(function (e) { return Object.getOwnPropertyDescriptor(r, e).enumerable; })), i.push.apply(i, t)), i; } function M(n) { for (var e = 1; e < arguments.length; e++) { var s = null != arguments[e] ? arguments[e] : {}; e % 2 ? d(Object(s), !0).forEach(function (e) { var r, t, i; r = n, i = s[t = e], t in r ? Object.defineProperty(r, t, { value: i, enumerable: !0, configurable: !0, writable: !0 }) : r[t] = i; }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(n, Object.getOwnPropertyDescriptors(s)) : d(Object(s)).forEach(function (e) { Object.defineProperty(n, e, Object.getOwnPropertyDescriptor(s, e)); }); } return n; } function N(e) { return (N = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) { return _typeof(e); } : function (e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e); })(e); } var p = [j.b, j.d], f = 100, g = 300, b = 3600, h = !0, v = { JPY: 1 }; function C(e) { var r = {}; return r.id = e.bidId, r.ext = {}, r.ext.siteID = e.params.siteId, !e.params.hasOwnProperty("id") || "string" != typeof e.params.id && "number" != typeof e.params.id ? r.ext.sid = "".concat(e.params.size[0], "x").concat(e.params.size[1]) : r.ext.sid = String(e.params.id), e.params.hasOwnProperty("bidFloor") && e.params.hasOwnProperty("bidFloorCur") && (r.bidfloor = e.params.bidFloor, r.bidfloorcur = e.params.bidFloorCur), r; } function m(e) { return Array.isArray(e) && 2 === e.length && s()(e[0]) && s()(e[1]); } function T(e, r) { if (m(e)) return e[0] === r[0] && e[1] === r[1]; for (var t = 0; t < e.length; t++) { if (e[t][0] === r[0] && e[t][1] === r[1]) return 1; } } function A(e, r, t, i) { var n = [], s = "https://htlb.casalemedia.com/cygnus", a = {}, o = e[0].userId; if (o && "object" === N(o) && o.idl_env && function (e, r, t, i, n, s) { if (t) return r[n] = 1, e.push({ source: i, uids: [{ id: t, ext: { rtiPartner: s } }] }); F.logWarn("Tried to add a user ID from Prebid, the ID received was null"); }(n, a, o.idl_env, "liveramp.com"https://r.search.yahoo.com/,"LiveRampIp"https://r.search.yahoo.com/,"idl"), window.headertag && "function" == typeof window.headertag.getIdentityInfo) { var d, p = window.headertag.getIdentityInfo(); if (p && "object" === N(p)) for (var m in p) { p.hasOwnProperty(m) && (a.hasOwnProperty(m) || !(d = p[m]).responsePending && d.data && "object" === N(d.data) && Object.keys(d.data).length && n.push(d.data)); } } var c, u = {}; u.id = e[0].bidderRequestId, u.site = {}, u.ext = {}, u.ext.source = "prebid", u.ext.ixdiag = {}, e[0].schain && (u.source = { ext: { schain: e[0].schain } }), 0 < n.length && (u.user = {}, u.user.eids = n), document.referrer && "" !== document.referrer && (u.site.ref = document.referrer), r && (r.gdprConsent && ((c = r.gdprConsent).hasOwnProperty("gdprApplies") && (u.regs = { ext: { gdpr: c.gdprApplies ? 1 : 0 } }), c.hasOwnProperty("consentString") && (u.user = u.user || {}, u.user.ext = { consent: c.consentString || "" })), r.uspConsent && F.deepSetValue(u, "regs.ext.us_privacy", r.uspConsent), r.refererInfo && (u.site.page = r.refererInfo.referer)); var y = {}, l = r && r.bidderCode || "ix", f = B.b.getConfig(l); if (f) { if ("object" === N(f.firstPartyData)) { var g = f.firstPartyData, b = "?"; for (var h in g) { g.hasOwnProperty(h) && (b += "".concat(encodeURIComponent(h), "=").concat(encodeURIComponent(g[h]), "&")); } b = b.slice(0, -1), u.site.page += b; } "number" == typeof f.timeout && (y.t = f.timeout), "boolean" == typeof f.detectMissingSizes ? u.ext.ixdiag.dms = f.detectMissingSizes : u.ext.ixdiag.dms = !0; } y.s = e[0].params.siteId, y.v = i, y.ac = "j", y.sd = 1, 8.1 === i && (y.nf = 1); var v = [], O = { method: "GET", url: s, data: y }, x = new Blob(["".concat(O.url).concat(F.parseQueryStringParameters(M(M({}, O.data), {}, { r: JSON.stringify(u) })))]).size, I = x, w = 0, P = 0, S = 0; u.ext.ixdiag.msd = 0, u.ext.ixdiag.msi = 0, u.imp = []; for (var z, j, C, T, A, E = 0, D = Object.keys(t), R = []; E < D.length && v.length < 4;) { t[D[E]].hasOwnProperty("missingCount") && (S = t[D[E]].missingCount), function (e, r) { var t = new Blob([encodeURIComponent(JSON.stringify(e))]).size; if (t < r) return; for (; r < t;) { e.hasOwnProperty("missingImps") && 0 < e.missingImps.length ? e.missingImps.pop() : e.hasOwnProperty("ixImps") && 0 < e.ixImps.length && e.ixImps.pop(), t = new Blob([encodeURIComponent(JSON.stringify(e))]).size; } }(t[D[E]], 8e3 - x), t[D[E]].hasOwnProperty("missingImps") && (P = t[D[E]].missingImps.length), (I += new Blob([encodeURIComponent(JSON.stringify(t[D[E]]))]).size) < 8e3 ? ((z = u.imp).push.apply(z, J(t[D[E]].ixImps)), u.ext.ixdiag.msd += S, u.ext.ixdiag.msi += P, t[D[E]].hasOwnProperty("missingImps") && R.push.apply(R, J(t[D[E]].missingImps)), E++) : (C = F.deepClone(y), (j = u.imp).push.apply(j, J(R)), u.ext.ixdiag.sn = w, C.sn = w, w++, C.r = JSON.stringify(u), v.push({ method: "GET", url: s, data: C }), R = [], I = x, u.imp = [], P = S = 0, u.ext.ixdiag.msd = 0, u.ext.ixdiag.msi = 0); } return x < I && I < 8e3 && v.length < 4 && (A = F.deepClone(y), (T = u.imp).push.apply(T, J(R)), 0 < v.length && (u.ext.ixdiag.sn = w, A.sn = w), A.r = JSON.stringify(u), v.push({ method: "GET", url: s, data: A })), v; } function E(e, r) { for (var t = 0; t < e.length; t++) { if (r[0] == e[t][0] && r[1] == e[t][1]) return e.splice(t, 1), 1; } } var c = { code: "ix", gvlid: 10, supportedMediaTypes: p, isBidRequestValid: function isBidRequestValid(e) { if (!m(e.params.size)) return F.logError("ix bidder params: bid size has invalid format."), !1; if (!T(e.sizes, e.params.size)) return F.logError("ix bidder params: bid size is not included in ad unit sizes."), !1; if (e.hasOwnProperty("mediaType") && !F.contains(p, e.mediaType)) return !1; if (e.hasOwnProperty("mediaTypes") && !F.deepAccess(e, "mediaTypes.banner.sizes") && !F.deepAccess(e, "mediaTypes.video.playerSize")) return !1; if ("string" != typeof e.params.siteId && "number" != typeof e.params.siteId) return F.logError("ix bidder params: siteId must be string or number value."), !1; var r, t, i = e.params.hasOwnProperty("bidFloor"), n = e.params.hasOwnProperty("bidFloorCur"); return !!(!i && !n || i && n && (r = e.params.bidFloor, t = e.params.bidFloorCur, Boolean("number" == typeof r && "string" == typeof t && t.match(/^[A-Z]{3}$/)))) || (F.logError("ix bidder params: bidFloor / bidFloorCur parameter has invalid format."), !1); }, buildRequests: function buildRequests(e, r) { for (var t, i, n, s, a, o, d, p, m, c, u, y, l, f = [], g = {}, b = {}, h = null, v = {}, O = M(M({}, { detectMissingSizes: !0 }), B.b.getConfig("ix")), x = 0; x < e.length; x++) { (h = e[x]).mediaType !== j.d && !F.deepAccess(h, "mediaTypes.video") || (h.mediaType === j.d || T(h.mediaTypes.video.playerSize, h.params.size) ? (b.hasOwnProperty(h.transactionId) || (b[h.transactionId] = {}), b[h.transactionId].hasOwnProperty("ixImps") || (b[h.transactionId].ixImps = []), b[h.transactionId].ixImps.push(function (e) { var r = C(e); r.video = F.deepClone(e.params.video), r.video.w = e.params.size[0], r.video.h = e.params.size[1]; var t = F.deepAccess(e, "mediaTypes.video.context"); return t && ("instream" === t ? r.video.placement = 1 : "outstream" === t ? r.video.placement = 4 : F.logWarn("ix bidder params: video context '".concat(t, "' is not supported"))), r; }(h))) : F.logError("Bid size is not included in video playerSize")), h.mediaType !== j.b && !F.deepAccess(h, "mediaTypes.banner") && (h.mediaType || h.mediaTypes) || (c = void 0, (c = C(m = h)).banner = {}, c.banner.w = m.params.size[0], c.banner.h = m.params.size[1], c.banner.topframe = F.inIframe() ? 0 : 1, t = c, g.hasOwnProperty(h.transactionId) || (g[h.transactionId] = {}), g[h.transactionId].hasOwnProperty("ixImps") || (g[h.transactionId].ixImps = []), g[h.transactionId].ixImps.push(t), O.hasOwnProperty("detectMissingSizes") && O.detectMissingSizes && (n = v, s = t, p = d = o = a = void 0, p = (i = h).transactionId, n.hasOwnProperty(p) ? (a = [], n[p].hasOwnProperty("missingSizes") && (a = n[p].missingSizes), E(a, i.params.size), n[p].missingSizes = a) : F.deepAccess(i, "mediaTypes.banner.sizes") && (E(o = F.deepClone(i.mediaTypes.banner.sizes), i.params.size), d = { missingSizes: o, impression: s }, n[p] = d))); } for (var I in v) { if (v.hasOwnProperty(I)) { var w = v[I].missingSizes; g.hasOwnProperty(I) || (g[I] = {}), g[I].hasOwnProperty("missingImps") || (g[I].missingImps = [], g[I].missingCount = 0); for (var P = v[I].impression, S = 0; S < w.length; S++) { var z = (u = P, y = w[S], l = void 0, (l = F.deepClone(u)).ext.sid = "".concat(y[0], "x").concat(y[1]), l.banner.w = y[0], l.banner.h = y[1], l); g[I].missingImps.push(z), g[I].missingCount++; } } } return 0 < Object.keys(g).length && f.push.apply(f, J(A(e, r, g, 7.2))), 0 < Object.keys(b).length && f.push.apply(f, J(A(e, r, b, 8.1))), f; }, interpretResponse: function interpretResponse(e, r) { var t = []; if (!e.hasOwnProperty("body") || !e.body.hasOwnProperty("seatbid")) return t; for (var i, n, s, a, o = e.body, d = o.seatbid, p = 0; p < d.length; p++) { if (d[p].hasOwnProperty("bid")) for (var m = d[p].bid, c = JSON.parse(r.data.r), u = 0; u < m.length; u++) { var y = function (r, e) { if (r) return l()(e, function (e) { return e.id === r; }); }(m[u].impid, c.imp); i = m[u], n = o.cur, s = y, a = void 0, a = {}, v.hasOwnProperty(n) ? a.cpm = i.price / v[n] : a.cpm = i.price / f, a.requestId = i.impid, a.dealId = F.deepAccess(i, "ext.dealid"), a.netRevenue = h, a.currency = n, a.creativeId = i.hasOwnProperty("crid") ? i.crid : "-", F.deepAccess(i, "ext.vasturl") ? (a.vastUrl = i.ext.vasturl, a.width = s.video.w, a.height = s.video.h, a.mediaType = j.d, a.ttl = b) : (a.ad = i.adm, a.width = i.w, a.height = i.h, a.mediaType = j.b, a.ttl = g), a.meta = {}, a.meta.networkId = F.deepAccess(i, "ext.dspid"), a.meta.brandId = F.deepAccess(i, "ext.advbrandid"), a.meta.brandName = F.deepAccess(i, "ext.advbrand"), i.adomain && 0 < i.adomain.length && (a.meta.advertiserDomains = i.adomain), t.push(a); } } return t; }, transformBidParams: function transformBidParams(e) { return F.convertTypes({ siteID: "number" }, e); }, getUserSyncs: function getUserSyncs(e) { return e.iframeEnabled ? [{ type: "iframe", url: "https://js-sec.indexww.com/um/ixmatch.html" }] : []; } }; Object(a.registerBidder)(c); } }, [501]); pbjsChunk([213], { 517: function _(e, t, r) { e.exports = r(518); }, 518: function _(e, t, r) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), r.d(t, "spec", function () { return l; }); var s = r(0), d = r(3), n = r(1), a = r(7); function g() { return (g = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) { Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]); } } return e; }).apply(this, arguments); } var o, i, c, u = Object(a.b)(), l = { code: "kargo", isBidRequestValid: function isBidRequestValid(e) { return !(!e || !e.params) && !!e.params.placementId; }, buildRequests: function buildRequests(e, t) { var r, n = d.b.getConfig("currency"), a = n && n.adServerCurrency || "USD", o = {}, i = {}; s._each(e, function (e) { o[e.bidId] = e.params.placementId, i[e.bidId] = e.sizes; }), 0 < e.length && e[0].userId && e[0].userId.tdid && (r = e[0].userId.tdid); var c = g({}, { sessionId: l._getSessionId(), requestCount: l._getRequestCount(), timeout: t.timeout, currency: a, cpmGranularity: 1, timestamp: new Date().getTime(), cpmRange: { floor: 0, ceil: 20 }, bidIDs: o, bidSizes: i, prebidRawBidRequests: e }, l._getAllMetadata(r, t.uspConsent)), u = encodeURIComponent(JSON.stringify(c)); return g({}, t, { method: "GET", url: "".concat("https://krk.kargo.com"https://r.search.yahoo.com/,"/api/v2/bid"), data: "json=".concat(u), currency: a }); }, interpretResponse: function interpretResponse(e, t) { var r = e.body, n = []; for (var a in r) { var o = r[a], i = void 0; o.metadata && o.metadata.landingPageDomain && (i = { clickUrl: o.metadata.landingPageDomain, advertiserDomains: [o.metadata.landingPageDomain] }), n.push({ requestId: a, cpm: Number(o.cpm), width: o.width, height: o.height, ad: o.adm, ttl: 300, creativeId: o.id, dealId: o.targetingCustom, netRevenue: !0, currency: t.currency, meta: i }); } return n; }, getUserSyncs: function getUserSyncs(e) { var t = [], r = l._generateRandomUuid(), n = l._getClientId(); if (e.iframeEnabled && r && n) for (var a = 0; a < 5; a++) { t.push({ type: "iframe", url: "https://crb.kargo.com/api/v1/initsyncrnd/{UUID}?seed={SEED}&idx={INDEX}".replace("{UUID}", n).replace("{SEED}", r).replace("{INDEX}", a) }); } return t; }, _readCookie: function _readCookie(e) { if (!u.cookiesAreEnabled()) return null; for (var t = "".concat(e, "="), r = document.cookie.split(";"), n = 0; n < r.length; n++) { for (var a = r[n]; " " === a.charAt(0);) { a = a.substring(1, a.length); } if (0 === a.indexOf(t)) return a.substring(t.length, a.length); } return null; }, _getCrbFromCookie: function _getCrbFromCookie() { try { var e = JSON.parse(decodeURIComponent(l._readCookie("krg_crb"))); if (e && e.v) { var t = JSON.parse(atob(e.v)); if (t) return t; } return {}; } catch (e) { return {}; } }, _getCrbFromLocalStorage: function _getCrbFromLocalStorage() { try { return JSON.parse(atob(l._getLocalStorageSafely("krg_crb"))); } catch (e) { return {}; } }, _getCrb: function _getCrb() { var e = l._getCrbFromLocalStorage(); return Object.keys(e).length ? e : l._getCrbFromCookie(); }, _getKruxUserId: function _getKruxUserId() { return l._getLocalStorageSafely("kxkar_user"); }, _getKruxSegments: function _getKruxSegments() { return l._getLocalStorageSafely("kxkar_segs"); }, _getKrux: function _getKrux() { var e = l._getKruxSegments(), t = []; return e && (t = e.split(",")), { userID: l._getKruxUserId(), segments: t }; }, _getLocalStorageSafely: function _getLocalStorageSafely(e) { try { return u.getDataFromLocalStorage(e); } catch (e) { return null; } }, _getUserIds: function _getUserIds(e, t) { var r = l._getCrb(), n = { kargoID: r.userId, clientID: r.clientId, crbIDs: r.syncIds || {}, optOut: r.optOut, usp: t }; return e && (n.tdID = e), n; }, _getClientId: function _getClientId() { return l._getCrb().clientId; }, _getAllMetadata: function _getAllMetadata(e, t) { return { userIDs: l._getUserIds(e, t), krux: l._getKrux(), pageURL: window.location.href, rawCRB: l._readCookie("krg_crb"), rawCRBLocalStorage: l._getLocalStorageSafely("krg_crb") }; }, _getSessionId: function _getSessionId() { return o = o || l._generateRandomUuid(); }, _getRequestCount: function _getRequestCount() { return i === window.location.pathname ? ++c : (i = window.location.pathname, c = 0); }, _generateRandomUuid: function _generateRandomUuid() { try { var e = new Uint8Array(16); crypto.getRandomValues(e), e[6] = -177 & e[6] | 64, e[8] = -65 & e[8] | 128; var t = Array.prototype.map.call(new Uint8Array(e), function (e) { return ("00" + e.toString(16)).slice(-2); }).join(""); return t.slice(0, 8) + "-" + t.slice(8, 12) + "-" + t.slice(12, 16) + "-" + t.slice(16, 20) + "-" + t.slice(20); } catch (e) { return ""; } } }; Object(n.registerBidder)(l); } }, [517]); pbjsChunk([128], { 727: function _(e, r, t) { e.exports = t(728); }, 728: function _(e, r, t) { "use strict"; Object.defineProperty(r, "__esModule", { value: !0 }), t.d(r, "spec", function () { return A; }), r.hasVideoMediaType = s, t.d(r, "resetRubiConf", function () { return c; }), r.masSizeOrdering = d, r.determineRubiconVideoSizeId = f, r.getPriceGranularity = C, r.hasValidVideoParams = I, r.hasValidSupplyChainParams = k, r.encodeParam = w, r.resetUserSync = function () { z = !1; }; var g = t(0), i = t(1), v = t(3), p = t(2), n = t(10), b = t.n(n); function y(e, r) { return function (e) { if (Array.isArray(e)) return e; }(e) || function (e, r) { if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return; var t = [], i = !0, n = !1, o = void 0; try { for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (t.push(a.value), !r || t.length !== r); i = !0) { ; } } catch (e) { n = !0, o = e; } finally { try { i || null == s.return || s.return(); } finally { if (n) throw o; } } return t; }(e, r) || function (e, r) { if (!e) return; if ("string" == typeof e) return o(e, r); var t = Object.prototype.toString.call(e).slice(8, -1); "Object" === t && e.constructor && (t = e.constructor.name); if ("Map" === t || "Set" === t) return Array.from(e); if ("Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)) return o(e, r); }(e, r) || function () { throw new TypeError("Invalid attempt to destructure non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function o(e, r) { (null == r || r > e.length) && (r = e.length);

for (var t = 0, i = new Array(r); t < r; t++) { i[t] = e[t]; } return i; } function x() { return (x = Object.assign || function (e) { for (var r = 1; r < arguments.length; r++) { var t = arguments[r]; for (var i in t) { Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); } } return e; }).apply(this, arguments); } function l(e, r, t) { return r in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function h(e) { return (h = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) { return _typeof(e); } : function (e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e); })(e); } var _ = {}; v.b.getConfig("rubicon", function (e) { g.mergeDeep(_, e.rubicon); }); var u = { 1: "468x60", 2: "728x90", 5: "120x90", 7: "125x125", 8: "120x600", 9: "160x600", 10: "300x600", 13: "200x200", 14: "250x250", 15: "300x250", 16: "336x280", 17: "240x400", 19: "300x100", 31: "980x120", 32: "250x360", 33: "180x500", 35: "980x150", 37: "468x400", 38: "930x180", 39: "750x100", 40: "750x200", 41: "750x300", 42: "2x4", 43: "320x50", 44: "300x50", 48: "300x300", 53: "1024x768", 54: "300x1050", 55: "970x90", 57: "970x250", 58: "1000x90", 59: "320x80", 60: "320x150", 61: "1000x1000", 64: "580x500", 65: "640x480", 66: "930x600", 67: "320x480", 68: "1800x1000", 72: "320x320", 73: "320x160", 78: "980x240", 79: "980x300", 80: "980x400", 83: "480x300", 85: "300x120", 90: "548x150", 94: "970x310", 95: "970x100", 96: "970x210", 101: "480x320", 102: "768x1024", 103: "480x280", 105: "250x800", 108: "320x240", 113: "1000x300", 117: "320x100", 125: "800x250", 126: "200x600", 144: "980x600", 145: "980x150", 152: "1000x250", 156: "640x320", 159: "320x250", 179: "250x600", 195: "600x300", 198: "640x360", 199: "640x200", 213: "1030x590", 214: "980x360", 221: "1x1", 229: "320x180", 230: "2000x1400", 232: "580x400", 234: "6x6", 251: "2x2", 256: "480x820", 257: "400x600", 258: "500x200", 259: "998x200", 264: "970x1000", 265: "1920x1080", 274: "1800x200", 278: "320x500", 282: "320x400", 288: "640x380", 548: "500x1000" }; g._each(u, function (e, r) { return u[e] = r; }); var A = { code: "rubicon", gvlid: 52, supportedMediaTypes: [p.b, p.d], isBidRequestValid: function isBidRequestValid(e) { if ("object" !== h(e.params)) return !1; for (var r = 0, t = ["accountId"https://r.search.yahoo.com/,"siteId"https://r.search.yahoo.com/,"zoneId"]; r < t.length; r++) { if (e.params[t[r]] = parseInt(e.params[t[r]]), isNaN(e.params[t[r]])) return g.logError("Rubicon: wrong format of accountId or siteId or zoneId."), !1; } var i = m(e, !0); return !!i && ("video" !== i || I(e)); }, buildRequests: function buildRequests(e, u) { var n, r = e.filter(function (e) { return "video" === m(e); }).map(function (t) { t.startTime = new Date().getTime(); var e, r, i, n = { id: t.transactionId, test: v.b.getConfig("debug") ? 1 : 0, cur: ["USD"], source: { tid: t.transactionId }, tmax: u.timeout, imp: [{ exp: v.b.getConfig("s2sConfig.defaultTtl"), id: t.adUnitCode, secure: 1, ext: l({}, t.bidder, t.params), video: g.deepAccess(t, "mediaTypes.video") || {} }], ext: { prebid: { cache: { vastxml: { returnCreative: !0 === _.returnVast } }, targeting: { includewinners: !0, includebidderkeys: !1, pricegranularity: C(v.b) }, bidders: { rubicon: { integration: _.int_type || "pbjs" } } } } }; if ("rubicon" !== t.bidder && (n.ext.prebid.aliases = l({}, t.bidder, "rubicon")), "function" != typeof t.getFloor || _.disableFloors) e = parseFloat(g.deepAccess(t, "params.floor"));else { try { r = t.getFloor({ currency: "USD", mediaType: "video", size: j(t, "video") }); } catch (e) { g.logError("Rubicon: getFloor threw an error: ", e); } e = "object" !== h(r) || "USD" !== r.currency || isNaN(parseInt(r.floor)) ? void 0 : parseFloat(r.floor); } isNaN(e) || (n.imp[0].bidfloor = e), n.imp[0].ext[t.bidder].video.size_id = f(t), function (r, t, e) { if (!r) return; "object" === h(v.b.getConfig("app")) ? r.app = v.b.getConfig("app") : r.site = { page: S(t, e) }; "object" === h(v.b.getConfig("device")) && (r.device = v.b.getConfig("device")); t.params.video.language && ["site"https://r.search.yahoo.com/,"device"].forEach(function (e) { r[e] && (r[e].content = x({ language: t.params.video.language }, r[e].content)); }); }(n, t, u), function (e, r) { "object" === h(e.imp[0].video) && void 0 === e.imp[0].video.skip && (e.imp[0].video.skip = r.params.video.skip); "object" === h(e.imp[0].video) && void 0 === e.imp[0].video.skipafter && (e.imp[0].video.skipafter = r.params.video.skipdelay); "object" === h(e.imp[0].video) && void 0 === e.imp[0].video.pos && ("atf" === r.params.position ? e.imp[0].video.pos = 1 : "btf" === r.params.position && (e.imp[0].video.pos = 3)); var t = j(r, "video"); e.imp[0].video.w = t[0], e.imp[0].video.h = t[1]; }(n, t), u.gdprConsent && ("boolean" == typeof u.gdprConsent.gdprApplies && (i = u.gdprConsent.gdprApplies ? 1 : 0), g.deepSetValue(n, "regs.ext.gdpr", i), g.deepSetValue(n, "user.ext.consent", u.gdprConsent.consentString)), u.uspConsent && g.deepSetValue(n, "regs.ext.us_privacy", u.uspConsent); var o = g.deepAccess(u, "bids.0.userIdAsEids"); o && o.length && g.deepSetValue(n, "user.ext.eids", o); var a = v.b.getConfig("user.id"); a && g.deepSetValue(n, "user.id", a), !0 === v.b.getConfig("coppa") && g.deepSetValue(n, "regs.coppa", 1), t.schain && k(t.schain) && g.deepSetValue(n, "source.ext.schain", t.schain); var s, c = x({}, t.params.inventory, v.b.getConfig("fpd.context")), d = x({}, t.params.visitor, v.b.getConfig("fpd.user")); g.isEmpty(c) && g.isEmpty(d) || (s = { bidders: [u.bidderCode], config: { fpd: {} } }, g.isEmpty(c) || (s.config.fpd.site = c), g.isEmpty(d) || (s.config.fpd.user = d), g.deepSetValue(n, "ext.prebid.bidderconfig.0", s)); var p = g.deepAccess(t, "fpd.context.pbAdSlot"); return "string" == typeof p && p && g.deepSetValue(n.imp[0].ext, "context.data.pbadslot", p), ["name"https://r.search.yahoo.com/,"adSlot"].forEach(function (e) { var r = g.deepAccess(t, "fpd.context.adserver.".concat(e)); "string" == typeof r && r && g.deepSetValue(n.imp[0].ext, "context.data.adserver.".concat(e.toLowerCase()), r); }), t.storedAuctionResponse && g.deepSetValue(n.imp[0], "ext.prebid.storedauctionresponse.id", t.storedAuctionResponse.toString()), g.deepSetValue(n.imp[0], "ext.prebid.auctiontimestamp", u.auctionStart), { method: "POST", url: "https://".concat(_.videoHost || "prebid-server"https://r.search.yahoo.com/,".rubiconproject.com/openrtb2/auction"), data: n, bidRequest: t }; }); return !0 !== _.singleRequest ? r.concat(e.filter(function (e) { return "banner" === m(e); }).map(function (e) { var i = A.createSlotParams(e, u); return { method: "GET", url: "https://".concat(_.bannerHost || "fastlane"https://r.search.yahoo.com/,".rubiconproject.com/a/api/fastlane.json"), data: A.getOrderedParams(i).reduce(function (e, r) { var t = i[r]; return g.isStr(t) && "" !== t || g.isNumber(t) ? "".concat(e).concat(w(r, t), "&") : e; }, "") + "slots=1&rand=".concat(Math.random()), bidRequest: e }; })) : (n = e.filter(function (e) { return "banner" === m(e); }).reduce(function (e, r) { return (e[r.params.siteId] = e[r.params.siteId] || []).push(r), e; }, {}), r.concat(Object.keys(n).reduce(function (r, e) { var t, i; return t = n[e], i = 10, t.map(function (e, r) { return r % i == 0 ? t.slice(r, r + i) : null; }).filter(function (e) { return e; }).forEach(function (e) { var i = A.combineSlotUrlParams(e.map(function (e) { return A.createSlotParams(e, u); })); r.push({ method: "GET", url: "https://".concat(_.bannerHost || "fastlane"https://r.search.yahoo.com/,".rubiconproject.com/a/api/fastlane.json"), data: A.getOrderedParams(i).reduce(function (e, r) { var t = i[r]; return g.isStr(t) && "" !== t || g.isNumber(t) ? "".concat(e).concat(w(r, t), "&") : e; }, "") + "slots=".concat(e.length, "&rand=").concat(Math.random()), bidRequest: e }); }), r; }, []))); }, getOrderedParams: function getOrderedParams(e) { var r = /^tg_v/, t = /^tg_i/, i = /^eid_|^tpid_/, n = ["account_id"https://r.search.yahoo.com/,"site_id"https://r.search.yahoo.com/,"zone_id"https://r.search.yahoo.com/,"size_id"https://r.search.yahoo.com/,"alt_size_ids"https://r.search.yahoo.com/,"p_pos"https://r.search.yahoo.com/,"gdpr"https://r.search.yahoo.com/,"gdpr_consent"https://r.search.yahoo.com/,"us_privacy"https://r.search.yahoo.com/,"rp_schain"].concat(Object.keys(e).filter(function (e) { return i.test(e); })).concat(["x_liverampidl"https://r.search.yahoo.com/,"ppuid"https://r.search.yahoo.com/,"rf"https://r.search.yahoo.com/,"p_geo.latitude"https://r.search.yahoo.com/,"p_geo.longitude"https://r.search.yahoo.com/,"kw"]).concat(Object.keys(e).filter(function (e) { return r.test(e); })).concat(Object.keys(e).filter(function (e) { return t.test(e); })).concat(["tk_flint"https://r.search.yahoo.com/,"x_source.tid"https://r.search.yahoo.com/,"x_source.pchain"https://r.search.yahoo.com/,"p_screen_res"https://r.search.yahoo.com/,"rp_floor"https://r.search.yahoo.com/,"rp_secure"https://r.search.yahoo.com/,"tk_user_key"]); return n.concat(Object.keys(e).filter(function (e) { return -1 === n.indexOf(e); })); }, combineSlotUrlParams: function combineSlotUrlParams(n) { if (1 === n.length) return n[0]; var i = n.reduce(function (r, t, i) { return Object.keys(t).forEach(function (e) { r.hasOwnProperty(e) || (r[e] = new Array(n.length)), r[e].splice(i, 1, t[e]); }), r; }, {}), o = new RegExp("^([^;]*)(;\1)+$"); return Object.keys(i).forEach(function (e) { var r = i[e].join(";"), t = r.match(o); i[e] = t ? t[1] : r; }), i; }, createSlotParams: function createSlotParams(e, r) { e.startTime = new Date().getTime(); var t, i = e.params, n = j(e, "banner"), o = y(i.latLong || [], 2), a = o[0], s = o[1], c = { account_id: i.accountId, site_id: i.siteId, zone_id: i.zoneId, size_id: n[0], alt_size_ids: n.slice(1).join(",") || void 0, rp_floor: .01 < (i.floor = parseFloat(i.floor)) ? i.floor : .01, rp_secure: "1", tk_flint: "".concat(_.int_type || "pbjs_lite"https://r.search.yahoo.com/,"_v4.17.0"), "x_source.tid": e.transactionId, "x_source.pchain": i.pchain, p_screen_res: [window.screen.width, window.screen.height].join("x"), tk_user_key: i.userId, "p_geo.latitude": isNaN(parseFloat(a)) ? void 0 : parseFloat(a).toFixed(4), "p_geo.longitude": isNaN(parseFloat(s)) ? void 0 : parseFloat(s).toFixed(4), "tg_fl.eid": e.code, rf: S(e, r) }; if ("function" == typeof e.getFloor && !_.disableFloors) { try { t = e.getFloor({ currency: "USD", mediaType: "banner", size: "*" }); } catch (e) { g.logError("Rubicon: getFloor threw an error: ", e); } c.rp_hard_floor = "object" !== h(t) || "USD" !== t.currency || isNaN(parseInt(t.floor)) ? void 0 : t.floor; } c.p_pos = "atf" === i.position || "btf" === i.position ? i.position : ""; var d = v.b.getConfig("user.id"); d && (c.ppuid = d), e.userIdAsEids && e.userIdAsEids.forEach(function (r) { try { var e; "adserver.org" === r.source ? (c.tpid_tdid = r.uids[0].id, c["eid_adserver.org"] = r.uids[0].id) : "liveintent.com" === r.source ? (c["tpid_liveintent.com"] = r.uids[0].id, c["eid_liveintent.com"] = r.uids[0].id, r.ext && Array.isArray(r.ext.segments) && r.ext.segments.length && (c["tg_v.LIseg"] = r.ext.segments.join(","))) : "liveramp.com" === r.source ? c.x_liverampidl = r.uids[0].id : "sharedid.org" === r.source ? c["eid_sharedid.org"] = "".concat(r.uids[0].id, "^").concat(r.uids[0].atype, "^").concat(r.uids[0].ext && r.uids[0].ext.third || "") : "id5-sync.com" === r.source ? c["eid_id5-sync.com"] = "".concat(r.uids[0].id, "^").concat(r.uids[0].atype, "^").concat(r.ext && r.ext.linkType || "") : c["eid_".concat(r.source)] = "".concat(r.uids[0].id, "^").concat(r.uids[0].atype || ""), c.ppuid || (e = b()(r.uids, function (e) { return e.ext && "ppuid" === e.ext.stype; })) && e.id && (c.ppuid = e.id); } catch (e) { g.logWarn("Rubicon: error reading eid:", r, e); } }), r.gdprConsent && ("boolean" == typeof r.gdprConsent.gdprApplies && (c.gdpr = Number(r.gdprConsent.gdprApplies)), c.gdpr_consent = r.gdprConsent.consentString), r.uspConsent && (c.us_privacy = encodeURIComponent(r.uspConsent)); var p = x({}, i.visitor, v.b.getConfig("fpd.user")); Object.keys(p).forEach(function (e) { null != p[e] && "keywords" !== e && (c["tg_v.".concat(e)] = "object" !== h(p[e]) || Array.isArray(p[e]) ? p[e].toString() : JSON.stringify(p[e])); }); var u = x({}, i.inventory, v.b.getConfig("fpd.context")); Object.keys(u).forEach(function (e) { null != u[e] && "keywords" !== e && (c["tg_i.".concat(e)] = "object" !== h(u[e]) || Array.isArray(u[e]) ? u[e].toString() : JSON.stringify(u[e])); }); var l = (i.keywords || []).concat(g.deepAccess(v.b.getConfig("fpd.user"), "keywords") || [], g.deepAccess(v.b.getConfig("fpd.context"), "keywords") || []); c.kw = Array.isArray(l) && l.length ? l.join(",") : ""; var m = g.deepAccess(e, "fpd.context.pbAdSlot"); "string" == typeof m && m && (c["tg_i.pbadslot"] = m.replace(/^/+/, "")); var f = g.deepAccess(e, "fpd.context.adServer.adSlot"); return "string" == typeof f && f && (c["tg_i.dfp_ad_unit_code"] = f.replace(/^/+/, "")), !0 === v.b.getConfig("coppa") && (c.coppa = 1), e.schain && k(e.schain) && (c.rp_schain = A.serializeSupplyChain(e.schain)), c; }, serializeSupplyChain: function serializeSupplyChain(e) { if (!k(e)) return ""; var r = e.ver, t = e.complete, i = e.nodes; return "".concat(r, ",").concat(t, "!").concat(A.serializeSupplyChainNodes(i)); }, serializeSupplyChainNodes: function serializeSupplyChainNodes(e) { var t = ["asi"https://r.search.yahoo.com/,"sid"https://r.search.yahoo.com/,"hp"https://r.search.yahoo.com/,"rid"https://r.search.yahoo.com/,"name"https://r.search.yahoo.com/,"domain"]; return e.map(function (r) { return t.map(function (e) { return encodeURIComponent(r[e] || ""); }).join(","); }).join("!"); }, interpretResponse: function interpretResponse(c, e) { var d = e.bidRequest; if (!(c = c.body) || "object" !== h(c)) return []; if (c.seatbid) { var r = g.deepAccess(c, "ext.errors.rubicon"); Array.isArray(r) && 0 < r.length && g.logWarn("Rubicon: Error in video response"); var o = []; return c.seatbid.forEach(function (n) { (n.bid || []).forEach(function (e) { var r = { requestId: d.bidId, currency: c.cur || "USD", creativeId: e.crid, cpm: e.price || 0, bidderCode: n.seat, ttl: 300, netRevenue: !1 !== _.netRevenue, width: e.w || g.deepAccess(d, "mediaTypes.video.w") || g.deepAccess(d, "params.video.playerWidth"), height: e.h || g.deepAccess(d, "mediaTypes.video.h") || g.deepAccess(d, "params.video.playerHeight") }; e.id && (r.seatBidId = e.id), e.dealid && (r.dealId = e.dealid), e.adomain && g.deepSetValue(r, "meta.advertiserDomains", Array.isArray(e.adomain) ? e.adomain : [e.adomain]), g.deepAccess(e, "ext.bidder.rp.advid") && g.deepSetValue(r, "meta.advertiserId", e.ext.bidder.rp.advid); var t, i = g.deepAccess(c, "ext.responsetimemillis.rubicon"); d && i && (d.serverResponseTimeMs = i), g.deepAccess(e, "ext.prebid.type") === p.d ? (r.mediaType = p.d, g.deepSetValue(r, "meta.mediaType", p.d), (t = g.deepAccess(e, "ext.prebid.targeting")) && "object" === h(t) && (r.adserverTargeting = t), e.ext.prebid.cache && "object" === h(e.ext.prebid.cache.vastXml) && e.ext.prebid.cache.vastXml.cacheId && e.ext.prebid.cache.vastXml.url ? (r.videoCacheKey = e.ext.prebid.cache.vastXml.cacheId, r.vastUrl = e.ext.prebid.cache.vastXml.url) : t && t.hb_uuid && t.hb_cache_host && t.hb_cache_path && (r.videoCacheKey = t.hb_uuid, r.vastUrl = "https://".concat(t.hb_cache_host).concat(t.hb_cache_path, "?uuid=").concat(t.hb_uuid)), e.adm && (r.vastXml = e.adm), e.nurl && (r.vastUrl = e.nurl), !r.vastUrl && e.nurl && (r.vastUrl = e.nurl)) : g.logWarn("Rubicon: video response received non-video media type"), o.push(r); }); }), o; } var t = c.ads; return "object" !== h(d) || Array.isArray(d) || "video" !== m(d) || "object" !== h(t) || (t = t[d.adUnitCode]), !Array.isArray(t) || t.length < 1 ? [] : t.reduce(function (e, r, t) { if ("ok" !== r.status) return e; var i, n, o, a, s = Array.isArray(d) ? d[t] : d; return s && "object" === h(s) ? (i = { requestId: s.bidId, currency: "USD", creativeId: r.creative_id || "".concat(r.network || ""https://r.search.yahoo.com/,"-").concat(r.advertiser || ""), cpm: r.cpm || 0, dealId: r.deal, ttl: 300, netRevenue: !1 !== _.netRevenue, rubicon: { advertiserId: r.advertiser, networkId: r.network }, meta: { advertiserId: r.advertiser, networkId: r.network, mediaType: p.b } }, r.creative_type && (i.mediaType = r.creative_type), r.adomain && (i.meta.advertiserDomains = Array.isArray(r.adomain) ? r.adomain : [r.adomain]), r.creative_type === p.d ? (i.width = s.params.video.playerWidth, i.height = s.params.video.playerHeight, i.vastUrl = r.creative_depot_url, i.impression_id = r.impression_id, i.videoCacheKey = r.impression_id) : (i.ad = (o = r.script, a = r.impression_id, "nnnx3c!-- Rubicon Project Ad Tag --x3en

nn

nn")), n = y(u[r.size_id].split("x").map(function (e) {
return Number(e);
}), 2), i.width = n[0], i.height = n[1]), i.rubiconTargeting = (Array.isArray(r.targeting) ? r.targeting : []).reduce(function (e, r) {
return e[r.key] = r.values[0], e;
}, {
rpfl_elemid: s.adUnitCode
}), e.push(i)) : g.logError("Rubicon: bidRequest undefined at index position:".concat(t), d, c), e;
}, []).sort(function (e, r) {
return (r.cpm || 0) - (e.cpm || 0);
});
},
getUserSyncs: function getUserSyncs(e, r, t, i) {
if (!z && e.iframeEnabled) {
var n = "";
return t && "string" == typeof t.consentString && ("boolean" == typeof t.gdprApplies ? n += "?gdpr=".concat(Number(t.gdprApplies), "&gdpr_consent=").concat(t.consentString) : n += "?gdpr_consent=".concat(t.consentString)), i && (n += "".concat(n ? "&" : "?"https://r.search.yahoo.com/,"us_privacy=").concat(encodeURIComponent(i))), z = !0, {
type: "iframe",
url: "https://".concat(_.syncHost || "eus"https://r.search.yahoo.com/,".rubiconproject.com/usync.html") + n
};
}
},
transformBidParams: function transformBidParams(e) {
return g.convertTypes({
accountId: "number",
siteId: "number",
zoneId: "number"
}, e);
}
};

function S(e, r) {
var t = v.b.getConfig("pageUrl"),
t = e.params.referrer ? e.params.referrer : t || r.refererInfo.referer;
return e.params.secure ? t.replace(/^http:/i, "https:") : t;
}

function j(e, r) {
var t = e.params;

if ("video" === r) {
var i = [];
return t.video && t.video.playerWidth && t.video.playerHeight ? i = [t.video.playerWidth, t.video.playerHeight] : Array.isArray(g.deepAccess(e, "mediaTypes.video.playerSize")) && 1 === e.mediaTypes.video.playerSize.length ? i = e.mediaTypes.video.playerSize[0] : Array.isArray(e.sizes) && 0 < e.sizes.length && Array.isArray(e.sizes[0]) && 1 < e.sizes[0].length && (i = e.sizes[0]), i; } var n = []; return Array.isArray(t.sizes) ? n = t.sizes : void 0 !== g.deepAccess(e, "mediaTypes.banner.sizes") ? n = a(e.mediaTypes.banner.sizes) : Array.isArray(e.sizes) && 0 < e.sizes.length ? n = a(e.sizes) : g.logWarn("Rubicon: no sizes are setup or found"), d(n); } function a(e) { return g.parseSizesInput(e).reduce(function (e, r) { var t = parseInt(u[r], 10); return t && e.push(t), e; }, []); } function s(e) { return "object" === h(g.deepAccess(e, "params.video")) && void 0 !== g.deepAccess(e, "mediaTypes.".concat(p.d)); } function m(e, r) { var t = 1 < arguments.length && void 0 !== r && r; return s(e) ? -1 === ["outstream"https://r.search.yahoo.com/,"instream"].indexOf(g.deepAccess(e, "mediaTypes.".concat(p.d, ".context"))) ? void (t && g.logError("Rubicon: mediaTypes.video.context must be outstream or instream")) : j(e, "video").length < 2 ? void (t && g.logError("Rubicon: could not determine the playerSize of the video")) : (t && g.logMessage("Rubicon: making video request for adUnit", e.adUnitCode), "video") : 0 === j(e, "banner").length ? void (t && g.logError("Rubicon: could not determine the sizes for banner request")) : (t && g.logMessage("Rubicon: making banner request for adUnit", e.adUnitCode), "banner"); } var c = function c() { return _ = {}; }; function d(e) { var n = [15, 2, 9]; return e.sort(function (e, r) { var t = n.indexOf(e), i = n.indexOf(r); return -1 < t || -1 < i ? -1 === t ? 1 : -1 === i ? -1 : t - i : e - r; }); } function f(e) { var r = parseInt(g.deepAccess(e, "params.video.size_id")); return isNaN(r) ? "outstream" === g.deepAccess(e, "mediaTypes.".concat(p.d, ".context")) ? 203 : 201 : r; } function C(e) { return { ranges: { low: [{ max: 5, increment: .5 }], medium: [{ max: 20, increment: .1 }], high: [{ max: 20, increment: .01 }], auto: [{ max: 5, increment: .05 }, { min: 5, max: 10, increment: .1 }, { min: 10, max: 20, increment: .5 }], dense: [{ max: 3, increment: .01 }, { min: 3, max: 8, increment: .05 }, { min: 8, max: 20, increment: .5 }], custom: e.getConfig("customPriceBucket") && e.getConfig("customPriceBucket").buckets }[e.getConfig("priceGranularity")] }; } function I(r) { var t = !0, e = Object.prototype.toString.call([]), i = Object.prototype.toString.call(0), n = { mimes: e, protocols: e, maxduration: i, linearity: i, api: e }; return Object.keys(n).forEach(function (e) { Object.prototype.toString.call(g.deepAccess(r, "mediaTypes.video." + e)) !== n[e] && (t = !1, g.logError("Rubicon: mediaTypes.video." + e + " is required and must be of type: " + n[e])); }), t; } function k(e) { var r = !1, t = ["asi"https://r.search.yahoo.com/,"sid"https://r.search.yahoo.com/,"hp"]; return e.nodes && ((r = e.nodes.reduce(function (e, r) { return e ? t.every(function (e) { return r.hasOwnProperty(e); }) : e; }, !0)) || g.logError("Rubicon: required schain params missing")), r; } function w(e, r) { return "rp_schain" === e ? "rp_schain=".concat(r) : "".concat(e, "=").concat(encodeURIComponent(r)); } var z = !1; Object(i.registerBidder)(A); } }, [727]); pbjsChunk([108], { 777: function _(e, t, r) { e.exports = r(778); }, 778: function _(e, t, r) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), r.d(t, "spec", function () { return a; }), r.d(t, "_isInbounds", function () { return m; }), t._getPlatform = v; var n = r(1), y = r(0), i = r(2), o = r(3), g = r(11), c = r(43); function h(e, t) { return function (e) { if (Array.isArray(e)) return e; }(e) || function (e, t) { if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return; var r = [], n = !0, i = !1, s = void 0; try { for (var a, o = e[Symbol.iterator](); !(n = (a = o.next()).done) && (r.push(a.value), !t || r.length !== t); n = !0) { ; } } catch (e) { i = !0, s = e; } finally { try { n || null == o.return || o.return(); } finally { if (i) throw s; } } return r; }(e, t) || function (e, t) { if (!e) return; if ("string" == typeof e) return s(e, t); var r = Object.prototype.toString.call(e).slice(8, -1); "Object" === r && e.constructor && (r = e.constructor.name); if ("Map" === r || "Set" === r) return Array.from(e); if ("Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)) return s(e, t); }(e, t) || function () { throw new TypeError("Invalid attempt to destructure non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function s(e, t) { (null == t || t > e.length) && (t = e.length);

for (var r = 0, n = new Array(t); r < t; r++) { n[r] = e[r]; } return n; } function d() { return (d = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) { Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]); } } return e; }).apply(this, arguments); } function u(e, t, r) { return t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e; } var p = "sonobi", b = Object(y.generateUUID)(), a = { code: p, supportedMediaTypes: [i.b, i.d], isBidRequestValid: function isBidRequestValid(e) { if (!e.params) return !1; if (!e.params.ad_unit && !e.params.placement_id) return !1; if (!Object(y.deepAccess)(e, "mediaTypes.banner") && !Object(y.deepAccess)(e, "mediaTypes.video")) return !1; if (Object(y.deepAccess)(e, "mediaTypes.banner")) { if (!Object(y.deepAccess)(e, "mediaTypes.banner.sizes") && !e.params.sizes) return !1; } else if (Object(y.deepAccess)(e, "mediaTypes.video")) { if ("outstream" === Object(y.deepAccess)(e, "mediaTypes.video.context") && !e.params.sizes) return !1; if ("instream" === Object(y.deepAccess)(e, "mediaTypes.video.context") && !Object(y.deepAccess)(e, "mediaTypes.video.playerSize")) return !1; } return !0; }, buildRequests: function buildRequests(e, t) { var r = e.map(function (e) { var t = function (e) { if (e.params.ad_unit) return e.params.ad_unit; return e.params.placement_id; }(e); return /^[/]?[d]+[[/].+[/]?]?$/.test(t) ? (t = "/" === t.charAt(0) ? t : "/" + t, u({}, "".concat(t, "|").concat(e.bidId), "".concat(l(e)).concat(f(e)))) : /^[0-9a-fA-F]{20}$/.test(t) && 20 === t.length ? u({}, e.bidId, "".concat(t, "|").concat(l(e)).concat(f(e))) : void Object(y.logError)("The ad unit code or Sonobi Placement id for slot ".concat(e.bidId, " is invalid")); }), n = {}; r.forEach(function (e) { d(n, e); }); var i = { key_maker: JSON.stringify(n), ref: t.refererInfo.referer, s: Object(y.generateUUID)(), pv: b, vp: v(), lib_name: "prebid", lib_v: "4.17.0", us: 0 }; o.b.getConfig("userSync") && o.b.getConfig("userSync").syncsPerBidder && (i.us = o.b.getConfig("userSync").syncsPerBidder), c.a.canBidderRegisterSync("iframe", p) ? i.ius = 1 : i.ius = 0, Object(y.deepAccess)(e[0], "params.hfa") && (i.hfa = Object(y.deepAccess)(e[0], "params.hfa")), e[0].params.referrer && (i.ref = e[0].params.referrer), t && t.gdprConsent && (i.gdpr = t.gdprConsent.gdprApplies ? "true" : "false", t.gdprConsent.consentString && (i.consent_string = t.gdprConsent.consentString)), e[0].schain && (i.schain = JSON.stringify(e[0].schain)), Object(y.deepAccess)(e[0], "userId") && 0 < Object.keys(e[0].userId).length && (i.userid = JSON.stringify(e[0].userId)); var s = e[0].params.keywords; if (s && (i.kw = s), t && t.uspConsent && (i.us_privacy = t.uspConsent), Object(y.isEmpty)(n)) return null; var a = "https://apex.go.sonobi.com/trinity.json"; return Object(y.deepAccess)(e[0], "params.bid_request_url") && (a = Object(y.deepAccess)(e[0], "params.bid_request_url")), { method: "GET", url: a, withCredentials: !0, data: i, bidderRequests: e }; }, interpretResponse: function interpretResponse(e, l) { var f = e.body, m = [], v = l.data.ref; return 0 === Object.keys(f.slots).length || Object.keys(f.slots).forEach(function (e) { var t = f.slots[e], r = e.split("|").slice(-1)[0], n = function (e, t) { for (var r = 0; r < e.length; r++) { if (e[r].bidId === t) return e[r]; } }(l.bidderRequests, r), i = null; "video" === t.sbi_ct && (i = "video"https://r.search.yahoo.com/,"outstream" === Object(y.deepAccess)(n, "mediaTypes.video.context") && (i = "outstream")); var s, a, o, c, d, u, p, b = j(i, v); t.sbi_aid && t.sbi_mouse && t.sbi_size && (o = void 0 === (a = (s = h(t.sbi_size.split("x"), 2))[0]) ? 1 : a, d = void 0 === (c = s[1]) ? 1 : c, u = { requestId: r, cpm: Number(t.sbi_mouse), width: Number(o), height: Number(d), ad: b(f.sbi_dc, t.sbi_aid), ttl: 500, creativeId: t.sbi_crid || t.sbi_aid, aid: t.sbi_aid, netRevenue: !0, currency: "USD" }, t.sbi_dozer && (u.dealId = t.sbi_dozer), "video" === i ? (u.mediaType = "video", u.vastUrl = b(f.sbi_dc, t.sbi_aid), delete u.ad, delete u.width, delete u.height) : "outstream" === i && n && (u.mediaType = "video", u.vastUrl = b(f.sbi_dc, t.sbi_aid), u.renderer = function (e, t) { var r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}, n = g.a.install({ id: t.aid, url: "https://mtrx.go.sonobi.com/sbi_outstream_renderer.js", config: r, loaded: !1, adUnitCode: e }); try { n.setRender(O); } catch (e) { Object(y.logWarn)("Prebid Error calling setRender on renderer", e); } return n.setEventHandlers({ impression: function impression() { return Object(y.logMessage)("Sonobi outstream video impression event"); }, loaded: function loaded() { return Object(y.logMessage)("Sonobi outstream video loaded event"); }, ended: function ended() { Object(y.logMessage)("Sonobi outstream renderer video event"); } }), n; }(n.adUnitCode, u, Object(y.deepAccess)(n, "renderer.options")), p = Object(y.deepAccess)(n, "params.sizes"), Array.isArray(p) && Array.isArray(p[0]) && (p = p[0]), p && (u.width = p[0], u.height = p[1])), m.push(u)); }), m; }, getUserSyncs: function getUserSyncs(e, t) { var r = []; try { e.pixelEnabled && t[0].body.sbi_px.forEach(function (e) { r.push({ type: e.type, url: e.url }); }); } catch (e) {} return r; } }; function l(e) { return Object(y.deepAccess)(e, "mediaTypes.video") ? "" : e.params.sizes ? Object(y.parseSizesInput)(e.params.sizes).join(",") : Object(y.deepAccess)(e, "mediaTypes.banner.sizes") ? Object(y.parseSizesInput)(Object(y.deepAccess)(e, "mediaTypes.banner.sizes")).join(",") : e.sizes ? Object(y.parseSizesInput)(e.sizes).join(",") : void 0; } function f(e) { return e.params.floor ? "|f=".concat(e.params.floor) : ""; } var j = function j(i, s) { return function (e, t) { return "video" === i || "outstream" === i ? (r = t, n = s, "https://".concat(e, "apex.go.sonobi.com/vast.xml?vid=").concat(r, "&ref=").concat(encodeURIComponent(n))) : '‘;
var r, n;
};
};

var m = function m(e) {
var r = 0 < arguments.length && void 0 !== e ? e : window; return function () { var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 0, t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : Number.MAX_SAFE_INTEGER; return r.innerWidth >= e && r.innerWidth < t; }; }; function v() { var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : window, t = m(e), r = 992, n = 768; return t(0, 768) ? "mobile" : t(n, r) ? "tablet" : "desktop"; } function O(i) { i.renderer.push(function () { var e = h(i.getSize().split("x"), 2), t = e[0], r = e[1], n = new window.SbiOutstreamRenderer(); n.init({ vastUrl: i.vastUrl, height: r, width: t }), n.setRootElement(i.adUnitCode); }); } Object(n.registerBidder)(a); } }, [777]); pbjsChunk([106], { 787: function _(e, t, r) { e.exports = r(788); }, 788: function _(e, t, r) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), r.d(t, "GOOGLE_CONSENT", function () { return B; }), r.d(t, "spec", function () { return n; }); var I = r(0), P = r(3), u = r(11), a = r(1), c = r(2); function d(e) { return (d = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) { return _typeof(e); } : function (e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e); })(e); } var i = "spotx", B = { consented_providers: ["3"https://r.search.yahoo.com/,"7"https://r.search.yahoo.com/,"11"https://r.search.yahoo.com/,"12"https://r.search.yahoo.com/,"15"https://r.search.yahoo.com/,"20"https://r.search.yahoo.com/,"22"https://r.search.yahoo.com/,"35"https://r.search.yahoo.com/,"43"https://r.search.yahoo.com/,"46"https://r.search.yahoo.com/,"48"https://r.search.yahoo.com/,"55"https://r.search.yahoo.com/,"57"https://r.search.yahoo.com/,"61"https://r.search.yahoo.com/,"62"https://r.search.yahoo.com/,"66"https://r.search.yahoo.com/,"70"https://r.search.yahoo.com/,"80"https://r.search.yahoo.com/,"83"https://r.search.yahoo.com/,"85"https://r.search.yahoo.com/,"86"https://r.search.yahoo.com/,"89"https://r.search.yahoo.com/,"93"https://r.search.yahoo.com/,"108"https://r.search.yahoo.com/,"122"https://r.search.yahoo.com/,"124"https://r.search.yahoo.com/,"125"https://r.search.yahoo.com/,"126"https://r.search.yahoo.com/,"131"https://r.search.yahoo.com/,"134"https://r.search.yahoo.com/,"135"https://r.search.yahoo.com/,"136"https://r.search.yahoo.com/,"143"https://r.search.yahoo.com/,"144"https://r.search.yahoo.com/,"147"https://r.search.yahoo.com/,"149"https://r.search.yahoo.com/,"153"https://r.search.yahoo.com/,"154"https://r.search.yahoo.com/,"159"https://r.search.yahoo.com/,"161"https://r.search.yahoo.com/,"162"https://r.search.yahoo.com/,"165"https://r.search.yahoo.com/,"167"https://r.search.yahoo.com/,"171"https://r.search.yahoo.com/,"178"https://r.search.yahoo.com/,"184"https://r.search.yahoo.com/,"188"https://r.search.yahoo.com/,"192"https://r.search.yahoo.com/,"195"https://r.search.yahoo.com/,"196"https://r.search.yahoo.com/,"202"https://r.search.yahoo.com/,"209"https://r.search.yahoo.com/,"211"https://r.search.yahoo.com/,"218"https://r.search.yahoo.com/,"221"https://r.search.yahoo.com/,"228"https://r.search.yahoo.com/,"229"https://r.search.yahoo.com/,"230"https://r.search.yahoo.com/,"236"https://r.search.yahoo.com/,"239"https://r.search.yahoo.com/,"241"https://r.search.yahoo.com/,"253"https://r.search.yahoo.com/,"255"https://r.search.yahoo.com/,"259"https://r.search.yahoo.com/,"266"https://r.search.yahoo.com/,"271"https://r.search.yahoo.com/,"272"https://r.search.yahoo.com/,"274"https://r.search.yahoo.com/,"286"https://r.search.yahoo.com/,"291"https://r.search.yahoo.com/,"294"https://r.search.yahoo.com/,"303"https://r.search.yahoo.com/,"308"https://r.search.yahoo.com/,"310"https://r.search.yahoo.com/,"311"https://r.search.yahoo.com/,"313"https://r.search.yahoo.com/,"314"https://r.search.yahoo.com/,"316"https://r.search.yahoo.com/,"317"https://r.search.yahoo.com/,"322"https://r.search.yahoo.com/,"323"https://r.search.yahoo.com/,"327"https://r.search.yahoo.com/,"336"https://r.search.yahoo.com/,"338"https://r.search.yahoo.com/,"340"https://r.search.yahoo.com/,"348"https://r.search.yahoo.com/,"350"https://r.search.yahoo.com/,"358"https://r.search.yahoo.com/,"359"https://r.search.yahoo.com/,"363"https://r.search.yahoo.com/,"367"https://r.search.yahoo.com/,"370"https://r.search.yahoo.com/,"371"https://r.search.yahoo.com/,"384"https://r.search.yahoo.com/,"385"https://r.search.yahoo.com/,"389"https://r.search.yahoo.com/,"393"https://r.search.yahoo.com/,"394"https://r.search.yahoo.com/,"397"https://r.search.yahoo.com/,"398"https://r.search.yahoo.com/,"407"https://r.search.yahoo.com/,"414"https://r.search.yahoo.com/,"415"https://r.search.yahoo.com/,"424"https://r.search.yahoo.com/,"429"https://r.search.yahoo.com/,"430"https://r.search.yahoo.com/,"432"https://r.search.yahoo.com/,"436"https://r.search.yahoo.com/,"438"https://r.search.yahoo.com/,"440"https://r.search.yahoo.com/,"442"https://r.search.yahoo.com/,"443"https://r.search.yahoo.com/,"445"https://r.search.yahoo.com/,"448"https://r.search.yahoo.com/,"449"https://r.search.yahoo.com/,"453"https://r.search.yahoo.com/,"459"https://r.search.yahoo.com/,"479"https://r.search.yahoo.com/,"482"https://r.search.yahoo.com/,"486"https://r.search.yahoo.com/,"491"https://r.search.yahoo.com/,"492"https://r.search.yahoo.com/,"494"https://r.search.yahoo.com/,"495"https://r.search.yahoo.com/,"503"https://r.search.yahoo.com/,"505"https://r.search.yahoo.com/,"510"https://r.search.yahoo.com/,"522"https://r.search.yahoo.com/,"523"https://r.search.yahoo.com/,"528"https://r.search.yahoo.com/,"537"https://r.search.yahoo.com/,"540"https://r.search.yahoo.com/,"550"https://r.search.yahoo.com/,"559"https://r.search.yahoo.com/,"560"https://r.search.yahoo.com/,"568"https://r.search.yahoo.com/,"571"https://r.search.yahoo.com/,"574"https://r.search.yahoo.com/,"575"https://r.search.yahoo.com/,"576"https://r.search.yahoo.com/,"584"https://r.search.yahoo.com/,"585"https://r.search.yahoo.com/,"587"https://r.search.yahoo.com/,"588"https://r.search.yahoo.com/,"590"https://r.search.yahoo.com/,"591"https://r.search.yahoo.com/,"592"https://r.search.yahoo.com/,"595"https://r.search.yahoo.com/,"609"https://r.search.yahoo.com/,"621"https://r.search.yahoo.com/,"624"https://r.search.yahoo.com/,"723"https://r.search.yahoo.com/,"725"https://r.search.yahoo.com/,"733"https://r.search.yahoo.com/,"737"https://r.search.yahoo.com/,"776"https://r.search.yahoo.com/,"780"https://r.search.yahoo.com/,"782"https://r.search.yahoo.com/,"787"https://r.search.yahoo.com/,"797"https://r.search.yahoo.com/,"798"https://r.search.yahoo.com/,"802"https://r.search.yahoo.com/,"803"https://r.search.yahoo.com/,"814"https://r.search.yahoo.com/,"817"https://r.search.yahoo.com/,"820"https://r.search.yahoo.com/,"821"https://r.search.yahoo.com/,"827"https://r.search.yahoo.com/,"829"https://r.search.yahoo.com/,"839"https://r.search.yahoo.com/,"853"https://r.search.yahoo.com/,"864"https://r.search.yahoo.com/,"867"https://r.search.yahoo.com/,"874"https://r.search.yahoo.com/,"899"https://r.search.yahoo.com/,"904"https://r.search.yahoo.com/,"922"https://r.search.yahoo.com/,"926"https://r.search.yahoo.com/,"931"https://r.search.yahoo.com/,"932"https://r.search.yahoo.com/,"933"https://r.search.yahoo.com/,"938"https://r.search.yahoo.com/,"955"https://r.search.yahoo.com/,"973"https://r.search.yahoo.com/,"976"https://r.search.yahoo.com/,"979"https://r.search.yahoo.com/,"981"https://r.search.yahoo.com/,"985"https://r.search.yahoo.com/,"987"https://r.search.yahoo.com/,"991"https://r.search.yahoo.com/,"1003"https://r.search.yahoo.com/,"1024"https://r.search.yahoo.com/,"1025"https://r.search.yahoo.com/,"1027"https://r.search.yahoo.com/,"1028"https://r.search.yahoo.com/,"1029"https://r.search.yahoo.com/,"1033"https://r.search.yahoo.com/,"1034"https://r.search.yahoo.com/,"1040"https://r.search.yahoo.com/,"1047"https://r.search.yahoo.com/,"1048"https://r.search.yahoo.com/,"1051"https://r.search.yahoo.com/,"1052"https://r.search.yahoo.com/,"1053"https://r.search.yahoo.com/,"1054"https://r.search.yahoo.com/,"1062"https://r.search.yahoo.com/,"1063"https://r.search.yahoo.com/,"1067"https://r.search.yahoo.com/,"1072"https://r.search.yahoo.com/,"1085"https://r.search.yahoo.com/,"1092"https://r.search.yahoo.com/,"1095"https://r.search.yahoo.com/,"1097"https://r.search.yahoo.com/,"1099"https://r.search.yahoo.com/,"1100"https://r.search.yahoo.com/,"1107"https://r.search.yahoo.com/,"1126"https://r.search.yahoo.com/,"1127"https://r.search.yahoo.com/,"1143"https://r.search.yahoo.com/,"1149"https://r.search.yahoo.com/,"1152"https://r.search.yahoo.com/,"1162"https://r.search.yahoo.com/,"1166"https://r.search.yahoo.com/,"1167"https://r.search.yahoo.com/,"1170"https://r.search.yahoo.com/,"1171"https://r.search.yahoo.com/,"1172"https://r.search.yahoo.com/,"1188"https://r.search.yahoo.com/,"1192"https://r.search.yahoo.com/,"1199"https://r.search.yahoo.com/,"1201"https://r.search.yahoo.com/,"1204"https://r.search.yahoo.com/,"1205"https://r.search.yahoo.com/,"1211"https://r.search.yahoo.com/,"1212"https://r.search.yahoo.com/,"1215"https://r.search.yahoo.com/,"1220"https://r.search.yahoo.com/,"1225"https://r.search.yahoo.com/,"1226"https://r.search.yahoo.com/,"1227"https://r.search.yahoo.com/,"1230"https://r.search.yahoo.com/,"1232"https://r.search.yahoo.com/,"1236"https://r.search.yahoo.com/,"1241"https://r.search.yahoo.com/,"1248"https://r.search.yahoo.com/,"1250"https://r.search.yahoo.com/,"1252"https://r.search.yahoo.com/,"1268"https://r.search.yahoo.com/,"1275"https://r.search.yahoo.com/,"1276"https://r.search.yahoo.com/,"1284"https://r.search.yahoo.com/,"1286"https://r.search.yahoo.com/,"1298"https://r.search.yahoo.com/,"1301"https://r.search.yahoo.com/,"1307"https://r.search.yahoo.com/,"1312"https://r.search.yahoo.com/,"1313"https://r.search.yahoo.com/,"1317"https://r.search.yahoo.com/,"1329"https://r.search.yahoo.com/,"1336"https://r.search.yahoo.com/,"1344"https://r.search.yahoo.com/,"1345"https://r.search.yahoo.com/,"1356"https://r.search.yahoo.com/,"1362"https://r.search.yahoo.com/,"1365"https://r.search.yahoo.com/,"1375"https://r.search.yahoo.com/,"1403"https://r.search.yahoo.com/,"1409"https://r.search.yahoo.com/,"1411"https://r.search.yahoo.com/,"1415"https://r.search.yahoo.com/,"1416"https://r.search.yahoo.com/,"1419"https://r.search.yahoo.com/,"1423"https://r.search.yahoo.com/,"1440"https://r.search.yahoo.com/,"1442"https://r.search.yahoo.com/,"1449"https://r.search.yahoo.com/,"1451"https://r.search.yahoo.com/,"1455"https://r.search.yahoo.com/,"1456"https://r.search.yahoo.com/,"1468"https://r.search.yahoo.com/,"1496"https://r.search.yahoo.com/,"1503"https://r.search.yahoo.com/,"1509"https://r.search.yahoo.com/,"1512"https://r.search.yahoo.com/,"1514"https://r.search.yahoo.com/,"1517"https://r.search.yahoo.com/,"1520"https://r.search.yahoo.com/,"1525"https://r.search.yahoo.com/,"1540"https://r.search.yahoo.com/,"1547"https://r.search.yahoo.com/,"1548"https://r.search.yahoo.com/,"1555"https://r.search.yahoo.com/,"1558"https://r.search.yahoo.com/,"1570"https://r.search.yahoo.com/,"1575"https://r.search.yahoo.com/,"1577"https://r.search.yahoo.com/,"1579"https://r.search.yahoo.com/,"1583"https://r.search.yahoo.com/,"1584"https://r.search.yahoo.com/,"1591"https://r.search.yahoo.com/,"1598"https://r.search.yahoo.com/,"1603"https://r.search.yahoo.com/,"1608"https://r.search.yahoo.com/,"1613"https://r.search.yahoo.com/,"1616"https://r.search.yahoo.com/,"1626"https://r.search.yahoo.com/,"1631"https://r.search.yahoo.com/,"1633"https://r.search.yahoo.com/,"1638"https://r.search.yahoo.com/,"1642"https://r.search.yahoo.com/,"1648"https://r.search.yahoo.com/,"1651"https://r.search.yahoo.com/,"1652"https://r.search.yahoo.com/,"1653"https://r.search.yahoo.com/,"1660"https://r.search.yahoo.com/,"1665"https://r.search.yahoo.com/,"1667"https://r.search.yahoo.com/,"1669"https://r.search.yahoo.com/,"1671"https://r.search.yahoo.com/,"1674"https://r.search.yahoo.com/,"1677"https://r.search.yahoo.com/,"1678"https://r.search.yahoo.com/,"1682"https://r.search.yahoo.com/,"1684"https://r.search.yahoo.com/,"1697"https://r.search.yahoo.com/,"1703"https://r.search.yahoo.com/,"1705"https://r.search.yahoo.com/,"1716"https://r.search.yahoo.com/,"1720"https://r.search.yahoo.com/,"1721"https://r.search.yahoo.com/,"1722"https://r.search.yahoo.com/,"1725"https://r.search.yahoo.com/,"1732"https://r.search.yahoo.com/,"1733"https://r.search.yahoo.com/,"1735"https://r.search.yahoo.com/,"1739"https://r.search.yahoo.com/,"1741"https://r.search.yahoo.com/,"1745"https://r.search.yahoo.com/,"1750"https://r.search.yahoo.com/,"1753"https://r.search.yahoo.com/,"1760"https://r.search.yahoo.com/,"1765"https://r.search.yahoo.com/,"1769"https://r.search.yahoo.com/,"1776"https://r.search.yahoo.com/,"1780"https://r.search.yahoo.com/,"1782"https://r.search.yahoo.com/,"1786"https://r.search.yahoo.com/,"1791"https://r.search.yahoo.com/,"1794"https://r.search.yahoo.com/,"1799"https://r.search.yahoo.com/,"1800"https://r.search.yahoo.com/,"1801"https://r.search.yahoo.com/,"1810"https://r.search.yahoo.com/,"1827"https://r.search.yahoo.com/,"1831"https://r.search.yahoo.com/,"1832"https://r.search.yahoo.com/,"1834"https://r.search.yahoo.com/,"1837"https://r.search.yahoo.com/,"1840"https://r.search.yahoo.com/,"1843"https://r.search.yahoo.com/,"1844"https://r.search.yahoo.com/,"1845"https://r.search.yahoo.com/,"1858"https://r.search.yahoo.com/,"1859"https://r.search.yahoo.com/,"1863"https://r.search.yahoo.com/,"1866"https://r.search.yahoo.com/,"1870"https://r.search.yahoo.com/,"1872"https://r.search.yahoo.com/,"1875"https://r.search.yahoo.com/,"1878"https://r.search.yahoo.com/,"1880"https://r.search.yahoo.com/,"1882"https://r.search.yahoo.com/,"1883"https://r.search.yahoo.com/,"1889"https://r.search.yahoo.com/,"1892"https://r.search.yahoo.com/,"1896"https://r.search.yahoo.com/,"1898"https://r.search.yahoo.com/,"1899"https://r.search.yahoo.com/,"1902"https://r.search.yahoo.com/,"1905"https://r.search.yahoo.com/,"1911"https://r.search.yahoo.com/,"1922"https://r.search.yahoo.com/,"1928"https://r.search.yahoo.com/,"1929"https://r.search.yahoo.com/,"1934"https://r.search.yahoo.com/,"1942"https://r.search.yahoo.com/,"1943"https://r.search.yahoo.com/,"1944"https://r.search.yahoo.com/,"1945"https://r.search.yahoo.com/,"1958"https://r.search.yahoo.com/,"1960"https://r.search.yahoo.com/,"1962"https://r.search.yahoo.com/,"1963"https://r.search.yahoo.com/,"1964"https://r.search.yahoo.com/,"1967"https://r.search.yahoo.com/,"1968"https://r.search.yahoo.com/,"1978"https://r.search.yahoo.com/,"1985"https://r.search.yahoo.com/,"1986"https://r.search.yahoo.com/,"1987"https://r.search.yahoo.com/,"1998"https://r.search.yahoo.com/,"2003"https://r.search.yahoo.com/,"2007"https://r.search.yahoo.com/,"2012"https://r.search.yahoo.com/,"2013"https://r.search.yahoo.com/,"2027"https://r.search.yahoo.com/,"2035"https://r.search.yahoo.com/,"2038"https://r.search.yahoo.com/,"2039"https://r.search.yahoo.com/,"2044"https://r.search.yahoo.com/,"2047"https://r.search.yahoo.com/,"2052"https://r.search.yahoo.com/,"2056"https://r.search.yahoo.com/,"2059"https://r.search.yahoo.com/,"2062"https://r.search.yahoo.com/,"2064"https://r.search.yahoo.com/,"2068"https://r.search.yahoo.com/,"2070"https://r.search.yahoo.com/,"2072"https://r.search.yahoo.com/,"2078"https://r.search.yahoo.com/,"2079"https://r.search.yahoo.com/,"2084"https://r.search.yahoo.com/,"2088"https://r.search.yahoo.com/,"2090"https://r.search.yahoo.com/,"2095"https://r.search.yahoo.com/,"2100"https://r.search.yahoo.com/,"2103"https://r.search.yahoo.com/,"2107"https://r.search.yahoo.com/,"2109"https://r.search.yahoo.com/,"2113"https://r.search.yahoo.com/,"2115"https://r.search.yahoo.com/,"2121"https://r.search.yahoo.com/,"2127"https://r.search.yahoo.com/,"2130"https://r.search.yahoo.com/,"2133"https://r.search.yahoo.com/,"2137"https://r.search.yahoo.com/,"2140"https://r.search.yahoo.com/,"2141"https://r.search.yahoo.com/,"2145"https://r.search.yahoo.com/,"2147"https://r.search.yahoo.com/,"2150"https://r.search.yahoo.com/,"2156"https://r.search.yahoo.com/,"2166"https://r.search.yahoo.com/,"2170"https://r.search.yahoo.com/,"2171"https://r.search.yahoo.com/,"2176"https://r.search.yahoo.com/,"2177"https://r.search.yahoo.com/,"2179"https://r.search.yahoo.com/,"2183"https://r.search.yahoo.com/,"2186"https://r.search.yahoo.com/,"2192"https://r.search.yahoo.com/,"2198"https://r.search.yahoo.com/,"2202"https://r.search.yahoo.com/,"2205"https://r.search.yahoo.com/,"2214"https://r.search.yahoo.com/,"2216"https://r.search.yahoo.com/,"2219"https://r.search.yahoo.com/,"2220"https://r.search.yahoo.com/,"2222"https://r.search.yahoo.com/,"2223"https://r.search.yahoo.com/,"2224"https://r.search.yahoo.com/,"2225"https://r.search.yahoo.com/,"2227"https://r.search.yahoo.com/,"2228"https://r.search.yahoo.com/,"2234"https://r.search.yahoo.com/,"2238"https://r.search.yahoo.com/,"2247"https://r.search.yahoo.com/,"2251"https://r.search.yahoo.com/,"2253"https://r.search.yahoo.com/,"2262"https://r.search.yahoo.com/,"2264"https://r.search.yahoo.com/,"2271"https://r.search.yahoo.com/,"2276"https://r.search.yahoo.com/,"2278"https://r.search.yahoo.com/,"2279"https://r.search.yahoo.com/,"2282"https://r.search.yahoo.com/,"2290"https://r.search.yahoo.com/,"2292"https://r.search.yahoo.com/,"2295"https://r.search.yahoo.com/,"2299"https://r.search.yahoo.com/,"2305"https://r.search.yahoo.com/,"2306"https://r.search.yahoo.com/,"2310"https://r.search.yahoo.com/,"2311"https://r.search.yahoo.com/,"2312"https://r.search.yahoo.com/,"2315"https://r.search.yahoo.com/,"2320"https://r.search.yahoo.com/,"2325"https://r.search.yahoo.com/,"2328"https://r.search.yahoo.com/,"2331"https://r.search.yahoo.com/,"2334"https://r.search.yahoo.com/,"2335"https://r.search.yahoo.com/,"2336"https://r.search.yahoo.com/,"2337"https://r.search.yahoo.com/,"2343"https://r.search.yahoo.com/,"2346"https://r.search.yahoo.com/,"2354"https://r.search.yahoo.com/,"2357"https://r.search.yahoo.com/,"2358"https://r.search.yahoo.com/,"2359"https://r.search.yahoo.com/,"2366"https://r.search.yahoo.com/,"2370"https://r.search.yahoo.com/,"2373"https://r.search.yahoo.com/,"2376"https://r.search.yahoo.com/,"2377"https://r.search.yahoo.com/,"2380"https://r.search.yahoo.com/,"2382"https://r.search.yahoo.com/,"2387"https://r.search.yahoo.com/,"2389"https://r.search.yahoo.com/,"2392"https://r.search.yahoo.com/,"2394"https://r.search.yahoo.com/,"2400"https://r.search.yahoo.com/,"2403"https://r.search.yahoo.com/,"2405"https://r.search.yahoo.com/,"2406"https://r.search.yahoo.com/,"2407"https://r.search.yahoo.com/,"2410"https://r.search.yahoo.com/,"2411"https://r.search.yahoo.com/,"2413"https://r.search.yahoo.com/,"2414"https://r.search.yahoo.com/,"2415"https://r.search.yahoo.com/,"2416"https://r.search.yahoo.com/,"2418"https://r.search.yahoo.com/,"2422"https://r.search.yahoo.com/,"2425"https://r.search.yahoo.com/,"2427"https://r.search.yahoo.com/,"2435"https://r.search.yahoo.com/,"2437"https://r.search.yahoo.com/,"2440"https://r.search.yahoo.com/,"2441"https://r.search.yahoo.com/,"2447"https://r.search.yahoo.com/,"2453"https://r.search.yahoo.com/,"2459"https://r.search.yahoo.com/,"2461"https://r.search.yahoo.com/,"2462"https://r.search.yahoo.com/,"2464"https://r.search.yahoo.com/,"2467"https://r.search.yahoo.com/,"2468"https://r.search.yahoo.com/,"2472"https://r.search.yahoo.com/,"2477"https://r.search.yahoo.com/,"2481"https://r.search.yahoo.com/,"2484"https://r.search.yahoo.com/,"2486"https://r.search.yahoo.com/,"2492"https://r.search.yahoo.com/,"2493"https://r.search.yahoo.com/,"2496"https://r.search.yahoo.com/,"2497"https://r.search.yahoo.com/,"2498"https://r.search.yahoo.com/,"2499"https://r.search.yahoo.com/,"2504"https://r.search.yahoo.com/,"2506"https://r.search.yahoo.com/,"2510"https://r.search.yahoo.com/,"2511"https://r.search.yahoo.com/,"2512"https://r.search.yahoo.com/,"2517"https://r.search.yahoo.com/,"2526"https://r.search.yahoo.com/,"2527"https://r.search.yahoo.com/,"2531"https://r.search.yahoo.com/,"2532"https://r.search.yahoo.com/,"2534"https://r.search.yahoo.com/,"2542"https://r.search.yahoo.com/,"2544"https://r.search.yahoo.com/,"2552"https://r.search.yahoo.com/,"2555"https://r.search.yahoo.com/,"2559"https://r.search.yahoo.com/,"2563"https://r.search.yahoo.com/,"2564"https://r.search.yahoo.com/,"2567"https://r.search.yahoo.com/,"2568"https://r.search.yahoo.com/,"2569"https://r.search.yahoo.com/,"2571"https://r.search.yahoo.com/,"2572"https://r.search.yahoo.com/,"2573"https://r.search.yahoo.com/,"2575"https://r.search.yahoo.com/,"2577"https://r.search.yahoo.com/,"2579"https://r.search.yahoo.com/,"2583"https://r.search.yahoo.com/,"2584"https://r.search.yahoo.com/,"2586"https://r.search.yahoo.com/,"2589"https://r.search.yahoo.com/,"2595"https://r.search.yahoo.com/,"2596"https://r.search.yahoo.com/,"2597"https://r.search.yahoo.com/,"2601"https://r.search.yahoo.com/,"2604"https://r.search.yahoo.com/,"2605"https://r.search.yahoo.com/,"2609"https://r.search.yahoo.com/,"2610"https://r.search.yahoo.com/,"2612"https://r.search.yahoo.com/,"2614"https://r.search.yahoo.com/,"2621"https://r.search.yahoo.com/,"2622"https://r.search.yahoo.com/,"2624"https://r.search.yahoo.com/,"2628"https://r.search.yahoo.com/,"2629"https://r.search.yahoo.com/,"2632"https://r.search.yahoo.com/,"2634"https://r.search.yahoo.com/,"2636"https://r.search.yahoo.com/,"2639"https://r.search.yahoo.com/,"2643"https://r.search.yahoo.com/,"2645"https://r.search.yahoo.com/,"2646"https://r.search.yahoo.com/,"2647"https://r.search.yahoo.com/,"2649"https://r.search.yahoo.com/,"2650"https://r.search.yahoo.com/,"2651"https://r.search.yahoo.com/,"2652"https://r.search.yahoo.com/,"2656"https://r.search.yahoo.com/,"2657"https://r.search.yahoo.com/,"2658"https://r.search.yahoo.com/,"2660"https://r.search.yahoo.com/,"2661"https://r.search.yahoo.com/,"2662"https://r.search.yahoo.com/,"2663"https://r.search.yahoo.com/,"2664"https://r.search.yahoo.com/,"2669"https://r.search.yahoo.com/,"2670"https://r.search.yahoo.com/,"2673"https://r.search.yahoo.com/,"2676"https://r.search.yahoo.com/,"2677"https://r.search.yahoo.com/,"2678"https://r.search.yahoo.com/,"2681"https://r.search.yahoo.com/,"2682"https://r.search.yahoo.com/,"2684"https://r.search.yahoo.com/,"2685"https://r.search.yahoo.com/,"2686"https://r.search.yahoo.com/,"2689"https://r.search.yahoo.com/,"2690"https://r.search.yahoo.com/,"2691"https://r.search.yahoo.com/,"2695"https://r.search.yahoo.com/,"2698"https://r.search.yahoo.com/,"2699"https://r.search.yahoo.com/,"2702"https://r.search.yahoo.com/,"2704"https://r.search.yahoo.com/,"2705"https://r.search.yahoo.com/,"2706"https://r.search.yahoo.com/,"2707"https://r.search.yahoo.com/,"2709"https://r.search.yahoo.com/,"2710"https://r.search.yahoo.com/,"2713"https://r.search.yahoo.com/,"2714"https://r.search.yahoo.com/,"2727"https://r.search.yahoo.com/,"2729"https://r.search.yahoo.com/,"2739"https://r.search.yahoo.com/,"2758"https://r.search.yahoo.com/,"2765"https://r.search.yahoo.com/,"2766"https://r.search.yahoo.com/,"2767"https://r.search.yahoo.com/,"2768"https://r.search.yahoo.com/,"2770"https://r.search.yahoo.com/,"2771"https://r.search.yahoo.com/,"2772"https://r.search.yahoo.com/,"2776"https://r.search.yahoo.com/,"2777"https://r.search.yahoo.com/,"2778"https://r.search.yahoo.com/,"2779"https://r.search.yahoo.com/,"2780"https://r.search.yahoo.com/,"2783"https://r.search.yahoo.com/,"2784"https://r.search.yahoo.com/,"2786"https://r.search.yahoo.com/,"2787"https://r.search.yahoo.com/,"2791"https://r.search.yahoo.com/,"2792"https://r.search.yahoo.com/,"2793"https://r.search.yahoo.com/,"2797"https://r.search.yahoo.com/,"2798"https://r.search.yahoo.com/,"2801"https://r.search.yahoo.com/,"2802"https://r.search.yahoo.com/,"2803"https://r.search.yahoo.com/,"2805"https://r.search.yahoo.com/,"2808"https://r.search.yahoo.com/,"2809"https://r.search.yahoo.com/,"2810"https://r.search.yahoo.com/,"2811"https://r.search.yahoo.com/,"2812"https://r.search.yahoo.com/,"2813"https://r.search.yahoo.com/,"2814"https://r.search.yahoo.com/,"2817"https://r.search.yahoo.com/,"2818"https://r.search.yahoo.com/,"2824"https://r.search.yahoo.com/,"2826"https://r.search.yahoo.com/,"2827"https://r.search.yahoo.com/,"2829"https://r.search.yahoo.com/,"2830"https://r.search.yahoo.com/,"2831"https://r.search.yahoo.com/,"2832"https://r.search.yahoo.com/,"2834"https://r.search.yahoo.com/,"2836"https://r.search.yahoo.com/,"2838"https://r.search.yahoo.com/,"2840"https://r.search.yahoo.com/,"2842"https://r.search.yahoo.com/,"2843"https://r.search.yahoo.com/,"2844"https://r.search.yahoo.com/,"2850"https://r.search.yahoo.com/,"2851"https://r.search.yahoo.com/,"2852"https://r.search.yahoo.com/,"2854"https://r.search.yahoo.com/,"2858"https://r.search.yahoo.com/,"2860"https://r.search.yahoo.com/,"2862"https://r.search.yahoo.com/,"2864"https://r.search.yahoo.com/,"2865"https://r.search.yahoo.com/,"2866"https://r.search.yahoo.com/,"2867"https://r.search.yahoo.com/,"2868"https://r.search.yahoo.com/,"2869"https://r.search.yahoo.com/,"2871"] }, n = { code: i, gvlid: 165, aliases: ["spotx"], supportedMediaTypes: [c.d], isBidRequestValid: function isBidRequestValid(e) { if (e && "object" !== d(e.params)) return I.logError(i + ": params is not defined or is incorrect in the bidder settings."), !1; if (!I.deepAccess(e, "mediaTypes.video")) return I.logError(i + ": mediaTypes.video is not present in the bidder settings."), !1; var t = I.deepAccess(e, "mediaTypes.video.playerSize"); if (!t || !I.isArray(t)) return I.logError(i + ": mediaTypes.video.playerSize is not defined in the bidder settings."), !1; if (!I.getBidIdParameter("channel_id", e.params)) return I.logError(i + ": channel_id is not present in bidder params"), !1; if (("outstream" == I.deepAccess(e, "mediaTypes.video.context") || "outstream" == I.deepAccess(e, "params.ad_unit")) && !I.getBidIdParameter("outstream_function", e.params)) { if (!I.getBidIdParameter("outstream_options", e.params)) return I.logError(i + ": please define outstream_options parameter or override the default SpotX outstream rendering by defining your own Outstream function using field outstream_function."), !1; if (!I.getBidIdParameter("slot", e.params.outstream_options)) return I.logError(i + ": please define parameters slot outstream_options object in the configuration."), !1; } return !0; }, buildRequests: function buildRequests(e, h) { var y = h.refererInfo.referer, b = !!y.match(/^https:/); return e.map(function (e) { var t = I.getBidIdParameter("page", e.params) ? I.getBidIdParameter("page", e.params) : P.b.getConfig("pageUrl") ? P.b.getConfig("pageUrl") : y, r = I.getBidIdParameter("channel_id", e.params), a = null, d = I.deepAccess(e, "mediaTypes.video.playerSize"), i = d[0][0], n = d[0][1], o = b || (I.getBidIdParameter("secure", e.params) ? 1 : 0), s = { sdk_name: "Prebid 1+", versionOrtb: "2.3" }; if ("" != I.getBidIdParameter("hide_skin", e.params) && (s.hide_skin = +!!I.getBidIdParameter("hide_skin", e.params)), "" != I.getBidIdParameter("ad_volume", e.params) && (s.ad_volume = I.getBidIdParameter("ad_volume", e.params)), "" != I.getBidIdParameter("ad_unit", e.params) && (s.ad_unit = I.getBidIdParameter("ad_unit", e.params)), "" != I.getBidIdParameter("outstream_options", e.params) && (s.outstream_options = I.getBidIdParameter("outstream_options", e.params)), "" != I.getBidIdParameter("outstream_function", e.params) && (s.outstream_function = I.getBidIdParameter("outstream_function", e.params)), "" != I.getBidIdParameter("custom", e.params) && (s.custom = I.getBidIdParameter("custom", e.params)), "" != I.getBidIdParameter("pre_market_bids", e.params) && I.isArray(I.getBidIdParameter("pre_market_bids", e.params))) { var p = I.getBidIdParameter("pre_market_bids", e.params); for (var m in (s.pre_market_bids = [], p)) { var u = p[m], c = ""; u.vast_url ? c = '‘ + u.vast_url + “” : u.vast_string && (c = u.vast_string), s.pre_market_bids.push({
id: u.deal_id,
seatbid: [{
bid: [{
impid: Date.now(),
dealid: u.deal_id,
price: u.price,
adm: c
}]
}],
cur: u.currency,
ext: {
event_log: [{}]
}
});
}
}

var g = I.getBidIdParameter(“mimes”, e.params) || [“application/javascript”https://r.search.yahoo.com/,”video/mp4″https://r.search.yahoo.com/,”video/webm”],
_ = {
id: e.bidId,
secure: o,
video: {
w: i,
h: n,
ext: s,
mimes: g
}
};
“” != I.getBidIdParameter(“price_floor”, e.params) && (_.bidfloor = I.getBidIdParameter(“price_floor”, e.params)), “” != I.getBidIdParameter(“start_delay”, e.params) && (_.video.startdelay = 0 + Boolean(I.getBidIdParameter(“start_delay”, e.params))), “” != I.getBidIdParameter(“min_duration”, e.params) && (_.video.minduration = I.getBidIdParameter(“min_duration”, e.params)), “” != I.getBidIdParameter(“max_duration”, e.params) && (_.video.maxduration = I.getBidIdParameter(“max_duration”, e.params)), “” != I.getBidIdParameter(“placement_type”, e.params) && (_.video.ext.placement = I.getBidIdParameter(“placement_type”, e.params)), “” != I.getBidIdParameter(“position”, e.params) && (_.video.ext.pos = I.getBidIdParameter(“position”, e.params)), e.crumbs && e.crumbs.pubcid && (a = e.crumbs.pubcid);
var l = navigator.language ? “language” : “userLanguage”,
v = {
id: r,
imp: _,
site: {
id: “”,
page: t,
content: “content”
},
device: {
h: screen.height,
w: screen.width,
dnt: I.getDNT() ? 1 : 0,
language: navigator[l].split(“-“)[0],
make: navigator.vendor ? navigator.vendor : “”,
ua: navigator.userAgent
},
ext: {
wrap_response: 1
}
};
I.getBidIdParameter(“number_of_ads”, e.params) && (v.ext.number_of_ads = I.getBidIdParameter(“number_of_ads”, e.params));
var f = {};
return 1 == I.getBidIdParameter(“spotx_all_google_consent”, e.params) && (f.consented_providers_settings = B), h && h.gdprConsent && (f.consent = h.gdprConsent.consentString, void 0 !== h.gdprConsent.gdprApplies && I.deepSetValue(v, “regs.ext.gdpr”, h.gdprConsent.gdprApplies ? 1 : 0)), h && h.uspConsent && I.deepSetValue(v, “regs.ext.us_privacy”, h.uspConsent), I.deepAccess(e, “userId.id5id.uid”) && (f.eids = f.eids || [], f.eids.push({
source: “id5-sync.com”,
uids: [{
id: e.userId.id5id.uid
}],
ext: e.userId.id5id.ext || {}
})), a && (f.fpc = a), e && e.schain && (v.source = {
ext: {
schain: e.schain
}
}), e && e.userId && e.userId.tdid && (f.eids = f.eids || [], f.eids.push({
source: “adserver.org”,
uids: [{
id: e.userId.tdid,
ext: {
rtiPartner: “TDID”
}
}]
})), I.isEmpty(f) || (v.user = {
ext: f
}), {
method: “POST”,
url: “https://search.spotxchange.com/openrtb/2.3/dados/” + r,
data: v,
bidRequest: h
};
});
},
interpretResponse: function interpretResponse(e, s) {
var p = [],
m = e.body;
return m && I.isArray(m.seatbid) && I._each(m.seatbid, function (e) {
I._each(e.bid, function (t) {
var e = {};

for (var r in s.bidRequest.bids) {
t.impid == s.bidRequest.bids[r].bidId && (e = s.bidRequest.bids[r]);
}

I._each(e.params.pre_market_bids, function (e) {
e.deal_id == t.id && (t.price = e.price, m.cur = e.currency);
});

var a = {
requestId: e.bidId,
currency: m.cur || “USD”,
cpm: t.price,
creativeId: t.crid || “”,
dealId: t.dealid || “”,
ttl: 360,
netRevenue: !0,
channel_id: m.id,
cache_key: t.ext.cache_key,
vastUrl: “https://search.spotxchange.com/ad/vast.html?key=” + t.ext.cache_key,
videoCacheKey: t.ext.cache_key,
mediaType: c.d,
width: t.w,
height: t.h
};
a.meta = a.meta || {}, t && t.adomain && 0 < t.adomain.length && (a.meta.advertiserDomains = t.adomain); var d = I.deepAccess(e, "mediaTypes.video.context"), i = I.deepAccess(e, "params.ad_unit"); if ("outstream" == d || "outstream" == i) { var n = I.deepAccess(e, "mediaTypes.video.playerSize"), o = u.a.install({ id: 0, url: "//", config: { adText: "SpotX Outstream Video Ad via Prebid.js", player_width: n[0][0], player_height: n[0][1], content_page_url: I.deepAccess(s, "data.site.page"), ad_mute: +!!I.deepAccess(e, "params.ad_mute"), hide_skin: +!!I.deepAccess(e, "params.hide_skin"), outstream_options: I.deepAccess(e, "params.outstream_options"), outstream_function: I.deepAccess(e, "params.outstream_function") } }); try { o.setRender(g), o.setEventHandlers({ impression: function impression() { return I.logMessage("SpotX outstream video impression event"); }, loaded: function loaded() { return I.logMessage("SpotX outstream video loaded event"); }, ended: function ended() { I.logMessage("SpotX outstream renderer video event"); } }); } catch (e) { I.logWarn("Prebid Error calling setRender or setEve,tHandlers on renderer", e); } a.renderer = o; } p.push(a); }); }), p; } }; function g(e) { var t = function (e) { var t = I.getBidIdParameter("slot", e.renderer.config.outstream_options); I.logMessage("[SPOTX][renderer] Handle SpotX outstream renderer"); var r = window.document.createElement("script"); r.type = "text/javascript", r.src = "https://js.spotx.tv/easi/v1/" + e.channel_id + ".js"; var a = {}; a["data-spotx_channel_id"] = "" + e.channel_id, a["data-spotx_vast_url"] = "" + e.vastUrl, a["data-spotx_content_page_url"] = e.renderer.config.content_page_url, a["data-spotx_ad_unit"] = "incontent", I.logMessage("[SPOTX][renderer] Default beahavior"), I.getBidIdParameter("ad_mute", e.renderer.config.outstream_options) && (a["data-spotx_ad_mute"] = "1"), a["data-spotx_collapse"] = "0", a["data-spotx_autoplay"] = "1", a["data-spotx_blocked_autoplay_override_mode"] = "1", a["data-spotx_video_slot_can_autoplay"] = "1"; var d, i, n, o, s, p, m = I.getBidIdParameter("playersize_auto_adapt", e.renderer.config.outstream_options); m && I.isBoolean(m) && !0 === m && (e.width && I.isNumber(e.width) && e.height && I.isNumber(e.height) ? (d = e.width / e.height, i = window.document.getElementById(t).clientWidth, n = e.renderer.config.player_width, o = e.renderer.config.player_height, p = s = 0, i < n && (o = (n = i) / d), p = d <= 1 ? (s = Math.round(o * d), o) : (s = n, Math.round(n / d)), a["data-spotx_content_width"] = "" + s, a["data-spotx_content_height"] = "" + p) : I.logWarn("[SPOTX][renderer] PlayerSize auto adapt: bid.width and bid.height are incorrect")); var u = I.getBidIdParameter("custom_override", e.renderer.config.outstream_options); if (u && I.isPlainObject(u)) for (var c in (I.logMessage("[SPOTX][renderer] Custom behavior."), u)) { u.hasOwnProperty(c) && ("channel_id" === c || "vast_url" === c || "content_page_url" === c || "ad_unit" === c ? I.logWarn("[SPOTX][renderer] Custom behavior: following option cannot be overridden: " + c) : a["data-spotx_" + c] = u[c]); } for (var g in a) { a.hasOwnProperty(g) && r.setAttribute(g, a[g]); } return r; }(e); if (null != e.renderer.config.outstream_function && "function" == typeof e.renderer.config.outstream_function) e.renderer.config.outstream_function(e, t);else try { var r, a, d, i = I.getBidIdParameter("in_iframe", e.renderer.config.outstream_options); i && "IFRAME" == window.document.getElementById(i).nodeName ? (!(a = (r = window.document.getElementById(i)).contentDocument) && r.contentWindow && (a = r.contentWindow.document), a.body.appendChild(t)) : (d = I.getBidIdParameter("slot", e.renderer.config.outstream_options)) && window.document.getElementById(d) ? window.document.getElementById(d).appendChild(t) : window.document.getElementsByTagName("head")[0].appendChild(t); } catch (e) { I.logError("[SPOTX][renderer] Error:" + e.message); } } Object(a.registerBidder)(n); } }, [787]); pbjsChunk([99], { 803: function _(e, t, r) { e.exports = r(804); }, 804: function _(e, t, r) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), r.d(t, "spec", function () { return i; }); var n = r(1), a = r(0), p = 12, c = 11, u = 0, g = 22, i = { code: "teads", gvlid: 132, supportedMediaTypes: ["video"https://r.search.yahoo.com/,"banner"], isBidRequestValid: function isBidRequestValid(e) { var t, r, n = !1; return void 0 !== e.params && (t = s(a.getValue(e.params, "placementId")), r = s(a.getValue(e.params, "pageId")), n = t && r), n || a.logError("Teads placementId and pageId parameters are required. Bid aborted."), n; }, buildRequests: function buildRequests(e, t) { var r, n = e.map(f), i = { referrer: function (e) { var t = ""; e && e.refererInfo && e.refererInfo.referer && (t = e.refererInfo.referer); return t; }(t), pageReferrer: document.referrer, networkBandwidth: (r = window.navigator) && r.connection && 0 <= r.connection.downlink ? r.connection.downlink.toString() : "", timeToFirstByte: function (e) { var t = e.performance || e.webkitPerformance || e.msPerformance || e.mozPerformance, r = t && "function" == typeof t.getEntriesByType && "[object Function]" === Object.prototype.toString.call(t.getEntriesByType) && t.getEntriesByType("navigation")[0] && t.getEntriesByType("navigation")[0].responseStart && t.getEntriesByType("navigation")[0].requestStart && 0 < t.getEntriesByType("navigation")[0].responseStart && 0 < t.getEntriesByType("navigation")[0].requestStart && Math.round(t.getEntriesByType("navigation")[0].responseStart - t.getEntriesByType("navigation")[0].requestStart); if (r) return r.toString(); var n = t && t.timing.responseStart && t.timing.requestStart && 0 < t.timing.responseStart && 0 < t.timing.requestStart && t.timing.responseStart - t.timing.requestStart; return n ? n.toString() : ""; }(window), data: n, deviceWidth: screen.width, hb_version: "4.17.0" }; e[0].schain && (i.schain = e[0].schain); var a, s, o, d = t.gdprConsent; return t && d && (a = "boolean" == typeof d.gdprApplies, s = "string" == typeof d.consentString, o = a ? function (e, t, r) { var n = p; e ? function (e, t) { return e && 1 === t ? e.hasGlobalScope || e.hasGlobalConsent : !(!e || 2 !== t) && !e.isServiceSpecific; }(t, r) && (n = c) : n = u; return n; }(d.gdprApplies, d.vendorData, d.apiVersion) : g, i.gdpr_iab = { consent: s ? d.consentString : "", status: o, apiVersion: d.apiVersion }), t && t.uspConsent && (i.us_privacy = t.uspConsent), { method: "POST", url: "https://a.teads.tv/hb/bid-request", data: JSON.stringify(i) }; }, interpretResponse: function interpretResponse(e) { var r = []; return (e = e.body).responses && e.responses.forEach(function (e) { var t = { cpm: e.cpm, width: e.width, height: e.height, currency: e.currency, netRevenue: !0, ttl: e.ttl, ad: e.ad, requestId: e.bidId, creativeId: e.creativeId, placementId: e.placementId }; e.dealId && (t.dealId = e.dealId), r.push(t); }), r; } }; function f(e) { var t, r = {}, n = a.getValue(e.params, "placementId"), i = a.getValue(e.params, "pageId"); return r.sizes = (t = e, a.parseSizesInput(function (e) { var t = a.deepAccess(e, "mediaTypes.video.playerSize"), r = a.deepAccess(e, "mediaTypes.video.sizes"), n = a.deepAccess(e, "mediaTypes.banner.sizes"); return a.isArray(n) || a.isArray(t) || a.isArray(r) ? [n, r, t].reduce(function (t, e) { return a.isArray(e) && (a.isArray(e[0]) ? e.forEach(function (e) { t.push(e); }) : t.push(e)), t; }, []) : e.sizes; }(t))), r.bidId = a.getBidIdParameter("bidId", e), r.bidderRequestId = a.getBidIdParameter("bidderRequestId", e), r.placementId = parseInt(n, 10), r.pageId = parseInt(i, 10), r.adUnitCode = a.getBidIdParameter("adUnitCode", e), r.auctionId = a.getBidIdParameter("auctionId", e), r.transactionId = a.getBidIdParameter("transactionId", e), r; } function s(e) { return 0 < parseInt(e); } Object(n.registerBidder)(i); } }, [803]); pbjsChunk([90], { 823: function _(e, r, t) { e.exports = t(824); }, 824: function _(e, r, t) { "use strict"; Object.defineProperty(r, "__esModule", { value: !0 }), t.d(r, "tripleliftAdapterSpec", function () { return m; }); var n = t(2), i = t(1), u = t(0), a = t(3); function p() { return (p = Object.assign || function (e) { for (var r = 1; r < arguments.length; r++) { var t = arguments[r]; for (var n in t) { Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]); } } return e; }).apply(this, arguments); } function c(e) { return (c = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) { return _typeof(e); } : function (e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e); })(e); } function s(r, e) { var t, n = Object.keys(r); return Object.getOwnPropertySymbols && (t = Object.getOwnPropertySymbols(r), e && (t = t.filter(function (e) { return Object.getOwnPropertyDescriptor(r, e).enumerable; })), n.push.apply(n, t)), n; } function d(i) { for (var e = 1; e < arguments.length; e++) { var o = null != arguments[e] ? arguments[e] : {}; e % 2 ? s(Object(o), !0).forEach(function (e) { var r, t, n; r = i, n = o[t = e], t in r ? Object.defineProperty(r, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : r[t] = n; }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(i, Object.getOwnPropertyDescriptors(o)) : s(Object(o)).forEach(function (e) { Object.defineProperty(i, e, Object.getOwnPropertyDescriptor(o, e)); }); } return i; } function f(e) { return function (e) { if (Array.isArray(e)) return o(e); }(e) || function (e) { if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e); }(e) || function (e, r) { if (!e) return; if ("string" == typeof e) return o(e, r); var t = Object.prototype.toString.call(e).slice(8, -1); "Object" === t && e.constructor && (t = e.constructor.name); if ("Map" === t || "Set" === t) return Array.from(e); if ("Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)) return o(e, r); }(e) || function () { throw new TypeError("Invalid attempt to spread non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function o(e, r) { (null == r || r > e.length) && (r = e.length);

for (var t = 0, n = new Array(r); t < r; t++) { n[t] = e[t]; } return n; } var l = !0, y = null, m = { gvlid: 28, code: "triplelift", supportedMediaTypes: [n.b, n.d], isBidRequestValid: function isBidRequestValid(e) { return void 0 !== e.params.inventoryCode; }, buildRequests: function buildRequests(e, r) { var t, n = "https://tlx.3lift.com/header/auction?", i = function (e) { var r = {}, t = e[0].schain, n = function () { var e = {}, r = p({}, a.b.getConfig("fpd.context")), t = p({}, a.b.getConfig("fpd.user")); return g(e, r), g(e, t), e; }(); r.imp = e.map(function (e, r) { var t = { id: r, tagid: e.params.inventoryCode, floor: function (e) { var r = null; { var t; "function" == typeof e.getFloor && ("object" !== c(t = e.getFloor({ currency: "USD", mediaType: "banner", size: S(e.sizes) })) || "USD" !== t.currency || isNaN(parseFloat(t.floor)) || (r = parseFloat(t.floor))); } return null !== r ? r : e.params.floor; }(e) }; return b(e) ? t.video = function (e) { var r = d(d({}, e.params.video), e.mediaTypes.video); r.w || (r.w = r.playerSize[0][0]); r.h || (r.h = r.playerSize[0][1]); "instream" === r.context && (r.placement = 1); return delete r.playerSize, r; }(e) : e.mediaTypes.banner && (t.banner = { format: S(e.sizes) }), t; }); var i = [].concat(f(function (e) { return v(e, "tdid"https://r.search.yahoo.com/,"adserver.org"https://r.search.yahoo.com/,"TDID"); }(e)), f(function (e) { return v(e, "idl_env"https://r.search.yahoo.com/,"liveramp.com"https://r.search.yahoo.com/,"idl"); }(e)), f(function (e) { return v(e, "criteoId"https://r.search.yahoo.com/,"criteo.com"https://r.search.yahoo.com/,"criteoId"); }(e))); 0 < i.length && (r.user = { ext: { eids: i } }); var o = function (e, r) { var t = {}; u.isEmpty(e) || (t.schain = d({}, e)); u.isEmpty(r) || (t.fpd = d({}, r)); return t; }(t, n); u.isEmpty(o) || (r.ext = o); return r; }(e); return n = u.tryAppendQueryString(n, "lib"https://r.search.yahoo.com/,"prebid"), n = u.tryAppendQueryString(n, "v"https://r.search.yahoo.com/,"4.17.0"), r && r.refererInfo && (t = r.refererInfo.referer, n = u.tryAppendQueryString(n, "referrer", t)), r && r.timeout && (n = u.tryAppendQueryString(n, "tmax", r.timeout)), r && r.gdprConsent && (void 0 !== r.gdprConsent.gdprApplies && (l = r.gdprConsent.gdprApplies, n = u.tryAppendQueryString(n, "gdpr", l.toString())), void 0 !== r.gdprConsent.consentString && (y = r.gdprConsent.consentString, n = u.tryAppendQueryString(n, "cmp_cs", y))), r && r.uspConsent && (n = u.tryAppendQueryString(n, "us_privacy", r.uspConsent)), !0 === a.b.getConfig("coppa") && (n = u.tryAppendQueryString(n, "coppa", !0)), n.lastIndexOf("&") === n.length - 1 && (n = n.substring(0, n.length - 1)), u.logMessage("tlCall request built: " + n), { method: "POST", url: n, data: i, bidderRequest: r }; }, interpretResponse: function interpretResponse(e, r) { var t = r.bidderRequest; return (e.body.bids || []).map(function (e) { return function (e, r) { var t = {}, n = r.width || 1, i = r.height || 1, o = r.deal_id || "", u = r.crid || "", a = e.bids[r.imp_id]; 0 != r.cpm && r.ad && (t = { requestId: a.bidId, cpm: r.cpm, width: n, height: i, netRevenue: !0, ad: r.ad, creativeId: u, dealId: o, currency: "USD", ttl: 300, tl_source: r.tl_source, meta: {} }, b(a) && (t.vastXml = r.ad, t.mediaType = "video"), r.advertiser_name && (t.meta.advertiserName = r.advertiser_name)); return t; }(t, e); }); }, getUserSyncs: function getUserSyncs(e, r, t, n) { var i = function (e) { if (!e) return; if (e.iframeEnabled) return "iframe"; if (e.pixelEnabled) return "image"; }(e); if (i) { var o = "https://eb2.3lift.com/sync?"; return "image" === i && (o = u.tryAppendQueryString(o, "px", 1), o = u.tryAppendQueryString(o, "src"https://r.search.yahoo.com/,"prebid")), null !== y && (o = u.tryAppendQueryString(o, "gdpr", l), o = u.tryAppendQueryString(o, "cmp_cs", y)), n && (o = u.tryAppendQueryString(o, "us_privacy", n)), [{ type: i, url: o }]; } } }; function b(e) { return e.mediaTypes.video && e.mediaTypes.video.context && "instream" === e.mediaTypes.video.context.toLowerCase(); } function g(r, t) { u.isEmpty(t) || Object.keys(t).forEach(function (e) { null != t[e] && (r[e] = t[e]); }); } function v(e, r, t, n) { return e.map((u = r, function (e) { return e && e.userId && e.userId[u]; })).filter(function (e) { return !!e; }).map((i = t, o = n, function (e) { return { source: i, uids: [{ id: e, ext: { rtiPartner: o } }] }; })); var i, o, u; } function S(e) { return e.filter(h).map(function (e) { return { w: e[0], h: e[1] }; }); } function h(e) { return 2 === e.length && "number" == typeof e[0] && "number" == typeof e[1]; } Object(i.registerBidder)(m); } }, [823]); pbjs.processQueue(); }, {}]; window.modules["via.legacy"] = [function(require,module,exports){"use strict"; DS.service("via", function () { "use strict"; // remove `via` from url, to be used after amplitude logs it to prevent users from sharing such urls function removeFromLocation() { var url = new URL(location.href); url.searchParams.delete("via"); history.replaceState(null, "", url.toString()); } // and add `via` param to any outbound links function addViaToUrl(href, via) { if (!href || href.substr(0, 1) === "#") { return href; // don't add to jumps on the current page, e.g. "Skip to main content" } var url = new URL(href); var apexDomain = new URL(location.href).hostname.split(".").slice(-2).join("."); if (url.hostname.indexOf(apexDomain) === -1) { return href; // don't add it to external links } url.searchParams.set("via", via); return url.toString(); } // keys correspond to "page_types" in editable_components.yml var PREFIXES = { article: "article", homepage: "homepage", "vertical front": "section", "rubric front": "rubric" }; var pageType; function setPageType(amplitudePageType) { pageType = PREFIXES[amplitudePageType]; } var DELIMITER = "_"; function concatVia(node, via) { var tag = node.dataset && node.dataset.via; if (tag) { via = (via.length ? tag + DELIMITER : tag) + via; } return via; } function addToClickedLinks() { document.documentElement.addEventListener("click", function (e) { var a; var via = ""; // detect link nodes and collect via directives to append to the href var node = e.target; // the element where this event originated may have been removed from the dom, e.g. in the case of the OIL CMP which disappears after you interact with it while (node && node !== e.currentTarget) { if (node.tagName === "A") { a = node; } via = concatVia(node, via); node = node.parentNode; } if (a && via) { if (pageType) { via = pageType + DELIMITER + via; } a.href = addViaToUrl(a.href, via); } }); } function addToSubmittedForms() { document.documentElement.addEventListener("submit", function (e) { var form = e.target; // collect via directives var via = ""; var node = e.target; while (node !== e.currentTarget) { via = concatVia(node, via); node = node.parentNode; } if (via) { if (pageType) { via = pageType + DELIMITER + via; } // dynamically create a hidden input for the form url var input = document.createElement("input"); input.type = "hidden"; input.name = "via"; input.value = via; form.appendChild(input); } }); } // start listening only once, when first injected addToClickedLinks(); addToSubmittedForms(); return { setPageType: setPageType, removeFromLocation: removeFromLocation }; }); }, {}]; window.modules["visibility.legacy"] = [function(require,module,exports){"use strict"; DS.service("$visibility", ["$document"https://r.search.yahoo.com/,"$window"https://r.search.yahoo.com/,"_throttle"https://r.search.yahoo.com/,"Eventify", function ($document, $window, _throttle, Eventify) { var list = [], Visible, VisibleEvent; /** * @param {number} a * @param {number} b * @returns {*} * @see http://jsperf.com/math-min-vs-if-condition-vs/8 */ function min(a, b) { return a < b ? a : b; } /** * @param {number} a * @param {number} b * @returns {*} * @see http://jsperf.com/math-min-vs-if-condition-vs/8 */ function max(a, b) { return a > b ? a : b;
}
/**
* Fast loop through watched elements
*/

function onScroll() {
list.forEach(updateVisibility);
}
/**
* updates seen property
* @param {Visble} item
* @param {{}} evt
* @fires Visible#shown
* @fires Visible#hidden
*/

function updateSeen(item, evt) {
var px = evt.visiblePx,
percent = evt.visiblePercent; // if some pixels are visible and we’re greater/equal to threshold

if (px && percent >= item.shownThreshold && !item.seen) {
item.seen = true;
setTimeout(function () {
item.trigger(“shown”, new VisibleEvent(“shown”, evt));
}, 15); // if no pixels or percent is less than threshold
} else if ((!px || percent < item.hiddenThreshold) && item.seen) { item.seen = false; setTimeout(function () { item.trigger("hidden", new VisibleEvent("hidden", evt)); }, 15); } } /** * sets preload property * @param {Visible} item * @param {{}} evt * @param {Number} innerHeight * @fires Visible#preload */ function updatePreload(item, evt, innerHeight) { if (!item.preload && item.preloadThreshhold && shouldBePreloaded(evt.target, evt.rect, item.preloadThreshhold, innerHeight)) { item.preload = true; setTimeout(function () { item.trigger("preload", new VisibleEvent("preload", evt)); }, 15); } } /** * Trigger events * @param {Visible} item */ function updateVisibility(item) { var rect = item.el.getBoundingClientRect(), innerHeight = $window.innerHeight || $document.documentElement.clientHeight, px = getVerticallyVisiblePixels(rect, innerHeight), percent = px / (rect.height || innerHeight), evt = { target: item.el, rect: rect, visiblePx: px, visiblePercent: percent }; updateSeen(item, evt); updatePreload(item, evt, innerHeight); } /** * Return normalized viewport height * @return {number} */ function getViewportHeight() { return $window.innerHeight || $document.documentElement.clientHeight || $document.body.clientHeight; } /** * Return normalized viewport width * @return {number} */ function getViewportWidth() { return $window.innerWidth || $document.documentElement.clientWidth || $document.body.clientWidth; } /** * make sure an element isn't hidden by styles or etc * @param {Element} el * @return {Boolean} */ function isElementNotHidden(el) { return el && el.offsetParent !== null && !el.getAttribute("hidden") && getComputedStyle(el).display !== "none" && getComputedStyle(el).visibility !== "hidden"; } /** * Apparently the fastest way... * @param {Element} el * @returns {boolean} * @example if (!$visibility.isElementInViewport(el)) { ... } */ function isElementInViewport(el) { var rect = el.getBoundingClientRect(); return rect.top >= 0 && rect.left >= 0 && rect.bottom <= ($window.innerHeight || $document.documentElement.clientHeight) && rect.right <= ($window.innerWidth || $document.documentElement.clientWidth); } /** * @param {Element} el * @param {ClientRect} rect * @param {Number} preloadThreshhold * @param {Number} innerHeight * @return {Boolean} */ function shouldBePreloaded(el, rect, preloadThreshhold, innerHeight) { return rect.top <= innerHeight + preloadThreshhold && isElementNotHidden(el); } /** * Create a one-dimensional spacial hash of x * @param {number} x * @param {number} stepSize * @param {number} optimalK * @param {number} base * @return {number} */ function getLinearSpacialHash(x, stepSize, optimalK, base) { var index = Math.floor(x / (stepSize || 1)), remainder = x % stepSize, result = index.toString(base); if (optimalK > 1) {
result += getLinearSpacialHash(remainder, Math.floor(stepSize / base), optimalK – 1, base);
}

return result;
}
/**
* @param {ClientRect} rect
* @param {number} innerHeight
* @returns {number}
*/

function getVerticallyVisiblePixels(rect, innerHeight) {
return min(innerHeight, max(rect.bottom, 0)) – min(max(rect.top, 0), innerHeight);
}
/**
* Get offset of element relative to entire page
*
* @param {Element} el
* @returns {{left: number, top: number}}
* @see http://jsperf.com/offset-vs-getboundingclientrect/7
*/

function getPageOffset(el) {
var offsetLeft = el.offsetLeft,
offsetTop = el.offsetTop;

while (el = el.offsetParent) {
offsetLeft += el.offsetLeft;
offsetTop += el.offsetTop;
}

return {
left: offsetLeft,
top: offsetTop
};
}
/**
* Create a new Visible class to observe when elements enter and leave the viewport
*
* Call destroy function to stop listening (this is until we have better support for watching for Node Removal)
* @param {Element} el
* @param {{shownThreshold: number, hiddenThreshold: number}} [options]
* @class
* @example this.visible = new $visibility.Visible(el);
*/

Visible = function Visible(el, options) {
options = options || {};
this.el = el;
this.seen = false;
this.preload = false;
this.preloadThreshhold = options && options.preloadThreshhold || 0;
this.shownThreshold = options && options.shownThreshold || 0;
this.hiddenThreshold = options && min(options.shownThreshold, options.hiddenThreshold) || 0;
list.push(this);
updateVisibility(this); // set immediately to visible or not
};

Visible.prototype = {
/**
* Stop triggering.
*/
destroy: function destroy() {
// remove from list
list.splice(list.indexOf(this), 1);
}
/**
* @name Visible#on
* @function
* @param {‘shown’|’hidden’} e EventName
* @param {function} cb Callback
*/

/**
* @name Visible#trigger
* @function
* @param {‘shown’|’hidden’} e
* @param {{}}
*/

};
Eventify.enable(Visible.prototype);

VisibleEvent = function VisibleEvent(type, options) {
var _this = this;

this.type = type;
Object.keys(options).forEach(function (key) {
_this[key] = options[key];
});
}; // listen for scroll events (throttled)

$document.addEventListener(“scroll”, _throttle(onScroll, 200)); // public

this.getPageOffset = getPageOffset;
this.getLinearSpacialHash = getLinearSpacialHash;
this.getVerticallyVisiblePixels = getVerticallyVisiblePixels;
this.getViewportHeight = getViewportHeight;
this.getViewportWidth = getViewportWidth;
this.isElementNotHidden = isElementNotHidden;
this.isElementInViewport = isElementInViewport;
this.Visible = Visible;
}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==”function”&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(“Cannot find module ‘”+o+”‘”);throw f.code=”MODULE_NOT_FOUND”,f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==”function”&&require;for(var o=0;o= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(“Invalid attempt to iterate non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.”); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }

function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === “string”) return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === “Object” && o.constructor) n = o.constructor.name; if (n === “Map” || n === “Set”) return Array.from(o); if (n === “Arguments” || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }

function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function mountLegacyServices() { Object.keys(window.modules).filter(function (key) { return typeof key === 'string' && key.match(/.legacy$/); }).forEach(function (key) { return window.require(key); }); } function tryToMount(fn, el, name) { try { fn(el); // init the controller } catch (e) { var elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML)); console.error("Error initializing controller for "".concat(name, "" on "").concat(elementTag, """), e); } } /** * mount client.js component controllers */ function mountComponentModules() { Object.keys(window.modules).filter(function (key) { return typeof key === 'string' && key.match(/.client$/); }).forEach(function (key) { var controllerFn = window.require(key); if (typeof controllerFn === 'function') { var name = key.replace('.client"https://r.search.yahoo.com/,"'), instancesSelector = "[data-uri*="_components/".concat(name, "/"]"), defaultSelector = "[data-uri$="_components".concat(name, ""]"), instances = document.querySelectorAll(instancesSelector), defaults = document.querySelectorAll(defaultSelector); var _iterator = _createForOfIteratorHelper(instances), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var el = _step.value; tryToMount(controllerFn, el, name); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } var _iterator2 = _createForOfIteratorHelper(defaults), _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { var _el = _step2.value; tryToMount(controllerFn, _el, name); } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } } }); } // Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies, // services, or components that could require it // note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js window.process = window.process || {}; window.process.env = window.process.env || {}; if (!window.process.env.NODE_ENV) { window.process.env.NODE_ENV = ''; } // note: legacy controllers that require legacy services (e.g. dollar-slice) must // wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first mountLegacyServices(); mountComponentModules(); // ]]

Source Article

Next Post

How 4 Millennials Navigated the Pandemic Economy

Wed Nov 25 , 2020
Editorial Independence We want to help you make more informed decisions. Some links on this page — clearly marked — may take you to a partner website and may result in us earning a referral commission. For more information, see How We Make Money. Many people started 2020 feeling good […]