Disney has decided to drop just one episode of its new prestigious MCU miniseries The Falcon and the Winter Soldier today, leaving almost as many questions unanswered as it was yesterday. Series (reportedly up to $ 25 million per episode) doesn’t go much beyond reintroducing the action aesthetic of these previously supportive characters, but that’s really all fans should expect from a prologue to a much bigger story Falcon can fly and Blow things up! Winter Soldier used to be a ruthless killing machine! Who is Captain America now?!?! To be fair, it also covers some potentially big topics, including anarchy and personal and patriotic responsibilities. While Bucky Barnes continues to wrestle with his personal responsibility for death and destruction, Sam Wilson wrestles with his place in a world without Captain America and the pressures to become him. And both men are challenged by the rise of a terrorist organization called Flag Smashers that just wants to see the world burn

It can be harder to turn support characters into leads than it looks like viewers have always seen Anthony Mackie’s Falcon and Sebastian Stan’s Winter Soldier as opposed to Chris Evans’ Captain America, Samuel L., Standing Jacksons Nick Fury and Scarlett Johansson’s Black Widow Where Sam Is In His Character Arc, the writers can count on the fact that this is a supportive player who has been brought into the spotlight by taking the load of the shield of Captain America and everything For what it has gotten to mean to the world Remember, at the end of Avengers: Endgame, an older cap that had a very different life than before, Sam hands off his shield while Bucky looks on approvingly in the comics maybe just the mask on and became Captain America, but there’s a reason this show isn’t called Captain America and the Winter Soldier – Sam isn’t ready for that title yet, and it seems like he’ll never be The Shield belonged to Steve Rogers, so he’ll be at the Smithsonian no matter what Rhodey, ain’t a War Machine (Don Cheadle) says to try to convince Sam otherwise, his first line on the shield is lukewarm tet “It belongs to someone else” Will the hawk and the winter soldier be the story of Sam who realizes the shield is his too?

It’s interesting that this key plot point, in which Sam essentially remains Falcon instead of becoming a Cap, follows an extensive action sequence that lasts almost ten minutes and in the Falcon has very different abilities than Mr. America.It is located near the Libyan border and has a U rescue missionS. Soldier from the clutches of Georges Batroc (Georges St-Pierre) and plays high above the ground, with Falcon racing through valleys and dodging missiles, intended to remind viewers of Falcon’s skills, which depend on lightning-fast reflexes and quick thinking, and them Lieutenant Torres (Danny Ramirez) envision Falcons “boots on the ground” who pursued the kidnapping and Falcon later warns of the threat from the Flag Smashers

Opening with a ten minute aerial combat sequence sets expectations for soaring action in this series. Will each episode have a big set piece like this? It’s definitely well done and wasted no time in getting Marvel fans who miss their blockbusters into targeted action, and Mackie looks very pleased in the role of Lead Ass Kicker, aside from concerns about getting the action in Couldn’t run such a show

After the action subsided, Torres tells Sam about a group called Flag Smashers who believe the world is better before the Blip brought back half of the population wiped out by Thanos’ snap to play The Falcon and the Winter Soldier initially with the idea of ​​groups of domestic terrorists living on chaos who believe conspiracy theories about Captain America’s life on the moon, of course, this is fertile ground to explore in the 2020s, but it’s still too early to be around To say how busy the writers will be. Do the Flag Smashers reflect what Sam calls “the times we are in”? Or are they just a new group of anarchic villains?

We then meet again with Rhodey at a ceremony where Cap’s shield is given to the Smithsonian, and Sam gives a speech about how the shield “belongs” to him. Rhodey tries to persuade Sam to wear the shield and the captain To be America that the world needs right now, but Sam doesn’t really feel it

Flashback of a brutal incident involving the winter soldier on a Hydra assassination mission in which he kills an innocent bystander, the flashback is soon debunked as a dream, a recurring nightmare that Bucky’s Shrink asks him about the next day she is incredibly exhausted von Bucky, calling him a liar almost immediately, being a man who has been turned into a killing machine for decades, but this is a condition for his pardon, he must also make efforts to make amends when she aggressive with him Confronted with how alone he is in the world, he counters by stating that he “went from one fight to another for 90 years. That would mess up a guy

It turns out that Bucky has at least one friend, a kind old man who turns out to be a killer wingman and questions a waitress for Bucky, it turns out that Bucky is close to him for one reason: he’s the father of the viewer who starred in the flashback dream earlier in the episode His Shrinkage may not believe it, but Bucky confronts his past sins head on and tries to make amends in his own way by being there for an old man whose life is he has ruined

Cut to Delacroix, Louisiana, and the idea of ​​Sam’s sister Sarah (Adepero Oduye) wanting to sell the boat that has been her family’s business for years, it turns out that even the sisters of international heroes in a post Blip recession didn’t get special treatment despite their loan officer recognizing Falcon enough to take a selfie (and Avengers not getting paid to be heroes) Let’s hope Sarah isn’t just set up as a device to put Sam into action. It’s far too early to say how this story will play out Perhaps the show plans to dig deeper into its economic struggle, but there is reason to be skeptical here

After Bucky’s awkward date, Torres tries to get closer to the Flag Smashers, which leads to his ass being kicked. He sends Sam a clip of the Flag Smashers leader, revealing that he’s worried about a disarmingly powerful new one Then Sarah walks in to turn on the TV while a press conference is going on … and introduces a new, unknown Captain America

• If Georges Batroc, the villain in the opening action sequence, looks familiar, it’s because he’s the one who fights Captain America on the freighter at the beginning of Captain America: The Winter Soldier Is there something to introduce a potential new Captain America by fighting one of the first enemies to fight the old cap in modern times? Can be

• Of course, every Marvel trait reworks characters from the comics in ways that might suggest where the show is going. That said, we need to talk about Lieutenant Joaquin Torres Danny Ramirez’s character shares a name with a character from Marvel Comics Who, guess what, becomes the second Falcon in the source, he’s a teenage boy kidnapped by the Sons of the Serpent and rescued by Falcon, who then becomes Captain America, creating Torres, who is now a Falcon-human hybrid is, the new Falcon will be. Could the show follow this path and make Sam the new Captain America and Torres the new Falcon ?!

• The Flag Smashers name isn’t new to Marvel fans either: It’s been associated with two super villains from the books, most notably Karl Morgenthau, who first appeared in Captain America in 1985 as a symbol of anti-patriotism. Think about it: What is more against Captain America than a Flag Smasher? The character was born violent, like most Marvel superheroes and supervillains, convinced that after his father’s death in a Latvian embassy the world needed anarchy Fanaticism, anarchy, terrorism – these will clearly be subjects of The Falcon and The Winter Soldier

• During therapy recap, when redress is discussed, a notebook is seen with names that Bucky crossed out Interestingly, one can easily identify H Zemo or Baron Helmut Zemo, a classic Captain America villain who is in Captain America: Civil War, where it was played by Daniel Brühl, has been announced that the actor will repeat the role in The Falcon and the Winter Soldier.Other Marvel names on the list include Wilhelm Hauser (a Sgt Wut character from the ’60s ), Andre Rostov (akein the Red Barbarian) and possibly Kuznetsov (there was a Soviet doctor named Kuznetsov in the books)

Already a subscriber?
Sign up or link your magazine subscription

Already a subscriber?
Sign up or link your magazine subscription

