The pandemic made me realize I don’t ever want to go back home again, and more advice from Dear Prudie. | #facebookdating | #tinder | #pof

Photo illustration by Slate. Photo by Sasiistock/iStock/Getty Images Plus.

Danny is online weekly to chat live with readers. Here’s an edited transcript of this week’s chat.

Q. I don’t want to go back: I’ve decided and announced that I will not be flying to my hometown for Christmas because of the pandemic. My mother was her usual passive-aggressive self, but she understood my reasons. It took a lot out of me to insist, but I know it’s the safest choice.

After that call, I’ve spent weeks thinking about whether I ever want to go back to my hometown again. I’m a nonbinary lesbian, and I’m not out to any of my family except my younger sister. My parents and extended family have never abused me, but they’ve certainly made their homophobia and transphobia known my whole life. After I realized my sexuality in college, going home meant sleeping until 5 p.m. and being so depressed that I barely felt like I inhabited my body. After coming into my gender identity and changing my name and pronouns just this year, I can’t fathom how bad things would get if I were to go back. The relief I felt knowing I wouldn’t be spending even a week there was overwhelming, though now I feel a bit cold and heartless for wanting to avoid family who love and miss me.

I don’t know what I’m going to do next year, or the year after. My planned absence this year has already been talked about a lot, and I don’t want to hurt my parents by not flying back when being on a plane isn’t a health risk anymore. I also do miss my parents, despite their harmful views. I know I’m panicking about a problem that will take another year to even arise, but I can’t stop thinking with dread about having to eventually go “home.” I also don’t know how much longer I can put off coming out, considering how desperately I want to start testosterone and one day get top surgery. How can I think about this in the meantime? I don’t know how I could even try to miss another Christmas without causing a lot of pain.

A: It’s true you don’t have to make any decisions right now, and I hope you can remind yourself of that when you’re feeling overwhelmed. But it’s also worth reflecting on just what kind of pain you find “unbearable” and what kind of pain you’re prepared to accept. You say your parents aren’t abusive, but they’ve made it pretty clear their love and approval are heavily contingent on your gender and sexuality. If they don’t get to experience closeness with you as a result (closeness that you know, I think, they would exploit in order to harass and shame you), that doesn’t mean you’re “causing them pain”—it just means their homophobia and transphobia are working as intended. Refusing to spend a week feeling like you’re barely tethered to your body is not cold, nor is it indifferent. Keeping a healthy distance from outspoken homophobes is simple self-protection.

I do think it’s worth using this year to figure out how you might envision coming out to your parents from a safe distance. You don’t have to, of course—you never have to—but if the alternatives of either visiting them and staying closeted or never going home again without explaining why seem unbearable to you, it might be the best option available. And the advantage of coming out from a distance, especially when you know their initial reaction is going to be a bad one, is you can more easily shut down a cruel or hostile interaction. Even the pain of rejection is often easier than the overwhelming dread of “I know this is going to be awful.” Nor does any of this mean you have to stop loving and missing your parents. You can love and miss them while still holding fast to general principles like “I don’t sleep in the house of someone who doesn’t respect me or treat me safely.”

Keep your distance as long as you need to. On some level, your relatives have gone out of their way to communicate their homophobia and transphobia to you because they wanted you to know that if you ever came out to them they’d punish you for it, and hoped in so doing that they could coerce and control you into staying closeted forever. Keeping your distance from that is just, sensible, self-respecting, and healthy, even if it’s also painful and difficult.

How to Get Advice From Prudie:

Send questions for publication to (Questions may be edited.)

Join the live chat Mondays at noon. Submit your questions and comments here before or during the discussion.

Call the voicemail of the Dear Prudence podcast at 401-371-DEAR (3327) to hear your question answered on a future episode of the show.

Q. Depressed in grad school: I moved to Los Angeles from New York for grad school. I had reservations about coming to L.A. and they only worsened after getting here. Not only do I hate L.A.—I am a New Yorker!—but I have no friends here. I have met some of the kids in my program but haven’t connected with them given the pandemic, and I really miss my family and friends, all of whom are back east. Zoom is also making me incredibly depressed; it’s just not the same thing. Classes being virtual also feels unfulfilling, and I feel like I’m not learning anything and am just going through the motions to complete the coursework. (It’s been a month of classes.)

The only thing is: I got a full ride to come to the program. I’m paying for housing and extra expenses outside of tuition, but it doesn’t feel worth it to me. What I really want to do is drop out after this semester and reapply to programs back East for next year. I can take a leave of absence from school next semester without losing my scholarship; the only real problem is dealing with my lease. I can’t tell if I’m being nostalgic and making it worse by feeling depressed all the time, but I do feel depressed all the time! I exercise every day, explore what I can of L.A. (e.g., bookshops, parks, etc.), but none of this is helping.

I’m 25, and I feel so confused. I want to go to school, but not like this. I also don’t want to be in L.A., pandemic or not. Is it OK to drop out of graduate school and reapply to other schools for next year? Is this a thing people can do? I’m anxious that the chair of my program will be upset when I express these wishes, but I feel detached, isolated, depressed, and confused about why I’m here. Am I being a baby?

A: I briefly spoke to a friend of mine who’s a university professor and they had this to suggest: “I don’t think it would necessarily be injurious to future applications [to have dropped out of another program], but the question would be how they have improved their application to a given school since they last applied. (Reapplicants usually have to answer this directly.) Zoom sucks, moving to a new city during lockdown must be really hard, and it’s OK to vaguely hate grad school—many people have ambivalent feelings about it at best. But I do think it’s too early to pull out. It’s only been a month. I would suggest you give it until the end of the year, and if you still want to transfer or withdraw, you’ll be in a stronger position to do so.”

The problem of connecting over Zoom may not go away at a different grad school, so it’s also worth considering the possibility that you’ll run into Zoom fatigue even in another city. I’ll also put in a plug for talking about your depression and just how much you’ve been struggling with your program with your family, friends, and ideally your doctor or therapist, not because I think they’ll be able to fix things for you but because it will help you feel less isolated if other people who care about you know that you’re going through a very difficult time. Giving it until the end of the year doesn’t mean you have to put on a brave face and act like everything is going great. Good luck—these are incredibly difficult circumstances to start grad school under, and I hope you get a lot of support.

