Ebene News – CA – Every Easter Egg (Kaiju Size) in Godzilla vs Kong

Godzilla vs Kong is a gigantic movie, so it stands to reason that even Easter eggs would be the size of a kaiju The fourth (and, for now, the last) movie in the Legendary’s MonsterVerse franchise brings together the two most famous giant monsters of all time for a city-level showdown The film, released in theaters and streaming on HBO Max today, is the second episode of Godzilla and King Kong.Because the two men originally fought in 1962 in King Kong vs Godzilla, it makes sense that Godzilla vs 2021 Kong would feature plenty of tributes to the original shock of these cinematic titans

Godzilla vs. Kong also has plenty of Easter Eggs and flashing references to the MonsterVerse movies that came before it: Godzilla, Kong: Skull Island and Godzilla: King of the Monsters Like the Monster Researchers who work for Monarch in the movies, we tracked down every kaiju easter egg we could find.There aren’t as many as in King of the Monsters, and many of them are a bit more subtle than KotM’s screams. p>

Godzilla vs. Kong opening credits similar to the 2014 Godzilla opening credits and King of the Monsters end credits However, they don’t contain nearly as many Easter eggs as the end credits of the first one, but mainly serve as a recap of previous films and a subtle glimpse into the action to come. That said, there are still a few Easter eggs to note

If you watch Godzilla vs Kong in a theater, you’ll almost certainly miss the text that appears around the cast and crew names before it’s… “redacted” If you watch on HBO Max and you can take a break you will see that the censored words are not so much deep easter eggs as they are just a little bit of fun For example, director Adam Wingard’s text reads: “The story of the titanic wars will be explored in an Adam Wingard film that highlights previously hidden truths”Everything but his name is covered up – so is star Alexander Skarsgård, whose censored credit simply teases what his character will try to do in the film (” Alexander Skarsgård must prove the existence of hollow earth to save his reputation tarnished “) So the credits are fun, but if you’re a die-hard Godzilla fan looking for obscure references you can probably go easy on the pause button

A card in the opening credits montage is a photo of William “Bill” Randa’s 1973 expedition to Skull Island Randa, played by John Goodman in Kong: Skull Island, first observed on Kong during of this mission, although he was eventually eaten by a Skullcrawler At least his legacy lives on in the Monarch archives

Towards the end of the credits, we are treated to some stats for a few of the kaiju: Godzilla, Kong, the MUTO female from the 2014 movie, a Skullcrawler from Skull Island, and King of the Monsters Ghidorah. stats count as real Easter Eggs, though there are a few fun details: Godzilla has a walking speed of 18 miles per hour, and Kong is smart and can use tools like axes.In addition, all three causes of deaths of defeated monsters are listed as “internal combustion”, “eventration” and “atomic combustion””

Brian Tyree Henry’s kaiju conspiracy theorist character runs a podcast called Titan Truth Podcast, and his logo looks terribly like one of the much-maligned 1998 Godzilla movie posters – a big eye of Godzilla on a diagonal angle

We meet Dr Skarsgård Nathan Lind while working in the basement of Denham University of Theoretical Sciences, as he is an academic alien due to his seemingly far-fetched theories of Hollow Earth The Fictional University Probably named after Carl Denham, the character from the first King Kong (and Peter Jackson’s 2005 remake) who first rides the Skull Island Expedition because he wants to shoot a movie there

The Hollow Earth theory is first mentioned on Skull Island by Houston Brooks, then confirmed in King of the Monsters Godzilla vs. Kong carries the concept of the Hollow Earth – the idea that there is a world livable under our feet – on a whole new level

Japanese actor Shun Oguri makes his Hollywood debut in Godzilla vs Kong playing Ren Serizawa, son of the late Monarch scientist Ishirō Serizawa (Ken Watanabe) The family bond is not a big topic of conversation in the film , although it is a little strange that the son of man who died detonating a nuclear weapon to revive Godzilla is working for Apex Cybernetics to build and pilot a mechanical monster that can defeat Godzilla Apple has fallen far from the tree , it would seem

When Maddie Russell (Millie Bobby Brown from Stranger Things, reprising her role as King of the Monsters) browses the Titan Truth podcast thread, we see this episode No 244 titled “Pregnancy Theory Mothra” and contains the description “So who’s baby daddy?” Mothra sacrificed herself to save Godzilla in King of the Monsters’ big climax, but the credits hinted that there was a new Mothra egg. Is the implication here that Godzilla is the father? It would be a first

One of the cuts Maddie has on her conspiracy theory card of Godzilla sightings (which is surprisingly clear on anything that could count as a real Easter Egg, one way or another) ) is a title on its mother Emma Russell (Vera Farmiga) was behind the mass release of Titans in King of the Monsters, an act of ecoterrorism that resulted in many people dying but ultimately resulted in a largely harmonious kaiju coexistence, so who says if she really was a villain or a savior?

The chains and shackles Kong wears on his boat ride are very similar to the handcuffs he wore while on display in New York City in the original 1933 King Kong

It might be a coincidence, but when Godzilla first attacks the fleet carrying Kong, he gets the anchor of a halved battleship stuck in its scales, causing him to drag the ship behind him as he swimming in the water It is reminiscent of the end of Jaws, when Quint & Co are able to follow the giant shark as it swims underwater by the barrels they have attached to it

After Godzilla decommissioned the boats, the humans transported Kong the rest of the way to Antarctica by transporting him by helicopter This, as Wingard has confirmed, is a direct homage to the former King Kong vs Godzilla, which featured a scene in which a drugged Kong was taken into battle with Godzilla via a balloon. didn’t want to do anything so stupid for Godzilla vs Kong, but there was a gap in the script where they had to find a way to get Kong from point A to point B Turns out the old movie had the good idea – he just traded helium for helicopters

When Kong and his human tagalongs arrive on Kong’s Hollow Earth homeland, we see a few new monsters, including a flying snake, big spiders, a cold-aired lizard, and evil cave pigeons None of those -this does exist in kaiju, and while some theorize that these are heavily modified versions of old favorites, this is highly unlikely to be the case.

It turns out that Godzilla and Kong aren’t the only kaiju in this fight Although it was largely kept under wraps before the film’s release, Godzilla vs Kong marks the debut of Mechagodzilla’s MonsterVerse The Robotic Counterpart. from Godzilla is one of the most iconic kaiju around, having appeared in three different live-action forms before that.The first Mechagodzilla, to appear in Godzilla vs Mechagodzilla and Terror of Mechagodzilla (1973 and 1974, respectively), were created by alien invaders The second, Godzilla vs 1993 Mechagodzilla II, recast the robot into a human creation – an advanced weapon meant to fight Godzilla The third version, also known as Kiryu, appeared in 2002’s Godzilla Against Mechagodzilla and is returned in the following year’s Godzilla: Tokyo SOS (There was also a Mechagodzilla, of sorts, in one of the Godzilla anime movies currently streaming on Netflix and in Ready Player One, but the less we talk about it, the better)

Godzilla vs. Kong’s Mechagodzilla is perhaps the most similar to Kiryu, as this Mechagodzilla was a cyborg built around the bones of the original Godzilla, and he briefly got out of hand when the destructive instincts of those old bones took over. above This new Mechagodzilla is partially powered by one of Ghidorah’s skulls (more on that in a moment), and he’s going crazy for bone reasons too

(It’s also worth noting, perhaps, that while Mechagodzilla is by far the more famous of the two, a robotic robot named Mechani-Kong beat six-year-old Mechagodzilla on the big screen when he appeared in King. Kong Escapes)

Mechagodzilla kills the Skullcrawler (then later attempts to finish off Godzilla) with a move straight out of his organic counterpart’s playbook Godzilla ended the MUTO in the first MonsterVerse movie by detonating his atomic blast in his throat of MUTO, a Godzilla vs. move. Kong’s opening credits refer to “the kiss of death” Mechagodzilla does the same here

When Kong arrives at the source of energy in his homeland of Hollow Earth, he must push through gigantic stone doors in order to enter The doors – and columns on either side – are quite similar to the Kong Gate pushed back in 1933 Given that the MonsterVerse version of Kong didn’t do as much as we’d expect from a typical Kong, seeing him push a door. giantess is a fitting little throwback

Besides sharing half of its name with the Eighth Wonder of the World, Hong Kong also has the distinction of being a double victim of Godzilla’s wrath Godzilla attacked Hong Kong in 1995’s Godzilla vs. Destoroyah (Fun fact: this is the movie in which Godzilla “dies” because he is undergoing nuclear fusion, leading to the shining and “scorching” Godzilla the King of the Monsters borrowed for his grand finale)

Godzilla: King of the Monsters post-credits scene revealed that ecoterrorist Alan Jonah (Charles Dance) purchased one of Ghidorah’s severed heads in Godzilla vs Kong, we learned that Apex Cybernetics had it apparently acquired and uses innate ‘telepathy’ in the skull to control Mechagodzilla This isn’t the first time Ghidorah has been a cyborg, even though he was previously his own monster In 1991, Godzilla vs. King Ghidorah, the invaders from the future unleashed Ghidorah on Japan Godzilla is able to finally defeat the three-headed monster, detonating his middle head, but then continues to rampage One of the visitors from the future, having changed his mind, returns to future, find Ghidorah’s corpse and transform it into a cyborg version known as Mecha-King Ghidorah so that she can use it to defeat Godzilla in the past , which was our gift The futuristic technology of Mecha-King Ghidorah would help humanity build Mechagodzilla in the next film in the series

The original 333 Kong killed a T rex by forcing his enemy’s jaw open and snapping it.Many subsequent Kong movies resulted in him finishing off a monster using this same move, he didn’t so it’s no surprise that he tries it against Godzilla in their fight No luck, however

One of the most beloved moments of King Kong vs 1962 Godzilla occurs when Kong shoves a tree into Godzilla’s open mouth It’s very cheesy in a charming way, and the new movie pays homage to that move when Kong stops Godzilla from setting off an atomic explosion by thrusting the handle of his ax directly into Godzilla’s open mouth

In King Kong vs Godzilla, Kong is given some extra juice so he has something that can compete with Godzilla’s atomic blast After Godzilla knocks Kong out, lightning strikes the great ape, reviving him and him giving “electric fingertips” so that he can shock the King of the Monsters Godzilla vs. Kong doesn’t go that far, but Kong is resurrected when Dr Nathan Lind uses a HEUNEV to defibrillate him – so he’s still powered by electricity in some way

Already subscribed?
Log in or link your magazine subscription

Already subscribed?
Log in or link your magazine subscription

Already subscribed?
Log in or link your magazine subscription