Already a subscriber?
Sign up 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]” === ObjectPrototyptoStringcall (r)};
}, {}];
Window modules [“1208”] = [Function (required, module, export) {“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 “”}}; module exported = 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]” === ObjectPrototyptoStringcall (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”, “∑”: “soucet”, “¤”: “mena”}, de : {“∆”: “delta”, “∞”: “infinite”, “♥”: “love”, “&”: “and”, “|”: “or”, “”: “greater than”, “∑”: “Sum of”, “¤”: “Currency”}, dv: {“∆”: “delta”, “∞”: “kolunulaa”, “♥”: “loabi”, “&”: ” aai “,” | “:” noonee “,” “:” ah vure bodu “,” ∑ “:” jumula “,” ¤ “:” faisaa “}, en: {” ∆ “:” delta “,” ∞ “:” infinite “,” ♥ “:” love “,” & “:” and “,” | “:” or “,” “:” greater than “,” ∑ “:” sum “,” ¤ “: “Currency”}, es: {“∆”: “Delta”, “∞”: “infinito”, “♥”: “amor”, “&”: “y”, “|”: “u”, “” : “mas que”, “∑”: “suma de los”, “¤”: “moned a “}, fr: {” ∆ “:” delta “,” ∞ “:” infiniment “,” ♥ “:” Amour “,” & “:” et “,” | “:” ou “,” “: “superieure a”, “∑”: “somme des”, “¤”: “monna dh”}, gr: {}, hu: {“∆”: “delta”, “∞”: “vegtelen”, “♥ “:” szerelem “,” & “:” es “,” | “:” vagy “,” “:” nagyobb mint “,” ∑ “:” szumma “,” ¤ “:” penznem “}, it: {” ∆ “:” delta “,” ∞ “:” infinito “, “♥”: “amore”, “&”: “e”, “|”: “o”, “”: “maggiore di”, “∑”: “somma”, “¤”: “moneta”}, lt : {}, lv: {“∆”: “delta”, “∞”: “bezgaliba”, “♥”: “milestiba”, “&”: “un”, “|”: “vai”, “”: “lielaks neka”, “∑”: “summa”, “¤”: “valuta”}, my: {“∆”: “kwahkhyaet”, “∞”: “asaonasme”, “♥”: “akhyait”, ” & “:” nhin “,” | “:” tho “,” “:” kyithaw “,” ∑ “:” paungld “,” ¤ “:” ngwekye “}, mk: {}, nl: {” ∆ “:” delta “,” ∞ “: “oneindig”, “♥”: “leads”, “&”: “en”, “|”: “of”, “”: “groter dan”, “∑”: “som”, “¤”: “valuta “}, pl: {” ∆ “:” delta “,” ∞ “:” nieskonczonosc “,” ♥ “:” milosc “,” & “:” i “,” | “:” lub “,” “:” wieksze niz “,” ∑ “:” suma “,” ¤ “:” waluta “}, pt: {” ∆ “:” delta “,” ∞ “:” infinito “, “♥”: “amor”, “&”: “e”, “| “:” ou “,” “:” maior que “,” ∑ “:” soma “,” ¤ “:” moeda “}, ro: {” ∆ “:” delta “,” ∞ “:” infinit “, “♥”: “dragoste”, “&”: “si”, “|”: “sau”, “”: “mai mare ca”, “∑”: “suma”, “¤”: “valuta”}, ru: {“∆”: “delta”, “∞”: “beskonechno”, “♥”: “lub ov”, “&”: “i”, “| “:” ili “,” “:” bolshe “,” ∑ “:” 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”, “&”: “va”, “|”: “hoac”, “”: “lon hon”, “∑”: “tong”, “¤”: “tien te”}} ; if (“string”! = typeof e) return “”; if (“string” == typeof a&& (A = a), m = Ien, c = Cen, “object” == type of a) for (g in n = akeepCase ||! 1, O = acustom&& “object” == typeof aBrauch? aBrauch: O, u = acut off> 1&&a cut off ||! 1, l = auric ||! 1, s = auricNoSlash ||! 1, r = amarkize ||! 1, S =! 1! == asymbole&&! 1! == alang, A = a separator || A, l&& (p = bjoin ( “”)), s&& (p = zjoin (“”)), r&& (p = [“”, “!”, “~”, “*”, “‘”, “(“, “)”] join ( “”)), m = alang&&I [alang] &&S? I [alang]: S? Ien: {}, c = alang&&C [alang]? C [alang] :! 1 === alang ||! 0 === alang? {}: Cen, atitleCase&& “number” == typeof atitleCaselength&&ArrayPrototyptoStringAnruf (atitleCase)? (atitleCaseforEach (function (e) {O [e “”] = e “”}), t =! 0): t = !! atitleCase, acustom&& “number” == typeof a user-defined length&&ArrayPrototyptoStringAnruf (acustom) &&a user-defined forEach (function (e) a = “e” key (); > 1? New RegExp (“\ b” o (a) “\ b”, “gi”): new RegExp (o (a), “gi”), e = 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! == join (” “) indexOf (g) || s&&-1! == zjoin (“”) 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 = replace (new RegExp (“[^ \ w \ s” p “_-]”, “g”), A); Return t&& (E = EReplace (/ ( w) ( S *) / g, function (e, a, n) {var t = atoUpperCase () (null! == n? N: “”); return objectkey (O) indexOf (ttoLowerCase ()) u&& (h = EcharAt (u) === A, E = EDisk (0, u), h || (E = EDisc (0, ElastIndexOf (A)))), n || t || (E = EtoLowerCase ()), E}, t = function (s) {return function (a) {return n (a, e)}}, o = function (s) {return ereplace (/ [- \ ^ $ *? ( ) | [] {} /] / g, “\ $ &”)}, i = function (e, a) {for (var n in a) if (a [n] === e) return ! 0}; if (“undefined”! = type of module &&moduleExport) ModulExporte = n, ModulExportecreateSlug = t; else if (“undefined”! = typeof define&&defineamd) define ([], function () {return n}); otherwise try {if (egetSlug || ecreateSlug) throw “Speakingurl: Globals exists / (getSlug | createSlug) /”; egetSlug = n, ecreateSlug = t} catch (e) {}} (this);
}, {}];
Window modules [“1235”] = [function (required, module, export) {var namespace = “expire_mixin”; Function expirePlugin () {var e = thiscreateStore (diesStore, null, dies_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 = []; this each (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 () clear ()} module exported = {name: “localStorage”, read: read, write: write, each: each, remove: remove, clearAll: clearAll};
}, {“1237”: 1237}];
Window modules [“1239”] = [Function (required, module, export) {Module exported = {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 of each (e) {for (var r in memoryStorage) memoryStoragehasOwnProperty (r) &&e (memoryStorage [r] , r)} function remove (e) {delete memoryStorage [e]} function clearAll (e) {memoryStorage = {}}
}, {}];
Window modules [“1276”] = [Function (required, module, export) {! Function (s) {var t = function (s) {return new y (e)}; tversion = “068”, “undefined”! = Module type&&modules exported? Module exported = 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) returns e replace (/ ()? ([^)? / g, function (e, n, r, a) {return a = a || “”, ( n = n || “”) match (s)? nra: n (r = rReplace (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; return nforEach (function (s) {“tag” === eType? (rpress (etxt), t = sexec (etxt), a =! (! t || void 0! == t [1])): a ? rpress (etxt): rpress (eTXTersetzen (p, ‘$ 1 $ 2’))}), rjoin (“”)}}, p = tinitQuotes = function (s) {var t = n (“(?: ( ?:] *> | ^) \ s * (?:] *> \ s *) *) (?: ( “|” | “) | (‘|’ | ‘))”, “I” ); if (e || “string” == typeof e) returns e reset (t, function (e, t, n) {var s = t? “dquo”: “quo”, r = t || n; return [ eSheibe (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 “); return eReplace (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 “); return rforEach (function (s) {“tag” === eType AdPress (etxt), t = sexec (etxt), p =! (! t || void 0! == t [1])): p? adpress (etxt): adpress (eTXTersetzen (c, function (e, t, n, s) {var r, a; return n? ‘% s’ersetzen (“% s”, n) 🙁 “” === sScheibe (-1) & le; (r = sScheibe (0, -1), a = “”) 🙁 r = s, a = “”), replace ‘% s1% s2’ (“% s1”, r ) replace (“% s2”, a))}))}), aJointtypogrify = function (s) {var t = e; return 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 adress (etxt), null! == (i = sexec (etxt)) && (c = i [2] toLowerCase (), i [1] ? (pLength> 0&&c === p [pLength-1] &&ppop (), 0 === plength&& (l =! 1)) 🙁 ppush (c), l =! 0)); else {if (n = (n = eTXT) Replace (/ (rock) ‘n’ (roll) / gi, “$ 1’n ‘$ 2”), t = nDisk (-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 (s) {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} return rlastIndex) / g, “$ 1 -“)}, d = tsmartEllipses = function (s) {return ereplace (/ \/ G, “…”) replace (/ / g, “”)}, x = tsmartBackticks = function (s) {return ereplace (/` `/ g,” “”) replace (/ ” / g, “” “)}, m = tsmartQuotes = function (s) {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”); return eersetzen (n (” ^ ‘% s “) replace (“% s “, t),” g “),”‘ “) replace (n (‘^”% s’) 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 Si e (‘”‘,” “”)}, y = function (e) {this_wrapped = e}, v = function (e, n) {yPrototype [e] = function () {return e = calls to (t, that wrapped), dies_chain? t (e) chain (): e; var e}}; for (l in t) thasOwnProperty (l) && ((o = t [l]) &&o constructor&&ocall&&o apply) && [lv] l); yPrototypechain = function () {return this_chain =! 0, this}, yPrototypevalue = function () {return this_wrapped}} (this);
}, {}];
Window modules [“1358”] = [Function (required, module, export) {“use strict”; const universalAgora = required (1360), universalRest = required (9), universalQuery = required (1359), _ get = required (23); Function searchByQueryWithRawResults (e, r) {const t = `// $ {rPage? ˅Host} $ {80! == rpage? port? `: $ {rpage? ˅port} `:” “} $ {rPage? ˅path} / _ agora / _search`; return universalRestpost (t, e,! 0)} function getProducts (e, r, t) {return searchByQueryWithRawResults (universalAgorabuildProductsQuery (e), r) then (e => {const r = universalQueryformatSearchResult (e); return {total: eTrefferTotal Products: t? UniversalAgorafilterByLocale (r): r}})} Function getMerchantsList (e) {return searchByQueryWithRawResults (universalAgorabuildMerchantsAggregation (1e6, _get (e, “siteagoraLocale”)) “, e) then (dealer QueryesformatAggregation: Field: “Key”, sub-field: “Name”}))} ModulExportegetProduct = universalAgoragetProduct, ModulExportegetProducts = getProducts, ModulExportegetMerchantsList = getMerchantsList, ModulExportesearchByQueryWithRawResults = searchByQueryWithResultsults = searchByQueryWithRawerBesults = searchByQueryWithMerchantsByQueryUport = searchByQueryWithRawerExchants;
}, {9: 9, 23: 23, 1359: 1359, 1360: 1360}];
Window modules [“1359”] = [Function (required, module, export) {“use strict”; const _map = require (50), _ get = require (23), _ isArray = require (149), _ set = require (106), _isObject = require (87), _ cloneDeep = require (60), _ uniq = require (90); function formatSearchResult (e) {return _map (eTrefferTreffer, “_ source”)} Function newQuery (e) {if (! e) raises a new error (“An index is required to create a query”); return {index: e, type: “_ doc”, body: {query: {}}}} function addShould (e, o) {var t = _get (e, “bodyAbfrageBoolsollte”, void 0), r = _isArray ( O); return t? r? _set (e, “bodyAbfrageBoolsollte”, tconcat (o)) 🙁 tpresses (o), _ set (e, “KörperAbfrageBoolsollte”, t)): _ set (e, “bodyAbfrageBoolsollte”, r? o: [o]) , e} function addMust (e, o) {var t = _get (e, “bodyAbfrageBoolmust”, void 0), r = _isArray (o); return t? r? _set (e, “bodyAbfrageBoolmuss”, tconcat (o)) 🙁 tpresses (o), _ set (e, “KörperAbfrageBoolmuss”, t)): _ set (e, “bodyAbfrageBoolmust”, r? o: [o]) , e} function addMustNot (e, o) {var t = _get (e, “bodyAbfrageBoolmust_not”, void 0), r = _isArray (o); return t? r? _set (e, “bodyAbfrageBoolmust_not”, tconcat (o)) 🙁 tpresses (o), _ set (e, “KörperAbfrageBoolmust_not”, t)): _ set (e, “bodyAbfrageBoolmust_not”, r? o: [o]) , e} function addFilter (e, o) {var t = _get (e, “bodyAbfrageBoolfilter”, void 0); if (! _ isObject (o)) throws a new error (“filter query must be an object”); return t? _isArray (t)? (tpresses (o), _ set (e, “KörperAbfrageBoolfilter”, t)): _ set (e, “bodyAbfrageBoolfilter”, [_ cloneDeep (t), o]): _ set (e, “bodyAbfrageBoolFilter”, o) , e} Function addMinimumShould (e, o) {if (“number”! = typeof o) triggers a new error (“A number is required as a second argument”); return _set (e, “bodyAbfrageBoolMinimum_should_match”, o), e} function addSort (e, o) {var t = _get (e, “bodysort”); return _isArray (t) || _set (e, “bodysort”, t = []), tpush (o), e} function addSize (e, o) {if (! o&&0! == o) return e; if (o = parseInt (o), isNaN (o)) trigger a new error (`Second argument must be a number: $ {o}`); return _set (e, “bodysize”, o)} function addFrom (e, o) {if (! o&&0! == o) return e; if (o = parseInt (o), isNaN (o)) throw new Error (`Second argument must be a number: $ {o}`); return _set (e, “bodyfrom”, o)} function onlyWithTheseFields (e, o) {if (! _ isArray (o)) throws a new error (“The second argument must be an array”); return _set (e, “body_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: // $ {Öhost}`}}), e} Function within this SiteAndCrossposts (e, o) {var t = { term: {}}, r = {bool: {should: [], minimal_should_match: 1}}; return t term [“Crosspost” (ÖsubsiteSlug || oSchnecke)] =! 0, rBoolsolltedrücke (t), osubsiteSlug? rBoolsolltepush ({term: {subsite: osubsiteSlug}}) 🙁 rBoolsolltepush ({term: {site: oslug}}), addMustNot (e, {exists: {field: “subsite”}})), addFilter (e, r ), e} Function within thisDomainOrCrossposts (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: eingex, _type: “_ doc”, _ id: o}, include:! 1, min_term_freq: 1, max_query_terms: 12, min_doc_freq: 1}; return {more_like_this: assign object (r, t)}} function addAggregation (e = {}, o) {const {body: t = {}} = e; return o? (taggs? _set (e, “bodyaggs”, assign objects (taggs, o)): _ set (e, “bodyaggs”, 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`, []); Return r&& (i = iFilter (e => 0! == _ get (e, “doc_count”, 0))), imap (e => e [o] || “”)}} function addGeo (e, o ) {if (! _ isArray (o)) throws a new error (“The second argument must be an array”); if (2! == oLength) trigger a new error (“Array must be length 2”); if (oEinige (isNaN)) throw a new error (“Array may only contain numbers”); return _set (e, “body returnAbfragegeo_shapeStandortgestaltenTyp”, “Punkt”), _ set (e, “KörperAbfragegeo_shapeStandortgestaltenKoordinaten”, o), e} function combinFunctionScoreQueries (e, o) {let t = _cloneDeep (_get (e, “bodyAbfrage” {})), r = _cloneDeep (_get (o, “bodyAbfrage”, {})), s = _get (e, “bodysort”); return _set (e, “bodyAbfrage”, {}), _ set (e, “bodyAbfragefunction_scoreFätze”, []), eBodyAbfragefunction_scoreFunctionspush ({filter: t, weight: 20}), eBodyAbfragefunction_scoreFunctionspush ({filter: r, weight: 10} ), eBodyAbfragefunction_scorescore_mode = “max”, eBodyAbfragefunction_scoremin_score = 10, _isArray (s) || _set (e, “bodysort”, s = []), sDo not move ({_ score: “desc”}), e} function addNestedObjQuery (e, o, t) {if (! e) triggers a new error ( “There is no base query to perform the addNestedObjQuery operation”); if (! o) throw new error (“There is no nested object path on which the nested query can be executed”); if (! t) throw new error (“There is no nested query path on which the nested query can be executed”); return _set (e, “nested”, {path: o, query: t}), e} function addMatchAll (e) {return _set (e, “bodyAbfrage”, {match_all: {}}), e} module exported = newQuery , ModulExporteaddGeo = addGeo, ModulExporteaddAggregation = addAggregation, ModulExporteaddShould = addShould, ModulExporteaddFilter = addFilter, ModulExporteaddMust = addMust, ModulExporteaddMustNot = addMustNot, ModulExporteaddMinimumShould = addMinimumShould, ModulExporteaddSort = addSort, ModulExporteaddSize = addSize, ModulExporteaddFrom = addFrom, module exports only with These Fields = only with synthesis fields, module exports only within this Site = only within this site, module exports only within this domain = onlyWithinThisDomain, ModulExportwithin ThisSiteAndCrossposts = within ThisSiteAndCrossposts, ModulExportwithin ThisDomainOrCrossposts = within ThisDomainOrCrossposts, ModulExporteformatAggregationResults = formatformatAggregationResults, ModulExporte eThis = moreLikeThis, ModulExportekombinierenFunctionScoreQueries = combineFunctionScoreQueries, ModulExporteaddNestedObjQuery = addNestedObjQuery, ModulExporteaddMatchAll = addMatchAll;
}, {23: 23, 50: 50, 60: 60, 87: 87, 90: 90, 106: 106, 149: 149}];
Window modules [“1360”] = [function (required, module, export) {(function (process, __ file name) {(function () {
“use strict”; const _forEach = require (41), _ get = require (23), _ filter = require (133), _ map = require (50), _ isEmpty = require (86), urlParse = require (51), log = require (22) setup ({file: __ filename}), queryService = require (1359), universalRest = require (9), AGORA_HOST = windowProzessenvAGORA_HOST, AGORA_ELASTIC_PREFIX = WindowProzessenvAGORA_ELASTIC_PREFIX, AGORA_ENDPOINT =? AGORA_HOSTOINT =? `$ {AGORA_HOST} / api / v1`: null, requestHeader = {” Content Type “:” application / json “}, PRODUCTS_INDEX =” agora-products “, AFFILIATES_INDEX =” = “Retailer”, FILTER_KEY = {Dealer: “Name “, Partner:” Partner “}, 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: eLength, products: e})) catch (handleError (n ))} Function getProduct (e, t) {const r = `$ {AGORA_ENDPOINT} / products / $ {e}`; if (! AGORA_ENDPOINT) triggers a new error (“No Agora endpoint was set”)) ; if (“string”! = typeof e) throw new Error (“Request must specify 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 “, header: 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 “, header: 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 “, header: 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”, header: requestHeader}) then (handleResponse) catch (handleError (t))} function getMerchantList (e) {const {limit: t = 100, fields: r = “”} = e; Return promise resolve ([{name: “Amazon”}]) catch (handleError (“”))} function getMerchant (e) {const t = `$ {AGORA_ENDPOINT} / Merchants / $ {e}`; if (“string”! = typeof e) triggers a new error (“Request must provide a product ID”); return fetch (t) then (handleResponse) catch (handleError (t))} function patchMerchant (e, t) {const r = `$ {AGORA_ENDPOINT} / dealer / $ {e}`, a = {method: “PATCH” , Header: requestHeader, body: JSONstringify (t)}; return fetch (r, a) then (handleResponse) catch (handleError (r))} function postMerchant (e) {const t = `$ {AGORA_ENDPOINT} / Merchants`, r = {method:” POST “, header: 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 “, header: 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”, header: requestHeader}) then (handleResponse) catch (handleError (t))} function postLocale (e) {const t = `$ {AGORA_ENDPOINT} / locales /`, r = {Method: “POST”, header: 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 “, header: 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 a new error (e)} return t})} catch (e) {throw a 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 = “”, filter: s, locale: c}) {const n = queryService (PRODUCTS_INDEX), o = s&&Object key length? ObjectKeyFilter (e => ArrayisArray (s [e]) &&s [e] length): [], i = {}, u = {}; if (prependElasticPrefix (n), e || oLength || c || queryServiceaddMatchAll (n), c&& (queryServiceaddMust (i, {match: {“localesCountry”: c}}), queryServiceaddMustema (.dealerGranch: {“DealerCountry: {” DealerCountry) “: c}})), e) if (isURL (e)) queryServiceaddMust (n, [queryServiceaddNestedObjQuery ({},” Händler “, {match: {” HändlerbuyUrl “: e}})]); else {const t = {}; queryServiceaddShould (t, [{match: {“localesproductId”: e}}, {match: {“locale name”: {query: e, boost: 2}}}]), queryServiceaddMinimumShould (t, 1), queryServiceaddMust (i, _get (t, “body) query”))} if (oLength) {const e = {}; oforEach (t => {const r = s [t], a = FILTER_KEY [t], c = {}; a&& (c [`dealer) $ {a}`] = r, queryServiceaddShould (e, {terms: c }))}), queryServiceaddMinimumShould (e, 1), queryServiceaddMust (u, _get (e, “body) query”))} return _isEmpty (i) || queryServiceaddMust (n, [queryServiceaddNestedObjQuery ({}, “locales”, _ get (i, “bodyAbfrage”))]), _ isEmpty (u) || queryServiceaddMust (n, [queryServiceaddNestedObjQuery ({}, “Dealer”, _ get (u, “bodyAbfrage”))]), queryServiceaddSize (n, t), r> = 0&&queryServiceadd=From (n, r), “desc” a || “asc” === a? queryServiceaddSort (n, {updatedAt: {order: a}}): e&&queryServiceaddSort (n, {_ score: {order: “desc”}}), n} function prependElasticPrefix (e) {return eingex = AGORA_ELASTIC_PREFIX? `$ {AGORA_ELASTIC_PREFIX} _ $ {eingex}`: eingex, e} Function buildMerchantsAggregation (e = 1e6, t) {const r = queryService (PRODUCTS_INDEX); return prependElasticPrefix (r), queryServiceaddMust (r, {match: {active:! 0}}), t&&queryServiceaddMust (r, queryServiceaddNestedObjQuery ({}, “Dealer”, _ get ({matchServiceaddDMust ({} “, : t}}), “bodyAbfrage”))), queryServiceaddAggregation (r, {dealer: {nested: {path: “dealer”}, aggs: {name: {terms: {field: “dealer name”, size: e} }}}}), queryServiceaddSize (r, 0), r} function isURL (e) {URL_RE returned test (e)} function filterByLocale (e, t, r = {locales: “US”}) {const a = ArrayisArray ( e); if (_isEmpty (e)) returns a? []: {}; const s = [“locales”, “dealers”], c = a? e: [e], n = ObjectKey (r), o = _map (c, e => {const a = assign object ({}, e); _forEach (s, s => {if (ObjectKey (a) contains ( s)) {const c = t? _filter (e [s], [“Locale”, t]): e [s]; a [s] = c,! clength&&ncontains (s) && (a [s] = ( _ Filter (e [s], [“Locale”, r [s]]) || []) map (e => (eid = null, eLocalschema = t, e)))}}), aname = _get ( a, “locales [0] name”, “”), a}); return a&&oLength? o: _get (o, “[0]”, {})} function searchByQueryWithRawResults (e, t) {const r = `// $ {tpage? ˅Host} $ {80! == tpage? port? `: $ {tpage? ˅port} `:” “} $ {tpage? ˅path} / _ agora / _search`; return universalRestpost (r, e,! 0)} function buildMerchantsByUrlQuery (e) {const t = queryService (PRODUCTS_INDEX); return prependElasticPrefix (t), queryServiceaddNestedObjQuery (tBodyAbfrage, “Händler”, {match: {“HändlerbuyUrl”: 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, “TreffenTreffer”, []) map (e => _ get (e, “_ source”, {})))} function getRetailersByAffiliateId (e, t) {const r = queryService (RETAILERS_INDEX) ; return e? (prependElasticPrefix (r), queryServiceaddMust (r, [queryServiceaddNestedObjQuery ({}, “AffiliateRetailers”, {match: {“AffiliateRetailers” Affiliate-ID “: e}})]), queryServiceaddSize (r, 1e3), querySortdServic {name: “asc”}), searchByQueryWithRawResults (r, t) then (e => _ get (e, “HitTreffer”, []) map (e => _ get (e, “_ source”, {}) ))): PromiseReject ()} function getMerchantsList (e) {return searchByQueryWithRawResults (buildMerchantsAggregation (1e6, _get (e, “site) agoraLocale”)), e) then (queryServiceformatAggregationResults ({aggregation name: “dealer”, field Key “, subfield:” name “}))} function queryRetailersByUrl (e, t) {const r = urlParse (e) host split (” www “) join (” “), a = queryService (RETAILERS_INDEX); return queryServiceaddMust (a , {match: {Domains: r}}), prependElasticPrefix (a), queryServiceaddSize (a, 10), searchByQueryWithRawResults (a, t) then (e => _ get (e, “HitTreffer”, []) map (e => _ get (e, “_ source”, {}))}} require (207), moduleExpor te = {buildProductsQuery: buildProductsQuery, buildMerchantsAggregation: buildMerchantsAggregation, getProducts: getProducts, getProduct: getProduct, postProduct: postProduct, putProduct: putProduct, patchProduct: putProduct, getProduct, patchProductist, getMerProduct, getMerProduct, getMerProduct, getMerProduct, getMerProduct: getMerProduct, getMerProduct: , putMerchant: putMerchant, deleteMerchant: deleteMerchant, isURL: isURL, filterByLocale: filterByLocale, patch locale: patch locale, post locale: post locale, buildMerchantsByUrlQuery: buildMerchantsByUrlQuery, getAffiliatesByLocale: getAffiliatesByLocale, searchByQueryWithRawResults: searchByQueryWithRawResults, getRetailersByAffiliateId: getRetailersByAffiliateId, getMerchantsList: getMerchantsList, queryRetailersByUrl: queryRetailersByUrl};

}) call (this)}) call (this requires (11), “/ services / universal / agorajs)}, {9: 9, 11: 11, 22: 22, 23: 23, 41: 41, 50: 50 , 51: 51, 86: 86, 133: 133, 207: 207, 1359: 1359}];
Window modules [“1361”] = [Function (required, module, export) {“use strict”; const _map = require (50), _ mapValues ​​= require (202), _ reduce = require (89), _ assign = require (137), _get = require (23), _ pickBy = require (138), _ find = require (42), AffiliateFields = [“siteShortKey”, “pageUri”, “productId”, “utmMedium”, “utmSource”, “format”, “utmCampaign”, “referrer”, “deviceAbbreviation”, “zone”] , AffiliateSettings = {amazon: {Domains: [“amazoncom”, “amazoncouk”], subtagKey: “ascsubtag”, maxLength: 99, separator: “standard”, encode:! 1}, narrative: {Domains: [“shop-linksco /”], subtagKey: “u1”, maxLength: 99, separator: “standard”, encode:! 0}, rakuten: {Domains: [“clickLinksynergiecom / deeplink”, “linksynergyWalmartcom / deeplink”], subtagKey: “u1”, maxLength: 72, separator: “standard”, encode:! 1}, shareasale: {Domains: [“shareasalecom”], subtagKey: “afftrack”, maxLength: 99, separator: “standard”, encode:! 1}, Skimlinks: {Domains: [“goUmleitungcom”], subtagKey: “xcust”, maxLength: 50, separator: “old”, encode:! 1}, effect: {Domains: [], subtagKey: “subId2”, maxLength: 99, separator: “standard”, encode:! 1}, Avantlink: {Domains: [“Avantlinkcom”], subtagKey: “ctc”, maxLength: 64, separator: “old”, code:! 1}, cj: {Domains: [“tkqlhcecom”, “jdoqocycom”, “dpbolvwnet”, “anrdoezrsnet”, “kqzyfjcom”], subtagKey: “sid”, maxLength: 64, separator: “old”, code:! 1, joinBy: “/”, assignBy: “/”, positioned:! 0, position: “after”, positionKey: “type / dlg /”}, in partnership: {Domains: [“prfhn”], subtagKey: “pubref”, maxLength: 100, separator: “old”, encode:! 1, joinBy: “/”, assignBy: “:”, positioned:! 0, position: “before”, positionKey: “Ziel”}, Pepperjam: {Domains: [“gopjncom”, “pntraccom”, “pjtracom”, “pjatrcom”, “pntrscom”, “pntracom”], subtagKey: “sid “, maxLength: 100, separator:” old “, encode:! 1}, awin: {Domains: [“awin1com”], subtagKey: “pref1”, maxLength: 100, separator: “old”, 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”}, separator = {standard: [“[“, “]”], old: [“__” , “_”]}; Function parseValueFromSubtag (e, t, i) {const a = t [0] et [1], s = isplit (a) [1] || “”; return s? ssplit (t [0]) [0]: null} Function parseSubtag (e, t = LimiterStandard) {return _pickBy (_mapValues ​​(subtagDictionary, i => parseValueFromSubtag (i, t, e)))} Function generateSubtag (e , t, i = LimiterStandard, 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 * (eDivided (“,”) length-1 esplit (“|”) length-1); Returns 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, local: 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] = esplit (t), u = `$ {i} $ {o} $ {s}`, g = []; if (“after” === a) {if (! l) return e; const [a, s = “”] = lsplit (`$ {i} $ {o}`), d = ssplit (n) slice (1) join (n); gpush (`$ {r} $ {t}`, u), a&&gPress (a), d&&gpush (d)} if (“before” === a) {const [e, a = “”] = rsplit ( `$ {i} $ {o}`), s = asplit (n) slice (1) join (n); gPress (e), s&&g press (s), gpush (u, `$ {t} $ {l}`)} return greduce ((e, t) => {return eSlice (-1) === n&& (e = eScheibe (0, -1)), eLength? [e, t] join (n): t}, “”)} Function processSubtag ({getters: e, Affiliate: t, URL: i, visitState: a = { }, Locals: s}) {const n = AffiliateFields, o = _get (AffiliateSettings [t], “subtagKey”), r = _get (AffiliateSettings [t], “maxLength”), l = _get (AffiliateSettings [t], “encode”), u = _get (AffiliateSettings [t], “separator”), 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 = delimiter [u]; let b, y, S = iindexOf (“?”)> = 0? iTeils (“?”) pop (): “”, h = parseQuery (S), _ = getSubtagData ({getter: e, fields: n, visitState: a, local: 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 = ObjectKey (AffiliateSettings); Return _find (t, t => _ find (AffiliateSettings [t]) domains, t => eincludes (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, Locals: a}): “”} ModulExportegenerateSubtag = generateSubtag, ModulExportegetAffiliate = getAffiliate, ModulExportecreateSubtagProcessor = createSubtagProcessor, ModulExporteproubtag = processSubtag;
}, {23: 23, 42: 42, 50: 50, 89: 89, 137: 137, 138: 138, 202: 202}];
FensterModule [“Artikel-Naviclient”] = [Function (required, module, export) {“use strict”; const dom = required (3), _ throttle = required (37), $ visibility = required (4), $ popup = required (53), $ gtm = require (2), {reportSocial: reportSocial} = require (52) , auth0 = require (12); module exported = (t => {let e = domfind (“page header”), i = domfind (“article content”), o = domfind (t, “deepscroll-headline”), r = domfind (t, “deepscroll-rubric” ), l = domfind (t, “deepscroll-rubric-sponsored”), s = domfind (“article article header rubric”), n = domfind (“# deepscroll_center_divider”), a = domfind (“tone paragraph”) , d = domfind (t, “Logo”), c = domfind (t, “Dyn-Cut-Logo”), p = domfind (t, “article-nav-top”), u = domfind (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, “Share a link Facebook”), w = domfind (t, “Share a link twitter”), v = domfind (t, “Share a link pinterest”), b = tclassListenthalt (“header-simple”), x = windowgetComputedStyle (d, null) getPropertyValue (“- targetFlexBasis”), L = window getComputedStyle (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 = $ visibility getViewportWidth ()> = 1180? -FenstergetComputedStyle (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 () above) / _, n = Mathmax (0, Mathmin (1, s)), m = LC-2, f = Mathrund (L- (m * n 2)), g = MathCeil (rl * n); if (st? eclassListadd (“Header-after-Scroll”): eclassListentfernen (“Header-After-Scroll”), pStiltop = C “px”, uStiloben = C “px”, void (dStilflexBasis = x “px”)} WindowScrollY> o? TclassListadd (“after-scroll”): tclassListEntfernen (“After-Scroll”), WindowScrollY> o? EclassListadd (“Header-after-Scroll”): Remove eclassList (“Header-After-Scroll”), pStiltop = f “px”, uStiltop = f “px”, dStilflexBasis = g “px”, c&& (cStilflexBasis = g “px”), $ VisibilitygetViewportWidth ()> = 1180&&i&&i&CHAR&i& =) -70: 0, e = $ Visibility getPageOffset (i) above, o = Mathemax (e, t); return Mathmax (WindowScrollY, DocumentBodyScrollTop)> = o} ()? TclassListadd (“deep-scroll”): tclassListremove (“deep -scroll “)} Function V (t) {var e = tcurrentTarget, i = egetAttribute (” href “), o = egetAttribute (” data handle “), r = $ popupgetPopupClass (eclassList), l = $ visibilityisBelowPrimaryConten t (e)? “bottom”: “top”; $ gtmreportNow ({Event: “Social-Share-Widget”, clickLocation: l, socialNetwork: r}), reportSocial (r), $ VisibilitygetViewportWidth ()> = 768&&r&& (tverhindereDefault, o, iow) (rhindereDefault (), $ popupp) )}! function () {const e = _throttle (P, 30); if (k (), domfindAll (t, “Share a 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) “encodeURIComponent (h)” &_CutCutCutCUTCARCHAR = tCutCampECHARurLSSE-medium = “f” = “wgetAttribute (” Datenhandle “)), v&& (vhref =” http: // pinterestcom / pin / create / button /? url = “f”? utm_source = pin&utm_medium = s3&utm_campaign = sharebutton-tCampaign = sharebutton-tCSSONENTCHUR) ” &media = “g), b) return; auth0on (“init”, () => {auth0isSubscriber () &&tclassList add window (“subscribed”)}) addEventListener (“scroll”, e), window addEventListener (“resize”, S), window addEventListener (“resize”, k) s? sclassListenthalt (“Rubric-Sponsor-History”) &&l? (rclassListenen (“visible”), lclassListadd (“visible”), ltextContent = sText || stextContent) 🙁 rtextContent = sText || stextContent, rhref = shref || “#”) 🙁 nStildisplay = “none”, rStildisplay = “none”); S (), otextContent = h} ()});
}, {“2”: 2, “3”: 3, “4”: 4, “12”: 12, “37”: 37, “52”: 52, “53”: 53}];
FensterModule [“Navi-Such-Buttonclient”] = [Function (required, module, export) {“use strict”; const dom = require (3), $ gtm = require (2), {reportSearch: reportSearch} = require (52), openClass = “open”, closeClass = “closed”; Module exported = (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”); switch sclassList (closeClass), switch sclassList (openClass), switch eclassList (“deactivated”), switch eclassList (“search active”)} Function c () {i (), sclassListenthalts (openClass) &&ofocus ()} Function a (e) {! senthalts (eZiel) &&sclassListenthalts (openClass) &&i ()} Function r (e) {27 === ekeyChAR&i ()} Function r (e) {27 === ekeyCAR&i () Function r (e) {27 === ekeyCANDCHARANDCSSE} Function r (e) {27 === ekeyCandCodeCSSE (e) {everhindereDefault (), $ gtmreportCustomEvent ({category: “search”, label: “on =” windowStandorthref, action: ovalue}), reportSearch ((ovalue || “”) split (“”), () = > nsubmit ())}! function (e, s, t) {s&&saddEventListener (“click”, c); t&&taddEventListener (“submit”, d); eaddEventListener (“clic k “, a), document addEventListener (” keydown “, r), eaddEventListener (” touchend “, a), naddEventListener (” submit “, d)} (domfind (” body “), t, domfind (e,” nav- search-form submit “))});
}, {“2”: 2, “3”: 3, “52”: 52}];
FensterModule [“Navi dropdown button client”] = [Function (required, module, export) {“use strict”; const dom = required (3), visibility = required (4), {reportSearch: reportSearch} = required (52); Function getNextSchildren (e) {const t = []; let i = e; for (; i = inextElementSibling;) tpush (i); return t} function getMainChildren (e, t) {let i = [], n = efirstChild; for (; n = nnextElementSibling;) ncontains (t)? nisSameNode (t) || (i = iconcat (getMainChildren (n, t))): ipush (n); return i} function isMobile () {return visibility getViewportWidth () {let t; const i = equerySelector (“nav-dropdown-button-trigger”), n = domfind (“body”), o = domfind (“above”), l = domfind (“confetti list”), s = domfind (” nav-dropdown-button_nymag-homepage “), r = domfind (” headerSeitenkopf “) || o, c = domfind (‘[data-editable = “main”]’), a = domam next (e, “page header”), d = a? aquerySelectorAll (“Confetti image blue”): “”, g = a? aquerySelectorAll (“confetti image green”): “”, u = a? aquerySelectorAll (“confetti image orange”): “”, f = a? aquerySelectorAll (“Konfetti-Bildorange2”): “”, m = a? aquerySelectorAll (“Confetti-Bildpink”): “”, p = a? aquerySelectorAll (“confetti image purple”): “”, h = a? aquerySelectorAll (“Confetti-Bildgelb”): “”, y = equerySelectorAll (“dropdown-nav-search-form”); Function b (e) {let t = ecurrentTarget, i = tquerySelector (“nav-search-input”), n = i? iValue split (“”): []; everhindereDefault (), reportSearch (n, () => tsubmit ())} iaddEventListener (“click”, () => {initializeHeight (e), v ()}); for (let e = 0, t = ylength; e (function (e) {remove eclassList (“c-right”, “c-right down”, “c-left”, “c-left down”)}) (e ))}, 500)} ()) 🙁 isetAttribute (“aria-expanded”, “true”), t = windowscrollY), toggle eclassList (“closed”), toggle eclassList (“open”), n toggle classList toggle (“deactivated”), a&&eisSameNode (s)? function () {if (ocontains (e)) {const e = getMainChildren (o, s); S (e), w (o)} if (centhalt (e)) {const e = getMainChildren (c, s); Switching oclassList (“hidden component”), w (c), S (e)} Switching eclassList (“open-mobile”)} (): a&&! y&&r&& (w (r), function () {const i = eclassListenthalt (“open”)? 0: t; Window ScrollTo ({top: i})} ())} Function w (e) {S (getNextS Siblings (e ))} Function S (e) {eforEach (e => {eclassListumschalt (“hidden component”)})} naddEventListener (“click”, t => {! Econtains (tTarget) &&eclassListcontains (“open”) &&v ()} ), Document addEventListener (“keydown”, t => {27 === tkeyCode&&eclassListener (“open”) &&v ()})});
}, {“3”: 3, “4”: 4, “52”: 52}];
FensterModule [“follow client”] = [function (required, module, export) {“use strict”; const _find = require (42), $ popup = require (53); DScontroller (“follow”, [function () {function e (e) {thisel = e, dashandle = egetAttribute (“Datenhandle”)} return eprototype = {events: {click: “openFollow”}, openFollow: function (e) {var t, n, a = $ popupPosition, o = $ PopupParameter, l = {}, r = {w: 780, h: 500}, s = new a (rw, rh), c = dieselclassList; lhandle = thisGriff , rlinks = slinks, rtop = 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: // feedsFeedburnercom / {handle}”, network: “RSS”}, {class name: “Twitter”, URL: “https: // Twittercom / intent / follow? screen_name = {handle } &tw_p = followbutton&variant = 20 “, network:” Twitter “}, {class name:” Snapchat “, URL:” https: // wwwSnapchatcom / remove / {handle} “, Network: “Snapchat”}], function (s) {return centcontains (eKlassenname)}), lurl = nURLersetzen (“{handle}”, lGriff), lNetzwerk = nNetzwerk, lname = “Follow” lGriff “to” lNetzwerk, t = new o (l, r), window open (tAddress, tName, tFeature), ePreventDefault ()}}, e}]);
}, {“42”: 42, “53”: 53}];
FensterModule [“Comment-Linkclient”] = [Function (require, module, export) {“use strict”; const dom = require (3), _ get = require (23), _ isFinite = require (109), ajax = require (108); DScontroller (“comments link”, [function () {var t, e = “http: //” document documentElementgetAttribute (“data-uri”) “html”; function n (n) {var o; (thisel = n, dascoral_talk_root = ngetAttribute (“data-coral-talk”), diescommentCount = domfind (n, “comment link number”), diescommentText = domfind (n, “comments link text”), diesisNavVariation = nclassListenthalt (“comment- link_article-nav “), diescutoffCnt = ngetAttribute (” data-cutoffCnt “) || 1e3, t =` $ {thiscoral_talk_root} / api / v1 / graph / ql`, diesshouldRenderCommentStream ()) &CountEANDCHAR (o = thisFetchedCommentConnect AjaxsendReceiveJson ({method: “GET”, URL: t ‘? Query = {Asset (URL: “‘ e ‘”) {totalCommentCount}}’, data type: “json”}, function (t, e) {var n = _get (e, “DatenAnlageguttotalCommentCount”, 0); return t? o (t): _ isFinite (n)? void o (null, n): o (“Unexpected Coral Talk response”)})}} return nPrototyponCommentCountFetched = Function (t, e) {if (t) return console warning (t); e> 0CS SEANDCHAR& (thisisNavVariation&&e1? “s”: “”), thiselclassListremove (“no comments”))}, nPrototypeshouldRenderCommentStream = function () {return-1! == eingexOf (“@published”)}, n}]);
}, {3: 3, 23: 23, 108: 108, 109: 109}];
WindowModule [“head-gtmclient”] = [Function (required, module, export) {“use strict”; const {getCLS: getCLS, getFID: getFID, getLCP: getLCP} = require (141), isProduction = require (10) (); function reportWebVitals (e) {isProduction || Console log (“reportWebVitals:% O”, e); const t = “string” == typeof eName? eNametoUpperCase (): eName; Window DataLayer = Window DataLayer || [], FensterdataLayerpush ({event: “analysisEvent”, 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: “beacon”})} getCLS (e => {eDelta = Mathrund (1e3 * eDelta), reportWebVitals (e)}), getFID (e => {eDelta = Mathrund ( eDelta), reportWebVitals (e)}), getLCP (e => {eDelta = Mathrund (eDelta), reportWebVitals (e)});
}, {“10”: 10, “141”: 141}];
WindowModule [“Concert Advertising Client”] = [Function (required, module, export) {“use strict”; const customMappings = {“Crime-Assault”: “Power”, “Career-Money-Productivity”: “Power”, “Feminism-Politics-Identity”: “Power”, “Culture Media”: “Culture”, Celebrity: “Culture.” “, Living:” style “, fashion:” style “, shopping:” style “, weddings:” style “, beauty:” style “, animals:” self “,” learning creativity “:” self “,” relationships- Friends family “:” self “,” mental health personality social behavior “:” self “,” learning creativity “:” self “,” health-wellness “:” self “, parenting:” self “,” relationships-sex- Dating marriage “:” Self “}, striptags = require (54); Function installConcertAds () {const e = new URLSearchParams (window location search) get (“konzert_config_url”), t = e || window concertConfigUrl; Window_nymPermutive || Console warning (“ConcertAds is initialized without Permutive”), Window ConcertAds = createConcertAds (), Window ConcertAdsloadRemoteConfig (t) then (function () {windowkonzertAdsinstall ()})} Function createConcertAds () {const e = getAuthStatus (); let t = getData (“title”), n = windowStandorthref, i = getData (“section”), r = “”, a = getData (“type”), o = getData (“vertical”); t&& (t = Striptags (htmlDecode (t))) split (“”)), n = nSchibe (n Slice) lastIndexOf (“/”) 1); const l = {kw: getKeywords (), network: o, page type: a, entry group: i, keywords: t, pn: n}; Return “Homepage” === a? r = “homepage”: “Section Page” === a&& (r = (r = windowLocationPathname) Replace (/ // g, “”)), i&&-1 === iindexOf (“”) && (r = i), customMappings [i] && (r = customMappings [i]), window location hostname game (/ aws / i) && (lClay_sandbox_env = o), new windowConcertAds ({cmd: [], slots: [] , slugPath: “/” rreplace (/ – | – / g, “-“), logged in: “not authenticated”! == e, paywallActive: getPaywallStatus (e)})} function getKeywords () {try {const e = window_nymPermutiveArticleKeywords; Return of e&&eLength> 0? e: (DocumentquerySelector (‘meta [name = “keywords”]’) || documentquerySelector (‘meta [property = “article: tag”]’)) getAttribute (“content”) splits (“,”) map (function ( e) {return etrim ()})} catch (e) {return}} function getData (e) {if (window_nymPermutive) {if (e in window_nymPermutive) return window_nymPermutive [e]; if (window_nymPermutivearticle&&e im Fenster_nymPermutiveArtikel) return window_nymPermutiveArtikel [e]; if (window_nymPermutiveuser&&e in window_nymPermutiveUser) return window_nymPermutiveUser [e]}} Function htmlDecode (e) {var t = document createElement (“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; return t? thas_subscription? “with the title”: “unentitled”: “not authenticated”} function getPaywallStatus (e) {const t = getData (“totalCount”) || 0; return Boolean (t> = 3&& “with the title”! == e)} WindowConcertAds? InstallConcertAds (): Window addEventListener (“konzertAdsReady”, installConcertAds);
}, {“54”: 54}];
WindowModule [“Latest News Client”] = [Function (required, module, export) {“use strict”; const dom = require (3), lazyLoad = require (95); Function lazyLoadImage (a) {const o = domfind (a, “img [data-src]”), d = domfindAll (a, “source [data-srcset]”), e = domam next (a, “result”) ; if (o&&e) {new lazyLoadLazyLoader (e, o, d) init ()}} function handleLazyLoad (a) {(domfindAll (a, “result”) || []) forEach (lazyLoadImage)} module exported = (a => {handleLazyLoad (a)});
}, {“3”: 3, “95”: 95}];
WindowModule [“Coral-Talkclient”] = [Function (required, module, export) {“use strict”; const dom = required (3), store = required (115), visibility = required (4), auth0 = required (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 = windowKoralleSichamtichrendern (ecommentStreamContainer, t)}} Function getAuthToken (e) {var t = e&&e [“http: // nymagcom / coral_talk”] || auth0getTalkJwt (), i = save get (TALK_AUTH); return t? i&&t == i? i: (storeset (TALK_AUTH, t), t) 🙁 i&&storeremove (TALK_AUTH), null)} function coralLogin () {coralEmbedlogin (getAuthToken ())} function embeddedScript (e, t) {let i = documentcreateElement (“script” ” ); itype = “text / javascript”, iasync =! 0, isrc = e, iaddEventListener (“load”, () => {hasEmbedScriptLoaded =! 0, renderComments (t)}), documentgetElementsByTagName (“head”) [0] appendChild (i)} function initVerificationMessage () {auth0isAuthenticated ( ) &&auth0refresh (); let e = documentquerySelector (“coral-talk-container”); auth0isAuthenticated () &&! auth0isEmailVerified () && (einsertAdjacentHTML (“beforebegin”, ‘ n n Please check your account to enable commenting. You haven’t received a confirmation email? Please resend the email now n’), DocumentquerySelector (“activation link”) addEventListener (“click”, sendVerificationEmail))} function sendVerificationEmail () {let e = documentquerySelector (“coral-talk-verify-address”); return fetch (`https: // $ {windowStandorthost} / _ user / verification-email? user_id = $ {auth0getUserID ()}`, {method: “GET”, header: {“Content-Type”: “application / json “}}) then (e => e) then (t => {t&&200 == tStatus? einnerHTML =” Confirmation email was sent successfully “: einnerHTML =` $ {tstatusText} `}) catch (e => Console log (e))} Function tryScriptEmbedding (e, t) {initVerificationMessage (), hasEmbedScriptLoaded? renderComments (t): embeddedScript (tEMBED_URL, t)} function addVisibilityListener (e, t) {new VisibilitySichtbar (e, {pretoadThreshold: 750}) on (“Preload”, () => tryScriptEmbedding (e, t))} function removeSignInButton (e) {e&&eparentNode&&domremoveElement (e)} function init (e) {const t = egetAttribute (“data coral talk host”), i = `$ {t} / static / embeddedjs`, n =` http: // $ {documentdocumentElementgetAttribute (“data-uri”)} html`, a = “true” === egetAttribute (“data maintenance”), o = -1! == nindexOf (“@ published”), r = equerySelector (“Korallen-Talk-Container”), s = equerySelector (“coral-talk-btn-signin”), c = {CORAL_TALK_HOST: t, EMBED_URL: i, commentStreamContainer : r, signInButton: s, TALK_ASSET_URL: n} ;! on (“init”, () => {addVisibilityListener (e, c), saddEventListener (“click”, () => auth0showLogin ()), auth0isAuthenticated () &CSSEANDInCHARremove (s)}), auth0on (“login”, t => {removeSignInButton (s), getAuthToken (t), VisibilityisElementInViewport (e) &&attemptScriptEmbedding (c), hasCoralTalkRendered&&on (), logout (), > {storeRemove the module (TALK_AUTH)}))} Exports = Init;
}, {3: 3, 4: 4, 12: 12, 115: 115}];
WindowModule [“Choreographer Client”] = [Function (required, module, export) {“use strict”; const cookie = required (40), _ get = require (23), _ omit = require (80), {insertSpeedBumpComponents: insertSpeedBumpComponents} = require (76)), {insertNewsletterSpeedBumpComponents: insertNewsletterSpeedBumpComponents} = require (77), {generateGrowl: generateGrowl} = require (78), gtm = require (2), {getLocalStorage: getLocalStorage, setLocalStorage: setLocalStorage} = require (14), {reportPaywall} = require (52), moment = require (24), {getClientHistory: getClientHistory , updateClientHistoryWithPageData: updateClientHistoryWithPageData} = require (79), 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 (“Authorization”! == eShare (“#”) pop ()) return; const t = _get (window “dataLayer [0] userDetails”, {}), o = _get (window, “dataLayer [0] pageDetailsfeatureTypes”, “”), n = o contains (“magazine”)? “Magazine”: “”, r = o contains (“Feature”)? “Featured”: “”, i = “Value of the article:” (n || r || “Article”), a = _get (JSONparse (localStoragegetItem (“auth0: profile”)), “http: // nymagcom / app_metadata “), l =” Authentication status: “(a?” authenticated “:” not authenticated “), c =” Authorization status: “(!! a&&ahas_subscription?” with the title “:” unentitled “), s = Object key (_omit (t, “newYorkMediaUserID”)) map (e => `$ {e}: $ {t [e]}`), d = documentBody, g = documentcreateElement (“div”), u = documentcreateElement (“ul”) ; [i, l, c, s] map (e => {const t = documentcreateElement (“li”); return tclassListadd (“debug-item”), tappendChild (document createTextNode (e)), t}) forEach (e = > {uappendChild (e)}), uclassListadd (“data balls”), gclassListadd (“debug choreographer”), gclassListadd (“display-debug-data”), gappendChild (u), dappendChild (g)} function initializeChoreographer (e ) {const t = egetAttribute (“data-site-slug”), o = pageShouldCountAsView (t), n = auth0isSubscriber (); return t? getClientId (cidKey, 8e3) then (e => (Logger) h1 (“Choreographer initialized”), Loggerlog (`clientId: $ {e}`), loggerlog (`Page counts as a view: $ {o}`), Window symViewsResponse || (o? updateClientHistoryWithPageData (e, t): getClientHistory (e))) then (r => {if (Logger) group (), Loggerh2 (“Client History”), LoggerTable (r), LoggergroupEnd (), isNCR ()) return; const {scenarios: i, touts: a, testCohort: l = “”} = readJSONFromScript (equerySelector (“script”)); if (! (l === (documentBodyDatet [TEST_COHORT_FLAG] || “”))) return; const c = iCard (e => Assign scenario (object) ({}, e, {History: r, siteSlug: t, isSubscriber: n}))) Filter (e => (Loggergroup (), Loggerh2 (“Evaluate scenarios “), Loggerlog (e), LoggergroupEnd (), it should show)) reduce ((e, {action: t, min: o, number: n}) => {const r = afind (({value: e}) => e === t); return r? (e [rTyp] = r, e [rArt] viewCount = no, e): e}, {}); Loggergroup (), Loggerh2 (“Active Touts”), Loggerlog (c), LoggergroupEnd (), executeTouts (e, o, c, r)}) catch (console error): console error (“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 executeTouts (e, t, o = {}, n) {const {global: r} = n, i = {featureArticleCount: rFeature || 0, magazineArticleCount: rMagazin || 0, standardArticleCount: rArticle || 0, totalArticleCount: rtotal || 0}; if (o [“Speed-Bump”] &&insertSpeedBumpComponents (findTemplate (e, “Speed-Bump”), o [“Speed-Bump”], i), o [“Newsletter-Speed-Bump”] &&insertNewsletterSpeedBumpComponents (e , “Newsletter-Speed-Bump”), o [“Newsletter-Speed-Bump”], i), o [“branded-growl”]) return loggerlog (“should show branded growl”), void growlManager (findTemplate ( e, “Brand-Growl”), {baseTrackingData: i, body: o [“Brand-Growl”] brandedGrowlBody, contentClass: “branded-content”, cta: 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, toutType:” 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 (Fenster_nymGtmPageTags)? void (isProduction&&loggerlog (“Content Cliff No-Op due to excluded tag match:”, Fenster_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 growls”]); else {if (! o [“warning-growl-2”]) return o [“warning-growl”] &&shouldWarn ()? (setContentCliffWarningDisplayed (), Loggerlog (“should show warning”), void growlManager (findTemplate (e, “warning-growl”), {contentClass: “warning-content”, title: o [“warning-growl”] warningGrowlTitle, name : o [“Warning-growl”] name, scrollDepth: o [“warn-growl”] warningGrowlScrollDepth, cta: o [“Warning-growl”] warningGrowlCTA, body: o [“Warning-growl”] warningGrowlBody, Link: o [“Warning growl”] warningGrowlLink, baseTrackingData: i, toutType: “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”] promoGrowlData, baseTracking : i, toutType: “promo growl”}, “# growl-message”)}} Functi on 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 = getContentCliffWarningStand; e, “true”)} function growlManager (e, {contentClass: t, scrollDepth: o, name: n, title: r, body: i, cta: a, link: l, baseTrackingData: c, toutType: s, 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 document createRange () createContextualFragment (e)} (), p = {Creative: i, ID: s, Name: n, Position: “Growl”}; uquerySelector (“a”) addEventListener (“click”, () => PromotionReport (“Click”, c, p)), generateGrowl (e.g. B. {content: u, scrollDepth: o, onShow: () => doctoral report (“View”, c, 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: iMagazin || 0}, {contentCliffBody: l} = t, c = DocumentimportNode (e,! 0) querySelector (“content cliff”), s = DocumentquerySelector (“Article content> sound paragraph”), d = {Creative: l, ID: ” Content Cliff “, Name:” Content Cliff “, Position:” In-Article “}; c&& (sinsertAdjacentHTML (“afterend”, cOuterHTML), 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 / v152 / indexhtml”}), a = eTyp, l = {E-Mail: auth0getEmail (), isAuthenticated: auth0isAuthenticated ( ), isSubscriber: auth0isSubscriber ()}; add nclassList (a), icheinmal (“frame: ready”, () => {isendMessage (“tout: show”, {readerState: l, toutType: a, toutData: e}), r&&isendMessage (“frame: height”) }), ion (“tout: visible”, () => {PromotionReport (“View”, t, o)}), ion (“tout: sign-in”, () => {auth0showLogin (FensterStandorthref)}) , ion (“tout: dismissed”, () => {nclassListAdd (“dismissed”), ichsendMessage (“tout: hide”, {toutType: a, toutData: e})}), ion (“tout: subscribe”, () => {ectaLink = replaceQueryParams (ectaLink), PromotionReport (“click”, t, o), window open (ectaLink, “_ ​​blank”)}), iein (“frame: height”, e => {nStilheight = `$ {eNutzlastcurrentHeight 10} px`}), ion (” tout: view-account “, () => {windowStandorthref =” https: // subsNymagcom / account “})} Function promotion report (e, t, o) { const {creative: n, id: r, name: i, position: a} = o; tevent = `eecFörderung $ {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 growling “, Name:” Baby growling “, Position:” Growling “}; DocumentBody AppendChild (n), octaLink = obabygrowlCtaLink, octaText = obabygrowlMessage, oÜberschrift = obabygrowlDescription, verdonFosseToutSetter (o, t, r, n)} Function cliffTakeover (e, t, o) {const {cliffTakeLink: riffover, cliffTake: cliffCTA: nDover: n i, cliffTakeoverImage: a, cliffTakeoverPromo:: s} = o, d = Document ImportNode (e,! 0) querySelector (“Paywall Reader Interface”), g = DocumentquerySelectorAll (“Sound Paragraph”), u = {Creative: l, ID: “Content Cliff”, Name: “Content Cliff”, Position: “Growl”}, p = {cta: n, ctaLink: r, Description: i, Image: a, Promo: l, Status: c, Type: s}; DocumentKkörperappendChild (d), gforEach ((e, t) => {0! == t&&eremove ()}), verdonFosseToutSetter (p, t, u, d,! 0), documentquerySelector (“html”) StiloverflowY = “hidden” , DocumentBodyStyle position = “fixed”} Function warningGrowl (e, t, o) {const {Type: n, warningGrowl2CTA: r, warningGrowl2CtaLink: i, warningGrowl2Description: a, warningGrowl2Image: l, warningGrowl2Promo: c, warningGrowl2Status: s} = o, d = DokumentimportNode (e,! 0) querySelector (“paywall-reader-interface”), g = {Creative: c, ID: “Warnnurren”, Name: “Warnnurren”, Position: “Growlen”}, u = {cta : r, ctaLink: i, description: a, image: l, promo: c, status: s, type: n}; DocumentBody AppendChild (d), verdonFosseToutSetter (u, t, g, d,! 0)} Function getClientId (e = “”, t = 8e3) {let o = cookieget (e); return o? Promise resolution (o): new promise ((o, n) => {const r = setTimeout (() => {n (`Key could not be found: $ {e} on cookie after $ {t} ms`)} , t); Window addEventListener (cidReadyEvent, () => {clearTimeout (r), o (Cookie) get (e))})})} Function readJSONFromScript (e) {try {return JSONAnalyse (einnerHTML)} catch (e) {return {touts: [], scenarios: []}}} function findTemplate (e, t = “”) {const o = e&&equerySelector (`[data-template-id =” $ {t} “]`); returns o&&oContents} Function isNCR () {return / [? &] source = ncr / Test (location search)} Function brandedTakeoverTime (e) {const {startTime: t, endTime: o, startDate: n, endDate: r} = e, i = nconcat (“”, t), a = rconcat (“”, o), l = moment (i), c = moment (a); Return moment () isBetween (l, c)} function optimizeDebugger () {return new promise (e => {const t = windowLocation search || “”; if (t) {const o = new URLSearchParams (t), n = oget ( “Optimize-Attribute-Name”) || “”, r = oget (“Optimize-Attribute-Value”) || “”, i = oget (“Optimization delay”) || 0, a = oget (“Optimize-Cookie “) ||! 1; setTimeout (() => {a&& (document cookie = randomNymcid ()), document body set attributes (` data – $ {n} `, r), e ()}, i)} else e ()} )} function randomNymcid () {return`nymcid = $ {(() => ([1e7] – 1e3 -4e3 -8e3 -1e11) Replace (/ / g, e => (e ^ 16 * crypto) getRandomValues (New Uint8Array (1)) [0] >> e / 4) toString (16) [0])) ()} `} function replaceQueryParams (e) {const t = windowLocation search || “”; if (t) {const o = new URLSearchParams (t); if (econtains (“?”)) {const t = esplit (“?”), n = new URLSearchParams (t [1]); for (let e of oEntries ()) nset (e [0], e [1]); e = `$ {t [0]}? $ {ntoString ()} `} else e =` $ {e}? $ {otoString ()} `} return e} Module exported = (e => new promise (e => {auth0on (” init “, () => {e ()})}) then (() => optimizeDebugger ( )) then (() => {displayDebug (FensterStandorthref), initializeChoreographer (e)}));
}, {2: 2, 10: 10, 12: 12, 14: 14, 23: 23, 24: 24, 40: 40, 52: 52, 73: 73, 74: 74, 75: 75, 76: 76, 77: 77, 78: 78, 79: 79, 80: 80 Content-Cliffclient “:” content-cliffKlient “}];
FensterModule [“Speed-Bumpclient”] = [Function (required, module, export) {“use strict”; const gtm = required (2), visibility = required (4); Module exported = ((e, i) => {if (! I ||! E) return; const {name: o, speedbumpDescription: r, speedbumpMessage: t, speedbumpLink: n, baseTrackingData: s} = i, c = new VisibilitySvisible (e, {shownThreshold: 5}); equerySelector (“Description”) innerHTML = r, equerySelector (“Promo-Link”) innerHTML = t, equerySelector (“Promo-Link”) href = n, eclassListentfernen (“collapsed” ), con (“shown”, function () {if (VisibilityisElementNotHidden (e)) {let e = s; eevent = “eecPromotionView”, eecommerce = {promoView: {Promotions: [{Name: o, Creative: r, ID : “Speed ​​Bump”, Position: “In-Artikel”}]}}, gtmreportNow (e), cdestroy ()}}), equerySelector (“Promo-Link”) addEventListener (“click”, function () { let e = s; eevent = “eecPromotionClick”, eecommerce = {promoClick: {Promotions: [{Name: o, Creative: r, ID: “Speed ​​Bump”, Position: “In-Article”}]}}, gtmreportNow (e)})});
}, {“2”: 2, “4”: 4}];
FensterModule [“Newsletter-Speed-Bumpclient”] = [Function (required, module, export) {“use strict”; const {loadRecaptcha: loadRecaptcha} = require (107), _ isEmpty = require (86), _ set = require (106), _ kebabCase = require (81)), gtm = require (2), auth0 = require (12) , Visibility = require (4), COMPONENT_NAME = “Newsletter-Speed-Bump”, EMAIL_VALID_REGEX = / ^ (?: (?: [^ () [] \,;: s @ “] (?: [^ () [] \,;: s @ “]) *) | (” “)) @ (?: (?: [[0-9] {1,3} [1, 3] {1,3} [1,3] {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, `varsQuelle _ $ {t}`, `$ {COMPONENT_NAME} _ $ {s}`), nE-Mail = r, nListen = {}, nlistet [t] =! 0, nrecaptcha = e, nsignuppage = `$ {documentStandorthref} _ $ {t}`, n [`source _ $ {t}`] = “newsleter_speedbump”, n} Module exported = ((e, t) => {if (! t ||! e) return; if (“success” === window local storage getItem (`$ {LOCAL_STORAGE_KEY_NAME} $ {tnewsletterSpeedBumpNewsletterId}`)) return void eremove (); const {baseTrackingData: r, name: s, newsletterSpeedBumpCopy : n, newsletterSpeedBumpDescription: i, newsletterSpeedBumpHeadline: a, newsletterSpeedBumpNewsletterId: o, newsletterSpeedBumpThankYouMessage: c, RECUT__getEmail (), d = equerySelector (“Description”), p = equerySelector (“IncomingE-Mail”), error message ), h = equerySelector (“Form”), E = equerySelector (“Form-Container”), y = equerySelector (“form-recaptcha-container”), g = equerySelector (“Heading”), v = equerySelector (“Container “), S = equerySelector (” Incoming newsletterId “), _ = equerySelector (” recaptcha-wrapper “), L = equerySelector (” Incoming submit “), w = equerySelector (“TextContainer”), q = new VisibilityVisible (e, {shownThreshold: 5}); u&& (premoveAttribute (“required”), eclassListadd (“logged in”)), dinnerHTML = i, ginnerHTML = a, SValue = o, LValue = n, qon (“shown”, function () {if (VisibilityisElementNotHidden (e)) {const e = r; eevent = “eecPromotionView”, eecommerce = {promoView: {Promotions: [{creative: `$ {a} | $ {i} `, id:” Newsletter Speed ​​Bump “, Name: s, Position:” In-Article “}]}}, gtmreportNow (e), qdestroy ()}}), paddEventListener (” focus ” , () => {_classListentfernen (“hidden”)}), haddEventListener (“submit”, t => {tPreventDefault (); const s = new XMLHttpRequest, n = u || equerySelector (“input email”) 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; character set = UTF-8”), saddEventListener (“load”, s => {const a = scurrentTarget || sZiel , if (astatus> = 200&&astatussetClass (e, “Success”)), [d, E, m, _] forEach (e => setClass (e, “hidden”)), gi nnerHTML = cersetzen (“{{email}}”, n), minnerHTML = “”; const s = Parsing JSON (aAnswer), l = _isEmpty (ssailthruIds)? “”: ObjectValues ​​(ssailthruIds) [0], u = r; uevent = “eecKauf”, uecommerce = {Purchase: {actionField: {id: l, Sales: “000”}, Products: [{Category: “Newsletter Registration”, Name: SValue, amount: 1, variant: `$ {COMPONENT_NAME} – $ {i}`}]}}, gtmreportNow (u), setTimeout (() => {eclassListadd (“hidden”)}, 5e3), tPreventDefault () } else minnerHTML = “* An error has occurred please try again”}), saddEventListener (“error”, () => {remove mclassListent (“hidden”), minnerHTML = “* An error has occurred please try again”} ), ssenden (JSONstringify (getPayloadObject (a, o, n, i))), tPreventDefault ()}): minnerHTML = “* Please enter a valid email address”})});
}, {2: 2, 4: 4, 12: 12, 81: 81, 86: 86, 106: 106, 107: 107}];
FensterModule [“growl client”] = [function (required, module, export) {“use strict”; require (139); const _some = require (59), dom = require (3), localStorageKeyRoot = “slideout -“, {getLocalStorage: getLocalStorage, setLocalStorage: setLocalStorage} = require (14); module exported = ((e, t) => {const {content: o, onShow: s, scrollDepth: r = 50, dismissable: 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 (o), nCSSEAND 50 ) {const t = new IntersectionObserver (e => {_ some (e, “isIntersecting”) && (aStiltop = “inherit”, aclassListremove (“hidden”, “initial”), “function” == typeof s&&s (), dobeobachten (a))}); aStiltop = `$ {documentquerySelector (” body “) scrollHeight / (100 / e)} px`, tbeobachte (a)} (n), equerySelector (” dismissed-modal “) addEventListener (” click “, () => i? g (): d ()), eaddEventListener (” growl: hide “, d), eaddEventListen he (“growl: dismissed”, g))});
}, {3: 3, 14: 14, 59: 59, 139: 139}];
WindowModule [“Content-Cliffclient”] = [Function (required, module, export) {“use strict”; const auth0 = required (12), isProduction = required (10) (), logger = required (74) Logger (() =>! IsProduction); Module exported = ((t, e) => {if (! E) return; loggergroup (), Loggerh2 (“Content Cliff”); const {contentCliffOptions: o, firstVisit: n, onShow: r, onClickCliff: i} = e , c = 300, l = Number (DocumentquerySelector (“[Number of data components]”) getAttribute (“Number of data components”)), u = 3, s = [“taboola”], a = “# content-cliff”, f = t, d = function () {let t = 0; return documentquerySelectorAll (“[number of data words]”) forEach (function (s) {t = number (egetAttribute (“number of data words”) || 0,10) || 0 }), t} (), g = function (t, e) {function o (t) {return mathund (tgetTime () / 1e3 / 60)} const n = o (t), r = o (e); return nr} (new date, new date (s)) {}, 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 (” [data-content-cliff-promo] “), s = tquerySelector (” [data-content-cliff-cta] “); s&&ssetAttribute ( “href”, c), s&&sinsertAdjacentHTML ( “after begin”, r), l&&linsertAdjacentHTML ( “after begin”, e), u&&uinsertAdjacentHTML ( “after begin”, n), s&&saddEventListener ( “click”, i)} () fclassListentfernen ( “collapsed”), e = s, eforEach (t => {const e = documentquerySelector (`[data-uri * =” / $ {t} / “]`); e&&eremove ()}), maddEventListener (“click” , () => auth0showLogin ()); var e} ()}} [function () {if (dl) return loggerlog (`Number of article words $ {d} was too short for the cliff`), Loggerlog (` Number of article components is less than $ {u} and not for the cliff suitable`), “noop”; if (g&&isProduction) returns “noop”; g&&loggerlog (`The first session check was $ {g}! Show the cliff anyway: isProduction => $ {isProduction}`); if (/ coronavirus news | pivot | paywall exclude / iTest (Fenster_nymGtmPageTags)) return isProduction&&loggerlog (“Content Cliff No-Op due to excluded tag match:”, Fenster_nymGtmPageTags), “noop”; return “show”} ()], m = tquerySelector (“content-cliff-login”); let p = []; return loggerlog (`should not work due to the 30 minute window of the first session in production: $ {g}`), loggergroupEnd (), auth0on (“login”, () => {fclassListadd (“reduced”), ( p = ArrayPrototypeScheibeAnruf (p, 0) reverse ()) forEach (t => finsertAdjacentElement (“afterend”, t)), p = []}), “function” == typeof h? h (): void 0});
}, {“10”: 10, “12”: 12, “74”: 74}];
FensterModule [“adclient”] = [function (required, module, export) {“use strict”; const _forEach = require (41), _ max = require (43), _ find = require (42), _ contains = require (44), $ visibility = require (4), 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 = []; return t&&_forEach ([‘Article sidebar [data width = “large”]’], function (a) {e = tquerySelectorAll (a), _ forEach (e, function (e) {npush (e)})}), n } (); Function getElementsVerticalOverlap (e, t) {var n = egetBoundingClientRect (), a = tgetBoundingClientRect (); return! (up> down || incorrectly correct)? abottom-ntop: 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 runs & to do things”: t = “to do”; break; Case “other”: t = e; break; Case “sponsored leaders”: t = “s-leaders”; Break; Case “Urbanist”: t = “Urbanist” “; break; default: t =” “} return t} Function appendSectionToDfpAds () {var e, t, n, a = Document querySelector (” meta [property = ‘og: site_name’ ] “), o = documentquerySelector (” Article [data content channel] “), i = Document querySelectorAll (AD_NAME_SELECTOR); a&& (e = aContent), o&& (t =” Magazine “=== e&& (n = getNYMagAdChannel (t)), n&&appendToAdd (i, n)} querySelector (” body> div “) || {}, t = documentquerySelector (” body “) || {}, nARecSSEAND , a = n&&nLength? [n]: [], o = _find (a, e => econtains (“Feature”)), i = DocumentquerySelectorAll (AD_NAME_SELECTOR); n&& (o? appendPageNumberPosition), “Contains Feature”: ToDfposition (“Feature”): (“lede-gallery-content”)? appendPageNumberPositionToDfpAds (i, “Image_Gallery”): tclassListenthalts (“einspal term layout “)? appendPageNumberPositionToDfpAds (i, “One_Column_Article”): ncontains (“Article content”) &&appendPageNumberPositionToDfpAds (i, “Standard_Article”))} Function appendPageNumberPositionToDfpAds (e) “”, “” 1100×1 “”, “” “”, “” 1100×1 “”, “”, “”, “” “”, “” (“1” x “”, “”] “” (“]),” (“]), (” s “) ], o = find dom (“ad-splash”), i = domfind (“section wrapper”), r = find dom (“secondary”), d = find dom (“bottom”), s = find dom (“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 => {let a, l = “”, u = eDatsatzSchsize, m = eclassListVert, p = _find (n, e => ubeinclusive (e)), g = eparentElementclassListenthalts (“image-gallery-mobile-grid- ad “); if (u&&! p || esetAttribute (” data name “, egetAttribute (” data name “)” / “t), i&&u&&! p) {let n, u; if (oCSSE) contains (e) {let n, u; if (oCSSE) “: i&&contains (e)? l =” IA “:( r&&contains (e) || d&&dcontains (e) || s&&scontains (e)) =”! ” 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)})} inject functionGoogleScripts () {var e = document createElement (“script”), t = documentcreateElement (” script “), n = documentcreateDocumentFragment (); esrc = “// wwwgoogletagservicescom / tag / js / gptjs”, easync = “async”, tsrc = “// pagead2googlesyndicationcom / pagead / js / adsbygooglejs”, tasync = “async”, n asyncappendChild (e), nappendChild (t), Document getElementsByTagName (“body”) [0] appendChild (n)} appendSectionToDfpAds (), appendPageTypeToDfpAds (), injectGoogleScripts (), DSController (ad. “, [” ) {Return function (t) {var n, a, o, i = tgetAttribute (“data offload”), r = new $ VisibilitySvisible (t, {pretoadThreshold: i? WindowinnerHeight / 4: 200}), d =! 1 ; Function s () {FensterinnerWidth> = 1180&&tparentElementclassListenthalts (“ad-repeat”) &&flaggedComponentsOnPagelength&& (a = getElementsOverlapEANDCHAR, a = getElementsOverlapAmount (a = getElementsOverlapAmount), a = getElementsOverlapAmountA (a )} Function c () {s (), eUpdate (n)} Function l () {eremove (n), d || (d =! 0, ron (“shown”, c))} DocumentquerySelector (‘script [ data-name = “concert displays”] ‘) || (n = eerstellen (t), rPreload&& $ VisibilityisElementNotHidden (t)? (eaddTo PageLoadQueue (n), i&&ron (“hidden”, l)) 🙁 ron (“preload”, function () {! nslot&& $ VisibilityisElementNotHidden (t) && (s (), eload (n))}), i&&rauf (“hidden”, l)), diesadData = n)}}]);
}, {3: 3, 4: 4, 41: 41, 42: 42, 43: 43, 44: 44}];
WindowModule [“Sticky-Listeclient”] = [Function (required, module, export) {“use strict”; const dom = require (3), $ gtm = require (2), _ get = require (23), stickyContainer = require (“sticky-container” Client “); DSController (” Sticky-List “, [” $ window ” , Function (t) {var e = require (217), i = 40; function s (s) {let n, r = function (t) {let s = t [0], n = 0, r = eHeight ( diescontentArea), h = thisContentAreaoffsetHeight; if (thiscontainer&&thisBehältLänge) {if (sZieloffsetHeight) {let t = thisAusbrüchefindIndex (t => (function contains (t, e)) {return t! == document}} CSSEAND eCH ; if (t> -1&&thisAusbrüche [t]) {let e = diesAusbrüche [t] offsetHeight i; thisBehält [t] StilmarginBottom = `$ {e} px`}} if (h! == thiscurrentHeigh) {const t = eRect (diesrightRail, das hiercontentArea); diescurrentHeight = h, diesrightRailStilHöhe = r-ttop-a (diesrightRail) “px”, diesAusbrbruchforEach ((s, r) => {let a = erect (s, thiscontentArea), h = eSchnittpunkt (a , t); if (h) {let e, s = htop- ttop-n; n = s hHöhe ich, dasBehält [r] Stilheight = `$ {s} px`, diesBehält [r] StilminHeight =` $ {s} px`, e = thisBehausbruch [r] offsetHeight i, thisBehält [r] StilmarginBottom = ` $ {e} px`}})}}} bind (this); tinnerWidth {let n = _get (e, “RecordName”, “”), r = nSlice (-1) || “1”, a = [“Image_Gallery”, “Standard_Article”, “Feature”, “One_Column_Article”] find (t => ncontains (t)) || “”; diesrightRailparentElementclassListentcontains (“tertiary”) &&a&& (eDatsatzname = parseInt (i, 10) se === t) || 0; return iSheight (n 1) reduce ((t, e) => t (eoffsetHeight || 0), 0) || 0} return sprototype = {setPins: function () {const t = eRect (diesrightRail, the hiercontentArea), i = eHöhe (diescontentArea), s = i-ttop-a (diesrightRail); let n, h, o, l; if (thispopulatePinsList (), s1&&tclassListadd (“Multi-Children”), l = 0; l {const t = Arrayof (eKinder); let o, a, i = 0; for (; i {handleLazyLoad (a)});
}, {“3”: 3, “95”: 95}];
WindowModule [“Article Client”] = [Function (required, module, export) {“use strict”; const $ visibility = required (4), $ gtm = required (2), ImageZoom = required (56), $ sentry = required (57); DScontroller (“article”, [function () {var e = 40; function t (t) {const i = documentquerySelector (“Wrapper> tertiary”), n = tquerySelector (“lede-image-wrapperVollblutung”), r = tquerySelector (“Attribution full bleeding”), o = tquerySelector (“article header”), l = o? OquerySelector (“img”): null, c = function () {let t = ogetBoundingClientRect () height; n&& (t = ngetBoundingClientRect ( ) Height 25, r&& (t = rgetBoundingClientRect () height)), ichStilpaddingTop = te “px”}; i&&o&& (window innerWidtht (e)), $}}]););
}, {2: 2, 4: 4, 56: 56, 57: 57}];
WindowModule [“Tagsclient”] = [Function (required, module, export) {“use strict”; const _forEach = require (41); DScontroller (“tags”, [function () {function e (e) {thisel = e} return ePrototype = {Events: {“amore click on”: “showAll”}, showAll: function (e) {var t = eZiel, o = dieselquerySelectorAll (“liversteckt”); _ forEach (o, function (e) {eclassListernernen (“hidden”)}), tparent noderemoveChild (t), ePreventDefault ()}}, e}]);
}, {“41”: 41}];
FensterModule [“Newsletter-Flex-Textclient”] = [Function (required, module, export) {“use strict”; const dom = required (3), _ kebabCase = required (81), _ isEmpty = required (86), _ set = required (106), permutiv = require (52), cmptName = “newsletter-flex-text”, { loadRecaptcha: loadRecaptcha} = require (107), gtm = require (2), EMAIL_VALID_REGEX = / ^ (?: (?: [^ () [] \,;: s @ “] (?: [ ^ () [] \,;: s @ “]) *) | (” “)) @ (?: (?: [[0-9] {1,3} [1,3 ] {1,3} [1,3] {1,3} [0-9] {1,3}]) | (?: (?: [A-zA-Z -0-9] ) [a-zA-Z] {2,})) $ /, MAX_EMAIL_LENGTH = 50; DScontroller (cmptName, [“$ window”, function (s) {function t (t) {thisel = t, dasemail = domfind (t, “email”), diestitle = domfind (t, “title”), this description = domfind (t, “description”), diesQuelle = domfind (t, “source”), diesform = domfind (t, “form”), diesreturnMsg = domfind (t, “feedback”), diesnewsletterId = domfind (t, ” newsletterId “) value, diesexpandTerms = domfind (t,” extended terms “), diesrecaptchaKey = this formData recordrecaptchaPublicKey, daslocal = elocalStorage, dasSitzung = esessionStorage, dasdisplayComponent ()} return tprototype = {getRequestUrl: function (” form actionA “return this) )}, getPageType: function () {var e = domfind (‘meta [name = “type”]’), t = e? egetAttribute (“content”): “”; return _kebabCase (t)}, getPayloadObject: function (e) {var t = {}; return temail = thisEmailWert, trecaptcha = e, _set (t, `varsQuelle _ $ {thisnewsletterId}`, `$ {cmptName} _ $ {thisgetPageType ()}`), tListen = { }, tlistet [this newslet terId] =! 0, t}, displayComponent: function () {var t = this, s = “success” === thislocal [“signUpColumnStatus” thisNewsletterIdtoString ()], i = “true” === thisbildengetAttribute (“data display after login”) ; if (! s || i) {if (remove thiselclassListent (“initially hidden”), this formclassListremove (“initially hidden”), setTimeout (function () {telclassListenferne (“opacity-zero”)}, 100), try this session) {diesSessionsetItem (“signUpColumn”, “displayed”)} catch (e) {}} else telparentElementclassListadd (“newsletter-collapsed”); eaddEventListener (“unload”, function () {tSessionremoveItem (“signUpColumn”)})}, events: {“Send form”: “submitForm”, “E-mail keystroke”: “clearMsg”, “Terms button click “:” showTerms “}, clearMsg: function () {thisreturnMsginnerHTML =” “}, showTerms: function () {thisexpandTermsclassListadd (” active “), thisexpandTermssetAttribute (” aria-hidden “,” false “)}, submitForm: function ( e) {var t = new XMLHttpRequest, s = thisbildengetAttribute (“data-error-msg”); thisEmailValueLength> = 50 ||! EMAIL_VALID_REGEXTest (this email value)? (s&& “”! == s || (s = “* Please enter a valid email address”), diesreturnMsginnerHTML = s, dasreturnMsgfocus (), ePreventDefault ()): loadRecaptcha (thisrecaptchaKey, “newsletterSubmit”, ! 0) then (s => {domverhommunikDefault (e), topen (“POST”, diesgetRequestUrl (),! 0), tsetRequestHeader (“content type”, “application / json; character set = UTF-8″), taddEventListener (” load “, this to bind request (dies)), taddEventListener (” error “, dieonErrorbind (dies)), tsenden (JSONstringify (diesgetPayloadObject (s))), ePreventDefault ()})}, onRequest: function (e) {const t = ecurrentTarget || eZiel; tstatus> = 200&&tStatus {var e = document createElement (“script”); easync =! 0, etype = “text / javascript”, esrc = DokumentStandortProtokoll “// d16xpr36wrmcmkCloudfrontnet / js / memojs”, (Document getElementsByTagName (“head”) [0] || Document getElementsByTagName (“body”) [0]) appendChild (e)} ) (), ModulExporte = (() => {});
}, {}];
FensterModule [“Affiliate-Linksclient”] = [Function (required, module, export) {“use strict”; const dom = required (3), _ contains = required (44), _ StartsWith = required (48), globalClick = required (46), visit = require (47), productSubtags = require (49); var excluded hostnames, skimlinksBaseUrl, skimlinksId, visitState, productUrl, ignoreDataAttribute = “Ignore data affiliate links”, article = windowDocumentquerySelector (“article”), isSponsored = article&& “sponsor story” === article getAtAtute Function setExcludedHostnames (t) {excludedHostnames = (tgetAttribute (“Data excluded hostnames”) || “”) toLowerCase () split (“,”)} Function isSkimLink (t) {return !! (skimlinksId = tgetAttribute (“data-skimlinks”))} Function isExcluded (t) {return _includes (excluded hostnames, t) || _startsWith (t, “www”) &&_includes (excluding host names, tSlice (4)) || isSponsored} function isUrlProtocol (t) {return 0! == tindexOf (“mailto:”) &&0! == tindexOf (“javascript:”)} function getTargetHostname (t) {return (tHostname || tHost || thref || “”) toLowerCase ()} function convertSkimlinkUrl (t) {return (skimlinksBaseUrl = skimlinksBaseUrl || skimlinksId? ” // goUmleitungcom /? xs = 1&id = “skimlinksId” &sref = “encodeURIComponent (FensterStandorthref)” &url = “: void 0) &&skimlinksBaseUrluteIgnodeURIComponent (t)} function” return “encodeURIComponent (t) } Function convertSkimlink (t) {var e, i, r, s = domam next (tZiel, “a”), n = s&&shref; n&&nlength&&! tdefaultPrevented&& (i = getTargetHostname (s),! isUrlProtocol (n) || isExcluded (i) || hasIgnoreAttribute (s) || productSubtagsgetAffiliate (n) || (e = convertSkimlinkUrl = CSSUrl (n))) s&&sgetAttribute (“data-track-id”), shref = productSubtagssureSubtag ({url: e, productId: r, visitState: visitState, anchorEl: s}))}} function revertSkimLink (t) {var e = domam next (tZiel, “a”), i = e&&ehref || “”; icontains (skimlinksBaseUrl) &&i&&ilength&&productUrl&href || “”; ), e&& (setExcludedHostnames (t), globalClickaddHandler (convertSkimlink, revertSkimLink))});
}, {3: 3, 44: 44, 46: 46, 47: 47, 48: 48, 49: 49}];
WindowModule [“gtmclient”] = [Function (required, module, export) {“use strict”; const $ gtm = require (2); DScontroller (“gtm”, [function () {return function (t) {$ gtminit (tgetAttribute (“data container ID”), tgetAttribute (“data-site-slug”))}}]);
}, {“2”: 2}];
FensterModule [“global-navclient”] = [function (required, module, export) {“use strict”; const dom = required (3), auth0 = required (12), signInButton = find dom (“user login”), signOutButton = find dom (“user logout”), globalNav = domfind (‘[class ^ = “global-nav”]’) , body = domfind (“body”), dropdownItems = domfinde all (“dropdown wrap”), gtm = require (2), pageUri = require (135) getPageUri (); Function closeDropdowns (e) {let n = globalNavquerySelectorAll (“Dropdown-Listopen”); dropdownItemsforEach (function (t) {let o = tquerySelector (“Dropdown”) ;! n || tcontains (eZiel) &&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) { everhindereDefault (), auth0showLogin ()}), signOutButtonaddEventListener (“click”, function (e) {everhindereDefault (), auth0logout (), gtmSendReport (“logout”, eZiel, “user info link”)}), auth0isAuthenticated ( ) &&eclassListadd (“registered”), auth0isSubscriber () &&eclassListadd (“subscribed”), equerySelectorAll (“user link”) forEach (e => {eclassListadd (“active”)})}), auth0 ) => {eclassListadd (“registered”), auth0isSubscriber () &&eclassListadd (“subscribed”)}), auth0on (“logout”, () => {remove eclassList (“registered”), eclassListentferne (“subscribed”)})} dropdownItemsforEach (function (s) {eaddEventListener (“click”, function () {equerySelector (“dropdown list”) toggle classList (“open”)})}), body addEventList ner (“click”, closeDropdowns), document addEventListener (“keydown”, closeDropdowns), globalNavaddEventListener (“click”, function (s) {let n = eZiel; n ZielclassListenthalts (“global-nav-track”) &&gtmSendReport (nText, n, “global-nav-link”)}), ModulExporte = Init;
}, {2: 2, 3: 3, 12: 12, 135: 135}];
FensterModule [“aaa-Modul-MontageLegacy”] = [Function (required, module, export) {“use strict”; const eventify = required (163), _ pickBy = required (138), _ each = required (301), fingerprintjs2 = required (300), DS = require (299); function registerGlobals () {windowDS = DS, WindowEventify = eventify, WindowFingerprint2 = Fingerprintjs2, DSValue (“Eventify”, eventify), DSValue (“Fingerprint2”, fingerprintjs2), DSValue (“$ document”, WindowDocument), DSvalue (“$ window “, window)} Function mountDollarSliceComponents () {DSservice (” Components “, [” $ document “,” $ module “, Function (e, n) {var r = _pickBy (nDefinitions, e => eproviderStrategy === nVendorController) , 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))}), diesComponents = o}]), DSget (“Components”)} Function logMountError (e, n) {const r = eOuterHTMLSlice (0, eOuterHTMLindexOf (oneHTML)); ConsoleError (“Error attaching the controller to” r, n)} registerGlobals (), DokumentaddEventListener (“DOMContentLoaded”, () => {mountDollarSliceComponents ()});
}, {138: 138, 163: 163, 299: 299, 300: 300, 301: 301}];
WindowModule [“ShowLegacy”] = [Function (required, module, export) {“use strict”; const _map = require (50), _ forEach = require (41), _ isString = require (183), _ intersectionWith = require (302), _ isEqual = require (189), _ each = require (301), _ debounce = require (99), _ sortBy = require (122), page = require (135), visit = require (47); DSservice (“adService”, [“Eventify”, “$ cid”, “$ document”, “$ window”, function (e, t, a, i) {var o, n, s, r, d, c, l, u, g, p, m = {}, h = dies, f = [], b = visit getQueryParamsObject ([“utm_campaign”]), w = documentquerySelector (‘script [data-type = “ad-a9”] ‘); DocumentquerySelector (‘ script [data-name = “Concert ads”] ‘) || (iNYM = {}, iNYMAnalytics = {}, iNYMAnalytikadStartTime = iPerformance now ichgoogletag = igoogletag || {}, igoogletagcmd = igoogletagcmd || [] c = igoogletag, w&& (igoogletagcmd = igoogletagcmd || [], igoogletagcmdpush (function () {igoogletagPubads () disableInitialLoad ()}), l = isetInterval (function 0ChAssErStagCANDWindow (function 0CHSSEstag) (l), window day deleted =! 0, l = null)}, 10), setTimeout (function () {l&& (iclearInterval (l), ichgoogletagPubads () refresh (), window window || console log (“MESSAGE: Timeout for A9- L. ast exceeded, abort “))}, 500)), u = documentcreateElement (” script “), g = documentcreateDocumentFragment (), p = documentgetElementsByTagName (” head “) [0], usrc =” https: // zWassergräbencom / voxprebidheader841653991752 / moatheaderjs “, gappendChild (u), pinsertBefore (g, pfirstChild), o = function (e) {var t, a, o = eData, n = []; Return loaded? e: (loaded =! 0, t = null, (t = oSizes? cdefineSlot (oName oSizes, oI would) addService (cPubads ()): cdefineOutOfPageSlot (oName oI would) addService (cpubads ())) setTargeting (“adid” , oid), bhasOwnProperty (“utm_campaign”) &&tsetTargeting (“utmcamp”, butm_campaign), a = hgetAdCount (oEtikett), tsetTargeting (“label”, oBeschriftung “_” oSeite “-” a) ) addEventListener ( “slotOnload”, function () {iNYMAnalytikfirstAdLoadTime || (iNYMAnalytikfirstAdLoadTime = iPerformancejetzt ichNYMAnalytikfirstAdLoadLabel = eDatenlabel)}) (n = v (o)) Fensterapstag&&windowapstagclear&&windowapstagfetchBids ({slots: [n], timeout: windowapstagZeitüberschreitung}, function ( ) {ccmdpush (function () {windowapagsetDisplayBids (), cPubads () refresh ([t], {changeCorrelator:! 1})})}): cPubads () refresh ([t], {changeCorrelator:! 1}), eslot = t, e)}, n = function (e) {var a, i, o, n = t (), s = egetAttribute (“Datenna me “), r = egetAttribute (” data sizes “), d = egetAttribute (” data label “), c = egetAttribute (” data-site “); n = eid, r&&rLength? (r = rsplit (“,”), a = [], _ map (r, function (e) {e = esplit (“x”), i = parseInt (e [0]), o = parseInt (e [ 1]), apush ([i, o])})) 🙁 eclassListaddere (“oop”), a =! 1), diesData = {ID: n, name: s, sizes: a, loaded:! 1, designation: d, site: c}, m [n] = this}, r = function (e) {ccmdpush (function () {var t = o (e); m [eDatenid] = t})}, s = function (s) {var t = []; eSlot? (t = v (e)) &&windowapstag&&windowapstagclear&&windowapstagfetchBids ({slots: [t], timeout: windowapstagTime exceeded}, function (1) {ccmdpushBids (function) {update ccmdpushBids (function) (), function (1) {ccmdpushBids (function) () })})}): e&&r (e)}, ccmdpush (function () {var e, t, o, n = SeitegetMeta (“Article: Tag”), s = SeitegetMeta (“Author”), r = iStandorthref, d = (e = aKopfquerySelector (“head-gtm”), t = aBodyquerySelector (“gtm”), e&& “top” === egetAttribute (“data-gtm”)? “gtmtop”: t&& ” tgetAttribute (“data-gtm”)? “gtmbottom”: “”); o = [], _ forEach ([n, s, d], function (s) {_ forEach (esplit (“,”), function ( e) {(e = etrimmen () toLowerCase () replace (/ s / g, “-“) replace (/ ‘| ‘ / g, “”)) length&&opush (e)})}), cPubads ( ) setTargeting (“kw”, o), cPubads () setTargeting (“entry_group”, o), r = rScheibe (rl astIndexOf (“/”) 1), cPubads () setTargeting (“pn”, r), cCompanionAds () setRefreshUnfilledSlots (! 0), cPubads () enableAsyncRendering (), cenableServices ()}), diesload = r, thiscreate = function (e) {return new n (e)}, diesrefresh = function (s) {var t; _isString (e)? (t = thisgetById (e), s (t)): s (e)}, diesremove = function (e) {var t = eDatenid; agetElementById (t) innerHTML = “”}, diesgetAdCount = function (s) {var t, a = 0, i = object keys (m); return _each (i, function (i) {(t = m [i]) data load&&tDatalabel === e&&a}), a}, thisgetById = function (e) {return m [e]}, d = _debounce (function () {var e = {TopLeaderboard: 1, RightColTopMPU: 2, outOfPage: 99, “homepageTakeover / TopLeaderboard”: 1}, t = _sortBy (f, function (t) {return e [tDatenlabel] || 10}); _ forEach (t, function (e) {return eDataSize? r (e): isetTimeout (function () {r (e)}, 2e3)}), f = []}, 10), thisaddToPageLoadQueue = function (e) {fpush (e), d ()}); Function v (e) {var t, a = e sizes; Returns a = _IntersectionWith (a, [[970.250], [970.90], [728.90], [300.600], [300.250], [320.100], [320.50]], _ isEqual), eSize&&eSize length&&SSEANDCHAR = {slotID: eID, sizes: a, slot name: elabel}), t}}]);
}, {41: 41, 47: 47, 50: 50, 99: 99, 122: 122, 135: 135, 183: 183, 189: 189, 301: 301, 302: 302}];
WindowModule [“cidLegacy”] = [Function (required, module, export) {“use strict”; DSservice (“$ cid”, function () {var r = MathBoden (100 * Mathrandom ()); return function () {return “cid-” r}});
}, {}];
WindowModule [“FacebookLegacy”] = [Function (required, module, export) {“use strict”; DSservice (“facebook”, [function () {thisfb = function (i) {windowFB&&windowFB [i] apply (this, ArrayPrototypeSlice call (arguments, 1))}}]);
}, {}];
require = (function e (t, n, r) {function s (o, u) {if (! n [o]) {if (! t [o]) {var a = type of require == “function” &&require; if (! U&&a) returns a (o,! 0); if (i) returns i (o,! 0); var f = new error (“module ‘” o “‘” cannot be found) ; f throw code = “MODULE_NOT_FOUND”, f} var l = n [o] = {exported: {}}; t [o] [0] call (lExporte, function (s) {var n = t [o] [1 ] [e]; return s (n? n: e)}, l, lExporte, e, t, n, r)} return n [o] exported} var i = typeof require == “function” &&require; for ( var o = 0; o typeof key === ‘string’ &&-SchlüsselSpiel (/ legacy $ /)) forEach (key => windowower (key));
}}

Function tryToMount (fn, el, name) {
To attempt {
fn (el); // start the controller
} catch (e) {
const elementTag = elOuterHTMLSchibe (0, elOuterHTMLindexOf (elinnerHTML));
ConsoleError (`Error initializing controller for” $ {name} “on” $ {elementTag} “`, e);
}}
}}
/ **
* Client embed js component controls
* /

Function mountComponentModules () {
ObjectKey (WindowModule) filter (key => typeof key === ‘string’ &&-SchlüsselSpiel (/ client $ /)) forEach (key => {
let controllerFn = windower require (key);

if (typeof controllerFn === ‘function’) {
const name = replace key (‘client’, ”),
instanceSelector = `[data-uri * =” _ components / $ {name} / “]`,
defaultSelector = `[data-uri $ =” _ components $ {name} “]`,
Instances = Document querySelectorAll (instanceSelector),
Standard = Document querySelectorAll (defaultSelector);

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

for (leave el by default) {
tryToMount (controllerFn, el, name);
}}
}}
});
} // Make sure that a `WindowProzessenvNODE_ENV` is available in the client for all dependencies
// Services or components that might require it
// Note: The value “ is exchanged for the actual environment variable in / lib / cmd / compile / scripts

WindowProcess = WindowProcess || {};
WindowProcessesv = WindowProcessesv || {};

if (! FensterProzessenvNODE_ENV) {
FensterProzessenvNODE_ENV = ”;
} // Note: Legacy controllers that need legacy services (eg dollar disk) must be
// Wait for DOMContentLoaded to initialize itself, as the files themselves have to be mounted first

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

Falcon and Winter Soldier, The Falcon and the Winter Soldier

World News – USA – The Falcon and the Winter Soldier Series premiere Summary: Generations

Source: https://www.vulture.com/article/the-falcon-and-the-winter-soldier-episode-1-recap.html