Q. Lonely lesbian: When I was in high school, I dated an amazing girl whom I later had a messy breakup with after a three-year relationship. I have not dated anyone else seriously in the four or so years since we broke up. Thanks to COVID, I am back in my hometown working, and I recently learned from her brother (whom I still talk with regularly) that she is back as well. She made it clear during our breakup that she would not like me to try to contact her, but I keep dwelling on the idea of meeting up again, if just to talk. I am confident that if she felt the same way she could contact me, so me reaching out to her is out of the question.

That being said, is this desire crazy? Is there anything I can do to get rid of it? I don’t regret the breakup, but I do regret the way things ended. I am just looking for some insight into how to make these feelings stop.

A: This desire makes perfect sense—you have an “amazing” ex whose brother you still see regularly but who doesn’t ever want to hear from you again, you haven’t dated anyone else seriously in the four years since your breakup, you regret the way things ended, and you’re back in your old hometown due to circumstances outside of your control. Nothing about that seems “crazy” or surprising—it’s basically a Petri dish for wistfulness. You know you shouldn’t contact her, and you haven’t, which is all to the good, but it makes sense that you’re dwelling on this right now. I’d be dwelling on it too!

There’s nothing to be done but feel your feelings, write out your regrets if you think it will help you clarify what you think you did wrong and avoid repeating such patterns in future relationships, focus on your work, leave your ex alone, and give it time. You may want to pull back a little bit on how often you talk to your ex’s brother if you find it too painful, or if it stirs up a desire to drop hints about wanting to talk to her, but you don’t have to. Living with regret can be difficult, especially if you want to dispel that regret by apologizing to someone who doesn’t want to hear from you. But the best thing you can do with that regret is learn from it and commit to acting differently in future relationships—you can’t get rid of it by sheer willpower or by trying to finagle one last meeting with your ex.

Q. Hidden wedding: The son of my friend of 40 years just got married. We used to spend a lot of time together, and now we call every other month or so. We get together a couple of times a year.

I was not invited to the wedding, and I am so sad about it. I guess I thought we were closer friends than she did. They had a wedding site online, so I was able to see all the details. The only reason I know about it at all is that my friend’s daughter (my goddaughter) posted about it online. How should I deal with this the next time I speak with my friend? (I would not have gone during this pandemic but would’ve liked to have been told and invited.)

A: Please don’t assume that you weren’t invited to the son’s wedding because your friend doesn’t value your relationship. Your friend likely did not have control over her son’s guest list—very few parents of the groom do!—and even if there weren’t a pandemic going on, he and his partner might not have been able to invite all of their family friends due to budget constraints and other restrictions. Bear in mind that both members of the nuptial couple have families, possibly big ones, and lots of family friends of long standing, and that a number of considerations go into finalizing a guest list beyond simply “important or not important to the mother of the groom.”

Of course you may feel sad not to have been included, but it doesn’t necessarily mean your friend doesn’t care about you. If she never even mentioned the fact that her son was getting married, I can understand your feeling slighted, but it’s possible she was worried about hurting your feelings by mentioning a wedding she couldn’t invite you to. You can, and should, offer her your congratulations and best wishes on her son’s wedding the next time you speak. She may take that as an opportunity to apologize for not mentioning it sooner and explain the reason for her silence. She may not, and at that you may want to say: “I understand guest lists have to stay manageably sized for a number of reasons, but I was surprised that you didn’t even mention the wedding during our last few calls. I like to know what’s going on with you, and I want to hear about big events like this one from you.” But don’t assume malice when your friend has always otherwise been kind and affectionate. There may be any number of other reasons she didn’t bring it up, and you shouldn’t rush to presume before you’ve given her a chance to explain.

Q. Dating: I like a girl; I think she likes me. Normally I would just ask her out, but we met just before the pandemic started, so this has not been an option. I suppose I could ask her on a virtual date, but I’ve never done that and I frankly have no idea how to flirt with somebody on a virtual date. But I also don’t want to do nothing and risk her either going out with someone else or becoming such good friends that I can’t ask her out once the pandemic is over. What should I do?

A: I think the best option is just to ask her out, see if she’s interested, and then worry about how you’ll flirt on a virtual date when and if it happens. (If you’ve ever flirted with someone on the phone, during a Skype session, or via text, I think you’ll find ways to flirt there.) But if you haven’t flirted over the phone, and you’re really at a loss, there’s nothing wrong with being honest about not knowing what you’re doing. Dating during a pandemic is something most people don’t know how to do, and there’s no expectation of suavity or worldliness. If she likes you too, and you both agree you wish you could go on a regular date, then you can feel at ease about saying, “I really have no idea how to go on a virtual date together. Isn’t this strange?” It’s very strange! It may help to laugh and acknowledge the strangeness together—then you can both figure out what sounds fun, what sounds achievable, what sounds exhausting or artificial or forced, and plan your date accordingly from there. (Also, for whatever it’s worth, I do think it’s perfectly possible to ask out one’s friends, even one’s good friends, although I can also appreciate that there’s a higher risk-versus-reward ratio the longer you’ve known someone.)

Q. No more bass! I’ve been living in a brand-new apartment building for one year and one month. I lived on the third floor of the building for the first year and dealt with challenges with my next-door neighbor, who would play very loud music, usually from around 8 p.m. to 3 a.m. each day. I wrote a polite note and had the landlord give him several warnings. However, nothing changed. The landlord offered to move me to a space on the ninth floor of the building if I chose to renew my lease. I decided to take her up on this offer.

Lo and behold, I am dealing with the same exact issue. Loud bass shakes my bed each night with my new neighbor. I wrote a polite note, reported him to the concierge a few times, and he still doesn’t seem to know how to respect the quiet hours outlined in his lease. I have asked the landlord to let me out of my lease, but my request has been denied. Any other thoughts on how to deal with this situation? I know that people are struggling during this challenging time, but excessively loud music into the morning hours is taking things too far. I am stuck in this mess until my lease ends and I can finally escape the madness!