= 0? (u = fsubstr (0, v), c = fsubstr (v 1)) 🙁 u = f, c = “”), i = decodeURIComponent (u), l = decodeURIComponent (c), hasOwnProperty (o, i) ? isArray (o [i])? o [i] push (l): o [i] = [o [i], l]: o [i] = l} return o}; var isArray = ArrayisArray || function (r) {return “[object Array]” === ObjectprototypetoStringcall (r)};
}, {}];
the modules window [“1208”] = [function (require, module, exports) {“use strict”; var stringifyPrimitive = function (r) {switch (typeof r) {case “string”: return r; case “boolean”: return r? “true”: “false”; case “number”: return isFinite (r)? r: “”; default: return “”}}; moduleexports = function (r, e, t, n) {return e = e || “&”, t = t || “=”, null === r&& (r = void 0), “object” == typeof r? map (objectKeys (r), function (n) {var i = encodeURIComponent (stringifyPrimitive (n)) t; return isArray (r [n])? map (r [n], function (r) {return i encodeURIComponent (stringifyPrimitive (r))}) join (e): i encodeURIComponent (stringifyPrimitive (r [n]))}) join (e): n? encodeURIComponent (stringifyPrimitive (n)) t encodeURIComponent (stringifyPrimitive (r)): “”}; var isArray = ArrayisArray || function (r) {return “[object Array]” === ObjectprototypetoStringcall (r)}; function map (r, e) {if (rmap) return rmap (e); for (var t = [], n = 0; n0&&a [alength-1]) && (6 === i [0] || 2 === i [0])) {o = 0; continue} if (3 === i [0] && (! a || i [1]> a [0] &&i [1] “:” akbar-men “,” ∑ “:” majmou “,” ¤ ” : “omla”}, az: {}, ca: {“∆”: “delta”, “∞”: “infinite”, “♥”: “amor”, “&”: “i”, “|”: “o”, “”: “mes que”, “∑”: “suma dels”, “¤”: “moneda”}, cz: {“∆”: “delta”, “∞”: “nekonecno”, ” ♥ “:” laska “,” & “:” a “,” | “:” nebo “,” “:” vice jako “,” ∑ “:” concern “,” ¤ “:” mena “}, de: {“∆”: “delta”, “∞”: “unendlich”, “♥”: “Liebe”, “&”: “und”, “|”: “oder”, “”: “groesser als”, ” ∑ “:” Summe von “,” ¤ “:” Waehrung “}, dv: {” ∆ “:” delta “,” ∞ “:” kolunulaa “,” ♥ “:” loabi “,” & “:” aai “,” | “:” noonee “,” “:” ah vure bodu “,” ∑ “:” jumula “,” ¤ “:” faisaa “}, en: {” ∆ “:” delta “,” ∞ ” : “infinity”, “♥”: “love”, “&”: “and”, “|”: “or”, “”: “greater than”, “∑”: “sum”, “¤”: ” currency “}, es: {” ∆ “:” delta “,” ∞ “:” infinito “,” ♥ “:” amor “,” & “:” y “,” | “:” u “,” “: “mas que”, “∑”: “suma de los”, “¤”: “moneda”}, fr : {“∆”: “delta”, “∞”: “infinitely”, “♥”: “Love”, “&”: “and”, “|”: “or”, “”: “greater than”, “∑”: “sum of”, “¤”: “monna ie”}, gr: {}, hu: {“∆”: “delta”, “∞”: “vegtelen”, “♥”: “szerelem” , “&”: “es”, “| “:” vagy “,” “:” nagyobb mint “,” ∑ “:” szumma “,” ¤ “:” penznem “}, il: {” ∆ “:” delta “,” ∞ “:” infinito “, “♥”: “amore”, “&”: “e”, “|”: “o”, “”: “maggiore di”, “∑”: “somma”, “¤”: “moneta”}, lt : {}, lv: {“∆”: “delta”, “∞”: “bezgaliba”, “♥”: “milestiba”, “&”: “a”, “|”: “vai”, “”: “lielaks neka”, “∑”: “summa”, “¤”: “valuta”}, my: {“∆”: “kwahkhyaet”, “∞”: “asaonasme”, “♥”: “akhyait”, ” & “:” nhin “,” | “:” tho “,” “:” kyithaw “,” ∑ “:” paungld “,” ¤ “:” ngwekye “}, mk: {}, nl: {” ∆ “:” delta “,” ∞ “: “oneindig”, “♥”: “liefde”, “&”: “en”, “|”: “of”, “”: “groter dan”, “∑”: “som”, “¤”: “valuta “}, pl: {” ∆ “:” delta “,” ∞ “:” nieskonczonosc “,” ♥ “:” milosc “,” & “:” i “,” | “:” lub “,” “:” wieksze niz “,” ∑ “:” suma “,” ¤ “:” waluta “}, pt: {” ∆ “:” delta “,” ∞ “:” infinito “, “♥”: “amor”, “&”: “e”, “| “:” or “,” “:” maior que “,” ∑ “:” soma “,” ¤ “:” moeda “}, ro: {” ∆ “:” delta “,” ∞ “:” infinite “, “♥”: “dragoste”, “&”: “si”, “|”: “sau”, “”: “mai mare ca”, “∑”: “suma”, “¤”: “valuta”}, ru: {“∆”: “delta”, “∞”: “beskonechno”, “♥”: “lub ov”, “&”: “i”, “| “:” ili “,” “:” bolche “,” ∑ “:” summa “,” ¤ “:” valjuta “}, sk: {” ∆ “:” delta “,” ∞ “:” nekonecno “,” ♥ “:” laska “,” & “:” a “,” | “:” alebo “,” “:” viac ako “,” ∑ “:” sucet “,” ¤ “:” mena “}, sr: {}, tr: {“∆”: “delta”, “∞”: “sonsuzluk”, “♥”: “ask”, “&”: “ve”, “|”: “veya”, “”: ” buyuktur “,” ∑ “:” toplam “,” ¤ “:” para birimi “}, uk: {” ∆ “:” delta “,” ∞ “:” bezkinechnist “,” ♥ “:” lubov “,” & “:” i “,” | “:” abo “,” “:” bilshe “,” ∑ “:” suma “,” ¤ “:” valjuta “}, vn: {” ∆ “:” delta “,” ∞ “:” vo cuc “, “♥”: “yeu”, “&”: “will”, “|”: “hoac”, “”: “lon hon”, “∑”: “tong”, “¤”: “tien te”}} ; if (“string”! = typeof e) return “”; if (“string” == typeof a&& (A = a), m = Ien, c = Cfr, “object” == typeof a) for (g in n = amaintenirCase ||! 1, O = acustom&& “object” == type of apersonalized? apersonalized: O, u = atronquer> 1&&atronquer ||! 1, l = auric ||! 1, s = auricNoSlash ||! 1 , r = amarque ||! 1, S =! 1! == asymbols &&! 1! == alang, A = aseparator || A, l&& (p = bjoin (“”)), s&& (p = zjoindre (” “)), r&& (p = [” “,”! “,” ~ “,” * “,” ‘”,” (“,”) “] join (” “)), m = alang&&I [alang] &&S ? I [alang]: S? Ifr: {}, c = alang&&C [alang]? C [alang] :! 1 === alang ||! 0 === alang? {}: Cfr, untitl eCase&& “number” == type of untitleCaseelength&&ArrayprototypetoStringcall (untitleCase)? (untitleCaseforEach (function (e) {O [e “”] = e “”}), t =! 0): t = !! atitleCase, uncustom&& “number” == type of a&&ArrayprototypetoStringcall (unpersonalized) &&aDouaneforEach (function (e) {O [e (n “) forEach (function (e) {O [e (n”) forEach ” = alength> 1? new RegExp (“\ b” o (a) “\ b”, “gi”): new RegExp (o (a), “gi”), e = replace (n, O [a ])}), O) p = g; for (p = o (p = A), f =! 1, y =! 1, d = 0, k = (e = replace (/ (^ s | s $) / g, “”)) length ; d = 0? (j = g, g = “”) :! 0 === y? (g = U [j] v [g], j = “”): g = f&&v [g] match (/ [A-Za-z0-9] /)? “” V [g]: v [g], f =! 1, y =! 1): g in U? (j = g, g = “”, d === k-1&& (g = U [j]), y =! 0):! m [g] || l&&-1! == contact (“”) indexOf (g) || s&&-1! == zrejoin (“”) indexOf (g)? (! 0 === y? (G = U [j] g, j = “”, y =! 1): f&& (/ [A-Za-z0-9] / test (g) || Esubstr (- 1) match (/ A-Za-z0-9] /)) && (g = “” g), f =! 1) 🙁 g = f || Esubstr (-1) match (/ [A-Za- z0-9] /)? A m [g]: m [g], g = void 0! == e [d 1] &&e [d 1] match (/ [A-Za-z0-9] /)? A: “”, f =! 0), E = greplace (new RegExp (“[^ \ w \ s” p “_-]”, “g”), A); returns t&& (E = Replace (/ ( w) ( S *) / g, function (e, a, n) {var t = atoUpperCase () (null! == n? n: “”); return ObjectKeys (O) indexOf (ttoLowerCase ()) u&& (h = EcharAt (u) === A, E = Thin (0, u), h || (E = Thin (0, ElastIndexOf (A)))), n || t || (E = EtoLowerCase ()), E}, t = function (e) {return function (a) {return n (a, e)}}, o = function (e) {return erplace (/ [- \ ^ $ *? () | [] {} /] / g, “\ $ &”)}, i = function (e, a) {for (var n in a) if (a [n] === e) return! 0}; if (“undefined”! = typeof module&&modulemodule export) exports = n, moduleexportationscreateSlug = t; else if (“undefined”! = typeof define&&defineamd) define ([], function () {return n}); else try {if (egetSlug || ecreateSlug) throw “speakurl: globals exist / (getSlug | createSlug) /”; egetSlug = n, ecreateSlug = t} catch (e) {}} (this);
}, {}];
modules window [“1235”] = [function (require, module, exports) {var namespace = “expire_mixin”; function expirePlugin () {var e = thiscreateStore (storage, null, cette_namespacePrefix namespace); return {set: function (t, n, a, r) ​​{thishasNamespace (namespace) || eset (n, r); return t ()}, get: function (e, n) {thishasNamespace (namespace) || tcall (this, n); return e ()}, remove: function (t, n) {thishasNamespace (namespace) || eremove (n); return t ()}, getExpiration: function (t, n) {return eget (n)}, removeExpiredKeys: function (e) {var n = []; thiseach (function (e, t) {npush (t)}); for (var a = 0; a = 0; r -) {var l = localStorage () key (r); e (read (l), l)}} function remove (e) {return localStorage () removeItem (e)} function clearAll () {return localStorage () module clear ()} exports = {name: “localStorage”, read : read, write: write, each: each, delete: delete, clearAll: clearAll};
}, {“1237”: 1237}];
modules window [“1239”] = [function (require, module, exports) {moduleexports = {name: “memoryStorage”, read: read, write: write, each: each, remove: remove, clearAll: clearAll}; var memoryStorage = {}; function read (e) {return memoryStorage [e]} function write (e, r) {memoryStorage [e] = r} function each (e) {for (var r in memoryStorage) memoryStoragehasOwnProperty (r) &&e (memoryStorage [r] , r)} function remove (e) {delete memoryStorage [e]} function clearAll (e) {memoryStorage = {}}
}, {}];
the modules window [“1276”] = [function (require, module, exports) {! function (e) {var t = function (e) {return new y (e)}; tversion = “068”, “undefined”! = Typeof module&&moduleexports? moduleexports = t: “function” == typeof define&&defineamd? define (function () {return t}): etypogr = t; var n = function (e, t) {return new RegExp (e, t)}, s = /] *> / i, r = tamp = function (e) {var t = / ( s |) (& | & | & # 38;) ( s |) / g; if (e || “string” == typeof e) return ereplace (/ ()? ([^)? / g, function (e, n, r, a) {returns a = a || “”, (n = n || “”) match (s)? nra: n (r = replace (t, ‘$ 1& $ 3’)) a})}, a = tord = function (e) {if (e || ” string “== typeof e) {var t, n = f (e), r = [], a =! 1, p = / ( d) (st | nd | rd | th) / g; returns nforEach (function (e) {“tag” === etype? (repel (etxt), t = sexec (etxt), a =! (! t || void 0! == t [1])): a ? repel (etxt): repel (eSMSreplace (p, ‘$ 1 $ 2’))}), join (“”)}}, p = tinitQuotes = function (e) {var t = n (“(?: ( ?:] *> | ^) \ s * (?:] *> \ s *) *) (?: ( “|” | “) | (‘|’ | ‘))”, “I” ); if (e || “string” == typeof e) returns ereplace (t, function (e, t, n) {var s = t? “dquo”: “quo”, r = t || n; return [cut (0, elastIndexOf (r)), ”, r, “”] join (“”)})}, c = twidont = function (e) {var t = “(?:] *?>) *? [ ^ \ s] (? :(?: a | em | span | strong | i | b) [^>] *?>) *? “, s = n (” (\ s “t” \ s “t”) (?: \ s) ([^ \ s] (?: \ s * (?: a | em | span | strong | i | b) [^>] *?> \ s * \ *) *? (?: \ s *? (?: p | h [1-6] | li | dt | dd)> | $)) “,” gi “); returns replace replace (s, ‘$ 1 $ 2’)}, i = tcaps = function (e) {var t, r = f (e), a = [], p =! 1, c = n (“((\ b [AZ \ d] * [AZ] \ d * [AZ] [AZ \ d ‘] * \ b) | (\ b [AZ] \ s? (?: [AZ] \\ s?)) (?: \ s | \ b | $)) “,” g “); returns rforEach (function (e) {“tag” === etype Push (etxt), t = sexec (etxt), p =! (! t || void 0! == t [1])): p? push (etxt): push (eSMSreplace (c, function (e, t, n, s) {var r, a; returns n? ‘% to replace (“% s”, n) 🙁 “” === stranche (-1)? (r = stranche (0, -1), a = “”) 🙁 r = s, a = “”), ‘% s1% s2’ replace (“% s1”, r) replace (“% s2”, a))}))}), cut out typogrifie = function (e) {var t = e; returns ejquery&&ehtml&& (t = ehtml ()), t = r (t), t = c (t), t = u (t), t = i (t), t = p (t), t = a (t )}; var l, o, u = tsmartypants = function (e) {var t, n, r = f (e), a = [], p = [], c = “”, i = “”, l =! 1, o = “”; return rforEach (function (e) {if (“tag” === etype Push (etxt), null! == (i = sexec (etxt)) && (c = i [2] toLowerCase (), i [1] ? (diver> 0&&c === p [plength-1] &&ppop (), 0 === plength&& (l =! 1)) 🙁 ppush (c), l =! 0)); else {if (n = (n = eSMS) replace (/ (rock) ‘n’ (roll) / gi, “$ 1’n ‘$ 2”), t = nslice (-1) ,! l) switch (n = g (n) , n = h (n), n = d (n), n = x (n)) {case “‘”: n = / S / test (o)? “” “:”‘ “; break; case ‘”‘: n = / S / test (o)?” “”: “” “; break; default: n = m (n)} o = t, apush (n)}}), ajoin (” “)}, f = ttokenize = function (e) {for (var t, n = [], s = 0, r = / ([^] *>) / gi; null! == (t = rexec (e ));) {var a = t [1], p = t [2]; a&&npush ({type: “text”, txt: a}), npush ({type: “tag”, txt: p}), s = rlastIndex} returns rlastIndex) / g, “$ 1 -“)}, d = tsmartEllipses = function (e) {returns replace (/ \ / g, “…”) replace (/ / g, “…”)}, X = tsmartBackticks = function (e) {return and replace (/ “ / g, “” “) replace (/ ” / g,” “”)}, m = tsmartQuotes = function (e) {var t = “(? =% s \ B) “replace (“% s “,” [! “# \ $ \% \ ‘() *, – \ /:;? \ @ \ [\ ] \ ^ _ `{|} ~]”), s = “[^ \ \ t \ r \ n \ [ {\ (\ -]”, r = n ( “(\ s | | – | & [mn] dash; | – | – | ȁ [34];) ‘(? = \ w)”, “g”), a = n (“(” s ” ) ‘(?! \ s | s \ b | \ d) “,” g “), p = n (” (“s”)’ (?! \ s | s \ b) “, “g”), c = n (‘(\ s | | – | & [mn] dash; | – | – | ȁ [34];) “(? = \ w)’,” g “), i = n (‘”(? = \ s)’,” g “), l = n (” (“s’)” ‘, “g”); returns replace (n (“^’% s” replace (“% s”, t), “g”), “‘”) replace (n (‘ ^ “% replace (“% s “, t),” g “),” “”) replace (/ “‘(? = w) / g,” “‘”) replace (/ ‘”(? = w) / g,”‘ “”) replace (/ b ‘(? = d {2} s ) / g, “‘”) replace (r, “$ 1” “) replace (a,” $ 1 “”) replace (p, “$ 1’ $ 2”) replace (“‘”, “‘”) replace (c, “$ 1” “) replace (i,” “”) replace (l, “$ 1” “) replace (‘”‘, “” “)}, y = function (e) {this_wrapped = e }, v = function (e, n) {yprototype [e] = function () {returns e = layer (t, c eci_wrapped), this_string? t (e) chain (): e; var e}}; for (l in t) thasOwnProperty (l) && ((o = t [l]) &&oconstructor&&ocall&&oapply) &&v (l), &&v (l); yprototypechain = function () {return this_chain =! 0, this}, yprototypevalue = function () {return this_wrapped}} (this);
}, {}];
modules window [“1358”] = [function (require, module, exports) {“use strict”; const universalAgora = require (1360), universalRest = require (9), universalQuery = require (1359), _ get = require (23); function searchByQueryWithRawResults (e, r) {const t = `// $ {rsitehost} $ {80! == rsiteport? `: $ {rsiteport}`: “”} $ {rsitechemin} / _ agora / _search`; returns universalRestpost (t, e ,! 0)} function getProducts (e, r, t) {return searchByQueryWithRawResults (universalAgorabuildProductsQuery (e), r) then (e => {const r = universalQueryformatSearchResult (e); return {total: eles coupstotal, products: t? universalAgorafilterByLocale (r): r}})} function getMerchantsList (e) {returns searchByQueryWithRawResults (universalAgorabuildMerchantsAggregation (1e6, _get (e, “siteagoraLocale”)), e) then “merchantsAggregationName {aggregationName {aggregationName {aggregationName {aggregationName {aggregationName {aggregationName “, field:” key “, subfield:” name “}))} moduleexportationsgetProduct = universalAgoragetProduct, moduleexportationsgetProducts = getProducts, moduleexportationsgetMerchantsList = getMerchantsList, moduleexportationssearchByQueryQueryWithRawResilderchants = searchByQuerybuildsaberyQueryQueryQueryQueryQueryQueryQueryWithRawRawResilderchants = searchByQuerybuildingsaberyQueryQueryQueryBeryQueryQueryBeryQueryQueryQueryQuerybuildingQueryQueryQueryQueryRawildercildawildercaw
}, {“9”: 9, “23”: 23, “1359”: 1359, “1360”: 1360}];
the modules window [“1359”] = [function (require, module, exports) {“use strict”; const _map = require (50), _ get = require (23), _ isArray = require (150), _ set = require (107), _isObject = require (88), _ cloneDeep = require (60), _ uniq = require (91); function formatSearchResult (e) {return _map (eles coupshits, “_ source”)} function newQuery (e) {if (! e) throw new Error (“An` index` is required to build a query “); return {index: e, type: “_ doc”, body: {query: {}}}} function addShould (e, o) {var t = _get (e, “bodyrequetebooléenshould”, void 0), r = _isArray ( o); return t? r? _set (e, “bodyrequetebooléend should”, tconcat (o)) 🙁 tpush (o), _ set (e, “corpsrequetebooléend would”, t)): _ set (e, “corpsrequetebooléend should”, r? o: [o]) , e} function addMust (e, o) {var t = _get (e, “bodyrequestbooleanmust”, void 0), r = _isArray (o); return t? r? _set (e, “bodyrequetebooléendoit”, tconcat (o)) 🙁 tpush (o), _ set (e, “corpsrequetebooléendoit”, t)): _ set (e, “corpsrequetebooléenmust”, r? o: [o]) , e} function addMustNot (e, o) {var t = _get (e, “bodyrequestbooleanmust_not”, void 0), r = _isArray (o); return t? r? _set (e, “bodyrequest boooleanmust_not”, tconcat (o)) 🙁 tpush (o), _ set (e, “bodyrequetebooléenmust_not”, t)): _ set (e, “bodyrequetebooléenmust_not”, r? o: [o]) , e} function addFilter (e, o) {var t = _get (e, “bodyrequestbooleanfilter”, void 0); if (! _ isObject (o)) throw new Error (“Filter query required to be an object”); return t? _isArray (t)? (tpush (o), _ set (e, “filter boolean query body”, t)): _ set (e, “filter boolean query body”, [_ cloneDeep (t), o]): _ set (e, “filter boolean query body”, o) , e} function addMinimumShould (e, o) {if (“number”! = typeof o) throw new Error (“A number is required as the second argument”); return _set (e, “minimum_should_match booleanrequest”, o), e} function addSort (e, o) {var t = _get (e, “corpssort”); returns _isArray (t) || _set (e, “corpstrier”, t = []), tpush (o), e} function addSize (e, o) {if (! o&&0! == o) return e; if (o = parseInt (o), isNaN (o)) throw new Error (`The second argument must be a number: $ {o}`); return _set (e, “corpssize”, o)} function addFrom (e, o) {if (! o&&0! == o) return e; if (o = parseInt (o), isNaN (o)) throw new Error (`The second argument must be a number: $ {o}`); return _set (e, “corpsfrom”, o)} function onlyWithTheseFields (e, o) {if (! _ isArray (o)) throw new Error (“Second argument is required to be an Array”); return _set (e, “body_la sourceinclude”, _ uniq (o)), e} function onlyWithinThisSite (e, o) {return osubsiteSlug? addFilter (e, {term: {subsite: osubsiteSlug}}) 🙁 addFilter (e, {term: {site: oslug}}), addMustNot (e, {exists: {field: “subsite”}})) , e} function onlyWithinThisDomain (e, o) {return addFilter (e, {prefix: {canonicalUrl: `http: // $ {ohost}`}}), e} function withinThisSiteAndCrossposts (e, o) {var t = { term: {}}, r = {bool: {should: [], minimum_should_match: 1}}; return tterm [“crosspost” (osubsiteSlug || olimace)] =! 0, rbooleanshouldpush (t), osubsiteSlug? rbooleand shouldpush ({term: {subsite: osubsiteSlug}}) 🙁 rbooleand wouldpush ({term: {site: oslug}}), addMustNot (e, {exists: {field: “subsite”}})), addFilter (e , r), e} function withinThisDomainOrCrossposts (e, o) {return addShould (e, {term: {[`crosspost $ {osubsiteSlug || oslug}`] :! 0}}), addShould (e, {prefix: { canonicalUrl: `http: // $ {ohost}`}}), addMinimumShould (e, 1), e} function moreLikeThis (e, o, t) {let r = {fields: [“tags”], like: { _ index: eindex, _type: “_ doc”, _ id: o}, include :! 1, min_term_freq: 1, max_query_terms: 12, min_doc_freq: 1}; return {more_like_this: Objectassign (r, t)}} function addAggregation (e = {}, o) {const {body: t = {}} = e; return o? (taggs? _set (e, “corpsaggs”, Objetattribuer (taggs, o)): _ set (e, “corpsaggs”, o), e): e} function formatAggregationResults ({aggregationName: e = “”, field: o = “”, subfield: t = “”, skipEmpty: r =! 0}) {return function (s = {}) {let i = _get (s, `aggregations $ {e} $ {t?” “t” “:” “} buckets`, []); returns r&& (i = ifiltre (e => 0! == _ get (e, “doc_count”, 0))), imap (e => e [o] || “”)}} function addGeo (e, o ) {if (! _ isArray (o)) throw new Error (“Second argument is required to be an Array”); if (2! == olength) throw new Error (“The array must be 2”); if (osome (isNaN)) throw new Error (“The array must contain only numbers”); return _set (e, “bodyrequetegeo_shapeacementformetype”, “point”), _ set (e, “corpsrequetegeo_shape locationformecoordaines”, o), e} function combineFunctionScoreQueries (e, o) {let t = _cloneDeep (_get (e, “bodyrequest”, { })), r = _cloneDeep (_get (o, “bodyrequest”, {})), s = _get (e, “corpssort”); returns _set (e, “requestbody”, {}), _ set (e, “bodyrequetefunction_scorefonctions”, []), ecorpsrequetefunction_scoreles functionspush ({filter: t, weight: 20}), ecorpsrequetefunction_scoreles functionspush ({filter: r, weight: 10}), ecorpsrequetefunction_scorescore_mode = “max”, ecorpsrequetefunction_scoremin_score = 10, _isArray (s) || _set (e, “corpstrier”, s = []), sunshift ({_ score: “desc”}), e} function addNestedObjQuery (e, o, t) {if (! e) throw new Error (“It n ‘there is no basic query to perform the addNestedObjQuery operation “); if (! o) throw new Error (“There is no nested object path on which to perform the nested query”); if (! t) throw new Error (“There is no nested query path to perform the nested query”); return _set (e, “nested”, {path: o, query: t}), e} function addMatchAll (e) {return _set (e, “corpsquery”, {match_all: {}}), e} moduleexports = new request, moduleexportationsaddGeo = addGeo, moduleexportationsaddAggregation = addAggregation, moduleexportationsaddShould = addShould, moduleexportationsaddFilter = addFilter, moduleexportationsaddMust = addMust, moduleexportationsaddMustNot = addMustNot, moduleexportationsaddMinimumShould = addMinimumShould, moduleexportationsaddSort = AddSort, moduleexportationsaddSize = addSize, moduleexportationsaddFrom = addFrom, moduleexportationsonlyWithTheseFields = onlyWithTheseFields, moduleexportationsonlyWithinThisSite = onlyWithinThisSite, moduleexportationsonlyWithinThisDomain = onlyWithinThisDomain, moduleexportationswithinThisSiteAndCrossposts = withinThisSiteAndCrossposts, moduleexportationswithinThisDomainOrCrossposts = withinThisDomainOrCrossposts, moduleexportationsRformatAggults, moduleexportationsRformatAndregation oduleexportationsformatSearchResult = formatSearchResult, moduleexportationsmoreLikeThis = moreLikeThis, moduleexportationscombineFunctionScoreQueries = combineFunctionScoreQueries, moduleexportationsaddNestedObjQuery = addNestedObjQuery, moduleexportationsaddMatchAll = addMatchAll;
}, {“23”: 23, “50”: 50, “60”: 60, “88”: 88, “91”: 91, “107”: 107, “150”: 150}];
modules window [“1360”] = [function (require, module, exports) {(function (process, __ filename) {(function () {
“use strict”; const _forEach = require (40), _ get = require (23), _ filter = require (134), _ map = require (50), _ isEmpty = require (87), urlParse = require (51), log = require (22) setup ({file: __ filename}), queryService = require (1359), universalRest = require (9), AGORA_HOST = windowtraiterenvAGORA_HOST, AGORA_ELASTIC_PREFIX = windowtraiterenvAGORA_ELASTIC_PREFIX, AGORA_ENDHOST =? `$ {AGORA_HOST} / api / v1`: null, requestHeader = {” Content-Type “:” application / json “}, PRODUCTS_INDEX =” agora-products “, AFFILIATES_INDEX =” affiliates_INDEX “=” retailers “, FILTER_KEY = { merchants: “name”, affiliates: “affiliate”}, URL_RE = / ^ https ?: / / * $ /; function getProducts (e, t) {const {limit: r = 100, start: a = 0, search: s = “”, sortDate: c = “desc”} = e, n = `$ {AGORA_ENDPOINT} / products? limit = $ {r} &start = $ {a} &search = $ {encodeURIComponent (s)} &sortDate = $ {c} `; return fetch (n) then (handleResponse) then (e => t? filterByLocale (e, t): e) then (e => ({total: length, products: e})) catch (handleError (n))} function getProduct (e, t) {const r = `$ {AGORA_ENDPOINT} / products / $ {e}`; if (! AGORA_ENDPOINT) throw new Error (“No Agora endpoint has been defined”); if (“string”! = typeof e) throw new Error (“request must provide a product id”); return fetch (r) then (handleResponse) then (e => t? filterByLocale (e, t): e) catch (handleError (r))} function postProduct (e) {const t = `$ {AGORA_ENDPOINT} / products` , r = {method: “POST”, headers: requestHeader, body: JSONstringify (e)}; return fetch (t, r) then (handleResponse) catch (handleError (t))} function putProduct (e, t) {const r = `$ {AGORA_ENDPOINT} / products / $ {e}`, a = {method: ” PUT “, headers: requestHeader, body: JSONstringify (t)}; return fetch (r, a) then (handleResponse) catch (handleError (r))} function patchProduct (e, t) {const r = `$ {AGORA_ENDPOINT} / products / $ {e}`, a = {method: ” PATCH “, headers: requestHeader, body: JSONstringify (t)}; return fetch (r, a) then (handleResponse) catch (handleError (r))} function deleteProduct (e) {const t = `$ {AGORA_ENDPOINT} / products / $ {e}`; return fetch (t, {method: “DELETE”, headers: requestHeader}) then (handleResponse) catch (handleError (t))} function getMerchantList (e) {const {limit: t = 100, fields: r = “”} = e; return PromiseSolve ([{name: “Amazon”}]) catch (handleError (“”))} function getMerchant (e) {const t = `$ {AGORA_ENDPOINT} / merchants / $ {e}`; if (“string”! = typeof e) throw new Error (“request must provide a product identifier”); return fetch (t) then (handleResponse) catch (handleError (t))} function patchMerchant (e, t) {const r = `$ {AGORA_ENDPOINT} / merchants / $ {e}`, a = {method: “PATCH” , headers: requestHeader, body: JSONstringify (t)}; return fetch (r, a) then (handleResponse) catch (handleError (r))} function postMerchant (e) {const t = `$ {AGORA_ENDPOINT} / merchants`, r = {method:” POST “, headers: requestHeader, body: JSONstringify (e)}; return fetch (t, r) then (handleResponse) catch (handleError (t))} function putMerchant (e, t) {const r = `$ {AGORA_ENDPOINT} / merchants / $ {e}`, a = {method: ” PUT “, headers: requestHeader, body: JSONstringify (t)}; return fetch (r, a) then (handleResponse) catch (handleError (r))} function deleteMerchant (e) {const t = `$ {AGORA_ENDPOINT} / merchants / $ {e}`; return fetch (t, {method: “DELETE”, headers: requestHeader}) then (handleResponse) catch (handleError (t))} function postLocale (e) {const t = `$ {AGORA_ENDPOINT} / locales /`, r = {method: “POST”, headers: requestHeader, body: JSONstringify (e)}; return fetch (t, r) then (handleResponse) catch (handleError (t))} function patchLocale (e, t) {const r = `$ {AGORA_ENDPOINT} / locales / $ {e}`, a = {method: ” PATCH “, headers: requestHeader, body: JSONstringify (t)}; return fetch (r, a) then (handleResponse) catch (handleError (r))} function handleResponse (e) {try {return ejson () then (t => {if (estatus> = 400) {const e = _get ( t, “messagedetails [0] message”); throw new Error (e)} return t})} catch (e) {throw new Error (emessage)}} function handleError (e) {return t => {throw log ( “warn”, `Failed request to $ {e}`, t), new Error (`request to $ {e} failed`)}} function buildProductsQuery ({search: e =” “, limit: t = 100, start : r = 0, sortDate: a = “”, filters: s, locale: c}) {const n = queryService (PRODUCTS_INDEX), o = s&CSSEETCHARObjectkey (s) length? Filter key object (s) (e => ArrayisArray (s [e]) &&s [e] length): [], i = {}, u = {}; if (prependElasticPrefix (n), e || olength || c || queryServiceaddMatchAll (n), c&& (queryServiceaddMust (i, {match: {“locallocal”: c}}), queryServiceaddMust (u, {merchant: {” “: c}})), e) if (isURL (e)) queryServiceaddMust (n, [queryServiceaddNestedObjQuery ({},” merchants “, {match: {” merchantsbuyUrl “: e}})]); else {const t = {}; queryServiceaddShould (t, [{match: {“localesproductId”: e}}, {match: {“localesname”: {query: e, boost: 2}}}]), queryServiceaddMinimumShould (t, 1), queryServiceaddMust (i, _get (t, “requestbody”))} if (length) {const e = {}; oforEach (t => {const r = s [t], a = FILTER_KEY [t], c = {}; a&& (c [`merchants $ {a}`] = r, queryServiceaddShould (e, {terms: c} ))}), queryServiceaddMinimumShould (e, 1), queryServiceaddMust (u, _get (e, “corpsquery”))} return _isEmpty (i) || queryServiceaddMust (n, [queryServiceaddNestedObjQuery ({}, “locales”, _ get (i, “bodyquery”))]), _ isEmpty (u) || queryServiceaddMust (n, [queryServiceaddNestedObjQuery ({}, “merchants”, _ get (u, “corpsquery”))]), queryServiceaddSize (n, t), r> = 0&&queryServiceaddFrom (n ,==), “desc” a || “asc” === a? queryServiceaddSort (n, {updatedAt: {order: a}}): e&&queryServiceaddSort (n, {_ score: {order: “desc”}}), n} function prependElasticPrefix (e) {return eindex = AGORA_ELASTIC_PREFIX? `$ {AGORA_ELASTIC_PREFIX} _ $ {eindex}`: eindex, e} function buildMerchantsAggregation (e = 1e6, t) {const r = queryService (PRODUCTS_INDEX); return prependElasticPrefix (r), queryServiceaddMust (r, {match: {active :! 0}}), t&&queryServiceaddMust (r, queryServiceaddNestedObjQuery ({}, “merchants”, _ get (queryServiceadslocale “{}” {” : t}}), “corpsquery”))), queryServiceaddAggregation (r, {merchants: {nested: {path: “merchants”}, aggs: {name: {terms: {field: “merchantsname”, size: e} }}}}), queryServiceaddSize (r, 0), r} function isURL (e) {return URL_REtest (e)} function filterByLocale (e, t, r = {locales: “US”}) {const a = ArrayisArray ( e); if (_isEmpty (e)) return a? []: {}; const s = [“locales”, “merchants”], c = a? e: [e], n = Objectkeys (r), o = _map (c, e => {const a = Objectassign ({}, e); return _forEach (s, s => {if (Objectkeys (a) includes (s)) {const c = t? _filter (e [s], [“locale”, t]): e [s]; a [s] = c ,! length&&nincludes && (a [s] = (_ filter (e [s], [“locale”, r [s]]) || []) map (e => (eid = null, elocale = t, e)))}}), aname = _get (a, “locales [0] name”, “”), a}); returns a&&olength? o: _get (o, “[0]”, {})} function searchByQueryWithRawResults (e, t) {const r = `// $ {tsitehost} $ {80! == tsiteport? `: $ {tsiteport}`: “”} $ {tsiteport} / _ agora / _search`; returns universalRestpost (r, e ,! 0)} function buildMerchantsByUrlQuery (e) {const t = queryService (PRODUCTS_INDEX); return prependElasticPrefix (t), queryServiceaddNestedObjQuery (tquerybody, “merchants”, {match: {“merchantsbuyUrl”: e}}), t} function getAffiliatesByLocale (e, t) {const r = queryService (AFFILIATES_INDEX); return prependElasticPrefix (r), queryServiceaddMust (r, {match: {locale: e}}), queryServiceaddSize (r, 1e3), queryServiceaddSort (r, {name: “asc”}), searchByQueryWithRawResults (r, t) then (e => _ get (e, “keystrokes”, []) map (e => _ get (e, “_ source”, {})))} function getRetailersByAffiliateId (e, t) {const r = queryService (RETAILERS_INDEX ); return e? (prependElasticPrefix (r), queryServiceaddMust (r, [queryServiceaddNestedObjQuery ({}, “affiliateRetailers”, {match: {“affiliateRetailersaffiliateId”: e}})]), queryServiceaddSize (r, 1e3dSort “r, 1e3dSort” asc “}), searchByQueryWithRawResults (r, t) then (e => _ get (e,” keystrokes “, []) map (e => _ get (e,” _ source “, {})))) : Promessereject ()} function getMerchantsList (e) {return searchByQueryWithRawResults (buildMerchantsAggregation (1e6, _get (e, “siteagoraLocale”))), e) then (queryServiceformatAggregationResults ({aggregation name: “merchants”, subfield: key : “name”}))} function queryRetailersByUrl (e, t) {const r = urlParse (e) hostsplit (“www”) join (“”), a = queryService (RETAILERS_INDEX); returns queryServiceaddMust (a, {match: {domains: r}}), prependElasticPrefix (a), queryServiceaddSize (a, 10), searchByQueryWithRawResults (a, t) then (e => _ get (e, “hits”, [ ]) map (e => _ get (e, “_ source”, {})))} require (208), moduleexportations = {buildProductsQuery: buildProductsQuery, buildMerchantsAggregation: buildMerchantsAggregation, getProducts: getProducts, getProduct: getProduct, postProduct: postProduct , putProduct: putProduct, patchProduct: patchProduct, postProducts, getProduct: getProduct, postProduct: postProduct, putProduct: putProduct, patchProduct: patchProduct, postProducts: getProduct: getProduct, postProduct: postProduct: putProduct: patchProduct , postProduct: postProduct, putProduct: putProduct, patchProduct: patchProduct, postProduct: patchMerchantMerchant: patchMerchantMerchant: patchMerchant, putMerchant: putMerchant, deleteMerchant: deleteMerchant, isURL: isURL, filterByLocale: fi lterByLocale, patchLocale: patchLocale, postLocale: postLocale, buildMerchantsByUrlQuery: buildMerchantsByUrlQuery, getAffiliatesByLocale: getAffiliatesByLocale, searchByQueryWithRawResults: searchByQueryWithRawResults, getRetailersByAffiliateId: getRetailersByAffiliateId, getMerchantsList: getMerchantsList, queryRetailersByUrl: queryRetailersByUrl};

}) call (this)}) call (this, require (11), “/ services / universal / agorajs”)}, {“9”: 9, “11”: 11, “22”: 22, “23” : 23, “40”: 40, “50”: 50, “51”: 51, “87”: 87, “134”: 134, “208”: 208, “1359”: 1359}];
modules window [“1361”] = [function (require, module, exports) {“use strict”; const _map = require (50), _ mapValues ​​= require (203), _ Reduce = require (90), _ assign = require (138), _get = require (23), _ pickBy = require (139), _ find = require (43), affiliateFields = [“siteShortKey”, “pageUri”, “productId”, “utmMedium”, “utmSource”, “format”, “utmCampaign”, “referrer”, “deviceAbbreviation”, “zone”] , affiliateSettings = {amazon: {domains: [“amazoncom”, “amazoncouk”], subtagKey: “ascsubtag”, maxLength: 99, delimiter: “standard”, encoder :! 1}, narrativ: {domains: [“shop-linksco /”], subtagKey: “u1”, maxLength: 99, delimiter: “standard”, encode :! 0}, rakuten: {domains: [“clicliensynergiecom / deeplink”, “linksynergyWalmartcom / deeplink”], subtagKey: “u1”, maxLength: 72, delimiter: “standard”, encoder :! 1}, shareasale: {domains: [“shareasalecom”], subtagKey: “afftrack”, maxLength: 99, delimiter: “standard”, encoder :! 1}, skimlinks: {domains: [“goredirigercom”], subtagKey: “xcust”, maxLength: 50, delimiter: “alt”, encode :! 1}, impact: {domains: [], subtagKey: “subId2”, maxLength: 99, delimiter: “standard”, encode :! 1}, avantlink: {domains: [“avantlinkcom”], subtagKey: “ctc”, maxLength: 64, delimiter: “alt”, encode :! 1}, cj: {domains: [“tkqlhcecom”, “jdoqocycom”, “dpbolvwnet”, “anrdoezrsnet”, “kqzyfjcom”], subtagKey: “sid”, maxLength: 64, delimiter: “alt”, encode :! 1, joinBy: “/”, assignBy: “/”, set :! 0, position: “after”, positionKey: “type / dlg /”}, partnership: {domains: [“prfhn”], subtagKey: “pubref”, maxLength: 100, delimiter: “alt”, encode :! 1, joinBy: “/”, assignBy: “:”, set :! 0, position: “before”, positionKey: “destination”}, pepperjam: {domains: [“gopjncom”, “pntraccom”, “pjtracom”, “pjatrcom”, “pntrscom”, “pntracom”], subtagKey: “sid “, maxLength: 100, delimiter:” alt “, encode :! 1}, awin: {domains: [“awin1com”], subtagKey: “pref1”, maxLength: 100, delimiter: “alt”, encode :! 1, positioned :! 0, position: “before”, positionKey: “ued”}}, subtagDictionary = {siteShortKey: “”, pageUri: “p”, productId: “i”, zone: “z”, deviceAbbreviation: “d”, utmSource: “s”, utmMedium: “m”, utmCampaign: “c”, referrer: “r”, format: “t”}, delimiters = {standard: [“[“, “]”], alt: [“__” , “_”]}; function parseValueFromSubtag (e, t, i) {const a = t [0] and [1], s = isplit (a) [1] || “”; return s? ssplit (t [0]) [0]: null} function parseSubtag (e, t = standard delimiters) {return _pickBy (_mapValues ​​(subtagDictionary, i => parseValueFromSubtag (i, t, e)))} function generateSubtag (e , t, i = standard delimiters, a =! 1) {const s = (e => t => `$ {e [0]} $ {t} $ {e [1]}`) (i); let n = _reduce (affiliateFields, (t, i) => {const a = s (subtagDictionary [i]), n = e [i]; return t (n? an: “”)}, “”); return a&& (n = encodeURIComponent (n)), n} function applySubtagMaxlength (e, t) {var i = t-3 * (edivize (“,”) length-1 esplit (“|”) length-1); return esubstr (0, i)} function getSubtagData ({getters: e, fields: t = [], visitState: i, locals: a, productLink: s}) {let n = {}; return tforEach (t => {n [t] = e [t] &&e [t] ({visitState: i, premises: a, productLink: s})}), n} function parseQuery (e = “”) {return esplit (“&”) reduce ((e, t) => {const i = tsplit (“=”) [0], a = tsplit (“=”) [1]; return void 0! == a&& (e [i] = a), e}, {})} function processSubtagPosition ({url: e, positionKey: t, subtagKey: i, position: a = “after”, subtagString: s, joinBy: n, assignBy: o} = {}) {const [r, l] = split (t), u = `$ {i} $ {o} $ {s}`, g = []; if (“after” === a) {if (! l) return e; const [a, s = “”] = lsplit (`$ {i} $ {o}`), d = sdivided (n) slice (1) join (n); gpush (`$ {r} $ {t}`, u), a&&gpush (a), d&&gpush (d)} if (“before” === a) {const [e, a = “”] = rsplit (` $ {i} $ {o} `), s = adivized (n) slice (1) join (n); gpush (e), s&&gpusher (s), gpush (u, `$ {t} $ {l}`)} returns reduce ((e, t) => {return etranche (-1) === n&& (e = branch (0, -1)), length? [e, t] join (n): t}, “”)} function processSubtag ({getters: e, affiliate: t, url: i, visitState: a = {} , premises: s}) {const n = affiliateFields, o = _get (affiliateSettings [t], “subtagKey”), r = _get (affiliateSettings [t], “maxLength”), l = _get (affiliateSettings [t], ” encode “), u = _get (affiliateSettings [t],” delimiter “), g = _get (affiliateSettings [t],” positioned “,! 1), d = _get (affiliateSettings [t],” position “), c = _get (affiliateSettings [t], “positionKey”), p = _get (affiliateSettings [t], “assignBy”, “=”), m = _get (affiliateSettings [t], “joinBy”, “&”), f = delimiters [u]; let b, y, S = iindexOf (“?”)> = 0? idivize (“?”) pop (): “”, h = parseQuery (S), _ = getSubtagData ({getters: e, fields: n, visitState: a, locals: s, productLink: i}); return o&& (y = h [o] || “”, y = applySubtagMaxlength (b = generateSubtag (_ = _ assign (parseSubtag (y, f), _ pickBy (_)), t, f, l), r) , h [o] = y, S = _map (h, (e, t) => `$ {t} = $ {e}`) join (“&”), i = g? processSubtagPosition ({url: i , positionKey: c, subtagKey: o, position: d, subtagString: y, joinBy: m, assignBy: p}): isplit (“?”) [0] `? $ {S}`), i} function getAffiliate ( e) {const t = Objectkeys (affiliateSettings); return _find (t, t => _ find (affiliateSettings [t] domains, t => ecomprend (ttoLowerCase ()))) || “”} function createSubtagProcessor (e) {return ({url: t, visitState: i, locals: a, affiliate: s}) => (s = getAffiliate (t) || s)? processSubtag ({getters: e, url: t, affiliate: s, visitState: i, premises: a}): “”} moduleexportationsgenerateSubtag = generateSubtag, moduleexportationsgetAffiliate = getAffiliate, moduleexportationscreateSubtagProcessor = createSubtagtagtagProcessor = createSubtagtagtagportrocessorations;
}, {“23”: 23, “43”: 43, “50”: 50, “90”: 90, “138”: 138, “139”: 139, “203”: 203}];
the modules window [“article-navclient”] = [function (require, module, exports) {“use strict”; const dom = require (3), _ throttle = require (37), $ visibility = require (1), $ popup = require (53), $ gtm = require (4), {reportSocial: reportSocial} = require (52) , auth0 = require (12); moduleexports = (t => {either e = domfind (“page header”), i = domfind (“article-content”), o = domtrouver (t, “deepscroll-headline”), r = domtrouver (t , “deepscroll-rubric”), l = domfind (t, “deepscroll-rubric-sponsored”), s = domfind (“article heading article heading”), n = domfind (“# deepscroll_center_divider”), a = domtrouve (“clay paragraph”), d = domtrouver (t, “logo”), c = domtrouver (t, “dyn-cut-logo”), p = domtrouver (t, “article-nav-top” ), u = domtrouver (t, “article-nav-deepscroll”), m = domfind (‘link [rel = “canonical”]’), f = m&&mgetAttribute (“href”), g = domfind (‘meta [property = “og: image”] ‘)? domfind (‘ meta [property = “og: image”] ‘) getAttribute (“content”): “”, h = domfind (‘ meta [property = “og: title”] ‘)? domfind (‘ meta [property = “og: title”] ‘) getAttribute (“content”): “”, y = domfind (t, “sharefacebook link”), w = domfind (t, “link of sharetwitter “), v = domfind (t,” share linkpinter is “), b = tclassListcontient (” header-simple “), x = windowgetComputedStyle (d, null) getPropertyValue (” – targetFlexBasis “), L = windowgetComputedStyle (d, null) getPropertyValue (” – verticalStart “) || 0, C = window getComputedStyle (d, null) getPropertyValue (“- verticalEnd”) || 0, $ =! 1, _ = 55; function k () {_ = parseInt (window getComputedStyle (d, null) getPropertyValue (“- stickyTop”)) || _, C = $ visibilitygetViewportWidth ()> = 1180? window getComputedStyle (d, null) getPropertyValue (“- verticalEndDesktop”) || C: window getComputedStyle (d, null) getPropertyValue (“- verticalEnd”) || C} function S () {$ =! 1, P ()} function P () {let {top: o} = tgetBoundingClientRect (), r = window getComputedStyle (d, null) getPropertyValue (“- baseFlexBasis”), l = rx, s = (_- egetBoundingClientRect () top) / _, n = Mathematicsmax (0, mathematicsmin (1, s)), m = LC-2, f = Mathematicsround (L- (m * n 2)), g = Mathceil (rl * n); if (st? eclassListadd (“header after scrolling”): eclassListremove (“header after scrolling”), pstyletop = C “px”, ustyletop = C “px”, empty (dstyleflexBasis = x “px”)} windowscrollY> o? tclassListadd (“after-scroll”): tclassListremove (“after-scroll”), windowscrollY> o? eclassListadd (“header after scroll”): eclassListremove (“header after scroll”), pstyletop = f “px”, ustyletop = f “px”, dstyleflexBasis = g “px”, c&& (cstyleflexBasis = g “px”), $ visibilitygetViewportWidth ()> = 1180&&i&&i&&i&CSSEAND&i&CSSEANDset top ($ constflexBasis = g “px”), $ visibility -70: 0, e = $ visibilitygetPageOffset (i) top, o = Mathmax (e, t); return Mathmax (windowscrollY, documentcorpsscrollTop)> = o} ()? TclassListaadd (“deep scroll”): tclassListremove (“deep- scroll “)} function V (t) {var e = tcurrentTarget, i = egetAttribute (” href “), o = egetAttribute (” data-handle “), r = $ popupgetPopupClass (eclassList), l = $ visibilityisBe lowPrimaryContent (e)? “bottom”: “top”; $ gtmreportNow ({event: “social-share-widget”, clickLocation: l, socialNetwork: r}), reportSocial (r), $ visibilitygetViewportWidth ()> = 768&&r&& (tpreventDefault (), $ ruppop, oWindow )}! function () {const e = _throttle (P, 30); if (k (), domfindAll (t, “share link”) forEach (t => taddEventListener (“click”, V)), y&& (yhref = “http: // wwwFacebookcom / sharer / sharerphp? u =” f “? utm_source = fb&utm_medium = s3&utm_campaign = sharebutton-t”), w&& (whref = “https: // twittercom / share? text =” encodeURIComponent (h) “&utCaignEANDCHARUtCHANDEANDCHAR =” twutCaignEANDCHARtvia_ButEANDCHARtvia_ButEANDCHARtvia_tvANDCHARtvia_sampEANDCHAR = “&D_tvia_andCHAND__samp3_tvia_candch_tvia_candCHAR_tvANDCHAND_tvia_tvANDCHAND_tvia_tvia_sandCHAND_tvia_tvia_candCHAR_tvia_andch = “wgetAttribute (” data-handle “)), v&& (vhref =” http: // pinterestcom / pin / create / button /? url = “f”? utm_source = pin&utm_medium = s3&utm_campdesaignSSonSSonSSEANDCHARutm_campdesaignSS = “shareEANDCHICARutm_campdesaignSS =” shareEANDCHIC-tCompode ) “&media =” g), b) return; auth0on (“init”, () => {auth0isSubscriber () &&tclassListaadd (“subscriber”)}), windoweaddEventListener (“scroll”, e), windoweaddEventListener (“resize”, S), window “feed (“), resizeListener s? sclassListcontient (“rubric-sponsor-story”) &&l? (rclassListsupprimer (“visible”), lclassListajout (“visible”), ltextContent = stext || stextContent) 🙁 rtextContent = stext || stextContent, rhref = shref || “#”) 🙁 nstyledisplay = “none”, rstyledisplay = “no”); S (), otextContent = h} ()});
}, {“1”: 1, “3”: 3, “4”: 4, “12”: 12, “37”: 37, “52”: 52, “53”: 53}];
modules window [“nav-search-buttonclient”] = [function (require, module, exports) {“use strict”; const dom = require (3), $ gtm = require (4), {reportSearch: reportSearch} = require (52), openClass = “open”, closeClass = “closed”; moduleexports = (e => {const s = e, t = domfind (e, “nav-search-button-trigger”), n = domfind (e, “nav-search-form”), o = domfind (e, “search-input”); function i () {const e = domfind (“body”); sclassList toggle (closeClass), sclassList toggle (openClass), eclassList toggle (“disabled”), eclassListtoggle (“search-active”)} function c () {i (), sclassListcontient (openClass) &&ofocus ()} function a (e) {! scontient (ecible) &&sclassListcontient (openClass) &CAR&i ()} function =CSSECHANDECHANDESSARkey (e) {! scontient (ecible) &&sclassListcontient (openClass) &CAR&i ()} function =CSSCANDECHANDESSARkeysARkey ()} function =CSSCANDECHANDESSARkey (e) 27 )} function d (e) {epreventDefault (), $ gtmreportCustomEvent ({category: “search”, label: “on =” windowlocationhref, action: oval}), reportSearch ((oval || “”) split (“”) , () => nsubmit ())}! function (e, s, t) {s&&saddEventListener (“click”, c); t&&taddEventListener (“submit”, d); eaddEventL istener (“click”, a), documentaddEventListener (“keydown”, r), eaddEventListener (“touchend”, a), naddEventListener (“submit”, d)} (domfind (“body”), t, domtrouver (e, “nav-search-form submit”))});
}, {“3”: 3, “4”: 4, “52”: 52}];
modules window [“nav-dropdown-buttonclient”] = [function (require, module, exports) {“use strict”; const dom = require (3), visibility = require (1), {reportSearch: reportSearch} = require (52); function getNextSiblings (e) {const t = []; let i = e; for (; i = inextElementSibling;) tpush (i); returns t} function getMainChildren (e, t) {let i = [], n = efirstChild; for (; n = nnextElementSibling;) does not contain (t)? nisSameNode (t) || (i = iconcat (getMainChildren (n, t))): ipush (n); return i} function isMobile () {return visibilitygetViewportWidth () {let t; const i = equerySelector (“nav-dropdown-button-trigger”), n = domfind (“body”), o = domfind (“top”), l = domfind (“confetti list”), s = domfind (” nav-dropdown-button_nymag-homepage “), r = domfind (” header-page header “) || o, c = domfind (‘[data-editable = “main”]’), a = nearest domle (e, “page header”), d = a? aquerySelectorAll (“blue confetti image”): “”, g = a? aquerySelectorAll (“confettisvert image”): “”, u = a? aquerySelectorAll (“confettisorange image”): “”, f = a? aquerySelectorAll (“image of confettisorange2”): “”, m = a? aquerySelectorAll (“confetti rose image”): “”, p = a? aquerySelectorAll (“purple confetti image”): “”, h = a? aquerySelectorAll (“yellow confetti image”): “”, y = equerySelectorAll (“dropdown-nav-search-form”); function b (e) {let t = ecurrentTarget, i = tquerySelector (“nav-search-input”), n = i? ivaleursplit (“”): []; epreventDefault (), reportSearch (n, () => tsubmit ())} iaddEventListener (“click”, () => {initializeHeight (e), v ()}); for (either e = 0, t = ylength; e (function (e) {eclassListremove (“c-right”, “c-rightdown”, “c-left”, “c-leftdown”)}) (e)) }, 500)} ()) 🙁 isetAttribute (“aria-extended”, “true”), t = windowscrollY), eclassList toggle (“closed”), eclassList toggle (“open”), nclassListtoggle (“disabled”), a&&eisSameNode (s)? function () {if (ocontient (e)) {const e = getMainChildren (o, s); S (e), w (o)} if (ccontains (e)) {const e = getMainChildren (c, s); oclassListtoggle (“hidden component”), w (c), S (e)} eclassListtoggle (“open-mobile”)} (): a&&! y&&r&& (w (r), function () {const i = eclassListcontient (“open”)? 0: t; windowscrollTo ({top: i})} ())} function w (e) {S (getNextSiblings (e) )} function S (e) {eforEach (e => {eclassListtoggle (“hidden-component”)})} naddEventListener (“click”, t => {! econtient (tcible) &&eclassListcontient (“open”) &&v ()} ), documentaddEventListener (“keydown”, t => {27 === tkeyCode&&eclassListcontient (“open”) &&v ()})});
}, {“1”: 1, “3”: 3, “52”: 52}];
the moduleswindow [“followclient”] = [function (require, module, exports) {“use strict”; const _find = require (43), $ popup = require (53); DScontroller (“follow”, [function () {function e (e) {this sky = e, this handle = egetAttribute (“data-handle”)} returns eprototype = {events: {click: “openFollow”}, openFollow: function ( e) {var t, n, a = $ popupposition, o = $ popupparams, l = {}, r = {w: 780, h: 500}, s = new a (rw, rh), c = cecielclassList; lhandle = thishandle, rgauche = sgauche, rhaut = stop, n = _find ([{className: “facebook”, url: “https: // facebookcom / {handle}”, network: “Facebook”}, {className: “pinterest” , url: “http: // wwwpinterestcom / {handle}”, network: “Pinterest”}, {className: “instagram”, url: “https: // wwwinstagramcom / {handle}”, network: “Instagram”}, {className: “rss”, url: “http: // feedspower burnercom / {handle}”, network: “RSS”}, {className: “twitter”, url: “https: // twittercom / intent / follow ? screen_name = {handle} &tw_p = followbutton&variant = 20 “, network:” Twitter “}, {className:” snapchat “, url:” https: // wwwSnapchatcom / discover / {handle} “, network:” Snapchat “}], function (e) {return ccontient (eclassName)}), lurl = nURLreplace (” {handle} “, handle), network = network, lname =” Follow “handle” on “the network, t = new o (l, r), open window (taddress, tname, tcharacteristics), epreventDefault ()}}, e}]);
}, {“43”: 43, “53”: 53}];
the modules window [“customer-comments-link”] = [function (require, module, exports) {“use strict”; const dom = require (3), _ get = require (23), _ isFinite = require (109), ajax = require (110); DScontroller (“comments-link”, [function () {var t, e = “http: //” documentdocumentElementgetAttribute (“data-uri”) “html”; function n (n) {var o; (thisel = n, cecoral_talk_root = ngetAttribute (“data-coral-talk”), cecicommentsCount = domtrouver (n, “comments-link-count”), cecicommentsText = domtrouver (n, “comments-link-text”), thisisNavVariation = nclassListcontient (“comments- link_article-nav “), cecutoffCnt = ngetAttribute (” data-cutoffCnt “) || 1e3, t =` $ {cecicoral_talk_root} / api / v1 / graph / ql`, cecishouldRenderCommentStream ()) &&mentCountCount (o = thisFon) ajaxsendReceiveJson ({method: “GET”, url: t ‘? query = {asset (url: “‘ e ‘”) {totalCommentCount}}’, dataType: “json”}, function (t, e) {var n = _get (e, “dataactiftotalCommentCount”, 0); return t? o (t): _ isFinite (n)? void o (null, n): o (“Unexpected Coral-Talk response”)}))} return nprototypeonCommentCountFetched = function (t, e) {if (t) return consolewarn (t); e> 0CSSEAN DCHAR& (ceisNavVariation&&e1? “s”: “”), ceelclassListremove (“no-comments”))}, nprototypeshouldRenderCommentStream = function () {return-1! == eindexOf (“@ published”)}, n}]);
}, {“3”: 3, “23”: 23, “109”: 109, “110”: 110}];
modules window [“head-gtmclient”] = [function (require, module, exports) {“use strict”; const {getCLS: getCLS, getFID: getFID, getLCP: getLCP} = require (142), isProduction = require (10) (); function reportWebVitals (e) {isProduction || consolelog (“reportWebVitals:% O”, e); const t = “string” == typeof enom? eNametoUpperCase (): enom; dataLayerwindow = dataLayerwindow || [], dataLayerpushwindow ({event: “analyticsEvent”, event_action: t, event_category: “Web Vitals”, event_label: eid, event_value: edelta, eventAction: t, eventCategory: “Web Vitals”, eventLabel: eid, eventNonInt :! 0 , eventValue: edelta, nonInteraction :! 0, transport: “tag”})} getCLS (e => {edelta = Mathrond (1e3 * edelta), reportWebVitals (e)}), getFID (e => {edelta = Mathrond ( edelta), reportWebVitals (e)}), getLCP (e => {edelta = Mathrond (edelta), reportWebVitals (e)});
}, {“10”: 10, “142”: 142}];
the modules window [“customer-concerts-announcements”] = [function (require, module, exports) {“use strict”; const customMappings = {“crime-assault”: “Power”, “Care Money Product”: “Power”, “feminism-politics-identity”: “Power”, “culture-media”: “Culture”, celebrity: “Culture “, alive:” Style “, fashion:” Style “, shopping:” Style “, weddings:” Style “, beauty:” Style “, animals:” Self “,” learning creativity “:” Self “,” relations-friends family “:” Self “,” mental health personality social behavior “:” Self “,” learning creativity “:” Self “,” health-wellness “:” Self “, parenting:” Self “,” sex-relationships dating marriage “:” Self “}, striptags = require (54); function installConcertAds () {const e = new URLSearchParams (windowlocationchercher) get (“concert_config_url”), t = e || window concertConfigUrl; window_nymPermutive || consolewarn (“ConcertAds initializing without Permutive”), windoweconcertAds = createConcertAds (), windoweconcertsloadRemoteConfig (t) then (function () {windoweconcertsinstall ()})} function createConcertAds () {const e = getAuthStatus (); let t = getData (“title”), n = windowlocationhref, i = getData (“section”), o = “”, a = getData (“type”), r = getData (“vertical”); t&& (t = striptags (htmlDecode (t)) split (“”)), n = ntranche (nlastIndexOf (“/”) 1); const l = {kw: getKeywords (), network: r, page_type: a, entry_group: i, keywords: t, pn: n}; return “Homepage” === a? o = “homepage”: “Section Page” === a&& (o = (o = windowlocationpath) replace (/ // g, “”)), i&&-1 === iindexOf (“”) && (o = i), customMappings [i] && (o = customMappings [i]), window locationhostname (/ aws / i) CSSEETCHAR& (lclay_sandbox_env = r), new windowConcertAds ({cmd: [], locations: [], dfpVariables: l, slugPath: “/” oreplace (/ – | – / g, “-“), logged in: “not authenticated”! == e, paywallActive: getPaywallStatus (e)})} function getKeywords () {try { const e = window_nymPermutifarticlemotifs; return e&&elength> 0&&esome (Boolean)? e: (documentquerySelector (‘meta [name = “keywords”]’) || documentquerySelector (‘meta [property = “article: tag”]’)) getAttribute (“content”) split (“,”) map (function ( e) {return etrim ()})} catch (e) {return}} function getData (e) {if (window_nymPermutive) {if (e in window_nymPermutive) return window_nymPermutive [e]; if (nymPermutifarticle_window&&e in nymPermutifarticle_window) return_nymPermutifarticle window [e]; if (nymPermutifuser_window&&e in nymPermutifuser_window) return_nymPermutifuser [e]}} function htmlDecode (e) {var t = documentcreateElement (“div”); return tinnerHTML = e, 0 === tchildNodeslength? “”: tchildNodes [0] nodeValue} function getAuthStatus () {const e = JSONparse (localStoragegetItem (“auth0: profile”)), t = e? e [“http: // nymagcom / app_metadata”]: null; returns t? thas_subscription? “titled”: “unentitled”: “unauthenticated”} function getPaywallStatus (e) {const t = getData (“totalCount”) || 0; return Boolean (t> = 3&& “titled”! == e)} windowConcertAds? InstallConcertAds (): windoweaddEventListener (“concertAdsReady”, installConcertAds);
}, {“54”: 54}];
the modules window [“latest-customer-news”] = [function (require, module, exports) {“use strict”; const dom = require (3), lazyLoad = require (96); function lazyLoadImage (a) {const o = domfind (a, “img [data-src]”), d = domfindAll (a, “source [data-srcset]”), e = nearest domle (a, “result” ); if (o&&e) {new lazyLoadLazyLoader (e, o, d) init ()}} function handleLazyLoad (a) {(domfindAll (a, “result”) || []) module forEach (lazyLoadImage)} exports = (a = > {handleLazyLoad (a)});
}, {“3”: 3, “96”: 96}];
the modules window [“coral-talkclient”] = [function (require, module, exports) {“use strict”; const dom = require (3), store = require (116), visibility = require (1), auth0 = require (12), TALK_AUTH = “talk: auth_token”; let coralEmbed, hasEmbedScriptLoaded =! 1, hasCoralTalkRendered =! 1; function renderComments (e) {if (hasEmbedScriptLoaded&&! hasCoralTalkRendered) {const t = {talk: `$ {eCORAL_TALK_HOST}`, auth_token: getAuthToken (), asset_url: eTALK_ASSET_URL}; hasCoralTalkRendered =! 0, coralEmbed = windowcorailParlezrendre (ecommentStreamContainer, t)}} function getAuthToken (e) {var t = e&&e [“http: // nymagcom / coral_talk”] || auth0getTalkJwt (), i = shoppinget (TALK_AUTH); returns t? i&&t == i? i: (storeset (TALK_AUTH, t), t) 🙁 i&&storeremove (TALK_AUTH), null)} function coralLogin () {coralEmbedlogin (getAuthToken ())} function embedScript (e, script) {let i = documentcreateElement (” ); itype = “text / javascript”, iasynchronous =! 0, jesrc = e, jeaddEventListener (“load”, () => {hasEmbedScriptLoaded =! 0, renderComments (t)}), documentgetElementsByTagName (“head”) [0] appendChild (i)} function initVerificationMessage () {auth0isAuthenticated ( ) &&auth0rafraichir (); either e = documentquerySelector (“coral-talk-container”); auth0isAuthenticated () &&! auth0isEmailVerified () && (einsertAdjacentHTML (“beforebegin”, ‘ n n Please verify your account to enable comments Did not receive a verification email? Resend email now n’), documentquerySelector (“activation link”) addEventListener (“click”, sendVerificationEmail))} function sendVerificationEmail () {let e = documentquerySelector (“coral-talk-verify-address”); return fetch (`https: // $ {hostlocation window} / _ user / verification-email? user_id = $ {auth0getUserID ()}`, {method: “GET”, headers: {“Content-Type”: “application / json “}}) then (e => e) then (t => {t&&200 == tstatut? einnerHTML =” The verification email has been sent successfully “: einnerHTML =` $ {tstatusText} `}) catch (e => consolelog (e))} function tryScriptEmbedding (e, t) {initVerificationMessage (), hasEmbedScriptLoaded? renderComments (t): embedScript (tEMBED_URL, t)} function addVisibilityListener (e, t) {new visibilityVisible (e, {preloadThreshold: 750}) on (“preload”, () => tryScriptEmbedding (e, t))} function removeSignInButton (e) {e&&eparentNode&&domremoveElement (e)} function init (e) {const t = egetAttribute (“data-coral-host”), i = `$ {t} / static / embedjs :`, n = // $ {documentdocumentElementgetAttribute (“data-uri”)} html`, a = “true” === egetAttribute (“data maintenance”), o = -1! == nindexOf (“@ published”), r = equerySelector (“coral-talk-container”), s = equerySelector (“coral-talk-btn-signin”), c = {CORAL_TALK_HOST: t, EMBED_URL: i, commentStreamContainer : r, signInButton: s, TALK_ASSET_URL: n};! a&&o&CSSE (on (“init”, () => {addVisibilityListener (e, c), saddEventListener (“click”, () => auth0showLogin ()), auth0isAuthenticated () loginEANDCHutremove (ssignEANDCHARC) , t => {removeSignInButton (s), getAuthToken (t), visibilityisElementInViewport (e) &&attemptScriptEmbedding (c), hasCoralTalkRendered&&coralLogin ()})), auth0on_AU (} stores) “logout (}})), auth0on_AU (}” logout} “) )} exports = init;
}, {“1”: 1, “3”: 3, “12”: 12, “116”: 116}];
the moduleswindow [“choreographeclient”] = [function (require, module, exports) {“use strict”; const cookie = require (41), _ get = require (23), _ omit = require (80), {insertSpeedBumpComponents: insertSpeedBumpComponents} = require (77), {insertNewsletterSpeedBumpComponents: insertNewsletterSpeedBumpComponents} = require (79), {generateGrowl: generateGrowl } = require (76), gtm = require (4), {getLocalStorage: getLocalStorage, setLocalStorage: setLocalStorage} = require (14), {reportPaywall} = require (52), moment = require (24), {getClientHistory: getClientHistory, updateClientHistoryWithPageData: updateClientHistoryWithPageData} = require (78), auth0 = require (12), {Scenario: Scenario} = require (73), cidReadyEvent = “nymcid-set”, cidKey = “nymcid”, isProduction = require (10) () , logger = require (74) Logger (() => getLocalStorage (“show_choreographer_logs”)), {Verdon: Verdon} = require (75), TEST_COHORT_FLAG = “OptimizeCohort”; function displayDebug (e = “”) {if (“right”! == edit (“#”) pop ()) return; const t = _get (window, “dataLayer [0] userDetails”, {}), o = _get (window, “dataLayer [0] pageDetailsfeatureTypes”, “”), n = oinclut (“magazine”)? “magazine”: “”, r = ocincludes (“feature”)? “featured”: “”, i = “Item value:” (n || r || “article”), a = _get (JSONparse (localStoragegetItem (“auth0: profile”)), “http: / / nymagcom / app_metadata “), l =” Authentication status: “(a?” authenticated “:” not authenticated “), s =” Entitlement status: “(!! a&&ahas_subscription?” titled “:” unentitled “) , c = Keyobjects (_omit (t, “newYorkMediaUserID”)) map (e => `$ {e}: $ {t [e]}`), d = documentcorps, g = documentcreateElement (“div”), u = documentcreateElement (“ul”); [i, l, s, c] map (e => {const t = documentcreateElement (“li”); return tclassListadd (“debug-item”), tappendChild (documentcreateTextNode (e)), t}) forEach (e = > {uappendChild (e)}), uclassListadd (“data chips”), gclassListadd (“debug-choreographer”), gclassListadd (“display-debug-data”), gappendChild (u), dappendChild (g)} initializeChoreographer function (e) {const t = egetAttribute (“data-site-slug”), o = pageShouldCountAsView (t), n = auth0isSubscriber (); returns t? getClientId (cidKey, 8e3) then (e => (recorderh1 (“Choreographer initialized”), recorderlog (`clientId: $ {e}`), recorderlog (`the page counts as a view: $ {o}`), windowenymViewsResponse || (o? updateClientHistoryWithPageData (e, t): getClientHistory (e)))) then (r => {if (loggergroup (), loggerh2 (“Customer history”), loggertable (r), loggergroupEnd (), isNCR ()) return; const {scenarios: i, touts: a, testCohort: l = “”} = readJSONFromScript (equerySelector (“script”)); if (! (l === (documentbodyDataset [TEST_COHORT_FLAG] || “”))) return; const s = imap (e => Scenario (Objectassign ({}, e, {history: r, siteSlug: t, isSubscriber: n}))) filter (e => (loggergroup (), loggerh2 (“Scenario evaluation”), loggerlog (e), loggergroupEnd (), eshouldShow)) reduce ((e, {action: t, min: o, number: n}) => {const r = afind (({ value: e}) => e === t); returns r? (e [rtype] = r, e [rtaper] viewCount = no, e): e}, {}); recorderg group (), loggerh2 (“Active Touts”), logger (s), loggergroupEnd (), executeTouts (e, o, s, r)}) catch (consoleerror): consoleerror (“siteSlug not found”)} function documentIncludesComponent (e ) {return documentquerySelector (`[data-uri * =” / $ {e} / “]`)} function pageShouldCountAsView (e) {const t = “strategist” === e, o = [“product”, ” product-grid “] find (e => documentIncludesComponent (e)); return t ||! o} function executeAll (e, t, o = {}, n) {const {global: r} = n, i = {featureArticleCount: rFeature || 0, magazineArticleCount: rMagazine || 0, standardArticleCount: rArticle || 0, totalArticleCount: rtotal || 0}, a = concertAds window, l = concertAds window; if (o [“speed-bump”] && (_get (a, “adsBlocked” ,! 0)? InsertSpeedBumpComponents (findTemplate (e, “speed-bump”), o [“speed-bump”], i): unecycle from vielistenAndPlayback (slotsInserted events, () => {insertSpeedBumpComponents (findTemplate (e, “speed-bump”), o [“speed-bump”], i)})), o [“newsletter-speed-bump”] && ( _get (a, “adsBlocked” ,! 0)? insertNewsletterSpeedBumpComponents (findTemplate (e, “newsletter-speed-bump”), o [“newsletter-speed-bump”], i): acycle of vielistenAndPlayback (the eventsslotsInserted, () = > {insertNewsletterSpeedBumpComponents (findTemplate (e, “newsletter-speed-bump”), o [“newsletter-speed-bump”], i)})), o [“branded-growl”] &&brandedTakeoverTime (o [“branded-growl “]) &&t) feedback logger (” should show branded growl “), void growlManager (findTemplate (e,” branded-growl “), {baseTrackingData: i, body: o [” branded-growl “] brandedGrowlBody, contentClass: “branded-content”, ct a: o [“branded-growl”] brandedGrowlCTA, imageUrl: o [“branded-growl”] imageUrl, link: o [“branded-growl”] brandedGrowlLink, name: o [“branded-growl”] name, scrollDepth: o [“branded-growl”] brandedGrowlScrollDepth, title: o [“branded-growl”] brandedGrowlTitle, anyType: “branded growl”}, “# branded-growl”); if (t&&o [“content-cliff”]) contentCliff (findTemplate (e, “content-cliff”), o [“content-cliff”], o [“content-cliff”] viewsLeft, n); else {if (t&&o [“cliff-takeover”]) return / coronavirus news | pivot | paywall exclude / itest (window_nymGtmPageTags)? void (isProduction&&loggerlog (“Content clause prohibited due to excluded tag match:”, window_nymGtmPagetags)): void cliffTakeover (findTemplate (e, “paywall-reader-interface”), i, o [“cliff-takeover” ]); if (o [“growl-newletter”] ||! o [“promo- growl”]) if (o [“baby-growl”]) babyGrowl (findTemplate (e, “paywall-reader-interface”), i, o [“baby-growl”]); else {if (! o [“warning-growl-2”]) return o [“warning-growl”] &&shouldWarn ()? (setContentCliffWarningDisplayed (), loggerlog (“should display a warning”), void growlManager (findTemplate (e, “warning-growl”), {contentClass: “warning-content”, title: o [“warning-growl”] warningGrowlTitle, name: o [“warning-growl”] name, scrollDepth: o [“warning-growl”] warningGrowlScrollDepth, cta: o [“warning-growl”] warningGrowlCTA, body: o [“warning-growl”] warningGrowlBody, link: o [“warning-growl”] warningGrowlLink, baseTrackingData: i, anyType: “warning growl”}, “# warning-growl”)): void 0; warningGrowl (findTemplate (e, “paywall-reader-interface”), i, o [“warning-growl- 2”])} else growlManager (findTemplate (e, “growl-message”), {contentClass: “promo-content “, title: void 0, name: o [” promo-growl “] name, scrollDepth: o [” promo-growl “] promoGrowlScrollDepth, cta: o [” promo-growl “] promoGrowlCTA, body: o [” promo- growl “] promoGrowlMessage, link: o [” promo-growl “] promoGrowlLink, baseTrackingData: i, anyType:” promo growl “},” # growl-message “)}} function shouldWarn () {return! contentCliffWarningDisplayed ()} function getContentCliffWarningDisplayedKey () {const e = new Date, t = egetMonth (); return`content-cliff-warning-displayed – $ {egetFullYear ()} – $ {t} `} function contentCliffWarningDisplayed () {const e = getContentCliffWarningDisplayedKey (); return “true” === getLocalStorage (e)} function setContentCliffWarningDisplayed () {const e = getContentCliffKey (); return “true” === getLocalStorage (e)} function setContentCliffWarningDisplayed () {const e = getContentCliffKey () e, “true”)} function growlManager (e, {contentClass: t, scrollDepth: o, name: n, title: r, body: i, cta: a, link: l, baseTrackingData: s, anyType: c, imageUrl: d = null}, g = “”) {const u = function () {const e = ` n n n n $ {r} n $ {d? ”: “”} n $ {i} n $ {d? “: “”} n $ {a} n n n n `; return documentcreateRange () createContextualFragment (e)} (), p = {creative: i, id: c, name: n, position: “growl”}; uquerySelector (“a”) addEventListener (“click”, () => promotionReport (“Click”, s, p)), generateGrowl (e, g, {content: u, scrollDepth: o, onShow: () => promotionReport (“View”, s, p)})} function contentCliff (e, t, o, n) {const {first_visit: r, global: i} = n, a = {totalArticleCount: itotal || 0, standardArticleCount: iArticle || 0, featureArticleCount: iFeature || 0, magazineArticleCount: iMagazine || 0}, {contentCliffBody: l} = t, s = documentimportNode (e ,! 0) querySelector (“content-cliff”), c = documentquerySelector (“article content> clay-paragraph”), d = {creative : l, id: “content cliff”, name: “Content Cliff”, position: “in-article”}; s&& (cinsertAdjacentHTML (“afterend”, sexternalHTML), require (“content-cliffclient”) (documentquerySelector (“content-cliff”), {contentCliffOptions: t, viewsLeft: o, firstVisit: Number (r), onShow: () = > promotionReport (“View”, a, d), onClickCliff: () => promotionReport (“Click”, a, d)}))} function verdonFosseToutSetter (e, t, o, n, r) {const i = new Verdon ({container: “paywall-reader-interface”, url: “https: // fossenymagcom / fosse / v153 / indexhtml”}), a = etype, l = {email: auth0getEmail (), isAuthenticated: auth0isAuthenticated (), isSubscriber: auth0isSubscriber ()}; nclassListaadd (a), young times (“frame: ready”, () => {isendMessage (“all: show”, {readerState: l, allType: a, allData: e}), r&&isendMessage (“frame: height”) }), ion (“all: visible”, () => {promotionReport (“View”, t, o)}), ion (“all: sign-in”, () => {auth0showLogin (windowlocationhref)}) , jeon (“all: disconnection”, () => {auth0disconnection ()}), ion (“all: ignore”, () => {nclassListaadd (“ignore”), jesendMessage (“all: hide”, {anyType : a, toutData: e})}), ion (“all: subscribe”, () => {ectaLink = replaceQueryParams (ectaLink), promotionReport (“Click”, t, o), windowopen (ectaLink, “_ empty “)}), ion (” frame: height “, e => {nstyleheight =` $ {currentHeight user load 10} px`}), ion (“all: view-account”, () => {windowlocationhref = ” https: // subsnymagcom / account “})} function promotionReport (e, t, o) {const {creative: n, id: r, name: i, position: a} = o; tevent = `cepromotion $ {e}`, tecommerce = {promoView: {promotions: [{creative: ntrim (), id: r, name: i, position: a}]}}, gtmreportNow (t), reportPaywall ({ creative: ntrim (), eventType: e, id: r, name: i, position: a})} function babyGrowl (e, t, o) {const n = documentimportNode (e ,! 0) querySelector (“paywall-reader -interface “), r = {creative: obabygrowlDescription, id:” baby growl “, name:” baby growl “, position:” growl “}; documentcorpsappendChild (n), octaLink = obabygrowlCtaLink, octaText = obabygrowlMessage, otitre = obabygrowlDescription, verdonPosseToutSetter (o, t, r, n)} function cliffTakeover (e, t, o) {const {TakeoverCTA: ntaTakeLinkTakeLinkDescription, cliffTake roverDescription: i, cliffTakeoverImage: a, cliffTakeoverPromo: l, cliffTakeoverStatus: s: c} = o, d = documentimportNode (e ,! 0) querySelector (“paywall-reader-interface”), g = documentquerySelectorAll (“clay-paragraph”), u = {creative: l, id: “content cliff”, name: “Content Cliff”, position: “growl”}, p = {cta: n, ctaLink: r, description: i, image: a, promo: l , status: s, type: c}; documentcorpsappendEnfant (d), gforEach ((e, t) => {0! == t&&eremove ()}), verdonToutToutSetter (p, t, u, d ,! 0), documentquerySelector (“html”) styleoverflowY = “hidden” , documentcorpsstyleposition = “fixed”} function warningGrowl (e, t, o) {const {type: n, warningGrowl2CTA: r, warningGrowl2CtaLink: i, warningGrowl2Description: a, warningGrowl2Image: l, warningGrowl2Promo: s, warningGrowl2Status: c} = o, d = documentimportNode (e ,! 0) querySelector (“paywall-reader-interface”), g = {creative: s, id: “warning growl”, name: “Warning Growl”, position: “growl”}, u = {cta: r, ctaLink: i, description: a, image: l, promo: s, status: c, type: n}; documentcorpsappendChild (d), verdonPossAllSetter (u, t, g, d ,! 0)} function getClientId (e = “”, t = 8e3) {let o = cookieget (e); return o? Promiseresolve (o): new Promise ((o, n) => {const r = setTimeout (() => {n (`could not find key: $ {e} on cookie after $ {t} ms`)}, t); windoweaddEventListener (cidReadyEvent, () => {clearTimeout (r), o (cookieget (e))})})} function readJSONFromScript (e) {try {return JSONparsiinnerHTML)} catch (e) {return {all: [], scenarios: []}}} function findTemplate (e, t = “”) {const o = e&&equerySelector (`[data-template-id =” $ {t} “]`); return o&&ocontent} function isNCR () {return / [? &] source = ncr / test (locationsearch)} function brandedTakeoverTime (e) {const {startTime: t, endTime: o, startDate: n, endDate: r} = e, i = nconcat (“”, t), a = rconcat (“”, o), l = moment (i), s = moment (a); return time () isBetween (l, s)} function OptimizeDebugger () {return new Promise (e => {const t = windowemplacementsearch || “”; if (t) {const o = new URLSearchParams (t), n = oget (“optimization-attribute-name”) || “”, r = oget (“optimize-attribute-value”) || “”, i = oget (“optimize-delay”) || 0, a = oget (“optimize-cookie”) ||! 1; setTimeout (() => {a&& (documentcookie = randomNymcid ()), documentcorpssetAttribute (`data – $ {n}`, r), e ()}, i) } else e ()})} function randomNymcid () {return`nymcid = $ {(() => ([1e7] – 1e3 -4e3 -8e3 -1e11) replace (/ [018] / g, e => ( e ^ 16 * cryptogetRandomValues ​​(new Uint8Array (1)) [0] >> e / 4) toString (16) [0])) ()} `} function replaceQueryParams (e) {const t = windowemplacementsearch || “”; if (t) {const o = new URLSearchParams (t); if (einclude (“?”)) {const t = esplit (“?”), n = new URLSearchParams (t [1]); for (either oenters ()) nset (e [0], e [1]); e = `$ {t [0]}? $ {ntoString ()} `} else e =` $ {e}? $ {otoString ()} `} return e} moduleexportations = (e => new promise (e => {auth0on (” init “, () => {e ()})}) then (() => OptimizeDebugger ( )) then (() => {displayDebug (window locationhref), initializeChoreographer (e)}));
}, {“4”: 4, “10”: 10, “12”: 12, “14”: 14, “23”: 23, “24”: 24, “41”: 41, “52”: 52 , “73”: 73, “74”: 74, “75”: 75, “76”: 76, “77”: 77, “78”: 78, “79”: 79, “80”: 80, ” content-cliffclient “:” content-cliffclient “}];
the modules window [“customer growl”] = [function (require, module, exports) {“use strict”; require (140); const _some = require (59), dom = require (3), localStorageKeyRoot = “slideout -“, {getLocalStorage: getLocalStorage, setLocalStorage: setLocalStorage} = require (14); moduleexports = ((e, t) => {const {content: o, onShow: s, scrollDepth: r = 50, ignorable: i =! 1} = t, n = Number (r || egetAttribute (“data-display -at-page-scroll-percentage “)), a = domfind (e,” modal “), l =” slideout- “(tid || egetAttribute (” id “)), c = getLocalStorage (l); function d () {aclassListadd (“hidden”)} function g () {setLocalStorage (l ,! 0), d ()} i&&c? eremove () 🙁 o&&equerySelector (“[data-content]”) appendChild (oANDCHARfSSEunction (e = 50) {const t = new IntersectionObserver (e => {_ some (e, “isIntersecting”) && (astyletop = “inherit”, aclassListremove (“hidden”, “initial”), “function” == typeof s&&s (), tdisobserver (a))}); astyletop = `$ {documentquerySelector (” body “) scrollHeight / (100 / e)} px`, tobserver (a)} (n), equerySelector (” ignore-modal ” ) addEventListener (“click”, () => i? g (): d ()), eaddEventListener (“growl: hide”, d), eaddEventListener (“gr ogner: reject “, g))});
}, {“3”: 3, “14”: 14, “59”: 59, “140”: 140}];
the modules window [“client slower”] = [function (require, module, exports) {“use strict”; const gtm = require (4), visibility = require (1); moduleexports = ((e, i) => {if (! i ||! e) return; const {name: o, speedbumpDescription: r, speedbumpMessage: t, speedbumpLink: n, baseTrackingData: s} = i, c = new visibilityVisible (e, {shownThreshold: 5}); equerySelector (“the description”) innerHTML = r, equerySelector (“promo-link”) innerHTML = t, equerySelector (“promo-link”) href = n, eclassListremove (“collapsed “), con (” shown “, function () {if (visibilityisElementNotHidden (e)) {either e = s; eevent =” cepromotionView “, eecommerce = {promoView: {promotions: [{name: o, creative: r, id: “speed bump”, position: “in-article”}]}}, gtmreportNow (e), cdestroy ()}}), equerySelector (“promo-link”) addEventListener (“click”, function () {let e = s; eevent = “cepromotionClick on”, eecommerce = {promoClick: {promotions: [{name: o, creative: r, id: “speed bump”, position: “in-article”}]}}, gtmreportNow ( e)})});
}, {“1”: 1, “4”: 4}];
the modules window [“newsletter-speed-bumpclient”] = [function (require, module, exports) {“use strict”; const {loadRecaptcha: loadRecaptcha} = require (108), _ isEmpty = require (87), _ set = require (107), _ kebabCase = require (81), gtm = require (4), auth0 = require (12), visibility = require (1), COMPONENT_NAME = “newsletter-speed-bump”, EMAIL_VALID_REGEX = / ^ (?: (?: [^ () [] \,;: s @ “] (?: [ ^ () [] \,;: s @ “]) *) | (” “)) @ (?: (?: [[0-9] {1,3} [0-9 ] {1,3} [0-9] {1,3} [0-9] {1,3}]) | (?: (?: [A-zA-Z -0-9] ) [a-zA-Z] {2,})) $ /, LOCAL_STORAGE_KEY_NAME = “newsletterSpeedBumpSignUpStatus _”, MAX_EMAIL_LENGTH = 50; function setClass (e, t) {eclassListadd (t)} function getRequestUrl (e) {return egetAttribute (“action”)} function getPageType (e) {const t = e? egetAttribute (“content”): “”; return _kebabCase (t)} function getPayloadObject (e, t, r, s) {const n = {}; return _set (n, `varssource _ $ {t}`, `$ {COMPONENT_NAME} _ $ {s}`), nemail = r, nlists = {}, nlists [t] =! 0, nrecaptcha = e, nsignuppage = `$ {documentlocationhref} _ $ {t}`, n [`source _ $ {t}`] = “newsleter_speedbump”, n} moduleexports = ((e, t) => {if (! t ||! e) return; if (“success” === windowstorage localgetItem (`$ {LOCAL_STORAGE_KEY_NAME} $ {tnewsletterSpeedBumpNewsletterId}`)) return void eremove (); const {baseTrackingData: r, name: s, newsletterSpeedBumpCtaCtaCtaCta : n, newsletterSpeedBumpDescription: i, newsletterSpeedBumpHeadline: a, newsletterSpeedBumpNewsletterId: o, newsletterSpeedBumpThankYouMessage: c, RECAPTCHA_PUBLIC_KEY = l0} getEmail (), d = equerySelector (“description”), p = “m equerySelector” (type in), p = “m equerySelector” (enter) error message “), h = equerySelector (” form “), E = equerySelector (” form-container “), y = equerySelector (” form-recaptcha-container “), g = equerySelector (” title “), v = equerySelector (“container”), S = equerySelector (“enternewsletterId”), _ = equerySelector (“recaptcha-wrapper”), L = equerySelector (“enter submit”), w = e querySelector (“text-container”), q = new visibilityVisible (e, {shownThreshold: 5}); u&& (premoveAttribute (“required”), eclassListadd (“connected”)), dinnerHTML = i, ginnerHTML = a, Svalor = o, Lvalor = n, qon (“shown”, function () {if (visibilityisElementNotHidden (e)) {const e = r; eevent = “cepromotionView”, eecommerce = {promoView: {promotions: [{creative: `$ {a} | $ {i}`, id: “newsletter speed up”, name: s, position : “in-article”}]}}, gtmreportNow (e), qdestroy ()}}), paddEventListener (“focus”, () => {_classListremove (“hidden”)}), haddEventListener (“submit”, t => {tpreventDefault (); const s = new XMLHttpRequest, n = u || equerySelector (“enter-mail”) value, i = getPageType (documentquerySelector (‘meta [name = “type”]’)); u || ! (nlength> = 50) &&EMAIL_VALID_REGEXtest (n)? loadRecaptcha (l, “newsletterSubmit” ,! 0) then (a => {sopen (“POST”, getRequestUrl (h) ,! 0), ssetRequestHeader (“Content-Type “,” application / json; charset = UTF-8 “), saddEventListener (” load “, s => {const a = scurrentTarget | | scible; if (state> = 200&&astatussetClass (e, “success”)), [d, E, m, _] forEach (e => setClass (e, “hidden”)), ginnerHTML = creplace (“{{email}}” , n), minnerHTML = “”; const s = JSONanalyser (unresponse), l = _isEmpty (ssailthruIds)? “”: Objectvalues ​​(ssailthruIds) [0], u = r; uevent = “buy”, uecommerce = {purchase: {actionField: {id: l, revenue: “000”}, products: [{category: “newsletter subscription”, name: Svalue, quantity: 1, variant: ` $ {COMPONENT_NAME} – $ {i} `}]}}, gtmreportNow (u), setTimeout (() => {eclassListadd (” hidden “)}, 5e3), tpreventDefault ()} otherwise minnerHTML =” * An error s ‘has occurred Please try again “}), saddEventListener (” error “, () => {mclassListsupprimer (” hidden “), minnerHTML =” * An error has occurred Please try again “}), send (JSONstringify (getPayloadObject (a , o, n, i))), tpreventDefault ()}): minnerHTML = “* Please enter a valid e-mail address”})});
}, {“1”: 1, “4”: 4, “12”: 12, “81”: 81, “87”: 87, “107”: 107, “108”: 108}];
the modules window [“content-cliffclient”] = [function (require, module, exports) {“use strict”; const auth0 = require (12), isProduction = require (10) (), logger = require (74) Logger (() =>! IsProduction); moduleexports = ((t, e) => {if (! e) returns; loggergroup (), loggerh2 (“Content Cliff”); const {contentCliffOptions: o, firstVisit: n, onShow: r, onClickCliff: i} = e , c = 300, l = Number (documentquerySelector (“[data-components-count]”) getAttribute (“data-components-count”)), u = 3, s = [“taboola”], a = “# content -cliff “, f = t, d = function () {let t = 0; return documentquerySelectorAll (” [data-word-count] “) forEach (function (e) {t = number (egetAttribute (” data-word- count “) || 0.10) || 0}), t} (), g = function (t, e) {function o (t) {return Mathrond (tgetTime () / 1e3 / 60)} const n = o (t), r = o (e); return nr} (new Date, new Date (n)) {}, show: () => {r (), function () {(p = function (t = “”) {return documentquerySelectorAll (`$ {t} ~ *`)} (a)) forEach (t => tremove ()), function () {const {contentCliffStatus: e, contentCliffPromo: n, contentCliffCTA: r, contentCliffURL: c} = o, l = tquerySelector (“[data-content-cliff-status]”), u = tquerySelector (“[d ata-content-cliff-promo] “), s = tquerySelector (” [data-content-cliff-cta] “); s&&ssetAttribute ( “href”, c), s&&sinsertAdjacentHTML ( “afterBegin”, r), l&&linsertAdjacentHTML ( “afterBegin”, e), u&&uinsertAdjacentHTML ( “afterBegin”, n), s&&saddEventListener ( “click”, i)} (), fclassListremove ( “reduced”), e = s, eforEach (t => {const e = documentquerySelector (`[data-uri * =” / $ {t} / “]`); e&&esupprimer ()}), maddEventListener (“click” , () => auth0showLogin ()); var e} ()}} [function () {if (dl) return loggerlog (`the word count of the article $ {d} was too short for the cliff`), logger (` the number of components of item is less than $ {u} and is not eligible for the cliff`), “noop”; if (g&&isProduction) return “noop”; g&&loggerlog (`The first session check was $ {g}! Still showing the cliff: isProduction => $ {isProduction}`); if (/ coronavirus news | pivot | paywall exclude / itest (window_nymGtmPagetags)) return isProduction&&loggerlog (“Content clause prohibited due to excluded tag match:”, window_nymGtmPagetags), “noop”; returns “show”} ()], m = tquerySelector (“content-cliff-login”); let p = []; return journallog (`should not start in production due to the 30 minute first session window: $ {g}`), loggergroupEnd (), auth0on (“login”, () => {fclassListadd (“collapsed” ), (p = arrayprototypetrancheappel (p, 0) invert ()) forEach (t => finsertAdjacentElement (“afterend”, t)), p = []}), “function” == typeof h? h (): void 0});
}, {“10”: 10, “12”: 12, “74”: 74}];
the moduleswindow [“clientannouncement”] = [function (require, module, exports) {“use strict”; const _forEach = require (40), _ max = require (42), _ find = require (43), _ includes = require (44), $ visibility = require (1), dom = require (3), MAX_MOBILE_RE = / [[0-9] {1,3} – (768 | 600) /, MAX_TABLET_RE = / [0-9] {3} – (1024 | 1180) /, DESKTOP_RE = / (1024 | 1180) -plus /, AD_NAME_SELECTOR = ‘[data-name ^ = “/ 4088 /”], [data-name ^ = “/ 172968584 /”]’; var flaggedComponentsOnPage = function () {var e, t = documentquerySelector (“article-content”), n = []; returns t&&_forEach ([‘article-sidebar [data-width = “large”]’], function (a) {e = tquerySelectorAll (a), _ forEach (e, function (e) {npush (e)})}) , not} (); function getElementsVerticalOverlap (e, t) {var n = egetBoundingClientRect (), a = tgetBoundingClientRect (); return! (nhaut> abas || nrightadroite)? abas-nhaut: 0} function getElementsOverlapAmount (e, t) {var n, a = []; return _forEach (t, function (t) {n = getElementsVerticalOverlap (e, t), apush (n)}), _ max (a)} function getNYMagAdChannel (e) {var t = “”; switch (e) {case “company information”: t = “company”; break; case “new york guides things & to do”: t = “to-do”; break; case “other”: t = e; break; box “sponsored guides”: t = “s-guides”; break; case “urbanist”: t = “urbanist”; break; default: t = “”} return t} function appendSectionToDfpAds () {var e, t, n, a = documentquerySelector (“meta [property = ‘og: site_name’]”), o = documentquerySelector (“article [data-content -channel] “), i = documentquerySelectorAll (AD_NAME_SELECTOR); a&& (e = acontenu), o&& (t = ogetAttribute (“data content channel”) toLowerCase ()), t&& “New York Magazine” === e&&&CANDEANDCHAR&CANDEANDCHARCNSSEANDCHAR (t === e&CSSEANDEANDCHARC) === e&CSSEANDEANDCHAR (n) )} function appendPageTypeToDfp (document) querySelector (“body> div”) || {}, t = documentquerySelector (“body”) || {}, n = e&&eclassList, a = n&&nlength? [n]: [], o = _find (a, e => einclut (“feature”)), i = documentquerySelectorAll (AD_NAME_SELECTOR); n&& (where? appendPageNumberPositionToDfpAds (i, “Feature”): ncontient (“lede-gallery-content”)? appendPageNumberPositionToDfpAds (i, “Image_Gallery”): tclassListcontains (“) Onepumber_ArtolAdumnPositionDumno (“) Onepumber_ArtoladumnPosition (“) “): ncontains (” article-content “) &&appendPageNumberPositionToDfpAds (i,” Standard_Article “))} function appendPageNumberPositionToDfpAds (e, t) {const n = [” 528×379 “,” 1100×200 “,” 1×1 ” let a e = e || ], o = domtrouve (“ad-splash”), i = domtrouve (“wrapper” section), r = domtrouve (“secondary”), d = domtrouve (“bottom”), s = domtrouve (“primary”), c = {IA: {xsMobile: {normal: 1, grid: 1}, mobile: {normal: 1, grid: 1}, tablet: {normal: 1, grid: 1}, desktop: {normal: 1, grid : 1}}, BA: {xsMobile: {normal: 1, grid: 1}, mobile: {normal: 1, grid: 1}, tablet: {normal: 1, grid: 1}, desktop: {normal: 1 , grid: 1}}}; aforEach (e => {either a, l = “”, u = database of sizes, m = eclassListvalue, p = _find (n, e => ucomprend (e)), g = eparentElementclassListcontient (“image-gallery-mobile- grid-ad “); if (u&&! p || esetAttribute (” data-name “, egetAttribute (” data-name “)” / “t), i&&u&&! p) {let nient, uANDCHAR (oCSSSS )? l = “LB”: i&&contains (e)? l = “IA” 🙁 r&&rcontains (e) || d&&dcontains (e) || s&CSSECHANDCHARCARCANDE ” ) {if (! (u = checkForAdViewport (m))) return; g? (n = c [l] [u] grid, c [l] [u] grid) 🙁 n = c [l] [u] normal, c [l] [u] normal), a = n {esetAttribute (“data-name”, egetAttribute (“data-name”) “/” t)})} function injectGoogleScripts () {var e = documentcreateElement ( “script”), t = documentcreateElement (“script”), n = documentcreateDocumentFragment (); esrc = “// wwwgoogletagservicescom / tag / js / gptjs”, easync = “async”, tsrc = “// pagead2googlesyndicationcom / pagead / js / adsbygooglejs”, tasync = “async”, nappendChild (e), nappendChild (t), documentgetElementsByTagName (“body”) [0] appendChild (n)} appendSectionToDfpAds (), appendPageTypeToDfpAds (), injectGoogleScripts (), DScontroller (“ad”, [“adService”, function (e) {return function (t) {var n , a, o, i = tgetAttribute (“data-offload”), r = new $ visibilityVisible (t, {preloadThreshold: i? WindowinnerHeight / 4: 200}), d =! 1; function s () {windowinnerWidth> = 1180&&tparentElementclassListcontient ( “ad-repeat”) &&flaggedComponentsOnPagelength&& (a = getElementsOverlapAmount (t, flaggedComponentsOnPage), o = parseInt (tparentElementgetAttribute ( “data-gap”), 10), tstylemarginTop = o 30 a “px”)} function c () { s (), erefresh (n)} function l () {remove (n), d || (d =! 0, rsur (“shown”, c))} documentquerySelec tor (‘script [data-name = “concert-ads”]’) || (n = ecreate (t), rvisibility && $ isElementNotHidden (t)? (eaddToPageLoadQueue (n), i&&ron (“hidden”, l)) 🙁 ron (“preload”, function () elementANDCHotNSARCSSEidden (t) {! nsARCSSEANDCSSEEANDCHAR&ron (“hidden”, l)) () {! nsARCHlotCSSEidden (t) {! nsHARCSSEidden (t) lement! && (s (), eload (n))}), i&&ron (“hidden”, l)), ceadData = n)}}]);
}, {“1”: 1, “3”: 3, “40”: 40, “42”: 42, “43”: 43, “44”: 44}];
the modules window [“sticky-listclient”] = [function (require, module, exports) {“use strict”; const dom = require (3), $ gtm = require (4), _ get = require (23), stickyContainer = require (“sticky-containerclient”); DScontroller (“sticky-list”, [“$ window”, function (t) {var e = require (218), i = 40; function s (s) {let n, r = function (t) {let s = t [0], n = 0, r = height (cecontentArea), h = this content zoneoffsetHeight; if (thisconteneursconteneurslength) {si (scibleoffsetHeight) {let t = thiseruptionsfindIndex (t => (function (t, e) {return t ! == documentcorpsCSSEETCHARCSSEETCHARtcontains (e)}) (t, scibleparentElement)); if (t> -1&&cthisevasions [t]) {let e = thisevasions [t] offsetHeight i; thesecontainers [t] stylemarginBottom} = }} if (h! == thiscurrentHeigh) {const t = erect (cerightRail, cecicontentArea); cecurrentHeight = h, cecirightRailstyleheight = r-ttop-a (cerightRail) “px”, this eruptionsforEach ((s, r) => {either a = erect (s, cecontentArea), h = eintersection (a, t); if (h) {be e, s = htop-ttop-n; n = s hheight i, thiscontainers [r] styleheight = `$ {s } px`, thiscontainers [r] styleminHeight = `$ {s} px`, e = thisevasions [r] offsetHeight I, thisonten eurs [r] stylemarginBottom = `$ {e} px`}})}}} bind (this); tinnerWidth {let n = _get (e, “datasetname”, “”), r = nfrench (-1) || “1”, a = [“Image_Gallery”, “Standard_Article”, “Feature”, “One_Column_Article”] find (t => does not include (t)) || “”; cerightRailparentElementclassListcontains (“tertiary”) &&a&& (database databasename = parseInt (i, 10) se === t) || 0; returns range (s 1) reduce ((t, e) => t (eoffsetHeight || 0), 0) || 0} returns sprototype = {setPins: function () {const t = erect (cerightRail, cecicontentArea), i = height (cecontentArea), s = i-ttop-a (cerightRail); let n, h, o, l; if (thispopulatePinsList (), s1&&tclassListadd (“multi-children”), l = 0; l {const t = Arrayde (echildren); leave o, a, i = 0; for (; i {handleLazyLoad (a)});
}, {“3”: 3, “96”: 96}];
the modules window [“clientarttl”] = [function (require, module, exports) {“use strict”; const $ visibility = require (1), $ gtm = require (4), ImageZoom = require (56), $ sentry = require (57); DScontrôleur (“article”, [function () {var e = 40; function t (t) {const i = documentquerySelector (“packaging> tertiary”), n = tquerySelector (“bleed-image-wrapper lede”), r = tquerySelector (“bleed allocation”), o = tquerySelector (“article-header”), l = o? oquerySelector (“img”): null, c = function () {let t = ogetBoundingClientRect () height; n&& (t = ngetBoundingClientRect () height 25, r&& (t = rgetBoundingClientRect () height)), istylepaddingTop = te “px”}; i&&oCSSinEANDCHAR& (})
}, {“1”: 1, “4”: 4, “56”: 56, “57”: 57}];
the modules window [“customer tags”] = [function (require, module, exports) {“use strict”; const _forEach = require (40); DScontroller (“tags”, [function () {function e (e) {thisel = e} returns eprototype = {events: {“aplus click on”: “showAll”}, showAll: function (e) {var t = target , o = cecielquerySelectorAll (“licaché”); _ forEach (o, function (e) {eclassListremove (“hidden”)}), tparentNoderemoveChild (t), epreventDefault ()}}, e}]);
}, {“40”: 40}];
the modules window [“memo-pixelclient”] = [function (require, module, exports) {“use strict”; (() => {var e = documentcreateElement (“script”); easynchronous =! 0, etype = “text / javascript”, esrc = document locationprotocol “// d16xpr36wrmcmkcloudfrontnet / js / memojs”, (documentgetElementsByTagName (“head”) [ 0] || documentgetElementsByTagName (“body”) [0]) appendChild (e)}) (), moduleexportations = (() => {});
}, {}];
the modules window [“client-affiliate-links”] = [function (require, module, exports) {“use strict”; const dom = require (3), _ includes = require (44), _ startsWith = require (48), globalClick = require (47), visit = require (46), productSubtags = require (49); var exclusHostnames, skimlinksBaseUrl, skimlinksId, visitState, productUrl, ignoreDataAttribute = “data-affiliate-links-ignore”, article = document windowquerySelector (“article”), isSponsored = article&& “Sponsor Story” = “= articlegetAttribate type ; function setExcludedHostnames (t) {hiddenHostnames = (tgetAttribute (“data-excluded-host-names”) || “”) toLowerCase () split (“,”)} function isSkimLink (t) {return !! (skimlinksId = tgetAttribute (“data-skimlinks”))} function isExcluded (t) {return _includes (hiddenHostnames, t) || _startsWith (t, “www”) &&_includes (excluded hostnames, tslice (4)) || isSponsored} function isUrlProtocol (t) {return 0! == tindexOf (“mailto:”) &&0! == tindexOf (“javascript:”)} function getTargetHostname (t) {return (thostname || thhost || thref || “”) toLowerCase ()} function convertSkimlinkUrl (t) {return (skimlinksBaseUrl = skimlinksBaseUrl || skimlinksId? “// allerredirigercom /? xs = 1&id =” skimlinksId “&sref =” encodeURIComponent (windowlocationhref) “&url =”: void 0) &&skimlinksBaseUrl (return = tURIComponent = tURIComponent {ref) “&url =”: void 0) &&skimlinksBaseUrl (return = tURIComponent=) functionttribon (return = tURIComponent= {tribute=} functionttribttBaseUrl (return= tURICribonget= {return}} {{{return}}}} true (ignoreDataAttribute)} function convertSkimlink (t) {var e, i, r, s = nearest domle (tcible, “a”), n = s&&shref; n&&nlength&&! tdefaultPrevented&& (i = getTargetHostname (s),! isUrlProtocol (n) || isExcluded (i) || hasIgnoreAttribute (s) || productSubtagsgetAffiliate (n) || (e = convertSkimSSlinkUCHANDAR = n) s&&sgetAttribute (“data-track-id”), shref = productSubtagsensureSubtag ({url: e, productId: r, visitState: visitState, anchorEl: s})))} function revertSkimLink (t) {var e = nearest place (target , “a”), i = e&&ehref || “”; iinclut (skimlinksBaseUrl) &&i&&ilongueur&&productUrl&& (emodule href = productUrl)} exports = (t => {const e = isSkimLink (t); visiteonceReady (function (t) {visitState = t}), e&& (setExcludedHostnames (t), globalClickaddHandler (convertSkimlink , revertSkimLink))});
}, {“3”: 3, “44”: 44, “46”: 46, “47”: 47, “48”: 48, “49”: 49}];
the modules window [“gtmclient”] = [function (require, module, exports) {“use strict”; const $ gtm = require (4); DScontroller (“gtm”, [function () {return function (t) {$ gtminit (tgetAttribute (“data-container-id”), tgetAttribute (“data-site-slug”))}}]);
}, {“4”: 4}];
the modules window [“global-navclient”] = [function (require, module, exports) {“use strict”; const dom = require (3), auth0 = require (12), signInButton = domtrouve (“user-signin”), signOutButton = domtrouve (“user-signout”), globalNav = domfind (‘[class ^ = “global-nav “] ‘), body = domfind (” body “), dropdownItems = domFind all (” dropdown-wrap “), gtm = require (4), pageUri = require (136) getPageUri (); function closeDropdowns (e) {let n = globalNavquerySelectorAll (“drop-down menu open”); dropdownItemsforEach (function (t) {either o = tquerySelector (“dropdown list”);! n || tcontains (target) &&27! == ekeyCode || oclassListremove (“open”)})} function gtmSendReport (e, n, t ) {let o = {eventCategory: “ecommerce”, eventAction: “componentClick”, brand: e, dimension23: “global-nav”, list: pageUri, pageZone: “header”, variant: “nav-link”}; “global-nav-link” === t&& (oeventLabel = nhref), gtmreportNow (o)} function init (e) {auth0on (“init”, () => {signInButtonaddEventListener (“click”, function (e) { epreventDefault (), auth0showLogin ()}), signOutButtonaddEventListener (“click”, function {epreventDefault (), auth0logout (), gtmSendReport (“Logout”, ecible, “user-info-link”)}), auth0isAuthenticated () ) &&eclassListadd (“connected”), auth0isSubscriber () &&eclassListadd (“subscriber”), equerySelectorAll (“user link”) forEach (e => {eclassListadd (“active”)})}), auth0on () () () => {eclassListadd (“logged in”), auth0isSubscriber () &&eclassListadd (“subscriber”)}), auth0on (“logged out”, () => {eclassListremove (“logged in”), eclassListremove (“subscriber”)})} dropachdownItems (function {eaddEventListener (“click”, function () {equerySelector (“drop-down menu”) classListtoggle (“open”)})}), corpsaddEventListener (“click”, closeDro pdowns), documentaddEventListener (“keydown”, closeDropdowns), globalNavaddEventListener (“click”, function (e) {let n = target; nclassListcontient (“global-nav-track”) &&gtmSendReport (ntext, n, “global-nav-link”)}), moduleexportations = init;
}, {“3”: 3, “4”: 4, “12”: 12, “136”: 136}];
the modules window [“aaalegacy module mount”] = [function (require, module, exports) {“use strict”; const eventify = require (164), _ pickBy = require (139), _ each = require (299), fingerprintjs2 = require (301), DS = require (300); function registerGlobals () {windowDS = DS, windowEventify = eventify, windowFingerprint2 = fingerprintjs2, DSvalue (“Eventify”, eventify), DSvalue (“Fingerprint2”, fingerprintjs2), DSvalue (“$ document”, document window), DSvalue (“$ window “, window)} function mountDollarSliceComponents () {DSservice (” components “, [” $ document “,” $ module “, function (e, n) {var r = _pickBy (ndefinitions, e => eproviderStrategy === ncontroller suppliers) , o = Object keys (r); function t (e) {return r => {try {nget (e, r)} catch (e) {logMountError (r, e)}}} _ each (o, n => {var r = equerySelectorAll (‘[data-uri * = “/ _ components /’ n ‘/”]’), o = equerySelectorAll (‘[data-uri $ = “/ _ components /’ n ‘”]’) ; _ each (r, t (n)), _ each (o, t (n))}), cecomposants = o}]), DSget (“components”)} function logMountError (e, n) {const r = eexterneHTMLSlice (0, eexterneHTMLindexOf (einnerHTML)); consoleerror (“Error connecting controller to” r, n)} registerGlobals (), documentaddEventListener (“DOMContentLoaded”, () => {mountDollarSliceComponents ()});
}, {“139”: 139, “164”: 164, “299”: 299, “300”: 300, “301”: 301}];
the modules window [“announcementslegacy”] = [function (require, module, exports) {“use strict”; const _map = require (50), _ forEach = require (40), _ isString = require (184), _ intersectionWith = require (302), _ isEqual = require (187), _ each = require (299), _ debounce = require (99), _ sortBy = require (121), page = require (136), visit = require (46); DSservice (“adService”, [“Eventify”, “$ cid”, “$ document”, “$ window”, function (e, t, a, i) {var o, n, s, r, d, c, l, u, g, p, m = {}, h = this, f = [], b = visitgetQueryParamsObject ([“utm_campaign”]), w = documentquerySelector (‘script [data-type = “ad-a9”] ‘); documentquerySelector (‘ script [data-name = “concert-ads”] ‘) || (iNYM = {}, jeNYManalytics = {}, iNYManalytiqueadStartTime = iperformance Now jegoogletag = igoogletag || {}, jegoogletagcmd = igoogletagcmd | ], c = igoogletag, w&& (igoogletagcmd = igoogletagcmd || [], igoogletagcmdpush (function () {igoogletagpubades () deactivateInitialLoad ()}), l = isetInterval (function () {voagEtreapCHeapvessCstagstag 0! ==windenEANDCHeapchouttimeCstag 0! == && (iclearInterval (l), windoweapstagcleared =! 0, l = null)}, 10), setTimeout (function () {l&& (iclearInterval (l), jegoogletagpubades () refresh (), consolation: overflow of the i waiting for loading A9, abort “))}, 500)), u = documentcreateElement (” script “), g = documentcreateDocumentFragment (), p = documentgetElementsByTagName (” head “) [0], usrc =” https : // zdouvescom / voxprebidheader841653991752 / moatheaderjs “, gappendChild (u), pinsertBefore (g, pfirstChild), o = function (e) {var t, a, o = edata, n = []; returns loaded? e: (loaded =! 0, t = null, (t = otailles? cdefineSlot (onom otailles, oidentifier) ​​addService (cpubades ()): cdefineOutOfPageSlot (idename) addService (cpubades ())) setTargeting (“adid”, oid ), bhasOwnProperty (“utm_campaign”) &&tsetTargeting (“utmcamp”, butm_campaign), a = hgetAdCount (oetabel), tsetTargeting (“label”, oetiquette “_” osite “-” a), addenerList (oid) ( “slotOnload”, function () {iNYManalytiquefirstAdLoadTime || (iNYManalytiquefirstAdLoadTime = = iperformanceMaintenant jeNYManalytiquefirstAdLoadLabel eThe donnéeslabel)}) (n = v (o)) fenêtreapstag&&windowapstagcleared&CSSEETCHARfenêtreapstagfetchBids (? {slots: [n], timeout: windowapstagtimeout}, function () {ccmdpush (function () {windoweapstagsetDisplayBids (), cpubades () refresh ([t], {changeCorrelator :! 1})})}): cpubades () refresh ([t], {changeCorrelator :! 1}), eslot = t, e)}, n = function (e) {var a, i, o, n = t (), s = egetAtt ribute (“data-name”), r = egetAttribute (“data-sizes”), d = egetAttribute (“data-label”), c = egetAttribute (“data-site”); n = eid, r&&length? (r = rsplit (“,”), a = [], _ map (r, function (e) {e = esplit (“x”), i = parseInt (e [0]), o = parseInt (e [ 1]), apush ([i, o])})) 🙁 eclassListaadd (“oop”), a =! 1), cecidata = {id: n, name: s, sizes: a, loaded :! 1, label: d, site: c}, m [n] = this}, r = function (e) {ccmdpush (function () {var t = o (e); m [eDataid] = t})} , s = function (e) {var t = []; eslot? (t = v (e)) &&windowapstag&&windowapstagcleared&CSSEETCHARwindowstagfetchBids ({slots: [t], timeout: windowapstagtimeout}, function () {ccmstlot (changeBags) changeBags (refreshBags) (eslotChangeBags) {function ()! })})}): e&&r (e)}, ccmdpush (function () {var e, t, o, n = pagegetMeta (“article: tag”), s = pagegetMeta (“author”), r = locationhref, d = (e = adirigerquerySelector (“head-gtm”), t = acorpsquerySelector (“gtm”), e&& “top” === egetAttribute (“data-gtm”)? “gtmtop”: t&& “bottom” === ” tgetAttribute (“data-gtm”)? “gtmbottom”: “”); o = [], _ forEach ([n, s, d], function (e) {_ forEach (esplit (“,”), function ( e) {(e = egarniture () toLowerCase () replace (/ s / g, “-“) replace (/ ‘| ‘ / g, “”)) length&&opush (e)})}), cpubades ( ) setTargeting (“kw”, o), cpubades () setTargeting (“input_group”, o), r = rtranche (rlastIndexOf (“/”) 1), cpubades () setTargeting (“pn”, r), cCompagnonAds () setRefreshUnfilledSlots (! 0), cpubades () enableAsyncRendering (), cenableServices ()}), ceload = r, cecicreate = function (e) {return new n (e)}, cecirafraichir = function (e) {var t; _isString (e)? (t = thisgetById (e), s (t)): s (e)}, cecisupprimer = function (e) {var t = eDataid; ungetElementById (t) innerHTML = “”}, cecigetAdCount = function (e) {var t, a = 0, i = Objecttouches (m); return _each (i, function (i) {(t = m [i]) Data loaded&&t Datalabel === e&&a}), a}, cecigetById = function (e) {return m [e]}, d = _debounce (function () {var e = {TopLeaderboard: 1, RightColTopMPU: 2, outOfPage: 99, “homepageTakeover / TopLeaderboard”: 1}, t = _sortBy (f, function (t) {returns e [tDatalabel] || 10}) ; _ forEach (t, function (e) {return eDatasize? r (e): isetTimeout (function () {r (e)}, 2e3)}), f = []}, 10), ceaddToPageLoadQueue = function ( e) {fpush (e), d ()}); function v (e) {var t, a = ranges; returns a = _intersectionWith (a, [[970,250], [970,90], [728,90], [300,600], [300,250], [320,100], [320,50]], _ isEqual), sizes sizeslength&& ( t = {slotID: eid, sizes: a, slotName: elabel}), t}}]);
}, {“40”: 40, “46”: 46, “50”: 50, “99”: 99, “121”: 121, “136”: 136, “184”: 184, “187”: 187 , “299”: 299, “302”: 302}];
the modules window [“cidlegacy”] = [function (require, module, exports) {“use strict”; DSservice (“$ cid”, function () {var r = Math floor (100 * Mathrandom ()); return function () {return “cid-” r}});
}, {}];
the modules window [“facebooklegacy”] = [function (require, module, exports) {“use strict”; DSservice (“facebook”, [function () {thisfb = function (i) {windowFB&CSSEETCHARowindowFBI] apply (this, Arrayprototypetranchecall (arguments, 1))}}]);
}, {}];
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 fcode = ” MODULE_NOT_FOUND “, f} var l = n [o] = {exports: {}}; t [o] [0] call (lexports, function (e) {var n = t [o] [1] [e]; returns s (n? n: e)}, l, lexports, e, t, n, r)} returns n [o] exports} var i = typeof require == “function” &&require; for (var o = 0; o typeof key === ‘string’ && keyrencontre (/ inheritance $ /)) forEach (key => windowrequire (key));
}

function tryToMount (fn, el, name) {
try {
fn (el); // initiate the controller
} catch (e) {
const elementTag = elexterneHTMLtranche (0, elexterneHTMLindexOf (elinnerHTML));
consoleerror (`Error initializing controller for” $ {name} “on” $ {elementTag} “`, e);
}
}
/ **
* mount client js component controllers
* /

function mountComponentModules () {
Keyobject (modulewindow) filter (key => typeof key === ‘string’ && key meets (/ client $ /)) forEach (key => {
let controllerFn = windowrequire (key);

if (typeof controllerFn === ‘function’) {
const name = key replace (‘customer’, ”),
instancesSelector = `[data-uri * =” _ components / $ {name} / “]`,
defaultSelector = `[data-uri $ =” _ components $ {name} “]`,
instances = documentquerySelectorAll (instancesSelector),
defaults = documentquerySelectorAll (defaultSelector);

for (let el of instances) {
tryToMount (controllerFn, el, name);
}

for (leave the default values) {
tryToMount (controllerFn, el, name);
}
}
});
} // Make sure that a `processenvNODE_ENV` window is available in the client for all dependencies,
// services or components that might need it
// note: the value “ is swapped for the actual environment variable in / lib / cmd / compile / scriptsjs

the processwindow = processwindow || {};
lawindowtreatenv =windowtreatenv || {};

if (! fenestraiterenvNODE_ENV) {
the windowprocessenvNODE_ENV = ”;
} // note: legacy controllers that require legacy services (eg dollar-tranche) must
// wait for DOMContentLoaded to initialize, because the files themselves need to be mounted first

mountLegacyServices ();
mountComponentModules ();
//]]

King Kong vs Godzilla

Ebene News – CA – Every Easter Egg (Kaiju size) in Godzilla vs Kong

Source: https://www.vulture.com/2021/03/godzilla-vs-kong-every-easter-egg.html