A: Assuming this is a new neighbor (and not the same guy on the third floor whose bass is turned up so loud it reaches your bedroom on the ninth), I think the best next move is to speak to him in person. (Or as close to in-person as you can safely approximate, staying at least 6 feet back from his front door, masked, etc.) Do it in the afternoon, or sometime when it’s not actually happening, so you’re not in the middle of gnashing your teeth or feeling residual resentment at your previous loud neighbor. Introduce yourself, make friendly conversation for a minute, let him know just how much the sound of his music carries into your bedroom, and ask him if he’d turn it down. Once he can put a face to the complaint and you’re not just an abstract idea of an annoyed neighbor, you might get further with him; stay as polite and cheerful as possible without sacrificing firmness. From then on, you can knock on his door to let him know the next time it wakes you up and tell him he needs to turn it down; hopefully this goes further than notes from the concierge. All of this assumes at least some goodwill on his part, and genuine ignorance of how his music bleeds through your dividing wall; if he’s simply rude and indifferent, it may not do much good. But it may be the best option available to you until your lease is up.

Q. Missing partner: I’ve been diagnosed with a chronic illness during the pandemic. I always thought it was anxiety, but it turned out to be an autoimmune disease. Now my depression and actual anxiety have gone through the roof. My family has disowned me because I’m in a same-sex relationship, so I don’t have many people to lean on during this time besides my wife. She works out of the state for half the week, and when she comes back, all she wants to do is sleep. I take care of the house and our two dogs, and I work part time while working on my master’s.

My illness comes with awful fatigue and occasional fainting. Because of my need for support, I started coming with her out of state every week. I check in and out of the hotel and bring her her lunch and everything she needs. I can’t be home alone right now and really need more support, but she always says, “You’re not alone, I can text you,” or “You’re not alone, I can FaceTime you during lunch.” I get that she cares, but I need in-person help. We don’t have money for in-person care and I have no family to go to. Every time I say, “Babe, this symptom is happening and I’m scared,” she attributes it to something else. I didn’t think this is what “in sickness and in health” would mean. I don’t like to feel like such a dependent leech, but I really need the help. What should I do?

A: I wish I had something better for you, but I think you should start planning alternative sources of care, because it doesn’t sound like your wife is willing or able to provide you with the care you need even now. I imagine that traveling and running errands for your wife during her frequent business trips might even contribute to some of your fatigue. Much as you might—understandably!—want to be with her during those trips, it may be counterproductive to your treatment. If you haven’t already spoken to your diagnosing doctor about this, please do, and ask for their advice on whether frequent travel and bringing your wife lunch and whatever else she needs on a regular basis may be exacerbating some of your symptoms. If you can’t afford in-person assistance right now, can you (or your wife) contact your insurance company to find out what, if anything, they can do to contribute to your care? Can you canvass your friends to help out around the house when your wife is away? Do you know anyone else who shares your diagnosis and can advise you on other resources you may not be familiar with yet? I want you to be able to get the support you need from as many sources as possible so you don’t have to rely solely on your wife, who seems stretched thin at best and possibly indifferent to your health at worst.

Q. Work walks: I hope you can give some advice about a small, not-really-a-problem problem, just something I’m just mulling over. I take a half-hour walk on my lunch break every day, on a route that’s a bit more than a mile. I usually walk alone and listen to audiobooks or podcasts. Recently I’ve started walking with one of my co-workers. She was in a slump, feeling down because of the state of the world as well as some personal stuff, and asked if we could walk together. I enjoy her company a lot, and she’s a brisk walker, so she makes it a good workout.

We’ve been walking together for a few weeks now, and she seems to be continuing with an attitude of “I’m so glad you walk with me, because otherwise I wouldn’t take walks.” I am not tired of walking with her at all, but I want to encourage her to still take walks even when our schedules don’t line up—she should still take a walk because, as she says, it really boosts her mood. I’d also like to encourage it in general in case I find myself in a “need some alone time” place. Any suggestions?

A: I suppose you can encourage her to take walks when you’re not available once, but you don’t need to make her general well-being your responsibility. Frankly, you shouldn’t, even if you are the kind of co-workers who sometimes discuss your personal lives. Whether she does or doesn’t find other ways to motivate herself when you’re not around, mention it once at most, and then let her make her own decisions. And just tell her when you’d like to walk alone whenever you need solo time! Don’t overapologize or act like you’re taking something away from her; she should be polite and immediately gracious about your desire to spend your lunch break alone. I’m sure she will be—just because she’s glad you two have made a habit of walking together doesn’t mean she automatically expects it from you every day, or that she’ll fall apart if you skip the occasional lunch.

Q. Re: Depressed in grad school: I’d be depressed living in L.A. too! I’m a bit confused why the letter writer would have to drop out to move away. Why not work on figuring out a sublet or someone to take over the lease (possibly the school you’re attending may be able to help with this, if it has any clout with local landlords) and then keep attending depressing Zoom classes from a place you actually like?

A: That’s a possibility too—under nonpandemic conditions, it might be difficult to convince a grad program to let you move away while remaining in the program in your first year, but if almost all of your classes and sessions are remote to begin with, that might be possible to push for. It’s worth trying, at least!

Q. Update—Re: Blowing me off: Thank you for answering my question about my “best friend” who didn’t visit me while she was in my town. I did confront her, and the reason was pretty surprising. Apparently she has had romantic feelings toward me for the past few years and has felt uncomfortable being around me in person because of those feelings. Unfortunately, I don’t return those feelings, so we decided to end our friendship (her choice—she thought it would be too painful for her to be friends, which I respect). It’s been really difficult and painful, as we’ve been friends for a long time, but I’m glad I finally talked to her and found out what’s going on, which I wouldn’t have done without your advice. Thanks!

A: I’m happy and sorry both! As you say, it’s better to know than to have to guess and stew in resentment, but I am sorry that things had to end between the two of you. Here’s hoping that time and distance prove restorative for both of you and you can think back on your former friendship with affection and peace. And I hope the next time she falls for someone, they feel the same way.

Danny M. Lavery: Thanks for this, everyone. See you next week!

If you missed Part 1 of this week’s chat, click here to read it.

Discuss this column on our Facebook page!

From Care and Feeding

Q. Unfair mommy? We have three elementary school–age kids. Our middle kid has a few different delays (speech, fine motor, math) and public school just doesn’t seem to be a good fit for her anymore. The private school we are looking at moving her to is the kind of place you dream of affording for your children.

The thing is, we can really only afford one tuition, and it feels a little like we are robbing the other two of an amazing opportunity (both are happy and well-adjusted where they are). How do you deal with the guilt of not sending all of them, and how do you explain why one kid gets a special school? Read what Nicole Cliffe had to say.

Get the audiobook edition of Danny M. Lavery’s latest book. Save $5 when you buy it from Slate—and listen in your preferred podcast app!

'; }, t.createTrackPixelIframeHtml = de, t.getValueString = fe, t.uniques = le, t.flatten = pe, t.getBidRequest = function (n, e) { return n ? (e.some(function (e) { var t = s()(e.bids, function (t) { return ["bidId","adId","bid_id"].some(function (e) { return t[e] === n; }); }); return t && (r = t), t; }), r) : void 0; var r; }, t.getKeys = ge, t.getValue = ye, t.getKeyByValue = function (e, t) { for (var n in e) { if (e.hasOwnProperty(n) && e[n] === t) return n; } }, t.getBidderCodes = function () { return (0 t[n] ? -1 : 0; }; }, t.parseQS = je, t.formatQS = we, t.parseUrl = function (e, t) { var n = document.createElement("a"); t && "noDecodeWholeURL" in t && t.noDecodeWholeURL ? n.href = e : n.href = decodeURIComponent(e); var r = t && "decodeSearchAsString" in t && t.decodeSearchAsString; return { href: n.href, protocol: (n.protocol """").replace(/:$/, ""), hostname: n.hostname, port: +n.port, pathname: n.pathname.replace(/^(?!/)/, "/"), search: r ? : k.parseQS( """"), hash: (n.hash """").replace(/^#/, ""), host: "" }; }, t.buildUrl = function (e) { return (e.protocol """http") + "://" + ( "" e.hostname + (e.port ? ":".concat(e.port) : "")) + (e.pathname """") + ( ? "?".concat(k.formatQS( """")) : "") + (e.hash ? "#".concat(e.hash) : ""); }, t.deepEqual = Ce, t.mergeDeep = xe; var r = n(3), o = n(167), i = n.n(o), a = n(168), c = n.n(a), u = n(11), s = n.n(u), d = n(12), f = n.n(d), l = n(182); n.d(t, "deepAccess", function () { return l.a; }); var p = n(183); function g(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 n = [], r = !0, o = !1, i = void 0; try { for (var a, c = e[Symbol.iterator](); !(r = (a = && (n.push(a.value), !t "" n.length !== t); r = !0) { ; } } catch (e) { o = !0, i = e; } finally { try { r "" null == c.return "" c.return(); } finally { if (o) throw i; } } return n; }(e, t) "" b(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 y(e) { return function (e) { if (Array.isArray(e)) return v(e); }(e) "" function (e) { if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e); }(e) "" b(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 b(e, t) { if (e) { if ("string" == typeof e) return v(e, t); var n =, -1); return "Object" === n && e.constructor && (n =, "Map" === n """Set" === n ? Array.from(e) : "Arguments" === n "" /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? v(e, t) : void 0; } } function v(e, t) { (null == t "" t > e.length) && (t = e.length); for (var n = 0, r = new Array(t); n n ')) : ""; } function fe(e, t, n) { return null == t ? n : ee(t) ? t : ne(t) ? t.toString() : void k.logWarn("Unsuported type for param: " + e + " required type: String"); } function le(e, t, n) { return n.indexOf(e) === t; } function pe(e, t) { return e.concat(t); } function ge(e) { return Object.keys(e); } function ye(e, t) { return e[t]; } function be() { if (window.googletag && Z(window.googletag.pubads) && Z(window.googletag.pubads().getSlots)) return !0; } var ve = Se("timeToRespond", function (e, t) { return t e.length) && (t = e.length); for (var n = 0, r = new Array(t); n i.lastUpdated + 24 * r * 60 * 60 * 1e3) && Object(p.a)(t.url, { success: function success(e) { try { e = JSON.parse(e); var t = { lastUpdated: Object(m.timestamp)(), mapping: e.mapping }; T.setDataInLocalStorage(o, JSON.stringify(t)); } catch (e) { Object(m.logError)("Failed to parse ".concat(n, " bidder translation mapping file")); } }, error: function error() { Object(m.logError)("Failed to load ".concat(n, " bidder translation file")); } }); } catch (e) { Object(m.logError)("Failed to parse ".concat(n, " bidder translation mapping file")); } } }),, t); } function _(e, t, n) { function r(e) { return "Invalid bid from ".concat(t.bidderCode, ". Ignoring bid: ").concat(e); } return e ? t ? (o = Object.keys(t), j.every(function (e) { return l()(o, e) && !l()([void 0, null], t[e]); }) ? "native" !== t.mediaType "" Object(i.f)(t, n) ? "video" !== t.mediaType "" Object(a.d)(t, n) ? !("banner" === t.mediaType && !function (e, t, n) { if ((t.width "" 0 === parseInt(t.width, 10)) && (t.height "" 0 === parseInt(t.height, 10))) return t.width = parseInt(t.width, 10), t.height = parseInt(t.height, 10), 1; var r = Object(m.getBidderRequest)(n, t.bidderCode, e), o = r && r.bids && r.bids[0] && r.bids[0].sizes, i = Object(m.parseSizesInput)(o); if (1 === i.length) { var a = A(i[0].split("x"), 2), c = a[0], u = a[1]; return t.width = parseInt(c, 10), t.height = parseInt(u, 10), 1; } }(e, t, n)) "" (Object(m.logError)(r("Banner bids require a width and height")), !1) : (Object(m.logError)(r("Video bid does not have required vastUrl or renderer property")), !1) : (Object(m.logError)(r("Native bid missing some required properties.")), !1) : (Object(m.logError)(r("Bidder ".concat(t.bidderCode, " is missing required params. Check for list of params."))), !1)) : (Object(m.logWarn)("Some adapter tried to add an undefined bid for ".concat(e, ".")), !1) : (Object(m.logWarn)("No adUnitCode was supplied to addBidResponse."), !1); var o; } Object(y.a)("checkAdUnitSetup").before(U); }, function (e, t, n) { "use strict"; n.d(t, "c", function () { return r; }), n.d(t, "d", function () { return o; }), n.d(t, "b", function () { return i; }), n.d(t, "a", function () { return a; }); var r = "native", o = "video", i = "banner", a = "adpod"; }, function (e, t, n) { "use strict"; n.d(t, "a", function () { return v; }), n.d(t, "b", function () { return j; }); var r = n(45), o = n(11), a = n.n(o), i = n(12), c = n.n(i), u = n(80), s = n.n(u), d = n(0); function f() { return (f = Object.assign "" function (e) { for (var t = 1; t e.length) && (t = e.length); for (var n = 0, r = new Array(t); n e.length) && (t = e.length); for (var n = 0, r = new Array(t); n o && (r = !1)), !r; }), r &&, r; } function g(e, t) { void 0 === e[t] ? e[t] = 1 : e[t]++; } p(e) "" (D.logWarn("queueing auction due to limited endpoint capacity"), H.push(e)); } return { addBidReceived: function addBidReceived(e) { f = f.concat(e); }, addNoBid: function addNoBid(e) { l = l.concat(e); }, executeCallback: O, callBids: function callBids() { y = G, t =; var e = N.makeBidRequests(v, t, p, m, s); D.logInfo("Bids Requested for Auction with id: ".concat(p), e), e.length e.getTimeout() + U.b.getConfig("timeoutBuffer") && e.executeCallback(!0); } function Y(e, t) { var n = e.getBidRequests(), r = _()(n, function (e) { return e.bidderCode === t.bidderCode; }); !function (t, e) { var n; { var r; t.bidderCode && (0 e.length) && (t = e.length); for (var n = 0, r = new Array(t); n Object(v.timestamp)(); }, d = function d(e) { return e && (e.status && !S()([I.BID_STATUS.RENDERED], e.status) "" !e.status); }; function w(e, r, t) { var o = 2 e.length) && (t = e.length); for (var n = 0, r = new Array(t); n = h.syncsPerBidder ? a.logWarn('Number of user syncs exceeded for "".concat(t, """)) : p.canBidderRegisterSync(e, t) ? (g[e].push([t, n]), (r = b)[o = t] ? r[o] += 1 : r[o] = 1, void (b = r)) : a.logWarn('Bidder "".concat(t, "" not permitted to register their "").concat(e, "" userSync pixels.')) : a.logWarn("Bidder is required for registering sync") : a.logWarn('User sync type "".concat(e, "" not supported')); var r, o; }, p.syncUsers = function () { var e = 0 t.max ? e : t; }, { max: 0 }), g = 0, y = b()(e.buckets, function (e) { if (n > p.max * r) { var t = e.precision; void 0 === t && (t = v), o = (e.max * r).toFixed(t); } else { if (n " + e + "" + g + ">"; } var i, a = n(15), c = n(125), u = n(86), s = n(53), d = n(128), f = n(75), l = n(65), p = "prototype", g = "script", y = l("IE_PROTO"), _b = function b() { try { i = document.domain && new ActiveXObject("htmlfile"); } catch (e) {} var e, t; _b = i ? function (e) { e.write(o("")), e.close(); var t = e.parentWindow.Object; return e = null, t; }(i) : ((t = f("iframe")).style.display = "none", d.appendChild(t), t.src = String("javascript:"), (e = t.contentWindow.document).open(), e.write(o("document.F=Object")), e.close(), e.F); for (var n = u.length; n--;) { delete _b[p][u[n]]; } return _b(); }; s[y] = !0, e.exports = Object.create "" function (e, t) { var n; return null !== e ? (r[p] = a(e), n = new r(), r[p] = null, n[y] = e) : n = _b(), void 0 === t ? n : c(n, t); }; }, function (e, t) { e.exports = ["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]; }, function (e, t, n) { var o = n(29); e.exports = function (e, t, n, r) { r && r.enumerable ? e[t] = n : o(e, t, n); }; }, function (e, t, n) { "use strict"; var r, o, i, a = n(89), c = n(29), u = n(24), s = n(19), d = n(16), f = s("iterator"), l = !1; [].keys && ("next" in (i = [].keys()) ? (o = a(a(i))) !== Object.prototype && (r = o) : l = !0), null == r && (r = {}), d "" u(r, f) "" c(r, f, function () { return this; }), e.exports = { IteratorPrototype: r, BUGGY_SAFARI_ITERATORS: l }; }, function (e, t, n) { var r = n(24), o = n(57), i = n(65), a = n(131), c = i("IE_PROTO"), u = Object.prototype; e.exports = a ? Object.getPrototypeOf : function (e) { return e = o(e), r(e, c) ? e[c] : "function" == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? u : null; }; }, function (e, t, n) { "use strict"; var o = n(136).charAt, r = n(54), i = n(66), a = "String Iterator", c = r.set, u = r.getterFor(a); i(String, "String", function (e) { c(this, { type: a, string: String(e), index: 0 }); }, function () { var e, t = u(this), n = t.string, r = t.index; return r >= n.length ? { value: void 0, done: !0 } : (e = o(n, r), t.index += e.length, { value: e, done: !1 }); }); }, function (e, t, n) { var r = n(15), o = n(61); e.exports = function (e) { var t = o(e); if ("function" != typeof t) throw TypeError(String(e) + " is not iterable"); return r(; }; }, function (e, t, n) { var r = n(162); e.exports = r; }, function (e, t, n) { "use strict"; var r = Array.prototype.slice, o = n(94), i = Object.keys, a = i ? function (e) { return i(e); } : n(169), c = Object.keys; a.shim = function () { return Object.keys ? function () { var e = Object.keys(arguments); return e && e.length === arguments.length; }(1, 2) "" (Object.keys = function (e) { return o(e) ? c( : c(e); }) : Object.keys = a, Object.keys "" a; }, e.exports = a; }, function (e, t, n) { "use strict"; var r = Object.prototype.toString; e.exports = function (e) { var t =; return "[object Arguments]" === t """[object Array]" !== t && null !== e && "object" == _typeof(e) && "number" == typeof e.length && 0 n n n wrappern n ").concat(r, "n n n n ")), ttlseconds: Number(e.ttl) }; return i.b.getConfig("cache.vasttrack") && (o.bidder = e.bidder, o.bidid = e.requestId, a.isPlainObject(this) && this.hasOwnProperty("auctionStart") && (o.timestamp = this.auctionStart)), "string" == typeof e.customCacheKey && "" !== e.customCacheKey && (o.key = e.customCacheKey), o; } },,, function (e, t, n) { n(106); var r = n(52); e.exports = r("Array","find"); }, function (e, t, n) { "use strict";

var r = n(14), o = n(56).find, i = n(51), a = n(60), c = "find", u = !0, s = a(c); c in [] && Array(1)[c](function () { u = !1; }), r({ target: "Array", proto: !0, forced: u "" !s }, { find: function find(e, t) { return o(this, e, 1 o;) { a(r, n = t[o++]) && (~u(i, n) "" i.push(n)); }

return i; }; }, function (e, t, n) { var r = n(25); e.exports = r("document","documentElement"); }, function (e, t, n) { var o = n(87);

e.exports = function (e, t, n) { for (var r in t) { n && n.unsafe && e[r] ? e[r] = t[r] : o(e, r, t[r], n); }

return e; }; }, function (e, t, n) { "use strict";

function o() { return this; }

var i = n(88).IteratorPrototype, a = n(85), c = n(46), u = n(64), s = n(36);

e.exports = function (e, t, n) { var r = t + " Iterator"; return e.prototype = a(i, { next: c(1, n) }), u(e, r, !1, !0), s[r] = o, e; }; }, function (e, t, n) { var r = n(28); e.exports = !r(function () { function e() {}

return e.prototype.constructor = null, Object.getPrototypeOf(new e()) !== e.prototype; }); }, function (e, t, n) { var o = n(15), i = n(133); e.exports = Object.setPrototypeOf "" ("__proto__" in {} ? function () { var n, r = !1, e = {};

try { (n = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set).call(e, []), r = e instanceof Array; } catch (e) {}

return function (e, t) { return o(e), i(t), r ?, t) : e.__proto__ = t, e; }; }() : void 0); }, function (e, t, n) { var r = n(23);

e.exports = function (e) { if (!r(e) && null !== e) throw TypeError("Can't set " + String(e) + " as a prototype"); return e; }; }, function (e, t, n) { "use strict";

var r = n(25), o = n(31), i = n(19), a = n(27), c = i("species");

e.exports = function (e) { var t = r(e), n = o.f; a && t && !t[c] && n(t, c, { configurable: !0, get: function get() { return this; } }); }; }, function (e, t) {}, function (e, t, n) { function r(c) { return function (e, t) { var n, r, o = String(s(e)), i = u(t), a = o.length; return i = t.length ? { value: = void 0, done: !0 } : "keys" == n ? { value: r, done: !1 } : "values" == n ? { value: t[r], done: !1 } : { value: [r, t[r]], done: !1 }; }, "values"), i.Arguments = i.Array, o("keys"), o("values"), o("entries"); }, function (e, t) { e.exports = { CSSRuleList: 0, CSSStyleDeclaration: 0, CSSValueList: 0, ClientRectList: 0, DOMRectList: 0, DOMStringList: 0, DOMTokenList: 1, DataTransferItemList: 0, FileList: 0, HTMLAllCollection: 0, HTMLCollection: 0, HTMLFormElement: 0, HTMLSelectElement: 0, MediaList: 0, MimeTypeArray: 0, NamedNodeMap: 0, NodeList: 1, PaintRequestList: 0, Plugin: 0, PluginArray: 0, SVGLengthList: 0, SVGNumberList: 0, SVGPathSegList: 0, SVGPointList: 0, SVGStringList: 0, SVGTransformList: 0, SourceBufferList: 0, StyleSheetList: 0, TextTrackCueList: 0, TextTrackList: 0, TouchList: 0 }; }, function (e, t, n) { n(14)({ target: "Set", stat: !0 }, { from: n(141) }); }, function (e, t, n) { "use strict";

var s = n(18), d = n(21), f = n(17);

e.exports = function (e, t, n) { var r, o, i, a, c = arguments.length, u = 1 = n.length) { var a = u(r, n[i]); if (!(t "" n[i] in r)) throw new c("base intrinsic for " + e + " exists, but the property is not available."); r = a ? a.get "" a.value : r[n[i]]; } else r = r[n[i]]; }

return r; }; }, function (r, e, o) { "use strict";

(function (e) { var t = e.Symbol, n = o(175);

r.exports = function () { return "function" == typeof t && "function" == typeof Symbol && "symbol" == _typeof(t("foo")) && "symbol" == _typeof(Symbol("bar")) && n(); }; }).call(e, o(33)); }, function (e, t, n) { "use strict";

e.exports = function () { if ("function" != typeof Symbol """function" != typeof Object.getOwnPropertySymbols) return !1; if ("symbol" == _typeof(Symbol.iterator)) return !0; var e = {}, t = Symbol("test"), n = Object(t); if ("string" == typeof t) return !1; if ("[object Symbol]" !== return !1; if ("[object Symbol]" !== return !1;

for (t in (e[t] = 42, e)) { return !1; }

if ("function" == typeof Object.keys && 0 !== Object.keys(e).length) return !1; if ("function" == typeof Object.getOwnPropertyNames && 0 !== Object.getOwnPropertyNames(e).length) return !1; var r = Object.getOwnPropertySymbols(e); if (1 !== r.length "" r[0] !== t) return !1; if (!, t)) return !1;

if ("function" == typeof Object.getOwnPropertyDescriptor) { var o = Object.getOwnPropertyDescriptor(e, t); if (42 !== o.value "" !0 !== o.enumerable) return !1; }

return !0; }; }, function (e, t, n) { "use strict";

var r = n(97), o = n(43);

e.exports = function () { var e = r(); return o(Object, { is: e }, { is: function is() { return !== e; } }), e; }; }, function (e, t, n) { "use strict";

var r = n(178), o = RegExp.prototype.exec, i = Object.getOwnPropertyDescriptor, a = Object.prototype.toString, c = "function" == typeof Symbol && "symbol" == _typeof(Symbol.toStringTag);

e.exports = function (e) { if (!e """object" != _typeof(e)) return !1; if (!c) return "[object RegExp]" ===; var t = i(e, "lastIndex"); return !(!t "" !r(t, "value")) && function (e) { try { var t = e.lastIndex; return e.lastIndex = 0,, !0; } catch (e) { return !1; } finally { e.lastIndex = t; } }(e); }; }, function (e, t, n) { "use strict";

var r = n(67); e.exports =, Object.prototype.hasOwnProperty); }, function (e, t, n) { "use strict";

var r = n(43), o = n(95), i = n(98), a = n(99), c = n(180), u = o(i); r(u, { getPolyfill: a, implementation: i, shim: c }), e.exports = u; }, function (e, t, n) { "use strict";

var r = n(43).supportsDescriptors, o = n(99), i = Object.getOwnPropertyDescriptor, a = Object.defineProperty, c = TypeError, u = Object.getPrototypeOf, s = /a/;

e.exports = function () { if (!r "" !u) throw new c("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors"); var e = o(), t = u(s), n = i(t, "flags"); return n && n.get === e "" a(t, "flags", { configurable: !0, enumerable: !1, get: e }), e; }; }, function (e, t, n) { "use strict";

var r = Date.prototype.getDay, o = Object.prototype.toString, i = "function" == typeof Symbol && "symbol" == _typeof(Symbol.toStringTag);

e.exports = function (e) { return "object" == _typeof(e) && null !== e && (i ? function (e) { try { return, !0; } catch (e) { return !1; } }(e) : "[object Date]" ===; }; }, function (e, t, n) { "use strict";

t.a = function (e, t, n, r, o) { for (t = t.split ? t.split(".") : t, r = 0; r >> 0, i = 0; if (t) n = t;else { for (; i e.length) && (r = e.length);

for (var t = 0, a = new Array(r); t |

)/gm, "t").replace(/(


)/gm, "n").replace(/^
/gm, "").replace(/(
)/gm, "n").replace(/


/gm, "nn===== $1 =====nn").replace(/(.*)[2-6]>/gm, "nn*** $1 ***nn").replace(/(]+)>)/gim, ""), _.logMessage(""), _.logMessage(t)), o; var a = "in response for ".concat(s.bidderCode, " adapter"); return e && e.error && (a += ": ".concat(e.error)), _.logError(a), o; }, getMappingFileInfo: function getMappingFileInfo() { return { url: "", refreshInDays: 2 }; }, getUserSyncs: function getUserSyncs(e) { if (e.iframeEnabled) return [{ type: "iframe", url: "" }]; }, transformBidParams: function transformBidParams(t, e) { return t = _.convertTypes({ member: "string", invCode: "string", placementId: "number", keywords: _.transformBidderParamKeywords, publisherId: "number" }, t), e && (t.use_pmt_rule = "boolean" == typeof t.usePaymentRule && t.usePaymentRule, t.usePaymentRule && delete t.usePaymentRule, R(t.keywords) && t.keywords.forEach(j), Object.keys(t).forEach(function (e) { var r = _.convertCamelToUnderscore(e);

r !== e && (t[r] = t[e], delete t[e]); })), t; }, onBidWon: function onBidWon(e) { e.native && function (e) { var r = function (e) { var r; if (_.isStr(e) && P(e)) r = e;else if (_.isArray(e)) for (var t = 0; t nfor (var i = 0; i '));else {
if (!0 === d.b.getConfig("enableSendAllBids")) return;
p.native = {
title: (t = e.native).products[0].title,
body: t.products[0].description,
sponsoredBy: t.advertiser.description,
icon: t.advertiser.logo,
image: t.products[0].image,
clickUrl: t.products[0].click_url,
privacyLink: t.privacy.optout_click_url,
privacyIcon: t.privacy.optout_image_url,
cta: t.products[0].call_to_action,
price: t.products[0].price,
impressionTrackers: (t) {
return t.url;
}, p.mediaType = h.c;
} else ? (p.vastUrl = e.displayurl, p.mediaType = h.d) : = e.creative;
}), c;
onTimeout: function onTimeout(t) {
T() && Criteo.PubTag.Adapters.Prebid.GetAdapter(t.auctionId).handleBidTimeout();
onBidWon: function onBidWon(t) {
T() && Criteo.PubTag.Adapters.Prebid.GetAdapter(t.auctionId).handleBidWon(t);
onSetTargeting: function onSetTargeting(t) {
T() && Criteo.PubTag.Adapters.Prebid.GetAdapter(t.auctionId).handleSetTargeting(t);

function T() {
return "undefined" != typeof Criteo && Criteo.PubTag && Criteo.PubTag.Adapters && Criteo.PubTag.Adapters.Prebid;

function C(t) {
return f.deepAccess(t, "mediaTypes.banner.sizes") "" t.sizes;

function A(t, e) {
return Array.isArray(t[0]) ? (t) {
return e(t);
}) : [e(t)];

function S(t) {
return t[0] + "x" + t[1];

function I(t) {
return void 0 === t[0] && void 0 === t[1] ? "2x2" : t[0] + "x" + t[1];

function R(t) {
return void 0 !== f.deepAccess(t, "") && void 0 !== f.deepAccess(t, "");

function x() {
try {
var t,
n = "criteo_fast_bid",
s = "// Hash: ",
a = y.getDataFromLocalStorage(n);
null !== a && (t = a.indexOf("n"), (e = a.substr(0, t).trim()).substr(0, s.length) !== s ? (f.logWarn("No hash found in FastBid"), y.removeDataFromLocalStorage(n)) : (r = e.substr(s.length), i = a.substr(t + 1), Object(p.verify)(i, r, g, b) ? (f.logInfo("Using Criteo FastBid"), (o = document.createElement("script")).type = "text/javascript", o.text = i, f.insertElement(o)) : (f.logWarn("Invalid Criteo FastBid found"), y.removeDataFromLocalStorage(n))));
} catch (t) {}

382: function _(t, e, r) {
"use strict";

Object.defineProperty(e, "__esModule", {
value: !0
var a = r(383),
p = r(384);

e.verify = function (t, e, r, i) {
var o = new a.BigInteger(a.b64toHex(e)),
n = new a.BigInteger(a.b64toHex(r)),
s = o.modPowInt(i, n);
return a.removeExtraSymbols(s.toHexString()) === p.Sha256.hash(t);
383: function _(t, e, r) {
"use strict";

var i;
Object.defineProperty(e, "__esModule", {
value: !0
var o = (g.prototype.toHexString = function () {
if (this.s > o) && (e = !0, r = c(t)); 0 > (o += this.DB - 4)) : (t = this[i] >> (o -= 4) & 15, o this.DB ? (this[this.t - 1] |= (o & (1 > this.DB - i) : this[this.t - 1] |= o = this.DB && (i -= this.DB));

this.clamp(), r && g.ZERO.subTo(this, this);
}, g.prototype.negate = function () {
var t = T();
return g.ZERO.subTo(this, t), t;
}, g.prototype.abs = function () {
return this.s > i | s, s = (this[a] & o) = e.DV && (t[r + e.t] -= e.DV, t[r + e.t + 1] = 1);

0 > this.F2 : 0),
h = this.FV / d,
f = (1 = this.t) e.t = 0;else {
var i = t % this.DB,
o = this.DB - i,
n = (1 > i;

for (var s = r + 1; s > i;

0 >= this.DB;

if (t.t >= this.DB;

i += this.s;
} else {
for (i += this.s; r >= this.DB;

i -= t.s;

e.s = i > 15; 0 > 15,
c = a * p + u * s;
o = ((p = s * p + ((32767 & c) >> 30) + (c >>> 15) + a * u + (o >>> 30), r[i++] = 1073741823 & p;

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

return o;
}, g);

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

function T() {
return new o(null);

function C(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 = o, e.nbi = T, e.nbits = C;

for (var n = [], s = "0".charCodeAt(0), a = 0; a > 2), i = 3 & n, 1) : 1 == r ? (e += c(i > 4), i = 15 & n, 2) : 2 == r ? (e += c(i), e += c(n >> 2), i = 3 & n, 3) : (e += c(i > 4), e += c(15 & n), 0));

return 1 == r && (e += c(i > 15) * this.mpl & = t.DV;) {
t[r] -= t.DV, t[++r]++;

t.clamp(), t.drShiftTo(this.m.t, t), 0 > 15, = (1 >> 0;

for (n[o - 1][14] = Math.floor(p), n[o - 1][15] = u, s = 0; s >> 0;

for (var h = r[0], f = r[1], l = r[2], m = r[3], v = r[4], y = r[5], b = r[6], g = r[7], d = 0; d >> 0, m = l, l = f, f = h, h = T + C >>> 0;

r[0] = r[0] + h >>> 0, r[1] = r[1] + f >>> 0, r[2] = r[2] + l >>> 0, r[3] = r[3] + m >>> 0, r[4] = r[4] + v >>> 0, r[5] = r[5] + y >>> 0, r[6] = r[6] + b >>> 0, r[7] = r[7] + g >>> 0;

for (var A = new Array(r.length), g = 0; g >> t | e >> 3;
}, S.q1 = function (t) {
return S.ROTR(17, t) ^ S.ROTR(19, t) ^ t >>> 10;
}, S.Ch = function (t, e, r) {
return t & e ^ ~t & r;
}, S.Maj = function (t, e, r) {
return t & e ^ t & r ^ e & r;
}, S);

function S() {}

e.Sha256 = i;
}, [380]);
pbjsChunk([187], {
481: function _(e, r, t) {
e.exports = t(482);
482: function _(e, r, t) {
"use strict";

Object.defineProperty(r, "__esModule", {
value: !0
}), t.d(r, "spec", function () {
return m;
var b = t(0),
y = t(2),
h = t(3),
i = t(11),
l = t.n(i),
a = t(483),
n = t.n(a),
s = t(1);

function v(e) {
return (v = "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);

var o = [y.b, y.d],
g = 100,
w = 300,
x = 3600,
I = !0,
P = {
JPY: 1

function p(e) {
var r = {};
return = e.bidId, r.ext = {}, r.ext.siteID = e.params.siteId, !e.params.hasOwnProperty("id") """string" != typeof && "number" != typeof ? r.ext.sid = "".concat(e.params.size[0], "x").concat(e.params.size[1]) : r.ext.sid = String(, e.params.hasOwnProperty("bidFloor") && e.params.hasOwnProperty("bidFloorCur") && (r.bidfloor = e.params.bidFloor, r.bidfloorcur = e.params.bidFloorCur), r;

function d(e) {
return Array.isArray(e) && 2 === e.length && n()(e[0]) && n()(e[1]);

function c(e, r) {
if (d(e)) return e[0] === r[0] && e[1] === r[1];

for (var t = 0; t e.length) && (r = e.length);

for (var t = 0, i = new Array(r); t n

nnx3c!-- Rubicon Project Ad Tag --x3en