Mercredi, des chercheurs du Laboratoire Fermi, situé juste à l’ouest de Chicago, ont annoncé qu’un résultat de 20 ans dans la fabrication pourrait bouleverser la compréhension des physiciens du fonctionnement de l’univers

Ils ont publié les premiers résultats de l’expérience Muon g-2, qui depuis 2018 a mesuré un cousin plus lourd d’un électron appelé le muon Les muons tournent dans un champ magnétique et d’autres particules subatomiques affectent leur déplacement Plus un champ magnétique est fort, plus un muon oscille rapidement En observant le spin, les scientifiques peuvent mesurer la vitesse à laquelle les muons oscillent Mais lorsque l’expérience a été menée, les chercheurs ont découvert que les muons pourraient être légèrement plus magnétiques que ce que la théorie prédit. L’anomalie est petite – seulement 25 parties sur 1 milliard – mais cela peut suffire pour exiger une explication de ce qui cause l’oscillation plus rapide sous la forme de particules élémentaires entièrement nouvelles Si cela se produisait, cela contesterait le modèle standard de physique des particules, un livre de règles sur le fonctionnement de l’univers.

«Ma première impression est« Wow »», a déclaré Gordan Krnjaic, physicien théoricien au Laboratoire Fermi qui n’était pas impliqué dans la recherche, à Scientific American “C’est presque le meilleur scénario possible pour des spéculateurs comme nous Je pense beaucoup plus que c’est peut-être une nouvelle physique, et que cela a des implications pour les expériences futures et pour les connexions possibles à la matière noire”

Les muons étaient une curieuse complication à la distribution par ailleurs limitée de particules subatomiques lorsqu’ils ont été découverts dans les années 1930 (Après avoir été trouvés dans les rayons cosmiques, cela a tellement dérouté les scientifiques qu’un physicien a demandé: «Qui a ordonné cela?») En effet, la recherche suggère qu’il pourrait y avoir quelque chose d’étrange à propos des muons En 2001, une précédente exécution de l’expérience Muon g-2 au Brookhaven National Laboratory a révélé un léger écart entre l’expérience et la théorie. Mais l’expérience n’a pas pris suffisamment de données et n’a pas atteint le seuil critique requis pour revendiquer la découverte Et donc, après 10 ans, Fermilab a décidé de reprendre la recherche Et cette fois, les physiciens relanceraient l’expérience avec un faisceau de muons plus fort

Les physiciens ont construit un anneau d’aimants en forme de Hula-Hoop, de 50 pieds de diamètre et 6 pieds de haut, conçu pour mesurer comment les particules oscillent comme une toupie vacillante en présence d’un champ magnétique Les scientifiques ont projeté des particules autour d’une piste magnétisée qui les maintient en existence assez longtemps, de minuscules fractions de seconde, pour que les chercheurs puissent les regarder de plus près.

Il y a actuellement 1 chance sur 40 000 que le résultat du Laboratoire Fermi soit simplement un hasard, ce qui équivaut à un niveau de confiance statistique décrit comme 41 sigma Selon les normes strictes de la physique des particules, un niveau de 5 sigma ou de 1 sur 35 millions de chances que l’observation soit une coïncidence, est nécessaire pour revendiquer une «découverte”

Les chercheurs qui ont travaillé sur l’expérience Muon g-2 ont besoin d’un an ou deux pour terminer l’analyse des résultats de tous les tours de piste. “Jusqu’à présent, nous n’avons analysé que 6% des données, et lorsque nous combinons les résultats de toutes les analyses, nous obtiendrons une mesure encore meilleure”, a déclaré Sudeshna Ganguly, scientifique associée au Fermilab, à Gizmodo. «C’est super excitant de faire partie de cette”

L’administration Biden lancera la semaine prochaine un programme d’assistance funéraire qui fournira jusqu’à 9 000 dollars pour couvrir les frais d’inhumation de chaque Américain décédé du covid-19 – le plus grand programme de ce type jamais proposé par le gouvernement fédéral.

Le programme est ouvert aux familles quel que soit leur revenu, à condition qu’elles présentent des documents et n’aient pas déjà reçu des prestations similaires dans le cadre d’un autre programme

L’Agence fédérale de gestion des urgences a déjà remboursé les frais d’inhumation, mais elle n’a jamais offert un paiement aussi important à autant de personnes

Le représentant Alcee Hastings, le député de Floride de longue date, farouchement libéral, qui a été poursuivi tout au long de son mandat par une mise en accusation qui a mis fin à sa carrière judiciaire en plein essor, est décédé mardi. Il avait 84 ans

Le bureau du Congrès de Hastings a confirmé sa mort mardi matin Hastings, un démocrate, a annoncé il y a deux ans qu’il avait un cancer du pancréas

Le président Joe Biden prévoit d’annoncer mardi qu’il avance de près de deux semaines sa date limite pour que les États rendent tous les adultes américains éligibles à un vaccin contre le coronavirus.

Tous les États ayant ouvert l’éligibilité au public ou au moins ayant annoncé leur intention de le faire, Biden annoncera que chaque adulte du pays sera éligible à être vacciné avant le 19 avril, selon un responsable de l’administration, à la place. de la date limite initiale de Biden du 1er mai

Biden a annoncé la semaine dernière que 90% des adultes seront éligibles pour recevoir un vaccin contre le coronavirus d’ici le 19 avril, ainsi qu’un site de vaccination à moins de cinq miles de leur lieu de résidence. Biden a déclaré que le nombre de pharmacies participant au programme fédéral de vaccination des pharmacies augmentait de 17000 emplacements actuels à 40000.

Déjà abonné?
Connectez-vous ou liez votre abonnement à un magazine

Déjà abonné?
Connectez-vous ou liez votre abonnement à un magazine

Déjà abonné?
Connectez-vous ou liez votre abonnement à un magazine

Déjà abonné?
Connectez-vous ou liez votre abonnement à un magazine

= 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]” === ObjectprototypetoStringappel (r)};
}, {}];
la fenêtremodules [“1208”] = [function (require, module, exports) {“use strict”; var stringifyPrimitive = function (r) {switch (typeof r) {case “string”: return r; case “boolean”: return r? “true”: “false”; case “number”: return isFinite (r)? r: “”; default: return “”}}; moduleexports = function (r, e, t, n) {return e = e || “&”, t = t || “=”, null === r&& (r = void 0), “object” == typeof r? map (objectKeys (r), function (n) {var i = encodeURIComponent (stringifyPrimitive (n)) t; return isArray (r [n])? map (r [n], function (r) {return i encodeURIComponent (stringifyPrimitive (r))})join (e): i encodeURIComponent (stringifyPrimitive (r [n]))})join (e): n? encodeURIComponent (stringifyPrimitive (n)) t encodeURIComponent (stringifyPrimitive (r)): “”}; var isArray = ArrayisArray || function (r) {return “[object Array]” === ObjectprototypetoStringcall (r)}; function map (r, e) {if (rmap) retour rmap (e); pour (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”, “∞”: “infini”, “♥”: “amor”, “&”: “i”, “|”: “o”, “”: “mes que”, “∑”: “suma dels “,” ¤ “:” moneda “}, cz: {” ∆ “:” delta “,” ∞ “:” nekonecno “,” ♥ “:” laska “,” & “:” a “,” | ” : “nebo”, “”: “vice jako”, “∑”: “soucet”, “¤”: “mena”}, de: {“∆”: “delta”, “∞”: “unendlich”, ” ♥ “:” Liebe “,” & “:” und “,” | “:” oder “,” “:” groesser als “,” ∑ “:” Summe von “,” ¤ “:” Waehrung “}, dv : {“∆”: “delta”, “∞”: “kolunulaa”, “♥”: “loabi”, “&”: “aai”, “|”: “noonee”, “”: “ah vure bodu” , “∑”: “jumula”, “¤”: “faisaa”}, en: {“∆”: “delta”, “∞”: “infinity”, “♥”: “love”, “&”: ” et “,” | “:” ou “,” “:” supérieur à “,” ∑ “:” somme “,” ¤ “:” devise “}, es: {” ∆ “:” delta “,” ∞ ” : “infinito”, “♥”: “amor”, “&”: “y”, “|”: “u”, “”: “mas que”, “∑”: “suma de los”, “¤” : “moneda”}, fr: {“∆”: “delta”, “∞”: “infiniment”, “♥”: “Amour”, “&”: “et”, “|”: “ou”, ” “:” superieure a “,” ∑ “:” somme des “,” ¤ “:” monna ie “}, gr: {}, hu: {” ∆ “:” delta “,” ∞ “:” vegtelen “,” ♥ “:” szerelem “,” & “:” es “,” | “:” vagy “,” “:” nagyobb menthe “,” ∑ “:” szumma “,” ¤ “:” penznem “}, il: {” ∆ “:” 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”, “♥”: “liefde”, “&”: “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”, “∞”: “infini”, “♥”: “dragoste”, “&”: “si”, “|”: “sau”, “”: “mai mare ca”, “∑”: “suma”, “¤”: “valuta”}, ru: {“∆”: “delta”, “∞”: “beskonechno”, “♥”: “lub ov “,” & “:” i “,” | “:” ili “,” “:” bolche “,” ∑ “:” summa “,” ¤ “:” valjuta “}, sk: {” ∆ “: “delta”, “∞”: “nekonecno”, “♥”: “laska”, “&”: “a”, “|”: “alebo”, “”: “viac ako”, “∑”: “sucet “,” ¤ “:” mena “}, sr: {}, tr: {” ∆ “:” delta “,” ∞ “:” sonsuzluk “,” ♥ “:” ask “,” & “:” ve ” , “|”: “veya”, “”: “buyuktur”, “∑”: “toplam”, “¤”: “para birimi”}, uk: {“∆”: “delta”, “∞”: ” bezkinechnist “,” ♥ “:” lubov “,” & “:” i “,” | “:” abo “,” “:” bilshe “,” ∑ “:” suma “,” ¤ “:” valjuta “} , vn: {“∆”: “delta”, “∞”: “vo cuc”, “♥”: “yeu”, “&”: “va”, “|”: “hoac”, “”: “lon hon “,” ∑ “:” tong “,” ¤ “:” tien te “}}; if (” string “! = typeof e) return” “; if (” string “== typeof a&& (A = a) , m = Ien, c = Cfr, “objet” == typeof a) pour (g dans n = amaintenirCase ||! 1, O = acustom&& “object” == type d’unpersonnalisé? apersonnalisé: O, u = atronquer> 1&&atronquer ||! 1, l = auric ||! 1, s = auricNoSlash ||! 1, r = amarque ||! 1, S =! 1! == asymboles &&! 1! == alang, A = aséparateur || A, l&& (p = bjoin (“”)), s&& (p = zjoindre (“”)), r&& (p = [“”,”! “,” ~ “,” * “,” ‘”,” (“,”) “]join (“”)), m = alang&&I [alang] &&S? I [alang]: S? Ifr: {}, c = alang&&C [alang]? C [alang]:! 1 === alang ||! 0 === alang? {}: Cfr, untitleCase&& “nombre” == type d’untitleCaselongueur&&ArrayprototypetoStringappel (untitleCase)? (untitleCaseforEach (fonction (e) {O [e “”] = e “”}), t =! 0): t = !! atitleCase, uncustom&& “nombre” == type d’unDouanelongueur&&ArrayprototypetoStringappel (unpersonnalisé) &&aDouaneforEach (function (e) {O [e “”] = e “”}), Objecttouches (O)forEach (fonction (a) {var n; n = alength> 1? new RegExp (“\ b” o (a) “\ b”, “gi”): new RegExp (o (a), “gi”), e = eremplacer (n, O [a])}), O) p = g; pour (p = o (p = A), f =! 1, y =! 1, d = 0, k = (e = eremplacer (/ (^ s | s $) / g, “”))longueur; 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 dans U? (j = g, g = ” “, d === k-1&& (g = U [j]), y =! 0) :! m [g] || l&&-1! == brejoindre(“”)indexOf (g) || s&&-1! == zrejoindre(“”)indexOf (g)? (! 0 === y? (g = U [j] g, j = “”, y =! 1): f&& (/ [A-Za-z0-9] /test (g) || Esubstr (-1)match (/ A-Za-z0-9] /)) && (g = “” g), f =! 1) 🙁 g = f || Esubstr (-1)match (/ [A-Za-z0-9] /)? A m [g]: m [g], g = void 0! == e [d 1] &&e [d 1]match (/ [A-Za-z0-9] /)? A: “”, f =! 0), E = greplace (new RegExp (“[^ \ w \ s” p “_-]”, “g”), A); renvoie t&& (E = Eremplacer (/ ( w) ( S *) / g, fonction (e, a, n) {var t = atoUpperCase () (null! == n? n: “”); return Objecttouches (O)indexOf (ttoLowerCase ()) u&& (h = EcharAt (u) === A, E = Etranche (0, u), h || (E = Etranche (0, ElastIndexOf (A)))), n || t || (E = EtoLowerCase ()), E}, t = function (e) {return function (a) {return n (a, e)}}, o = function (e) {return eremplacer (/ [- \ ^ $ *?() | [] {} /] / g, “\ $ &”)}, i = function (e, a) {for (var n in a) if (a [n] === e) return! 0}; if (“undefined”! = typeof module&&modulemodule d’exportation)exportations = n, moduleexportationscreateSlug = t; else if (“undefined”! = typeof define&&defineamd) define ([], function () {return n}); else try {if (egetSlug || ecreateSlug) throw “speakurl: les globals existent / (getSlug | createSlug) /”; egetSlug = n, ecreateSlug = t} catch (e) {}} (ceci);
}, {}];
la fenêtremodules [“1235”] = [function (require, module, exports) {var namespace = “expire_mixin”; function expirePlugin () {var e = thiscreateStore (cestockage, nul, ceci_namespacePrefix namespace); return {set: function (t, n, a, r) ​​{thishasNamespace (espace de noms) || eset (n, r); return t ()}, get: function (e, n) {thishasNamespace (espace de noms) || tcall (this, n); return e ()}, remove: function (t, n) {thishasNamespace (espace de noms) || eremove (n); return t ()}, getExpiration: function (t, n) {return eget (n)}, removeExpiredKeys: function (e) {var n = []; thischacun (fonction (e, t) {npush (t)}); for (var a = 0; a = 0; r -) {var l = localStorage ()key (r); e (read (l), l)}} function remove (e) {return localStorage ()removeItem (e)} function clearAll () {return localStorage ()module clear ()}exports = {nom: “localStorage”, lire: lire, écrire: écrire, chacun: chacun, supprimer: supprimer, clearAll: clearAll};
}, {“1237”: 1237}];
la fenêtremodules [“1239”] = [fonction (exiger, module, exportations) {moduleexports = {name: “memoryStorage”, read: read, write: write, each: each, remove: remove, clearAll: clearAll}; var memoryStorage = {}; function read (e) {return memoryStorage [e]} function write (e, r) {memoryStorage [e] = r} fonction each (e) {for (var r in memoryStorage) memoryStoragehasOwnProperty (r) &&e (memoryStorage [r], r)} function remove (e) {delete memoryStorage [e]} function clearAll (e) {memoryStorage = {}}
}, {}];
la fenêtremodules [“1276”] = [function (require, module, exports) {! function (e) {var t = function (e) {return new y (e)}; tversion = “068 “,” undefined “! = Typeof module&&moduleexportations? moduleexports = t: “function” == typeof define&&defineamd? define (function () {return t}): etypogr = t; var n = function (e, t) {return new RegExp (e, t)}, s = /] *> / i, r = tamp = function (e) {var t = / ( s |) (& | & | & # 38;) ( s |) / g; if (e || “string” == typeof e) return ereplace (/ ()? ([^)? / g, fonction (e, n, r, a) {retourne a = a || “”, (n = n || “”)correspondance (s)? n r a: n (r = rremplacer (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; renvoie nforEach (fonction (e) {“tag” === etype? (rpousser (etxt), t = sexec (etxt), a =! (! t || void 0! == t [1])): a? rpousser (etxt): rpousser (eSMSremplacer (p, ‘$ 1 $ 2’))}), rjoin (“”)}}, p = tinitQuotes = fonction (e) {var t = n (“(?: (?:] *> | ^) \ s * (?:] *> \ s *) *) (?: (” | ” | “) | (‘|’ | ‘))”, “I”); if (e || “string” == typeof e) renvoie ereplace (t, fonction (e, t, n) {var s = t? “dquo”: “quo”, r = t || n; return [etranche (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 “); renvoie eremplacer (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? (?: [A-Z] \\ s?)) (?: \ s | \ b | $)) “,” g “); renvoie rforEach (fonction (e) {“tag” === etype Apousser (etxt), t = sexec (etxt), p =! (! t || void 0! == t [1])): p? apousser (etxt): apousser (eSMSreplace (c, fonction (e, t, n, s) {var r, a; renvoie n? ‘% s’remplacer (“% s”, n) 🙁 “” === stranche (-1)? (r = stranche (0, -1), a = “”) 🙁 r = s, a = “”), ‘% s1% s2’remplacer (“% s1”, r)remplacer (“% s2”, a))}))}), adécoupertypogrifie = fonction (e) {var t = e; retourne 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 (fonction (e) {if (“tag” === etype Apousser (etxt), nul! == (i = sexec (etxt)) && (c = i [2]toLowerCase (), i [1]? (plongueur> 0&&c === p [plength-1] &&ppop (), 0 === plength&& (l =! 1)) 🙁 ppush (c), l =! 0)); else {if (n = (n = eSMS)replace (/ (rock) ‘n’ (roll) / gi, “$ 1’n’ $ 2 “), t = nslice (-1),! l) commutateur (n = g (n), n = h (n), n = d (n), n = x (n)) {case “‘”: n = / S /test (o)? “” “:” ‘”; break; case ‘”‘: n = / S /test (o)? “” “:” “”; break; par défaut: n = m (n)} o = t, apush (n)}}), ajoin (“”)}, f = ttokenize = function (e) {for (var t, n = [], s = 0, r = / ([^] *>) / gi; null! == (t = rexec (e));) {var a = t [1], p = t [2]; a&&npush ({type: “text”, txt: a}), npush ({type: “tag”, txt: p}), s = rlastIndex} retourne rlastIndex) / g, “$ 1 -“)}, d = tsmartEllipses = fonction (e) {retourne eremplacer(/\/g,”…”)remplacer(/ / g, “…”)}, x = tsmartBackticks = fonction (e) {retourne eremplacer (/ “ / g, “” “)remplacer (/ ” / g, “” “)}, m = tsmartQuotes = fonction (e) {var t = “(? =% s \ B)”remplacer (“% s”, “[! ” # \ $ \% \ ‘() *, -\ /:;? \ @ \ [\\] \ ^ _ `{|} ~]”), s = “[^ \ \ t \ r \ n \ [ {\ (\ -] “, r = n (” (\ s | | – | & [mn] tiret; | – | – | ȁ [34];) ‘(? = \ w) “,” g “), a = n (” (“s”) ‘(?! \ s | s \ b | \ d) “,” g “), p = n (” (“s” ) ‘(?! \ s | s \ b) “,” g “), c = n (‘ (\ s | | – | & [mn] tiret; | – | – | ȁ [34] 😉 “(? = \ w) ‘,” g “), i = n (‘” (? = \ s) ‘, “g”), l = n (“(” s’) “‘, “g”); retourne eremplacer (n (“^ ‘% s”remplacer (“% s”, t), “g”), “’ “)remplacer (n (‘^ “% s’remplacer (“% s”, t), “g”), “” “)remplacer (/ “‘(? = w) / g,” “‘ “)remplacer (/ ‘”(? = w) / g,” ‘” “)remplacer (/ b ‘(? = d {2} s) / g, “’ “)remplacer (r, “$ 1” “)remplacer (a, “$ 1” “)remplacer (p, “$ 1’ $ 2 “)remplacer(“‘”,”‘”)remplacer (c, “$ 1” “)remplacer (i, “” “)remplacer (l, “$ 1” “)replace (‘”‘,” “”)}, y = function (e) {this_wrapped = e}, v = fonction (e, n) {yprototype [e] = fonction () {retourne e = nappeler (t, ceci_wrapped), ce_chaîne? t (e)chain (): e; var e}}; pour (l dans t) thasOwnProperty (l) && ((o = t [l]) &&oconstructeur&&ocall&&oappliquer) &&v (l, t [l]); yprototypechain = function () {renvoie ceci_chain =! 0, ceci}, yprototypevalue = function () {renvoie ceci_wrapped}} (ceci);
}, {}];
la fenêtremodules [“1358”] = [function (require, module, exports) {“use strict”; const universalAgora = require (1360), universalRest = require (10), universalQuery = require (1359), _ get = require (23) ; function searchByQueryWithRawResults (e, r) {const t = `// $ {rsitehôte} $ {80! == rsiteport? `: $ {rsiteport} `:” “} $ {rsitechemin} / _ agora / _search`; retourne universalRestpost (t, e,! 0)} function getProducts (e, r, t) {return searchByQueryWithRawResults (universalAgorabuildProductsQuery (e), r)alors (e => {const r = universalQueryformatSearchResult (e); return {total: eles coupstotal, produits: t? universalAgorafilterByLocale (r): r}})} function getMerchantsList (e) {renvoie searchByQueryWithRawResults (universalAgorabuildMerchantsAggregation (1e6, _get (e, “siteagoraLocale “)), e)alors (universalQueryformatAggregationResults ({aggregationName: “merchants”, field: “key”, subfield: “name”}))} moduleexportationsgetProduct = universalAgoragetProduct, moduleexportationsgetProducts = getProducts, moduleexportationsgetMerchantsList = getMerchantsList, moduleexportationssearchByQueryWithRawResults = searchByQueryWithRawResults, moduleexportationsbuildMerchantsByUrlQuery = universalAgorabuildMerchantsByUrlQuery;
}, {“10”: 10, “23”: 23, “1359”: 1359, “1360”: 1360}];
la fenêtremodules [“1359”] = [function (require, module, exports) {“use strict”; const _map = require (50), _ get = require (23), _ isArray = require (150), _ set = require (107) , _isObject = require (88), _ cloneDeep = require (60), _ uniq = require (91); function formatSearchResult (e) {return _map (eles coupshits, “_ source”)} function newQuery (e) {if (! e) throw new Error (“Un` index` est requis pour construire une requête “); return {index: e, type:” _ doc “, body: {requête: {}}}} function addShould (e, o) {var t = _get (e, “bodyrequetebooléenshould “, void 0), r = _isArray (o); return t? r? _set (e,” bodyrequetebooléendevrait “, tconcat (o)) 🙁 tpush (o), _ set (e, “corpsrequetebooléendevrait “, t)): _ set (e,” corpsrequetebooléendevrait “, r? o: [o]), e} function addMust (e, o) {var t = _get (e,” bodyrequetebooléenmust “, void 0), r = _isArray (o); return t? r? _set (e,” bodyrequetebooléendoit “, tconcat (o)) 🙁 tpush (o), _ set (e, “corpsrequetebooléendoit “, t)): _ set (e,” corpsrequetebooléenmust “, r? o: [o]), e} function addMustNot (e, o) {var t = _get (e,” bodyrequetebooléenmust_not “, void 0), r = _isArray (o); return t? r? _set (e,” bodyrequetebooléenmust_not “, tconcat (o)) 🙁 tpush (o), _ set (e, “corpsrequetebooléenmust_not “, t)): _ set (e,” corpsrequetebooléenmust_not “, r? o: [o]), e} function addFilter (e, o) {var t = _get (e,” bodyrequetebooléenfilter “, void 0); if (! _ isObject (o)) throw new Error (” Filter query required to be an object “); return t? _isArray (t)? (tpush (o), _ set (e, “corpsrequetebooléenfiltre “, t)): _ set (e,” corpsrequetebooléenfiltre “, [_ cloneDeep (t), o]): _ set (e,” corpsrequetebooléenfilter “, o), e} function addMinimumShould (e, o) {if (” number “! = typeof o) throw new Error (” Un nombre est requis comme second argument “); return _set (e,” bodyrequetebooléenminimum_should_match “, o), e} fonction addSort (e, o) {var t = _get (e,” corpssort “); retourne _isArray (t) || _set (e,” corpstrier “, t = []), tpush (o), e} function addSize (e, o) {if (! o&&0! == o) return e; if (o = parseInt (o), isNaN (o)) throw new Error (`Le deuxième argument doit être un nombre: $ {o} `); return _set (e,” corpssize “, o)} function addFrom (e, o) {if (! o&&0! == o) return e; if (o = parseInt (o), isNaN (o)) throw new Error (` Le second argument doit être un nombre: $ {o} `); return _set (e,” corpsfrom “, o)} function onlyWithTheseFields (e, o) {if (! _ isArray (o)) throw new Error (” Second argument is required to be an Array “); return _set (e,” body_la sourceinclude “, _ uniq (o)), e} function onlyWithinThisSite (e, o) {return osubsiteSlug? addFilter (e, {terme: {sous-site: osubsiteSlug}}) 🙁 addFilter (e, {terme: {site: oslug}}), addMustNot (e, {existe: {field: “subsite”}})), e} function onlyWithinThisDomain (e, o) {return addFilter (e, {prefix: {canonicalUrl: `http: // $ {ohost} `}}), e} function withinThisSiteAndCrossposts (e, o) {var t = {term: {}}, r = {bool: {should: [], minimum_should_match: 1}}; return tterm [“crosspost”(osubsiteSlug || olimace)] =! 0, rbooléendevraientpousser (t), osubsiteSlug? rbooléendevraientpush ({terme: {sous-site: osubsiteSlug}}) 🙁 rbooléendevraientpush ({term: {site: oslug}}), addMustNot (e, {existe: {field: “subsite”}})), addFilter (e, r), e} function withinThisDomainOrCrossposts (e, o) {return addShould (e, {term: {[ `crosspost$ {osubsiteSlug || oslug} `]:! 0}}), addShould (e, {préfixe: {canonicalUrl:` http: // $ {ohost} `}}), addMinimumShould (e, 1), e} function moreLikeThis (e, o, t) {let r = {fields: [” tags “], comme: {_ index: eindex, _type: “_ doc”, _ id: o}, include:! 1, min_term_freq: 1, max_query_terms: 12, min_doc_freq: 1}; return {more_like_this: Objectassign (r, t)}} function addAggregation (e = {}, o) {const {body: t = {}} = e; return o? (taggs? _set (e, “corpsaggs “, Objetattribuer (taggs, o)): _ set (e, “corpsaggs “, o), e): e} function formatAggregationResults ({aggregationName: e =” “, field: o =” “, subfield: t =” “, skipEmpty: r =! 0}) {return function (s = {}) {let i = _get (s, `agrégations$ {e} $ {t? “”t””:””} buckets`, []); renvoie r&& (i = ifiltre (e => 0! == _ get (e, “doc_count”, 0))), imap (e => e [o] || “”)}} function addGeo (e, o) {if (! _ isArray (o)) throw new Error (“Second argument is required to be an Array”); if ( 2! == olength) throw new Error (“Le tableau doit avoir une longueur de 2”); if (osome (isNaN)) throw new Error (“Le tableau ne doit contenir que des nombres”); return _set (e, “bodyrequetegeo_shapeemplacementformetype “,” point “), _ set (e,” corpsrequetegeo_shapeemplacementformecoordonnées “, o), e} function combineFunctionScoreQueries (e, o) {let t = _cloneDeep (_get (e,” bodyrequête “, {})), r = _cloneDeep (_get (o,” corpsrequête “, {})), s = _get (e,” corpssort “); retourne _set (e,” corpsrequête “, {}), _ set (e,” corpsrequetefunction_scorefonctions “, []), ecorpsrequetefunction_scoreles fonctionspush ({filtre: t, poids: 20}), ecorpsrequetefunction_scoreles fonctionspush ({filter: r, weight: 10}), ecorpsrequetefunction_scorescore_mode = “max”, ecorpsrequetefunction_scoremin_score = 10, _isArray (s) || _set (e, “corpstrier “, s = []), sunshift ({_ score: “desc”}), e} function addNestedObjQuery (e, o, t) {if (! e) throw new Error (“Il n’y a pas de requête de base pour effectuer l’opération addNestedObjQuery”); if (! o ) throw new Error (“Il n’y a pas de chemin d’objet imbriqué sur lequel effectuer la requête imbriquée”); if (! t) throw new Error (“Il n’y a pas de chemin de requête imbriqué pour effectuer la requête imbriquée”); return _set (e , “imbriqué”, {chemin: o, requête: t}), e} fonction addMatchAll (e) {return _set (e, “corpsquery “, {match_all: {}}), e} moduleexportations = nouvelle requête, moduleexportationsaddGeo = addGeo, moduleexportationsaddAggregation = addAggregation, moduleexportationsaddShould = addShould, moduleexportationsaddFilter = addFilter, moduleexportationsaddMust = addMust, moduleexportationsaddMustNot = addMustNot, moduleexportationsaddMinimumShould = addMinimumShould, moduleexportationsaddSort = addSort, moduleexportationsaddSize = addSize, moduleexportationsaddFrom = addFrom, moduleexportationsonlyWithTheseFields = onlyWithTheseFields, moduleexportationsonlyWithinThisSite = onlyWithinThisSite, moduleexportationsonlyWithinThisDomain = onlyWithinThisDomain, moduleexportationswithinThisSiteAndCrossposts = withinThisSiteAndCrossposts, moduleexportationswithinThisDomainOrCrossposts = withinThisDomainOrCrossposts, moduleexportationsformatAggregationResults = formatAggregationResults, moduleexportationsformatSearchResult = formatSearchResult, moduleexportationsmoreLikeThis = moreLikeThis, moduleexportationscombineFunctionScoreQueries = combineFunctionScoreQueries, moduleexportationsaddNestedObjQuery = addNestedObjQuery, moduleexportationsaddMatchAll = addMatchAll;
}, {“23”: 23, “50”: 50, “60”: 60, “88”: 88, “91”: 91, “107”: 107, “150”: 150}];
la fenêtremodules [“1360”] = [function (require, module, exports) {(function (process, __ filename) {(function () {
“use strict”; const _forEach = require (41), _ get = require (23), _ filter = require (134), _ map = require (50), _ isEmpty = require (87), urlParse = require (51), log = nécessitent (22)setup ({fichier: __ nom de fichier}), queryService = require (1359), universalRest = require (10), AGORA_HOST = windowtraiterenvAGORA_HOST, AGORA_ELASTIC_PREFIX = fenêtretraiterenvAGORA_ELASTIC_PREFIX, AGORA_ENDPOINT = AGORA_HOST? `$ {AGORA_HOST} / api / v1`: null, requestHeader = {” Content-Type “:” application / json “}, PRODUCTS_INDEX =” agora-products “, AFFILIATES_INDEX =” affiliés_INDEX ” = “détaillants”, FILTER_KEY = {marchands: “nom”, affiliés: “affilié”}, 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)alors (handleResponse)alors (e => t? filterByLocale (e, t): e)alors (e => ({total: elongueur, produits: e}))catch (handleError (n))} function getProduct (e, t) {const r = `$ {AGORA_ENDPOINT} / products / $ {e}`; if (! AGORA_ENDPOINT) throw new Error (“Aucun point de terminaison Agora n’a été défini” ); if (“string”! = typeof e) throw new Error (“request must provide a product id”); return fetch (r)alors (handleResponse)alors (e => t? filterByLocale (e, t): e)catch (handleError (r))} function postProduct (e) {const t = `$ {AGORA_ENDPOINT} / products`, r = {method:” POST “, headers: requestHeader, body: JSONstringify (e)}; renvoie fetch (t, r)alors (handleResponse)catch (handleError (t))} function putProduct (e, t) {const r = `$ {AGORA_ENDPOINT} / products / $ {e}`, a = {method: “PUT”, headers: requestHeader, body: JSONstringify (t)}; renvoie fetch (r, a)alors (handleResponse)catch (handleError (r))} function patchProduct (e, t) {const r = `$ {AGORA_ENDPOINT} / products / $ {e}`, a = {method: “PATCH”, headers: requestHeader, body: JSONstringify (t)}; renvoie fetch (r, a)alors (handleResponse)catch (handleError (r))} function deleteProduct (e) {const t = `$ {AGORA_ENDPOINT} / products / $ {e}`; return fetch (t, {method: “DELETE”, headers: requestHeader})alors (handleResponse)catch (handleError (t))} function getMerchantList (e) {const {limit: t = 100, fields: r = “”} = e; return Promiserésoudre ([{name: “Amazon”}])catch (handleError (“”))} function getMerchant (e) {const t = `$ {AGORA_ENDPOINT} / merchants / $ {e}`; if (“string”! = typeof e) throw new Error (“request must provide un identifiant de produit “); renvoie fetch (t)alors (handleResponse)catch (handleError (t))} function patchMerchant (e, t) {const r = `$ {AGORA_ENDPOINT} / merchants / $ {e}`, a = {method: “PATCH”, headers: requestHeader, body: JSONstringify (t)}; renvoie fetch (r, a)alors (handleResponse)catch (handleError (r))} function postMerchant (e) {const t = `$ {AGORA_ENDPOINT} / merchants`, r = {method:” POST “, headers: requestHeader, body: JSONstringify (e)}; renvoie fetch (t, r)alors (handleResponse)catch (handleError (t))} function putMerchant (e, t) {const r = `$ {AGORA_ENDPOINT} / merchants / $ {e}`, a = {method: “PUT”, headers: requestHeader, body: JSONstringify (t)}; renvoie fetch (r, a)alors (handleResponse)catch (handleError (r))} function deleteMerchant (e) {const t = `$ {AGORA_ENDPOINT} / merchants / $ {e}`; return fetch (t, {method: “DELETE”, headers: requestHeader})alors (handleResponse)catch (handleError (t))} function postLocale (e) {const t = `$ {AGORA_ENDPOINT} / locales /`, r = {method: “POST”, headers: requestHeader, body: JSONstringify (e)}; renvoie fetch (t, r)alors (handleResponse)catch (handleError (t))} function patchLocale (e, t) {const r = `$ {AGORA_ENDPOINT} / locales / $ {e}`, a = {method: “PATCH”, headers: requestHeader, body: JSONstringify (t)}; renvoie fetch (r, a)alors (handleResponse)catch (handleError (r))} function handleResponse (e) {try {return ejson ()alors (t => {si (estatus> = 400) {const e = _get (t, “messagedétails [0]message “); throw new Error (e)} return t})} catch (e) {throw new Error (emessage)}} function handleError (e) {return t => {throw log (“warn”, `Failed request to $ {e}`, t), new Error (`request to $ {e} failed`)}} function buildProductsQuery ({search: e = “”, limit: t = 100, start: r = 0, sortDate: a = “”, filters: s, locale: c}) {const n = queryService (PRODUCTS_INDEX), o = s&CSSEETCHARObjectclé (s)longueur? Objetclé (s)filtre (e => ArrayisArray (s [e]) &&s [e]length): [], i = {}, u = {}; if (prependElasticPrefix (n), e || olongueur || c || queryServiceaddMatchAll (n), c&& (queryServiceaddMust (i, {match: {“localeslocale “: c}}), queryServiceaddMust (u, {match: {“marchandslocale “: c}})), e) if (isURL (e)) queryServiceaddMust (n, [queryServiceaddNestedObjQuery ({}, “marchands”, {match: {“marchandsbuyUrl “: e}})]); else {const t = {}; queryServiceaddShould (t, [{match: {“localesproductId “: e}}, {match: {” localesname “: {query: e, boost: 2}}}]), queryServiceaddMinimumShould (t, 1), queryServiceaddMust (i, _get (t, “corpsrequête “))} si (olongueur) {const e = {}; oforEach (t => {const r = s [t], a = FILTER_KEY [t], c = {}; a&& (c [`marchands$ {a} `] = r, queryServiceaddShould (e, {terms: c}))}), queryServiceaddMinimumShould (e, 1), queryServiceaddMust (u, _get (e, “corpsquery “))} return _isEmpty (i) || queryServiceaddMust (n, [queryServiceaddNestedObjQuery ({}, “locales”, _ get (i, “bodyquery “))]), _ isEmpty (u) || queryServiceaddMust (n, [queryServiceaddNestedObjQuery ({}, “marchands”, _ get (u, “corpsquery “))]), queryServiceaddSize (n, t), r> = 0&&queryServiceaddFrom (n, r), “desc” === a || “asc” === a? queryServiceaddSort (n, {updatedAt: {order: a}}): e&&queryServiceaddSort (n, {_ score: {order: “desc”}}), n} function prependElasticPrefix (e) {return eindex = AGORA_ELASTIC_PREFIX? `$ {AGORA_ELASTIC_PREFIX} _ $ {eindex} `: eindex, e} function buildMerchantsAggregation (e = 1e6, t) {const r = queryService (PRODUCTS_INDEX); return prependElasticPrefix (r), queryServiceaddMust (r, {match: {active:! 0}}), t&&queryServiceaddMust (r, queryServiceaddNestedObjQuery ({}, “marchands”, _ get (queryServiceaddMust ({}, {match: {“marchandslocale “: t}}),” corpsquery “))), queryServiceaddAggregation (r, {marchands: {nested: {path: “merchants”}, aggs: {name: {terms: {field: “marchandsnom “, taille: e}}}}}), queryServiceaddSize (r, 0), r} function isURL (e) {return URL_REtest (e)} function filterByLocale (e, t, r = {locales: “US”}) {const a = ArrayisArray (e); if (_isEmpty (e)) return a? []: {}; const s = [“locales”, “marchands”], c = a? e: [e], n = Objectkeys (r), o = _map (c, e => {const a = Objectassign ({}, e); return _forEach (s, s => {if (Objectclés (a)inclut (s)) {const c = t? _filter (e [s], [“locale”, t]): e [s]; a [s] = c,! clongueur&&ninclut (s) && (a [s] = (_ filtre (e [s], [“locale”, r [s]]) || [])carte (e => (eid = nul, elocale = t, e)))}}), aname = _get (a, “locales [0]name “,” “), a}); renvoie a&&olength? o: _get (o, “[0]”, {})} fonction searchByQueryWithRawResults (e, t) {const r = `// $ {tsitehôte} $ {80! == tsiteport? `: $ {tsiteport} `:” “} $ {tsitechemin} / _ agora / _search`; retourne universalRestpost (r, e,! 0)} function buildMerchantsByUrlQuery (e) {const t = queryService (PRODUCTS_INDEX); renvoie prependElasticPrefix (t), queryServiceaddNestedObjQuery (tcorpsrequête, “marchands”, {match: {“marchandsbuyUrl “: 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)alors (e => _ get (e, “frappeles coups”,[])map (e => _ get (e, “_ source”, {})))} function getRetailersByAffiliateId (e, t) {const r = queryService (RETAILERS_INDEX); return e? (prependElasticPrefix (r), queryServiceaddMust (r, [queryServiceaddNestedObjQuery ({}, “affiliateRetailers”, {match: {“affiliateRetailersaffiliateId “: e}})]), queryServiceaddSize (r, 1e3), queryServiceaddSort (r, {name: “asc”}), searchByQueryWithRawResults (r, t)alors (e => _ get (e, “frappeles coups”,[])map (e => _ get (e, “_ source”, {})))): Promesserejette ()} function getMerchantsList (e) {renvoie searchByQueryWithRawResults (buildMerchantsAggregation (1e6, _get (e, “siteagoraLocale “)), e)alors (queryServiceformatAggregationResults ({nomagrégation: “marchands”, champ: “clé”, sous-champ: “nom”}))} function queryRetailersByUrl (e, t) {const r = urlParse (e)hébergersplit (“www”)join (“”), a = queryService (RETAILERS_INDEX); renvoie queryServiceaddMust (a, {match: {domaines: r}}), prependElasticPrefix (a), queryServiceaddSize (a, 10), searchByQueryWithRawResults (a, t)alors (e => _ get (e, “frappeles coups”,[])map (e => _ get (e, “_ source”, {})))} require (208), moduleexportations = {buildProductsQuery: buildProductsQuery, buildMerchantsAggregation: buildMerchantsAggregation, getProducts: getProducts, getProduct: getProduct, postProduct: postProduct, putProduct: putProduct, patchProduct: patchProduct, postProducts, getProduct: getProduct, postProduct: postProduct, putProduct: putProduct, patchProduct: patchProduct, postProducts: getProduct: getProduct, postProduct: postProduct, putProduct: putProduct, patchProduct: patchProduct, postProducts: getProduct: getProduct, postProduct: postProduct, putProduct: putProduct, patchProduct: patchProduct, postProduct: patchMerchantMerchant: patchMerchantMerchant: patchMerchant , putMerchant: putMerchant, deleteMerchant: deleteMerchant, isURL: isURL, filterByLocale: filterByLocale, patchLocale: patchLocale, postLocale: postLocale, buildMerchantsByUrlQuery: buildMerchantsByUrlQuery, getAffiliatesByLocale: getAffiliatesByLocale, searchByQueryWithRawResults: searchByQueryWithRawResults, getRetailersByAffiliateId: getRetailersByAffiliateId, getMerchantsList: getMerchantsList, queryRetailersByUrl: queryRetailersByUrl};

})appeler (ceci)})call (this, require (11), “/ services / universal / agorajs “)}, {” 10 “: 10,” 11 “: 11,” 22 “: 22,” 23 “: 23,” 41 “: 41,” 50 “: 50,” 51 “: 51,” 87 “: 87,” 134 “: 134,” 208 “: 208,” 1359 “: 1359}];
la fenêtremodules [“1361”] = [function (require, module, exports) {“use strict”; const _map = require (50), _ mapValues ​​= require (203), _ Reduce = require (89), _ assign = require (138) , _get = require (23), _ pickBy = require (139), _ find = require (44), affiliateFields = [“siteShortKey”, “pageUri”, “productId”, “utmMedium”, “utmSource”, “sessionCount”, ” format “,” utmCampaign “,” referrer “,” deviceAbbreviation “,” zone “], affiliateSettings = {amazon: {domaines: [” amazoncom “,” amazoncouk “], subtagKey:” ascsubtag “, maxLength: 99, délimiteur:” standard “, encoder:! 1}, narrativ: {domaines: [” shop-linksco / “], subtagKey:” u1 “, maxLength: 99, délimiteur:” standard “, encoder:! 0}, rakuten: {domaines: [” clicliensynergiecom / deeplink “,” linksynergyWalmartcom / deeplink “], subtagKey:” u1 “, maxLength: 72, délimiteur:” standard “, encoder:! 1}, shareasale: {domaines: [” shareasalecom “], subtagKey:” afftrack “, maxLength: 99, délimiteur:” standard “, encoder:! 1}, skimlinks: {domaines: [” goredirigercom “], subtagKey:” xcust “, maxLength: 50, délimiteur:” alt “, encoder:! 1}, impact: {domaines: [], subtagKey:” subId2 “, maxLength: 99, délimiteur:” standard “, encoder:! 1}, avantlink: {domaines: [“avantlinkcom “], subtagKey:” ctc “, maxLength: 64, délimiteur:” alt “, encoder:! 1}, cj: {domaines: [” tkqlhcecom “,” jdoqocycom “,” dpbolvwnet “,” anrdoezrsnet “,” kqzyfjcom “], subtagKey:” sid “, maxLength: 64, délimiteur:” alt “, encoder:! 1, joinBy:” / “, assignBy:” / “, positionné:! 0, position:” after “, positionKey: “type / dlg /”}, partenariat: {domaines: [“prfhn “], subtagKey:” pubref “, maxLength: 100, délimiteur:” alt “, encoder:! 1, joinBy:” / “, assignBy:”: “, positionné:! 0, position:” avant “, positionKey: “destination”}, pepperjam: {domaines: [“gopjncom “,” pntraccom “,” pjtracom “,” pjatrcom “,” pntrscom “,” pntracom “], subtagKey:” sid “, maxLength: 100, délimiteur:” alt “, encoder:! 1}, awin: {domaines: [” awin1com “], subtagKey:” pref1 “, maxLength: 100, délimiteur:” alt “, encoder:! 1, positionné:! 0, position:” before “, positionKey:” ued “}}, subtagDictionary = {siteShortKey:” “, pageUri:” p “, productId:” i “, zone:” z “, deviceAbbreviation:” d “, utmSource:” s “, utmMedium:” m “, utmCampaign:” c “, sessionCount:” u “, référent: “r”, format: “t”}, délimiteurs = {standard: [“[“, “]”], alt: [“__”, “_”]}; function parseValueFromSubtag (e, t, i) {const a = t [0] et [1], s = isplit (a) [1] || “”; retourne s? ssplit (t [0]) [0]: null} function parseSubtag (e, t = délimiteursstandard) {return _pickBy (_mapValues ​​(subtagDictionary, i => parseValueFromSubtag (i, t, e)))} function generateSubtag (e, t, i = délimiteursstandard, a =! 1) {const s = (e => t => `$ {e [0]} $ {t} $ {e [1]}`) (i); soit n = _reduce (affiliateFields, (t, i) => {const a = s (subtagDictionary [i]), n = e [i]; return t (n? an: “”)}, “”); return a&& (n = encodeURIComponent (n )), n} fonction applySubtagMaxlength (e, t) {var i = t-3 * (ediviser(“,”)longueur-1 esplit (“|”)length-1); retourne esubstr (0, i)} function getSubtagData ({getters: e, champs: t = [], visitState: i, locals: a, productLink: s}) {let n = {}; retourne tforEach (t => {n [t] = e [t] &&e [t] ({visitState: i, locaux: a, productLink: s})}), n} function parseQuery (e = “”) {return esplit (“&”)réduire ((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 = sdivisé (n)tranche (1)joindre (n); gpush (`$ {r} $ {t}`, u), a&&gpush (a), d&&gpush (d)} if (“before” === a) {const [e, a = “”] = rsplit (`$ {i} $ {o}`), s = adivisé (n)tranche (1)joindre (n); gpush (e), s&&gpousser (s), gpush (u, `$ {t} $ {l}`)} retourne gréduire ((e, t) => {renvoyer etranche (-1) === n&& (e = etranche (0, -1)), elongueur? [e, t]join (n): t}, “”)} function processSubtag ({getters: e, affiliate: t, url: i, visitState: a = {}, locaux: s}) {const n = affiliateFields, o = _get ( affiliateSettings [t], “subtagKey”), r = _get (affiliateSettings [t], “maxLength”), l = _get (affiliateSettings [t], “encode”), u = _get (affiliateSettings [t], “delimiter” ), g = _get (affiliateSettings [t], “positionné”,! 1), d = _get (affiliateSettings [t], “position”), c = _get (affiliateSettings [t], “positionKey”), p = _get (affiliateSettings [t], “assignBy”, “=”), m = _get (affiliateSettings [t], “joinBy”, “&”), f = délimiteurs [u]; laissez b, y, S = iindexOf (“?”)> = 0? idiviser(“?”)pop (): “”, h = parseQuery (S), _ = getSubtagData ({getters: e, fields: n, visitState: a, locals: s, productLink: i}); return o&& (y = h [o] || “”, y = applySubtagMaxlength (b = generateSubtag (_ = _ assign (parseSubtag (y, f), _ pickBy (_)), t, f, l), r), h [o] = y, S = _map (h, (e, t) => `$ {t} = $ {e}`)join (“&”), i = g? processSubtagPosition ({url: i, positionKey: c, subtagKey: o, position: d, subtagString: y, joinBy: m, assignBy: p}): isplit (“?”) [0] `? $ {S}`), i} function getAffiliate (e) {const t = Objectkeys (affiliateSettings); return _find (t, t => _ find (affiliateSettings [t]domaines, t => ecomprend (ttoLowerCase ()))) || “”} function createSubtagProcessor (e) {return ({url: t, visitState: i, locals: a, affiliate: s}) => (s = getAffiliate (t) || s) ? processSubtag ({getters: e, url: t, affiliate: s, visitState: i, locaux: a}): “”} moduleexportationsgenerateSubtag = generateSubtag, moduleexportationsgetAffiliate = getAffiliate, moduleexportationscreateSubtagProcessor = createSubtagProcessor, moduleexportationsprocessSubtag = processSubtag;
}, {“23”: 23, “44”: 44, “50”: 50, “89”: 89, “138”: 138, “139”: 139, “203”: 203}];
la fenêtremodules [“article-navclient “] = [function (require, module, exports) {” use strict “; const dom = require (3), _ throttle = require (37), $ visibilité = require (4), $ popup = require (53), $ gtm = require (2), {reportSocial: reportSocial} = require (52), auth0 = require (12); moduleexportations = (t => {soit e = domtrouve(“en-tête de page “), i = domtrouve(“article-content “), o = domtrouver (t, “deepscroll-headline “), r = domtrouver (t, “deepscroll-rubric “), l = domtrouver (t, “deepscroll-rubric-sponsorisé “), s = domtrouve(“article en-tête d’article rubrique “), n = domfind (“# deepscroll_center_divider”), a = domtrouve(“paragraphe d’argile “), d = domtrouver (t, “logo “), c = domtrouver (t, “dyn-cut-logo “), p = domtrouver (t, “article-nav-top “), u = domtrouver (t, “article-nav-deepscroll “), m = domfind (‘link [rel = “canonical”]’), f = m&&mgetAttribute (“href”), g = domfind (‘meta [propriété = “og: image”]’)? domfind (‘meta [propriété = “og: image”]’)getAttribute (“content”): “”, h = domfind (‘meta [property = “og: title”]’)? domfind (‘meta [property = “og: title”]’)getAttribute (“content”): “”, y = domtrouver (t, “lien de partagefacebook “), w = domtrouver (t, “lien de partagetwitter “), v = domtrouver (t, “lien de partagepinterest “), b = tclassListcontient (“header-simple”), x = windowgetComputedStyle (d, null)getPropertyValue (“- targetFlexBasis”), L = fenêtregetComputedStyle (d, null)getPropertyValue (“- verticalStart”) || 0, C = fenêtregetComputedStyle (d, null)getPropertyValue (“- verticalEnd”) || 0, $ =! 1, _ = 55; fonction k () {_ = parseInt (fenêtregetComputedStyle (d, null)getPropertyValue (“- stickyTop”)) || _, C = $ visibilitégetViewportWidth ()> = 1180? fenêtregetComputedStyle (d, null)getPropertyValue (“- verticalEndDesktop”) || C: fenêtregetComputedStyle (d, null)getPropertyValue (“- verticalEnd”) || C} fonction S () {$ =! 1, P ()} fonction P () {let {top: o} = tgetBoundingClientRect (), r = fenêtregetComputedStyle (d, null)getPropertyValue (“- baseFlexBasis”), l = r-x, s = (_- egetBoundingClientRect ()haut) / _, n = Mathématiquesmax (0, mathématiquesmin (1, s)), m = L-C-2, f = Mathématiquesrond (L- (m * n 2)), g = Mathceil (r-l * n); si (st? eclassListadd (“en-tête après défilement”): eclassListremove (“en-tête après défilement”), pstyletop = C “px”, ustyletop = C “px”, vide (dstyleflexBasis = x “px”)} fenêtrescrollY> o? tclassListadd (“after-scroll”): tclassListremove (“after-scroll”), fenêtrescrollY> o? eclassListadd (“en-tête après défilement”): eclassListremove (“en-tête après défilement”), pstyletop = f “px”, ustyletop = f “px”, dstyleflexBasis = g “px”, c&& (cstyleflexBasis = g “px”), $ visibilitégetViewportWidth ()> = 1180&&i&&function () {const t = a? $ visibilitégetPageOffset (a)top-70: 0, e = $ visibilitégetPageOffset (i)top, o = Mathmax (e, t); retourne Mathmax (fenêtrescrollY, documentcorpsscrollTop)> = o} ()? tclassListajouter (“défilement profond”): tclassListremove (“deep-scroll”)} fonction V (t) {var e = tcurrentTarget, i = egetAttribute (“href”), o = egetAttribute (“data-handle”), r = $ popupgetPopupClass (eclassList), l = $ visibilitéisBelowPrimaryContent (e)? “bottom”: “top”; $ gtmreportNow ({event: “social-share-widget”, clickLocation: l, socialNetwork: r}), reportSocial (r), $ visibilitégetViewportWidth ()> = 768&&r&& (tpreventDefault (), $ popuppopWindow (r, o, i))}! function () {const e = _throttle (P, 30); if (k (), domfindAll (t, “lien de partage”)forEach (t => taddEventListener (“clic”, 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)” &url = “f”? utm_source = tw&utm_medium = s3&utm_campaign = sharebutton-t&via = “wgetAttribute (“data-handle”)), v&& (vhref = “http: // pinterestcom / pin / create / button /? url = “f”? utm_source = pin&utm_medium = s3&utm_campaign = sharebutton-t&description = “encodeURIComponent (h)” &media = “g), b) return; auth0on (“init”, () => {auth0isSubscriber () &&tclassListajouter (“abonné”)}), fenêtreaddEventListener (“scroll”, e), fenêtreaddEventListener (“redimensionner”, S), fenêtreaddEventListener (“redimensionner”, k), s? sclassListcontient (“rubric-sponsor-story”) &&l? (rclassListsupprimer (“visible”), lclassListajouter (“visible”), ltextContent = stexte || stextContent) 🙁 rtextContent = stexte || stextContent, rhref = shref || “#”) 🙁 nstyledisplay = “aucun”, rstyledisplay = “aucun”); S (), otextContent = h} ()});
}, {“2”: 2, “3”: 3, “4”: 4, “12”: 12, “37”: 37, “52”: 52, “53”: 53}];
la fenêtremodules [“nav-search-buttonclient “] = [function (require, module, exports) {” use strict “; const dom = require (3), $ gtm = require (2), {reportSearch: reportSearch} = require (52), openClass =” open “, closeClass =” fermé “; moduleexportations = (e => {const s = e, t = domtrouver (e, “nav-search-button-trigger “), n = domtrouver (e, “nav-search-form “), o = domtrouver (e, “search-input “); fonction i () {const e = domfind (“corps”); sclassListbascule (closeClass), sclassListbascule (openClass), eclassListbascule (“désactivé”), eclassListtoggle (“search-active”)} fonction c () {i (), sclassListcontient (openClass) &&ofocus ()} fonction a (e) {! scontient (ecible) &&sclassListcontient (openClass) &&i ()} fonction r (e) {27 === ekeyCode&&sclassListcontient (openClass) &&i ()} fonction d (e) {epreventDefault (), $ gtmreportCustomEvent ({category: “search”, label: “on =” windowemplacementhref, action: ovaleur}), reportSearch ((ovaleur || “”)split (“”), () => nsubmit ())}! fonction (e, s, t) {s&&saddEventListener (“clic”, c); t&&taddEventListener (“soumettre”, d); eaddEventListener (“clic”, a), documentaddEventListener (“keydown”, r), eaddEventListener (“touchend”, a), naddEventListener (“soumettre”, d)} (domfind (“corps”), t, domtrouver (e, “nav-search-form submit “))});
}, {“2”: 2, “3”: 3, “52”: 52}];
la fenêtremodules [“nav-dropdown-buttonclient “] = [function (require, module, exports) {” use strict “; const dom = require (3), visibilité = require (4), {reportSearch: reportSearch} = require (52); function getNextSiblings (e) {const t = []; soit i = e; pour (; i = inextElementSibling;) tpush (i); retourne t} fonction getMainChildren (e, t) {let i = [], n = efirstChild; pour (; n = nnextElementSibling;) ncontient (t)? nisSameNode (t) || (i = iconcat (getMainChildren (n, t))): ipush (n); return i} function isMobile () {return visibilitégetViewportWidth () {let t; const i = equerySelector (“nav-dropdown-button-trigger “), n = domfind (“corps”), o = domtrouve(“haut “), l = domtrouve(“liste de confettis “), s = domtrouve(“nav-dropdown-button_nymag-homepage “), r = domfind (“en-têteen-tête de page “) || o, c = domfind (‘[data-editable = “main”]’), a = domle plus proche (e, “en-tête de page “), d = a? aquerySelectorAll (“image de confettisbleu “):” “, g = a? aquerySelectorAll (“image de confettisvert “):” “, u = a? aquerySelectorAll (“image de confettisorange “):” “, f = a? aquerySelectorAll (“image de confettisorange2 “):” “, m = a? aquerySelectorAll (“image de confettisrose “):” “, p = a? aquerySelectorAll (“image de confettisviolet “):” “, h = a? aquerySelectorAll (“image de confettisjaune “):” “, y = equerySelectorAll (“dropdown-nav-search-form “); fonction b (e) {soit t = ecurrentTarget, i = tquerySelector (“nav-search-input “), n = i? ivaleursplit (“”): []; epreventDefault (), reportSearch (n, () => tsoumettre ())} iaddEventListener (“click”, () => {initializeHeight (e), v ()}); for (soit e = 0, t = ylongueur; e (fonction (e) {eclassListremove (“c-right”, “c-rightdown”, “c-left”, “c-leftdown”)}) (e))}, 500)} ()) 🙁 isetAttribute (“aria-extended”, “true”), t = fenêtrescrollY), eclassListbascule (“fermé”), eclassListbascule (“ouvrir”), nclassListtoggle (“disabled”), a&&eisSameNode (s)? function () {if (ocontient (e)) {const e = getMainChildren (o, s); S (e), w (o)} if (ccontient (e)) {const e = getMainChildren (c, s); oclassListtoggle (“composant caché”), w (c), S (e)} eclassListtoggle (“open-mobile”)} (): a&&! y&&r&& (w (r), function () {const i = eclassListcontient (“ouvrir”)? 0: t; fenêtrescrollTo ({top: i})} ())} fonction w (e) {S (getNextSiblings (e))} fonction S (e) {eforEach (e => {eclassListtoggle (“hidden-component”)})} naddEventListener (“clic”, t => {! econtient (tcible) &&eclassListcontient (“open”) &&v ()}), documentaddEventListener (“keydown”, t => {27 === tkeyCode&&eclassListcontient (“ouvrir”) &&v ()})});
}, {“3”: 3, “4”: 4, “52”: 52}];
la fenêtremodules [“suivreclient “] = [function (require, module, exports) {” use strict “; const _find = require (44), $ popup = require (53); DScontrôleur (“suivre”, [fonction () {fonction e (e) {ceciel = e, cecipoignée = egetAttribute (“data-handle”)} retourne eprototype = {événements: {clic: “openFollow”}, openFollow: function (e) {var t, n, a = $ popupposition, o = $ popupparams, l = {}, r = {w: 780, h: 500}, s = nouveau a (rw, rh), c = cecielclassList; lhandle = cecipoignée, rgauche = sgauche, rhaut = stop, n = _find ([{className: “facebook”, url: “https: // facebookcom / {handle} “, réseau:” Facebook “}, {className:” pinterest “, url:” http: // wwwpinterestcom / {handle} “, réseau:” Pinterest “}, {className:” instagram “, url:” https: // wwwinstagramcom / {handle} “, réseau:” Instagram “}, {className:” rss “, url:” http: // feedsbrûleur d’alimentationcom / {handle} “, réseau:” RSS “}, {className:” twitter “, url:” https: // twittercom / intent / follow? screen_name = {handle} &tw_p = followbutton&variant = 20 “, réseau:” Twitter “}, {className:” snapchat “, url:” https: // wwwSnapchatcom / discover / {handle} “, réseau:” Snapchat “}], function (e) {return ccontient (eclassName)}), lurl = nURLreplace (“{handle}”, lpoignée), lréseau = nréseau, lname = “Suivre” lpoignée “on” lréseau, t = nouveau o (l, r), fenêtreouvert (tadresse, tnom, tcaractéristiques), epreventDefault ()}}, e}]);
}, {“44”: 44, “53”: 53}];
la fenêtremodules [“lien-commentairesclient “] = [function (require, module, exports) {” use strict “; const dom = require (3), _ get = require (23), _ isFinite = require (110), ajax = require (109); DScontroller (“comments-link”, [function () {var t, e = “http: //” documentdocumentElementgetAttribute (“data-uri”) “html “; function n (n) {var o; (thisel = n, cecoral_talk_root = ngetAttribute (“data-coral-talk”), cecicommentsCount = domtrouver (n, “comments-link-count “), cecicommentsText = domtrouver (n, “comments-link-text “), ceciisNavVariation = nclassListcontient (“comments-link_article-nav”), cecutoffCnt = ngetAttribute (“data-cutoffCnt”) || 1e3, t = `$ {cecicoral_talk_root} / api / v1 / graph / ql`, cecishouldRenderCommentStream ()) && (o = thisonCommentCountFetchedlier (ceci), ajaxsendReceiveJson ({méthode: “GET”, url: t ‘? query = {asset (url: “‘ e ‘”) {totalCommentCount}}’, dataType: “json”}, function (t, e) {var n = _get (e, “donnéesactiftotalCommentCount “, 0); return t? o (t): _ isFinite (n)? void o (null, n): o (” Unexpected Coral-Talk response “)}))} return nprototypeonCommentCountFetched = function (t, e) {if (t) return consolewarn (t); e> 0&& (ceisNavVariation&&e1? “s”: “”), ceelclassListremove (“no-comments”))}, nprototypeshouldRenderCommentStream = function () {return-1! == eindexOf (“@ published”)}, n}]);
}, {“3”: 3, “23”: 23, “109”: 109, “110”: 110}];
la fenêtremodules [“head-gtmclient “] = [function (require, module, exports) {” use strict “; const {getCLS: getCLS, getFID: getFID, getLCP: getLCP} = require (142), isProduction = require (9) (); function reportWebVitals (e) {isProduction || consolelog (“reportWebVitals:% O”, e); const t = “string” == typeof enom? eNomtoUpperCase (): enom; fenêtredataLayer = fenêtredataLayer || [], fenêtredataLayerpush ({event: “analyticsEvent”, event_action: t, event_category: “Web Vitals”, event_label: eid, valeur_événement: edelta, eventAction: t, eventCategory: “Web Vitals”, eventLabel: eid, eventNonInt:! 0, eventValue: edelta, nonInteraction:! 0, transport: “balise”})} getCLS (e => {edelta = Mathrond (1e3 * edelta), reportWebVitals (e)}), getFID (e => {edelta = Mathrond (edelta), reportWebVitals (e)}), getLCP (e => {edelta = Mathrond (edelta), reportWebVitals (e)});
}, {“9”: 9, “142”: 142}];
la fenêtremodules [“annonces-concertsclient “] = [function (require, module, exports) {” use strict “; const customMappings = {” crime-assault “:” Power “,” Care Money Product “:” Power “,” féminisme-politique-identité ” : “Power”, “culture-media”: “Culture”, célébrité: “Culture”, vivant: “Style”, mode: “Style”, shopping: “Style”, mariages: “Style”, beauté: “Style” , animaux: “Soi”, “apprentissage de la créativité”: “Soi”, “relations-amis famille”: “Soi”, “santé mentale personnalité comportement social”: “Soi”, “apprentissage de la créativité”: “Soi”, “santé -wellness “:” Self “, parentalité:” Self “,” relations-sexe dating mariage “:” Self “}, striptags = require (54); function installConcertAds () {const e = new URLSearchParams (windowemplacementchercher)get (“concert_config_url”), t = e || fenêtreconcertConfigUrl; fenêtre_nymPermutive || consolewarn (“ConcertAds initialisant sans Permutive”), fenêtreconcertAds = createConcertAds (), fenêtreconcertAnnoncesloadRemoteConfig (t)alors (function () {fenêtreconcertAnnoncesinstall ()})} function createConcertAds () {const e = getAuthStatus (); let t = getData (“title”), n = windowemplacementhref, i = getData (“section”), o = “”, a = getData (“type”), r = getData (“vertical”); t&& (t = striptags (htmlDecode (t))fractionné (“”)), n = ntranche (nlastIndexOf (“/”) 1); const l = {kw: getKeywords (), network: r, page_type: a, entry_group: i, keywords: t, pn: n}; return “Homepage” === a? o = “homepage”: “Section Page” === a&& (o = (o = windowemplacementchemin)remplacer (/ // g, “”)), i&&-1 === iindexOf (“”) && (o = i), customMappings [i] && (o = customMappings [i]), fenêtreemplacementnom d’hôterencontre(/aws / i) CSSEETCHAR& (lclay_sandbox_env = r), nouvelle fenêtreConcertAds ({cmd: [], emplacements: [], dfpVariables: l, slugPath: “/” oreplace (/ – | – / g, “-“), connecté: “non authentifié”! == e, paywallActive: getPaywallStatus (e)})} function getKeywords () {try {const e = window_nymPermutifarticlemots-clés; renvoyer e&&elongueur> 0&&esome (Boolean)? e: (documentquerySelector (‘meta [name = “keywords”]’) || documentquerySelector (‘meta [property = “article: tag”]’))getAttribute (“contenu”)diviser(“,”)map (fonction (e) {retour etrim ()})} catch (e) {return}} function getData (e) {if (window_nymPermutive) {if (e dans la fenêtre_nymPermutive) fenêtre de retour_nymPermutive [e]; if (fenêtre_nymPermutifarticle&&e dans la fenêtre_nymPermutifarticle) fenêtre de retour_nymPermutifarticle [e]; if (fenêtre_nymPermutifuser&&e dans la fenêtre_nymPermutifutilisateur) fenêtre de retour_nymPermutifuser [e]}} function htmlDecode (e) {var t = documentcreateElement (“div”); retourne tinnerHTML = e, 0 === tchildNodeslongueur? “”: tchildNodes [0]nodeValue} fonction getAuthStatus () {const e = JSONparse (localStoragegetItem (“auth0: profile”)), t = e? e [“http: // nymagcom / app_metadata “]: null; retourne t? thas_subscription? “intitulé”: “unentitled”: “unauthenticated”} function getPaywallStatus (e) {const t = getData (“totalCount”) || 0; return Boolean (t> = 3&& “intitulé”! == e)} windowConcertAds? InstallConcertAds (): fenêtreaddEventListener (“concertAdsReady”, installConcertAds);
}, {“54”: 54}];
la fenêtremodules [“curated-feedclient “] = [function (require, module, exports) {” use strict “; const dom = require (3), lazyLoad = require (96); function lazyLoadImage (e) {const o = domfind (e, “img [data-src]”), t = domfindAll (e, “source [data-srcset]”), a = domle plus proche (e, “feed-item “); if (o&&a) {new lazyLoadLazyLoader (a, o, t)init ()}} function handleLazyLoad (e) {(domfindAll (e, “élément d’alimentation “) || [])module forEach (lazyLoadImage)}exportations = (e => {const o = equerySelectorAll (bouton “show-more “); function t (e) {const {currentTarget: o} = e; if (o) {const e = oparentElementparentElement; e&&equerySelector (“teneur”)classListtoggle (“collapsed”)}} o&&oforEach (fonction (e) {eaddEventListener (“clic”, t)}), handleLazyLoad (e)});
}, {“3”: 3, “96”: 96}];
la fenêtremodules [“coral-talkclient “] = [function (require, module, exports) {” use strict “; const dom = require (3), store = require (116), visibilité = require (4), auth0 = require (12), TALK_AUTH = “talk: auth_token”; let coralEmbed, hasEmbedScriptLoaded =! 1, hasCoralTalkRendered =! 1; function renderComments (e) {if (hasEmbedScriptLoaded&&! hasCoralTalkRendered) {const t = {talk: `$ {eCORAL_TALK_HOST} `, auth_token: getAuthToken (), asset_url: eTALK_ASSET_URL}; hasCoralTalkRendered =! 0, coralEmbed = fenêtrecorailParlezrendre (ecommentStreamContainer, t)}} function getAuthToken (e) {var t = e&&e [“http: // nymagcom / coral_talk “] || auth0getTalkJwt (), i = magasinget (TALK_AUTH); retourne t? i&&t == i? i: (storeset (TALK_AUTH, t), t) 🙁 i&&storeremove (TALK_AUTH), null)} function coralLogin () {coralEmbedlogin (getAuthToken ())} function embedScript (e, t) {let i = documentcreateElement (“script”); itype = “text / javascript”, iasynchrone =! 0, jesrc = e, jeaddEventListener (“load”, () => {hasEmbedScriptLoaded =! 0, renderComments (t)}), documentgetElementsByTagName (“tête”) [0]appendChild (i)} fonction initVerificationMessage () {auth0isAuthenticated () &&auth0rafraichir (); soit e = documentquerySelector (“coral-talk-container “); auth0isAuthenticated () &&! auth0isEmailVerified () && (einsertAdjacentHTML (“beforebegin”, ‘ n n Veuillez vérifier votre compte pour activer les commentaires Vous n’avez pas reçu d’e-mail de vérification? Renvoyer l’e-mail maintenant n ‘), documentquerySelector (“lien d’activation “)addEventListener (“click”, sendVerificationEmail))} function sendVerificationEmail () {let e = documentquerySelector (“coral-talk-verify-address “); return fetch (` https: // $ {fenêtreemplacementhost} / _ user / verification-email? user_id = $ {auth0getUserID ()} `, {méthode:” GET “, headers: {” Content-Type “:” application / json “}})alors (e => e)alors (t => {t&&200 == tstatut? einnerHTML = “L’e-mail de vérification a été envoyé avec succès”: einnerHTML = `$ {tstatusText} `})catch (e => consolelog (e))} function tryScriptEmbedding (e, t) {initVerificationMessage (), hasEmbedScriptLoaded? renderComments (t): embedScript (tEMBED_URL, t)} function addVisibilityListener (e, t) {nouvelle visibilitéVisible (e, {preloadThreshold: 750})on (“preload”, () => tryScriptEmbedding (e, t))} function removeSignInButton (e) {e&&eparentNode&&domremoveElement (e)} fonction init (e) {const t = egetAttribute (“data-coral-talk-host”), i = `$ {t} / static / embedjs`, n = `http: // $ {documentdocumentElementgetAttribute (“data-uri”)}html`, a = “vrai” === egetAttribute (“maintenance des données”), o = -1! == nindexOf (“@ published”), r = equerySelector (“corail-talk-container “), s = equerySelector (“coral-talk-btn-signin “), c = {CORAL_TALK_HOST: t, EMBED_URL: i, commentStreamContainer: r, signInButton: s, TALK_ASSET_URL: n} ;! a&&o&CSSE (on (“init”, () => {addVisibilityListener (e, c), saddEventListener (“clic”, () => auth0showLogin ()), auth0isAuthenticated () &&removeSignInButton (s)}), auth0on (“login”, t => {removeSignInButton (s), getAuthToken (t), visibilitéisElementInViewport (e) &&attemptScriptEmbedding (c), hasCoralTalkRendered&&coralLogin ()})), auth0on (“logout”, () => {magasinsupprimer le module (TALK_AUTH)}))}exportations = init;
}, {“3”: 3, “4”: 4, “12”: 12, “116”: 116}];
la fenêtremodules [“chorégrapheclient “] = [function (require, module, exports) {” use strict “; const cookie = require (40), _ get = require (23), _ omit = require (80), {insertSpeedBumpComponents: insertSpeedBumpComponents} = require (79 ), {insertNewsletterSpeedBumpComponents: insertNewsletterSpeedBumpComponents} = require (77), {generateGrowl: generateGrowl} = require (76), gtm = require (2), {getLocalStorage: getLocalStorage, setLocalStorage: setLocalStorage} = require (14), {reportPaywall } = require (52), moment = require (24), {getClientHistory: getClientHistory, updateClientHistoryWithPageData: updateClientHistoryWithPageData} = require (78), auth0 = require (12), {Scenario: Scenario} = require (73), cidReadyEvent = ” nymcid-set “, cidKey =” nymcid “, isProduction = require (9) (), logger = require (74)Logger (() => getLocalStorage (“show_choreographer_logs”)), {Verdon: Verdon} = require (75), TEST_COHORT_FLAG = “OptimizeCohort”; function displayDebug (e = “”) {if (“droit”! == ediviser(“#”)pop ()) return; const t = _get (fenêtre, “dataLayer [0]userDetails “, {}), o = _get (fenêtre,” dataLayer [0]pageDétailsfeatureTypes “,” “), n = oinclut (“magazine”)? “magazine”: “”, r = ocomprend (“fonctionnalité”)? “en vedette”: “”, i = “Valeur de l’article:” (n || r || “article”), a = _get (JSONparse (localStoragegetItem (“auth0: profile”)), “http: // nymagcom / app_metadata “), l =” Statut d’authentification: “(a?” authentifié “:” non authentifié “), s =” Statut du droit: “(!! a&&ahas_subscription? “intitulé”: “unentitled”), c = Objectclés (_omit (t, “newYorkMediaUserID”))map (e => `$ {e}: $ {t [e]}`), d = documentcorps, g = documentcreateElement (“div”), u = documentcreateElement (“ul”); [i, l, s,c]carte (e => {const t = documentcreateElement (“li”); retourne tclassListadd (“debug-item”), tappendChild (documentcreateTextNode (e)), t})forEach (e => {uappendChild (e)}), uclassListadd (“puces de données”), gclassListadd (“debug-chorégraphe”), gclassListadd (“affichage-debug-data”), gappendChild (u), dappendChild (g)} fonction initializeChoreographer (e) {const t = egetAttribute (“data-site-slug”), o = pageShouldCountAsView (t), n = auth0isSubscriber (); retourne t? getClientId (cidKey, 8e3)alors (e => (enregistreurh1 (“Chorégraphe initialisé”), enregistreurlog (`clientId: $ {e}`), enregistreurlog (`la page compte comme une vue: $ {o}`), fenêtrenymViewsResponse || (o? updateClientHistoryWithPageData (e, t): getClientHistory (e))))then (r => {if (loggergroupe (), enregistreurh2 (“Historique du client”), enregistreurtable (r), enregistreurgroupEnd (), isNCR ()) return; const {scénarios: i, touts: a, testCohort: l = “”} = readJSONFromScript (equerySelector (“script”)); if (! (l === (documentcorpsjeu de données [TEST_COHORT_FLAG] || “”))) return; const s = imap (e => Scénario (Objetassign ({}, e, {historique: r, siteSlug: t, isSubscriber: n})))filtre (e => (enregistreurgroupe (), enregistreurh2 (“Évaluation des scénarios”), enregistreurlog (e), enregistreurgroupEnd (), eshouldShow))réduire ((e, {action: t, min: o, nombre: n}) => {const r = afind (({value: e}) => e === t); renvoie r? (e [rtype] = r, e [rtaper]viewCount = n-o, e): e}, {}); enregistreurgroupe (), enregistreurh2 (“Active Touts”), enregistreurjournal (s), enregistreurgroupEnd (), executeTouts (e, o, s, r)})catch (consoleerreur): consoleerreur (“siteSlug introuvable”)} function documentIncludesComponent (e) {document de retourquerySelector (`[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: rMagazine || 0, standardArticleCount: rArticle || 0, totalArticleCount: rtotal || 0}, a = fenêtreconcertAds, l = fenêtreConcertAds; if (o [“speed-bump”] && (_get (a, “adsBlocked”,! 0)? InsertSpeedBumpComponents (findTemplate (e, “speed-bump”), o [“speed-bump”], i) :unecycle de vielistenAndPlayback (lévénementsslotsInserted, () => {insertSpeedBumpComponents (findTemplate (e, “speed-bump”), o [“speed-bump”], i)})), o [“newsletter-speed-bump”] && (_get (a , “adsBlocked”,! 0)? insertNewsletterSpeedBumpComponents (findTemplate (e, “newsletter-speed-bump”), o [“newsletter-speed-bump”], i): acycle de vielistenAndPlayback (lévénementsslotsInserted, () => {insertNewsletterSpeedBumpComponents (findTemplate (e, “newsletter-speed-bump”), o [“newsletter-speed-bump”], i)})), o [“branded-growl”] &&brandedTakeoverTime (o [“branded-growl”]) &&t) enregistreur de retourlog (“should show branded growl”), void growlManager (findTemplate (e, “branded-growl”), {baseTrackingData: i, body: o [“branded-growl”]brandedGrowlBody, contentClass: “branded-content”, cta: o [“branded-growl”]brandedGrowlCTA, imageUrl: o [“branded-growl”]imageUrl, lien: o [“branded-growl”]brandedGrowlLink, nom: o [“branded-growl”]nom, scrollDepth: o [“branded-growl”]brandedGrowlScrollDepth, titre: 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 / nouvelles de coronavirus | pivot | paywall exclure / itest (fenêtre_nymGtmPagebalises)? void (isProduction&&loggerlog (“Clause de contenu interdite en raison de la correspondance de balise exclue:”, fenêtre_nymGtmPagetags)): void cliffTakeover (findTemplate (e, “paywall-reader-interface”), i, o [“cliff-takeover”]); if (o [“growl-newletter”] ||! o [“promo- growl “]) if (o [” baby-growl “]) babyGrowl (findTemplate (e,” paywall-reader-interface “), i, o [” baby-growl “]); else {if (! o [” warning-growl-2 “]) return o [” warning-growl “] &&shouldWarn ()? (setContentCliffWarningDisplayed (), loggerlog (“should show warning”), void growlManager (findTemplate (e, “warning-growl”), {contentClass: “warning-content”, title: o [“warning-growl”]warningGrowlTitle, nom: o [“warning-growl”]nom, scrollDepth: o [“warning-growl”]warningGrowlScrollDepth, cta: o [“warning-growl”]warningGrowlCTA, corps: o [“warning-growl”]warningGrowlBody, lien: 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 “]nom, scrollDepth: o [“promo-growl”]promoGrowlScrollDepth, cta: o [“promo-growl”]promoGrowlCTA, corps: o [“promo-growl”]promoGrowlMessage, lien: o [“promo-growl”]promoGrowlLink, baseTrackingData: i, toutType: “promo growl”}, “# growl-message”)}} function shouldWarn () {return! contentCliffWarningDisplayed ()} function getContentCliffWarningDisplayedKey () {const e = new Date, t = egetMonth (); return`content-cliff-warning-displayed – $ {egetFullYear ()} – $ {t} `} function contentCliffWarningDisplayed () {const e = getContentCliffWarningDisplayedKey (); return” true “=== getLocalStorage (e)} function setContentCliffWarningDisplayed () {const e = getContentCliffKey (); return” true “=== getLocalStorage (e)} function setContentCliffWarningDisplayed () {const e = getContentCliffKey () e, “true”)} function growlManager (e, {contentClass: t, scrollDepth: o, name: n, title: r, body: i, cta: a, link: l, baseTrackingData: s, toutType: c, imageUrl : d = null}, g = “”) {const u = function () {const e = ` n n n n $ {r} n $ {d? ”:” “} n $ {i} n $ {d? “: “”} n $ {a} n n n n `; retourner le documentcreateRange ()createContextualFragment (e)} (), p = {creative: i, id: c, name: n, position: “growl”}; uquerySelector (“a”)addEventListener (“click”, () => promotionReport (“Click”, s, p)), generateGrowl (e, g, {content: u, scrollDepth: o, onShow: () => promotionReport (“View”, s , p)})} function contentCliff (e, t, o, n) {const {first_visit: r, global: i} = n, a = {totalArticleCount: itotal || 0, standardArticleCount: iArticle || 0, featureArticleCount: iFeature || 0, magazineArticleCount: iMagazine || 0}, {contentCliffBody: l} = t, s = documentimportNode (e,! 0)querySelector (“content-cliff “), c = documentquerySelector (“contenu de l’article> clay-paragraph “), d = {creative: l, id:” content cliff “, name:” Content Cliff “, position:” in-article “}; s&& (cinsertAdjacentHTML (“afterend”, sexternalHTML), require (“content-cliffclient “) (documentquerySelector (“content-cliff “), {contentCliffOptions: t, viewsLeft: o, firstVisit: Number (r), onShow: () => promotionReport (” View “, a, d), onClickCliff: () => promotionReport (” Click ” , a, d)}))} function verdonFosseToutSetter (e, t, o, n, r) {const i = new Verdon ({container: “paywall-reader-interface “, url:” https: // fossenymagcom / fosse / v161 / indexhtml “}), a = etype, l = {email: auth0getEmail (), isAuthenticated: auth0isAuthenticated (), isSubscriber: auth0isSubscriber ()}; nclassListajouter (a), jeune fois (“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 (fenêtreemplacementhref)}), jeon (“tout: déconnexion”, () => {auth0déconnexion ()}), ion (“tout: ignorer”, () => {nclassListajouter (“ignorer”), jesendMessage (“tout: hide”, {toutType: a, toutData: e})}), ion (“tout: subscribe”, () => {ectaLink = replaceQueryParams (ectaLink), promotionReport (“Click”, t, o), fenêtreouvert (ectaLink, “_ ​​vide”)}), ion (“frame: height”, e => {nstylehauteur = `$ {echarge utilecurrentHeight 10} px`}), ion (“tout: view-account”, () => {fenêtreemplacementhref = “https: // sous-marinsnymagcom / account “})} function promotionReport (e, t, o) {const {creative: n, id: r, name: i, position: a} = o; tevent = `cepromotion $ {e} `, tecommerce = {promoView: {promotions: [{creative: ntrim (), id: r, nom: i, position: a}]}}, gtmreportNow (t), reportPaywall ({creative: ntrim (), eventType: e, id: r, nom: i, position: a})} function babyGrowl (e, t, o) {const n = documentimportNode (e,! 0)querySelector (“paywall-reader-interface “), r = {creative: obabygrowlDescription, id: “baby growl”, nom: “baby growl”, position: “growl”}; documentcorpsappendChild (n), octaLink = obabygrowlCtaLink, octaText = obabygrowlMessage, otitre = obabygrowlDescription, verdonFosseToutSetter (o, t, r, n)} fonction cliffTakeover (e, t, o) {const {cliffTakeoverCTA: n, cliffTakeoverCtaLink: r, cliffTakeoverDescription: i, cliffTakeoverImage: a, cliffTakeoverPromo: l, cliffTakeoverStatus: s : c} = o, d = documentimportNode (e,! 0)querySelector (“paywall-reader-interface “), g = documentquerySelectorAll (“clay-paragraph “), u = {creative: l, id:” content cliff “, name:” Content Cliff “, position:” growl “}, p = {cta: n, ctaLink: r, description: i, image : a, promo: l, statut: s, type: c}; documentcorpsappendEnfant (d), gforEach ((e, t) => {0! == t&&eremove ()}), verdonFosseToutSetter (p, t, u, d,! 0), documentquerySelector (“html”)styleoverflowY = “caché”, documentcorpsstyleposition = “fixed”} function warningGrowl (e, t, o) {const {type: n, warningGrowl2CTA: r, warningGrowl2CtaLink: i, warningGrowl2Description: a, warningGrowl2Image: l, warningGrowl2Promo: s, warningGrowl2Status: c} = o, d = documentimportNode (e,! 0)querySelector (“paywall-reader-interface “), g = {creative: s, id:” warning growl “, name:” Warning Growl “, position:” growl “}, u = {cta: r, ctaLink: i, description: a , image: l, promo: s, statut: c, type: n}; documentcorpsappendChild (d), verdonFosseToutSetter (u, t, g, d,! 0)} function getClientId (e = “”, t = 8e3) {let o = cookieget (e); return o? Promiserésoudre (o): new Promise ((o, n) => {const r = setTimeout (() => {n (`could not find key: $ {e} on cookie after $ {t} ms`)}, t); fenêtreaddEventListener (cidReadyEvent, () => {clearTimeout (r), o (cookieget (e))})})} function readJSONFromScript (e) {try {return JSONparsiinnerHTML)} catch (e) {return {touts: [], scénarios: []}}} function findTemplate (e, t = “”) {const o = e&&equerySelector (`[data-template-id =” $ {t} “]`); return o&&ocontent} function isNCR () {return / [? &] source = ncr /test (emplacementsearch)} function brandedTakeoverTime (e) {const {startTime: t, endTime: o, startDate: n, endDate: r} = e, i = nconcat (“”, t), a = rconcat (“”, o), l = moment (i), s = moment (a); moment de retour ()isBetween (l, s)} function OptimizeDebugger () {return new Promise (e => {const t = windowemplacementsearch || “”; if (t) {const o = new URLSearchParams (t), n = oget (“nom-attribut-d’optimisation”) || “”, r = oget (“optimiser-valeur-attribut”) || “”, i = oget (“optimiser-délai”) || 0, a = oget (“optimiser-cookie”) ||! 1; setTimeout (() => {a&& (documentcookie = randomNymcid ()), documentcorpssetAttribute (`data – $ {n}`, r), e ()}, i)} else e ()})} function randomNymcid () {return`nymcid = $ {(() => ([1e7] – 1e3 -4e3 -8e3 -1e11)remplacer (/ [018] / g, e => (e ^ 16 * cryptogetRandomValues ​​(nouveau Uint8Array (1)) [0] >> e / 4)toString (16) [0])) ()} `} function replaceQueryParams (e) {const t = windowemplacementsearch || “”; if (t) {const o = new URLSearchParams (t); if (einclut (“?”)) {const t = esplit (“?”), n = new URLSearchParams (t [1]); for (soit oentrées ()) nset (e [0], e [1]); e = `$ {t [0]}? $ {ntoString ()} `} else e =` $ {e}? $ {otoString ()} `} return e} moduleexportations = (e => nouvelle promesse (e => {auth0on (“init”, () => {e ()})})alors (() => OptimizeDebugger ())then (() => {displayDebug (fenêtreemplacementhref), initializeChoreographer (e)}));
}, {“2”: 2, “9”: 9, “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-cliffclient”}];
la fenêtremodules [“grognementclient “] = [function (require, module, exports) {” use strict “; require (140); const _some = require (59), dom = require (3), localStorageKeyRoot =” slideout – “, {getLocalStorage: getLocalStorage , setLocalStorage: setLocalStorage} = require (14); moduleexportations = ((e, t) => {const {contenu: o, onShow: s, scrollDepth: r = 50, ignorable: i =! 1} = t, n = Number (r || egetAttribute (“data-display-at-page-scroll-pourcentage”)), a = domtrouver (e, “modal “), l =” slideout- “(tid || egetAttribute (“id”)), c = getLocalStorage (l); fonction d () {aclassListadd (“hidden”)} fonction g () {setLocalStorage (l,! 0), d ()} i&&c? eremove () 🙁 o&&equerySelector (“[data-content]”)appendChild (o), n&&function (e = 50) {const t = new IntersectionObserver (e => {_ some (e, “isIntersecting”) && (astyletop = “hériter”, aclassListremove (“hidden”, “initial”), “function” == typeof s&&s (), tdésobserver (a))}); astyletop = `$ {documentquerySelector (“corps”)scrollHeight / (100 / e)} px`, tobserver (a)} (n), equerySelector (“ignore-modal “)addEventListener (“clic”, () => i? g (): d ()), eaddEventListener (“grogner: cacher”, d), eaddEventListener (“grogner: rejeter”, g))});
}, {“3”: 3, “14”: 14, “59”: 59, “140”: 140}];
la fenêtremodules [“newsletter-speed-bumpclient “] = [function (require, module, exports) {” use strict “; const {loadRecaptcha: loadRecaptcha} = require (108), _ isEmpty = require (87), _ set = require (107), _ kebabCase = require (81 ), gtm = require (2), auth0 = require (12), visibilité = require (4), COMPONENT_NAME = “newsletter-speed-bump”, EMAIL_VALID_REGEX = / ^ (?: (?: [^ () [ ] \,;: s @ “] (?: [^ () [] \,;: s @ “]) *) | (” “)) @ (?: (?: [[0-9] {1,3} [0-9] {1,3} [0-9] {1,3} [0-9] {1,3}]) | (?: (?: [A-zA-Z -0-9] ) [a-zA-Z] {2,})) $ /, LOCAL_STORAGE_KEY_NAME = “newsletterSpeedBumpSignUpStatus _”, MAX_EMAIL_LENGTH = 50; function setClass (e, t) {eclassListadd (t)} function getRequestUrl (e) {return egetAttribute (“action”)} fonction getPageType (e) {const t = e? egetAttribute (“content”): “”; return _kebabCase (t)} function getPayloadObject (e, t, r, s) {const n = {}; return _set (n, `varssource _ $ {t} `,` $ {COMPONENT_NAME} _ $ {s} `), nemail = r, nlistes = {}, nlistes [t] =! 0, nrecaptcha = e, nsignuppage = `$ {documentemplacementhref} _ $ {t} `, n [` source _ $ {t} `] =” newsleter_speedbump “, n} moduleexports = ((e, t) => {if (! t ||! e) return; if (“success” === windowstockage localgetItem (`$ {LOCAL_STORAGE_KEY_NAME} $ {tnewsletterSpeedBumpNewsletterId} `)) return void eremove (); const {baseTrackingData: r, nom: s, newsletterSpeedBumpCtaCopy: n, newsletterSpeedBumpDescription: i, newsletterSpeedBumpHeadline: a, newsletterSpeedBumpNewsletterId: o, newsletterSpeedBumpThankYouMessage: c, RECAPTCHA_PUBLIC_KEY, u}getEmail (), d = equerySelector (“description “), p = equerySelector (“saisiremail “), m = equerySelector (“message d’erreur “), h = equerySelector (“forme “), E = equerySelector (“form-container “), y = equerySelector (“form-recaptcha-container “), g = equerySelector (“titre “), v = equerySelector (“conteneur “), S = equerySelector (“saisirnewsletterId “), _ = equerySelector (“recaptcha-wrapper “), L = equerySelector (“saisirsoumettre “), w = equerySelector (“text-container “), q = nouvelle visibilitéVisible (e, {shownThreshold:5}); u&& (premoveAttribute (“obligatoire”), eclassListadd (“connecté”)), dinnerHTML = i, ginnerHTML = a, Svaleur = o, Lvaleur = n, qon (“montré”, function () {if (visibilitéisElementNotHidden (e)) {const e = r; eevent = “cepromotionView “, eecommerce = {promoView: {promotions: [{creative: `$ {a} | $ {i} `, id:” accélération de la newsletter “, nom: s, position:” in-article “}]}}, gtmreportNow (e), qdétruire ()}}), paddEventListener (“focus”, () => {_classListremove (“hidden”)}), haddEventListener (“soumettre”, t => {tpreventDefault (); const s = new XMLHttpRequest, n = u || equerySelector (“saisire-mail”)valeur, i = getPageType (documentquerySelector (‘meta [nom = “type”]’)); u ||! (nlongueur> = 50) &&EMAIL_VALID_REGEXtest (n)? loadRecaptcha (l, “newsletterSubmit”,! 0)alors (a => {sopen (“POST”, getRequestUrl (h),! 0), ssetRequestHeader (“Content-Type”, “application / json; charset = UTF-8”), saddEventListener (“load”, s => {const a = scurrentTarget || scible; si (aétat> = 200&&astatussetClass (e, “succès”)), [d, E, m, _]forEach (e => setClass (e, “hidden”)), ginnerHTML = creplace (“{{email}}”, n), minnerHTML = “”; const s = JSONanalyser (unréponse), l = _isEmpty (ssailthruIds)? “”: Objetvaleurs (ssailthruIds) [0], u = r; uevent = “ceacheter “, uecommerce = {achat: {actionField: {id: l, revenu: “000 “}, produits: [{category:” inscription à la newsletter “, nom: Svaleur, quantité: 1, variante: `$ {COMPONENT_NAME} – $ {i}`}]}}, gtmreportNow (u), setTimeout (() => {eclassListadd (“hidden”)}, 5e3), tpreventDefault ()} sinon minnerHTML = “* Une erreur s’est produite Veuillez réessayer”}), saddEventListener (“erreur”, () => {mclassListsupprimer (“caché”), minnerHTML = “* Une erreur s’est produite Veuillez réessayer”}), senvoyer (JSONstringify (getPayloadObject (a, o, n, i))), tpreventDefault ()}): minnerHTML = “* Veuillez saisir une adresse e-mail valide”})});
}, {“2”: 2, “4”: 4, “12”: 12, “81”: 81, “87”: 87, “107”: 107, “108”: 108}];
la fenêtremodules [“ralentisseurclient “] = [fonction (require, module, exports) {” use strict “; const gtm = require (2), visibilité = require (4); moduleexports = ((e, i) => {if (! i ||! e) return; const {nom: o, speedbumpDescription: r, speedbumpMessage: t, speedbumpLink: n, baseTrackingData: s} = i, c = new visibilitéVisible (e, {shownThreshold:5}); equerySelector (“la description”)innerHTML = r, equerySelector (“lien-promo “)innerHTML = t, equerySelector (“lien-promo “)href = n, eclassListremove (“réduit”), con (“montré”, function () {if (visibilitéisElementNotHidden (e)) {soit e = s; eevent = “cepromotionView “, eecommerce = {promoView: {promotions: [{name: o, creative: r, id: “speed bump”, position: “in-article”}]}}, gtmreportNow (e), cdétruire ()}}), equerySelector (“lien-promo “)addEventListener (“clic”, function () {let e = s; eevent = “cepromotionCliquez sur “, eecommerce = {promoClick: {promotions: [{name: o, creative: r, id: “speed bump”, position: “in-article”}]}}, gtmreportNow (e)})});
}, {“2”: 2, “4”: 4}];
la fenêtremodules [“content-cliffclient “] = [function (require, module, exports) {” use strict “; const auth0 = require (12), isProduction = require (9) (), logger = require (74)Enregistreur (() =>! IsProduction); moduleexportations = ((t, e) => {si (! e) retourne; enregistreurgroupe (), enregistreurh2 (“Content Cliff”); const {contentCliffOptions: o, firstVisit: n, onShow: r, onClickCliff: i} = e, c = 300, l = Number (documentquerySelector (“[data-components-count]”)getAttribute (“data-components-count”)), u = 3, s = [“taboola”], a = “# content-cliff”, f = t, d = function () {let t = 0; return documentquerySelectorAll (“[data-word-count]”)forEach (fonction (e) {t = nombre (egetAttribute (“data-word-count”) || 0,10) || 0}), t} (), g = function (t, e) {function o (t) {return Mathrond (tgetTime () / 1e3 / 60)} const n = o (t), r = o (e); return nr} (new Date, new Date (n)) {}, show: () => {r () , function () {(p = function (t = “”) {retourner le 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 (“afterbegin”, r), l&&linsertAdjacentHTML (“afterbegin”, e), u&&uinsertAdjacentHTML (“afterbegin”, n), s&&saddEventListener (“clic”, i)} (), fclassListremove (“réduit”), e = s, eforEach (t => {const e = documentquerySelector (`[data-uri * =” / $ {t} / “]`); e&&esupprimer ()}), maddEventListener (“clic”, () => auth0showLogin ()); var e} ()}} [function () {if (dl) return loggerlog (`le nombre de mots d’article $ {d} était trop court pour la falaise`), enregistreurlog (`le nombre de composants de l’article est inférieur à $ {u} et n’est pas éligible pour la falaise`),” noop “; if (g&&isProduction) return” noop “; g&&loggerlog (`La première vérification de session était $ {g}! Montrant quand même la falaise: isProduction => $ {isProduction}`); if (/ coronavirus news | pivot | paywall exclude / itest (fenêtre_nymGtmPagetags)) return isProduction&&loggerlog (“Clause de contenu interdite en raison de la correspondance de balise exclue:”, fenêtre_nymGtmPagetags), “noop”; retourne “show”} ()], m = tquerySelector (“content-cliff-login “); let p = []; renvoyer le journallog (`ne devrait pas démarrer en production en raison de la fenêtre de première session de 30 minutes: $ {g}`), enregistreurgroupEnd (), auth0on (“login”, () => {fclassListadd (“réduit”), (p = tableauprototypetrancheappel (p, 0)inverser())forEach (t => finsertAdjacentElement (“afterend”, t)), p = []}), “function” == typeof h? h (): void 0});
}, {“9”: 9, “12”: 12, “74”: 74}];
la fenêtremodules [“les plus populairesclient “] = [function (require, module, exports) {” use strict “; const dom = require (3), lazyLoad = require (96); function lazyLoadImage (a) {const o = domfind (a, “img [data-src]”), d = a&&domfindAll (a, “source [data-srcset]”), e = o&&domle plus proche (o, “feed-image-wrap “); if (o&&e) {new lazyLoadLazyLoader (e, o, d)init ()}} function handleLazyLoad (a) {(domfindAll (a, “article le plus populaire “) || [])module forEach (lazyLoadImage)}exportations = (a => {handleLazyLoad (a)});
}, {“3”: 3, “96”: 96}];
la fenêtremodules [“package-collectionclient “] = [function (require, module, exports) {” use strict “; const dom = require (3), Hammer = require (99), lazyLoad = require (96), _ debounce = require (100), BREAKPOINT = 768, ANIMATION_DURATION = 250; moduleexportations = (e => {const t = domtrouve(“collection-simple_text-top “), n = equerySelector (“list-wrapper “), i = equerySelector (“package-content “), o = domfindAll (e, “article “), r = eclassListcontient (“carrousel-layout”); var a, s = 0, c =! 1; if (r) {if (! n) return; function d () {aoff (“swipeleft”)off (“swiperight”), s = 0, nstyletransform = “translate (0px)”, fenêtreinnerWidth1? (fenêtrecancelAnimationFrame (s), i&&i ()) 🙁 t = r (c = d) * (2-c) * a, estyletransform = “translate (” t “px)”, fenêtrerequestAnimationFrame (s))}; n || (n = 0); fenêtrerequestAnimationFrame (s)} (n, i, ANIMATION_DURATION, function () {s = e, c =! 1})} fonction f () {c || s> 0&&l (s-1)} fonction u () {c || s {! fonction (e) {const t = domfindAll (e, “source [data-srcset]”), n = domfind (e, “img [data-src]”), i = domtrouver (e, “article-img-wrapper “); if (t&&n&&i) {const e = new lazyLoadLazyLoader (i, n, t); iclassListadd (“contient-image”), einit ()}} (e)})});
}, {“3”: 3, “96”: 96, “99”: 99, “100”: 100}];
la fenêtremodules [“sticky-listclient “] = [function (require, module, exports) {” use strict “; const dom = require (3), $ gtm = require (2), _ get = require (23), stickyContainer = require (” sticky-containerclient “); DScontroller (“sticky-list”, [“$ window”, function (t) {var e = require (218), i = 40; function s (s) {let n, r = function (t) {let s = t [0], n = 0, r = ehauteur (cecontentArea), h = thiszone de contenuoffsetHeight; if (thisconteneursconteneurslongueur) {si (scibleoffsetHeight) {let t = thiséruptionsfindIndex (t => (function (t, e) {return t! == documentcorpsCSSEETCHARCSSEETCHARtcontient (e)}) (t, scibleparentElement)); if (t> -1&&ceciévasions [t]) {let e = thisévasions [t]offsetHeight i; ceconteneurs [t]stylemarginBottom = `$ {e} px`}} if (h! == thiscurrentHeigh) {const t = erect (cerightRail, cecicontentArea); cecurrentHeight = h, cecirightRailstylehauteur = r-ttop-a (cerightRail) “px”, ceciéruptionsforEach ((s, r) => {soit a = erect (s, cecontentArea), h = eintersection (a, t); si (h) {soit e, s = htop-ttop-n; n = s hhauteur i, ceciconteneurs [r]styleheight = `$ {s} px`, ceciconteneurs [r]styleminHeight = `$ {s} px`, e = ceciévasions [r]offsetHeight je, ceconteneurs [r]stylemarginBottom = `$ {e} px`}})}}}lier (ceci); tinnerWidth {let n = _get (e, “ensemble de donnéesnom “,” “), r = ntranche (-1) || “1”, a = [“Image_Gallery”, “Standard_Article”, “Feature”, “One_Column_Article”]trouver (t => ncomprend (t)) || “”; cerightRailparentElementclassListcontient (“tertiaire”) &&a&& (ebase de donnéesname = parseInt (i, 10) se === t) || 0; retourne itranche (s 1)réduire ((t, e) => t (eoffsetHeight || 0), 0) || 0} retourne sprototype = {setPins: function () {const t = erect (cerightRail, cecicontentArea), i = ehauteur (cecontentArea), s = i-ttop-a (cerightRail); soit n, h, o, l; if (thispopulatePinsList (), s1&&tclassListadd (“multi-enfants”), l = 0; l {const t = Arrayde (eenfants); soit o, a, i = 0; pour (; iabas || nrightadroite)? abas-nhaut: 0} function getElementsOverlapAmount (e, t) {var n, a = []; return _forEach (t, function (t) {n = getElementsVerticalOverlap (e, t), apush (n)}), _ max (a)} function getNYMagAdChannel (e) {var t = “”; switch (e) {case “informations sur l’entreprise”: t = “société”; break; case “new york guide les choses & to do “: t =” to-do “; break; case” other “: t = e; break; case” guides sponsorisés “: t =” s-guides “; break; case” urbanist “: t =” urbanist “; break; default: t =” “} return t} function appendSectionToDfpAds () {var e, t, n, a = documentquerySelector (“meta [property = ‘og: site_name’]”), o = documentquerySelector (“article [data-content-channel]”), i = documentquerySelectorAll (AD_NAME_SELECTOR); a&& (e = acontenu), o&& (t = ogetAttribute (“canal de contenu de données”)toLowerCase ()), t&& “New York Magazine” === e&& (n = getNYMagAdChannel (t)), n&&appendToAdd (i, n)} fonction appendPageTypeToDfp (document)querySelector (“corps> div “) || {}, t = documentquerySelector (“body”) || {}, n = e&&eclassList, a = n&&nlongueur?[n]: [], o = _find (a, e => einclut (“fonctionnalité”)), i = documentquerySelectorAll (AD_NAME_SELECTOR); n&& (o? appendPageNumberPositionToDfpAds (i, “Feature”): ncontient (“lede-gallery-content”)? appendPageNumberPositionToDfpAds (i, “Image_Gallery”): tclassListcontains (“one-column-layout”)? appendPageNumberPositionToDfpAds (i, “One_Column_Article”): ncontains (“article-content”) &&appendPageNumberPositionToDfpAds (i, “Standard_Article”))} function appendPageNumberPositionToDfpAds (e, t) {const n = [“528×379”, “1100×200”, “1×1”]; let a e = e || ], o = domtrouve(“ad-splash “), i = domtrouver (section “wrapper “), r = domtrouve(“secondaire “), d = domtrouve(“bas “), s = domtrouve(“primary “), c = {IA: {xsMobile: {normal: 1, grid: 1}, mobile: {normal: 1, grid: 1}, tablet: {normal: 1, grid: 1}, desktop: {normal : 1, grille: 1}}, BA: {xsMobile: {normal: 1, grille: 1}, mobile: {normal: 1, grille: 1}, tablette: {normal: 1, grille: 1}, bureau: {normal: 1, grille: 1}}}; aforEach (e => {soit a, l = “”, u = ebase de donnéestailles, m = eclassListvaleur, p = _find (n, e => ucomprend (e)), g = eparentElementclassListcontient (“image-gallery-mobile-grid-ad”); if (u&&! p || esetAttribute (“nom-données”, egetAttribute (“data-name”) “/” t), i&&u&&! p) {let n, u; if (o&&ocontient (e)? l = “LB”: i&&icontient (e)? l = “IA” 🙁 r&&rcontient (e) || d&&dcontient (e) || s&&scontient (e)) && (l = “BA”), c [l]) {if (! (u = checkForAdViewport (m))) return; g? (n = c [l] [u]grille, c [l] [u]grille) 🙁 n = c [l] [u]normal, c [l] [u]normal), a = n {esetAttribute (“nom-données”, egetAttribute (“data-name”) “/” t)})} function injectGoogleScripts () {var e = documentcreateElement (“script”), t = documentcreateElement (“script”), n = documentcreateDocumentFragment (); esrc = “// wwwgoogletagservicescom / tag / js / gptjs “, easync = “async”, tsrc = “// pagead2googlesyndicationcom / pagead / js / adsbygooglejs “, tasync = “async”, nappendChild (e), nappendChild (t), documentgetElementsByTagName (“corps”) [0]appendChild (n)} appendSectionToDfpAds (), appendPageTypeToDfpAds (), injectGoogleScripts (), DScontroller (“ad”, [“adService”, function (e) {return function (t) {var n, a, o, i = tgetAttribute (“data-offload”), r = new $ visibilitéVisible (t, {preloadThreshold: i? WindowinnerHeight / 4: 200}), d =! 1; fonction s () {fenêtreinnerWidth> = 1180&&tparentElementclassListcontient (“ad-repeat”) &&flaggedComponentsOnPagelength&& (a = getElementsOverlapAmount (t, flaggedComponentsOnPage), o = parseInt (tparentElementgetAttribute (“data-gap”), 10), tstylemarginTop = o 30 a “px”)} fonction c () {s (), erefresh (n)} fonction l () {esupprimer (n), d || (d =! 0, rsur (“montré”, c))} documentquerySelector (‘script [data-name = “concert-ads”]’) || (n = ecréer (t), rvisibilité && $isElementNotHidden (t)? (eaddToPageLoadQueue (n), i&&ron (“hidden”, l)) 🙁 ron (“précharge”, fonction () {! nslot&& $ visibilitéisElementNotHidden (t) && (s (), eload (n))}), i&&ron (“hidden”, l)), ceadData = n)}}]);
}, {“3”: 3, “4”: 4, “41”: 41, “42”: 42, “43”: 43, “44”: 44}];
la fenêtremodules [“articleclient “] = [function (require, module, exports) {” use strict “; const $ visibilité = require (4), $ gtm = require (2), ImageZoom = require (56), $ sentry = require (57) ; DScontrôleur (“article”, [fonction () {var e = 40; fonction t (t) {const i = documentquerySelector (“emballage> tertiaire “), n = tquerySelector (“lede-image-wrapperà fond perdu “), r = tquerySelector (“attributionà fond perdu “), o = tquerySelector (“article-en-tête “), l = o? oquerySelector (“img”): null, c = function () {let t = ogetBoundingClientRect ()hauteur; n&& (t = ngetBoundingClientRect ()hauteur 25, r&& (t = rgetBoundingClientRect ()hauteur)), istylepaddingTop = t e “px”}; i&&o&& (fenêtreinnerWidtht (e)), $ sentinelleinitializeIDListeners ()}}]);
}, {“2”: 2, “4”: 4, “56”: 56, “57”: 57}];
la fenêtremodules [“balisesclient “] = [function (require, module, exports) {” use strict “; const _forEach = require (41); DScontroller (“tags”, [function () {function e (e) {thisel = e} retourne eprototype = {événements: {“aplus cliquez sur “:” showAll “}, showAll: function (e) {var t = ecible, o = cecielquerySelectorAll (“licaché “); _ forEach (o, function (e) {eclassListremove (“hidden”)}), tparentNoderemoveChild (t), epreventDefault ()}}, e}]);
}, {“41”: 41}];
la fenêtremodules [“newsletter-flex-textclient “] = [function (require, module, exports) {” use strict “; const dom = require (3), _ kebabCase = require (81), _ isEmpty = require (87), _ set = require (107), permutive = require (52), cmptName = “newsletter-flex-text”, {loadRecaptcha: loadRecaptcha} = require (108), gtm = require (2), EMAIL_VALID_REGEX = / ^ (?: (?: [^ () [ ] \,;: s @ “] (?: [^ () [] \,;: s @ “]) *) | (” “)) @ (?: (?: [[0-9] {1,3} [0-9] {1,3} [0-9] {1,3} [0-9] {1,3}]) | (?: (?: [A-zA-Z -0-9] ) [a-zA-Z] {2,})) $ /, MAX_EMAIL_LENGTH = 50; DScontroller (cmptName, [“$ window”, function (e) {function t (t) {thisel = t, ceemail = domtrouver (t, “email “), cecititre = domtrouver (t, “title “), cedescription = domtrouver (t, “description “), cesource = domtrouver (t, “source “), ceforme = domtrouver (t, “formulaire “), cereturnMsg = domtrouver (t, “return-message “), cecinewsletterId = domtrouver (t, “newsletterId “)valeur, ceExpandTerms = domtrouver (t, “termes-étendus “), cerecaptchaKey = ceciformebase de donnéesrecaptchaPublicKey, celocal = elocalStorage, cesession = esessionStorage, cedisplayComponent ()} retourne tprototype = {getRequestUrl: function () {renvoie ceciformegetAttribute (“action”)}, getPageType: function () {var e = domfind (‘meta [nom = “type”]’), t = e? egetAttribute (“content”): “”; return _kebabCase (t)}, getPayloadObject: function (e) {var t = {}; return temail = cecie-mailvaleur, trecaptcha = e, _set (t, `varssource _ $ {cecinewsletterId} `,` $ {cmptName} _ $ {cecigetPageType ()} `), tlistes = {}, tlistes [cecinewsletterId] =! 0, t}, displayComponent: function () {var t = this, s = “success” === thislocal [“signUpColumnStatus” thisnewsletterIdtoString ()], i = “true” === thisformegetAttribute (“affichage des données après inscription”); if (! s || i) {if (thiselclassListremove (“initialement caché”), ceformeclassListremove (“initialement caché”), setTimeout (function () {telclassListremove (“opacity-zero”)}, 100), cecisession) essayez {cecisessionsetItem (“signUpColumn”, “affiché”)} catch (e) {}} else telparentElementclassListadd (“newsletter-collapsed”); eaddEventListener (“décharger”, function () {tsessionremoveItem (“signUpColumn”)})}, événements: {“formulaire soumettre “:” submitForm “,”e-mail: “clearMsg”, “terms-button click “:” showTerms “}, clearMsg: function () {thisreturnMsginnerHTML = “”}, showTerms: function () {thisTermes élargisclassListajouter (“actif”), ceciTermes élargissetAttribute (“aria-hidden”, “false”)}, submitForm: function (e) {var t = new XMLHttpRequest, s = thisformegetAttribute (“data-error-msg”); cecie-mailvaleurlongueur> = 50 ||! EMAIL_VALID_REGEXtest (cee-mailvalue)? (s&& “”! == s || (s = “* Veuillez saisir un e-mail valide”), cecireturnMsginnerHTML = s, cecireturnMsgmise au point (), epreventDefault ()): loadRecaptcha (cecirecaptchaKey, “newsletterSubmit”,! 0)alors (s => {dompreventDefault (e), topen (“POST”, cegetRequestUrl (),! 0), tsetRequestHeader (“Content-Type”, “application / json; charset = UTF-8”), taddEventListener (“load”, cesur demandelier (ceci)), taddEventListener (“erreur”, cecionErrorlier (ceci)), tenvoyer (JSONstringify (cegetPayloadObject (s))), epreventDefault ()})}, onRequest: function (e) {const t = ecurrentTarget || ecible; tétat> = 200&&tétat {var e = documentcreateElement (“script”); easynchrone =! 0, etype = “texte / javascript”, esrc = documentemplacementprotocole “// d16xpr36wrmcmkcloudfrontnet / js / mémojs “, (documentgetElementsByTagName (“head”) [0] || documentgetElementsByTagName (“corps”) [0])appendChild (e)}) (), moduleexportations = (() => {});
}, {}];
la fenêtremodules [“liens-affiliésclient “] = [function (require, module, exports) {” use strict “; const dom = require (3), _ includes = require (42), _ startsWith = require (48), globalClick = require (46), visit = require (47), productSubtags = require (49); var exclusHostnames, skimlinksBaseUrl, skimlinksId, visitState, productUrl, ignoreDataAttribute = “data-affiliate-links-ignore”, article = fenêtredocumentquerySelector (“article”), isSponsored = article&& “Sponsor Story” === articlegetAttribute (“type de données”); function setExcludedHostnames (t) {hiddenHostnames = (tgetAttribute (“noms-d’hôtes-exclus-données”) || “”)toLowerCase ()split (“,”)} function isSkimLink (t) {return !! (skimlinksId = tgetAttribute (“data-skimlinks”))} function isExcluded (t) {return _includes (hiddenHostnames, t) || _startsWith (t, “www”) &&_includes (noms d’hôte exclus, tslice (4)) || isSponsored} function isUrlProtocol (t) {return 0! == tindexOf (“mailto:”) &&0! == tindexOf (“javascript:”)} function getTargetHostname (t) {return (tnom d’hôte || thôte || thref || “”)toLowerCase ()} function convertSkimlinkUrl (t) {return (skimlinksBaseUrl = skimlinksBaseUrl || skimlinksId? “// allerredirigercom /? xs = 1&id = “skimlinksId” &sref = “encodeURIComponent (fenêtreemplacementhref) “&url =”: void 0) &&skimlinksBaseUrl encodeURIComponent (t)} function hasIgnoreAttribute (t) {return “true” === tgetAttribute (ignoreDataAttribute)} fonction convertSkimlink (t) {var e, i, r, s = domle plus proche (tcible, “a”), n = s&&shref; n&&nlongueur&&! tdefaultPrevented&& (i = getTargetHostname (s) ,! isUrlProtocol (n) || isExcluded (i) || hasIgnoreAttribute (s) || productSubtagsgetAffiliate (n) || (e = convertSkimlinkUrl (n)) && (productUrl = n, r = s&&sgetAttribute (“data-track-id”), shref = productSubtagsensureSubtag ({url: e, productId: r, visitState: visitState, anchorEl: s})))} function revertSkimLink (t) {var e = domle plus proche (tcible, “a”), i = e&&ehref || “”; iinclut (skimlinksBaseUrl) &&i&&ilongueur&&productUrl&& (emodule href = productUrl)}exportations = (t => {const e = isSkimLink (t); visiteonceReady (function (t) {visitState = t}), e&& (setExcludedHostnames (t), globalClickaddHandler (convertSkimlink, revertSkimLink))});
}, {“3”: 3, “42”: 42, “46”: 46, “47”: 47, “48”: 48, “49”: 49}];
la fenêtremodules [“gtmclient “] = [function (require, module, exports) {” use strict “; const $ gtm = require (2); DScontroller (“gtm”, [function () {return function (t) {$ gtminit (tgetAttribute (“data-container-id”), tgetAttribute (“data-site-slug”))}}]);
}, {“2”: 2}];
la fenêtremodules [“global-navclient “] = [function (require, module, exports) {” use strict “; const dom = require (3), auth0 = require (12), signInButton = domtrouve(“user-signin “), signOutButton = domtrouve(“user-signout “), globalNav = domfind (‘[class ^ = “global-nav”]’), corps = domfind (“body”), dropdownItems = domTrouver tout(“dropdown-wrap “), gtm = require (2), pageUri = require (136)getPageUri (); function closeDropdowns (e) {let n = globalNavquerySelectorAll (“menu déroulantopen “); dropdownItemsforEach (fonction (t) {soit o = tquerySelector (“liste déroulante “) ;! n || tcontient (ecible) &&27! == ekeyCode || oclassListremove (“open”)})} function gtmSendReport (e, n, t) {let o = {eventCategory: “ecommerce”, eventAction: “componentClick”, marque: e, dimension23: “global-nav”, list: pageUri , pageZone: “header”, variant: “nav-link”}; “global-nav-link” === t&& (oeventLabel = nhref), gtmreportNow (o)} fonction init (e) {auth0on (“init”, () => {signInButtonaddEventListener (“clic”, fonction (e) {epreventDefault (), auth0showLogin ()}), signOutButtonaddEventListener (“clic”, fonction (e) {epreventDefault (), auth0logout (), gtmSendReport (“Déconnexion”, ecible, “lien-info-utilisateur”)}), auth0isAuthenticated () &&eclassListadd (“connecté”), auth0isSubscriber () &&eclassListadd (“abonné”), equerySelectorAll (“lien utilisateur “)forEach (e => {eclassListadd (“active”)})}), auth0on (“login”, () => {eclassListadd (“connecté”), auth0isSubscriber () &&eclassListadd (“abonné”)}), auth0on (“déconnexion”, () => {eclassListremove (“connecté”), eclassListremove (“abonné”)})} dropdownItemsforEach (fonction (e) {eaddEventListener (“clic”, fonction () {equerySelector (“menu déroulant”)classListtoggle (“open”)})}), corpsaddEventListener (“clic”, closeDropdowns), documentaddEventListener (“keydown”, closeDropdowns), globalNavaddEventListener (“clic”, fonction (e) {soit n = ecible; nclassListcontient (“global-nav-track”) &&gtmSendReport (ntext, n, “global-nav-link”)}), moduleexportations = init;
}, {“2”: 2, “3”: 3, “12”: 12, “136”: 136}];
la fenêtremodules [“montage de module aaalegacy “] = [function (require, module, exports) {” use strict “; const eventify = require (164), _ pickBy = require (139), _ each = require (301), fingerprintjs2 = require (300), DS = require (299); function registerGlobals () {fenêtreDS = DS, fenêtreEventify = eventify, fenêtreFingerprint2 = fingerprintjs2, DSvaleur (“Eventify”, eventify), DSvalue (“Fingerprint2”, fingerprintjs2), DSvaleur (“$ document”, fenêtredocument), DSvalue (“$ window”, window)} function mountDollarSliceComponents () {DSservice (“composants”, [“$ document”, “$ module”, fonction (e, n) {var r = _pickBy (ndéfinitions, e => eproviderStrategy === nfournisseurscontrôleur), o = Objetkeys (r); function t (e) {return r => {try {nget (e, r)} catch (e) {logMountError (r, e)}}} _ each (o, n => {var r = equerySelectorAll (‘[data-uri * = “/ _ composants /’ n ‘/”]’), o = equerySelectorAll (‘[data-uri $ = “/ _ composants /’ n ‘”]’); _ each (r, t (n)), _ each (o, t (n))}), cecomposants = o}]), DSget (“components”)} function logMountError (e, n) {const r = eexterneHTMLtranche (0, eexterneHTMLindexOf (einnerHTML)); consoleerror (“Erreur lors de la connexion du contrôleur à” r, n)} registerGlobals (), documentaddEventListener (“DOMContentLoaded”, () => {mountDollarSliceComponents ()});
}, {“139”: 139, “164”: 164, “299”: 299, “300”: 300, “301”: 301}];
la fenêtremodules [“annonceslegacy “] = [function (require, module, exports) {” use strict “; const _map = require (50), _ forEach = require (41), _ isString = require (184), _ intersectionWith = require (302), _ isEqual = require (190), _ each = require (301), _ debounce = require (100), _ sortBy = require (123), page = require (136), 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 = this, f = [], b = visitegetQueryParamsObject ([“utm_campaign”]), w = documentquerySelector (‘script [data-type = “ad-a9”]’); documentquerySelector (‘script [data-name = “concert-ads”]’) || (iNYM = {}, jeNYManalytics = {}, iNYManalytiqueadStartTime = iperformanceMaintenant jegoogletag = igoogletag || {}, jegoogletagcmd = igoogletagcmd || [], c = igoogletag, w&& (igoogletagcmd = igoogletagcmd || [], igoogletagcmdpush (fonction () {igoogletagpubades ()disableInitialLoad ()}), l = isetInterval (function () {void 0! == fenêtreapstag&&void 0! == fenêtreapstagtimeout && (iclearInterval (l), fenêtreapstagcleared =! 0, l = null)}, 10), setTimeout (function () {l&& (iclearInterval (l), jegoogletagpubades ()rafraîchir (), fenêtreapstag || consolelog (“MESSAGE: dépassement du délai d’attente pour le chargement A9, abandon”))}, 500)), u = documentcreateElement (“script”), g = documentcreateDocumentFragment (), p = documentgetElementsByTagName (“head”) [0], usrc = “https: // zdouvescom / voxprebidheader841653991752 / moatheaderjs “, gappendChild (u), pinsertBefore (g, pfirstChild), o = fonction (e) {var t, a, o = edata, n = []; retourne ochargé? e: (ochargé =! 0, t = nul, (t = otailles? cdefineSlot (onom otailles, oidentifiant)addService (cpubades ()): cdefineOutOfPageSlot (onom oidentifiant)addService (cpubades ()))setTargeting (“adid”, oid), bhasOwnProperty (“utm_campaign”) &&tsetTargeting (“utmcamp”, butm_campaign), a = hgetAdCount (oétiquette), tsetTargeting (“label”, oétiquette “_” osite “-” a), caffichage (oid), cpubades ()addEventListener (“slotOnload”, function () {iNYManalytiquefirstAdLoadTime || (iNYManalytiquefirstAdLoadTime = iperformanceMaintenant jeNYManalytiquefirstAdLoadLabel = eLes donnéeslabel)}), (n = v (o))? fenêtreapstag&&windowapstagcleared&CSSEETCHARfenêtreapstagfetchBids ({slots: [n], timeout: windowapstagtimeout}, function () {ccmdpush (function () {fenêtreapstagsetDisplayBids (), cpubades ()refresh ([t], {changeCorrelator:! 1})})}): cpubades ()rafraîchir ([t], {changeCorrelator:! 1}), eslot = t, e)}, n = fonction (e) {var a, i, o, n = t (), s = egetAttribute (“nom-données”), r = egetAttribute (“data-tailles”), d = egetAttribute (“étiquette de données”), c = egetAttribute (“site de données”); n = eid, r&&rlongueur? (r = rsplit (“,”), a = [], _ map (r, function (e) {e = esplit (“x”), i = parseInt (e [0]), o = parseInt (e [1]), apush ([i, o])})) 🙁 eclassListajouter (“oop”), a =! 1), cecidata = {id: n, nom: s, tailles: a, chargé:! 1, libellé: d, site: c}, m [n] = this}, r = function (e) {ccmdpush (fonction () {var t = o (e); m [eLes donnéesid] = t})}, s = fonction (e) {var t = []; eslot? (t = v (e)) &&windowapstag&&windowapstagcleared&CSSEETCHARfenêtreapstagfetchBids ({slots: [t], timeout: windowapstagtimeout}, function () {ccmdpush (function () {fenêtreapstagsetDisplayBids (), cpubades ()rafraîchir ([eslot], {changeCorrelator:! 1})})}): e&&r (e)}, ccmdpush (fonction () {var e, t, o, n = pagegetMeta (“article: tag”), s = pagegetMeta (“auteur”), r = iemplacementhref, d = (e = adirigerquerySelector (“head-gtm “), t = acorpsquerySelector (“gtm “), e&&” top “=== egetAttribute (“data-gtm”)? “gtmtop”: t&& “bottom” === tgetAttribute (“data-gtm”)? “gtmbottom”: “”); o = [], _ forEach ([n, s, d], function (e) {_ forEach (esplit (“,”), fonction (e) {(e = egarniture()toLowerCase ()remplacer (/ s / g, “-“)remplacer (/ ‘| ’/ g,” “))longueur&&opush (e)})}), cpubades ()setTargeting (“kw”, o), cpubades ()setTargeting (“groupe_entrée”, o), r = rtranche (rlastIndexOf (“/”) 1), cpubades ()setTargeting (“pn”, r), cCompagnonAds ()setRefreshUnfilledSlots (! 0), cpubades ()enableAsyncRendering (), cenableServices ()}), ceload = r, cecicreate = function (e) {return new n (e)}, cecirafraichir = fonction (e) {var t; _isString (e)? (t = thisgetById (e), s (t)): s (e)}, cecisupprimer = fonction (e) {var t = eLes donnéesid; ungetElementById (t)innerHTML = “”}, cecigetAdCount = function (e) {var t, a = 0, i = Objecttouches (m); retourne _chaque (i, fonction (i) {(t = m [i])Les donnéeschargé&&tLes donnéeslabel === e&&a}), a}, cecigetById = function (e) {return m [e]}, d = _debounce (function () {var e = {TopLeaderboard: 1, RightColTopMPU: 2, outOfPage: 99, “homepageTakeover / TopLeaderboard”: 1}, t = _sortBy (f, fonction (t) {retourne e [tLes donnéeslabel] || 10}); _ forEach (t, function (e) {return eLes donnéestailles? r (e): isetTimeout (function () {r (e)}, 2e3)}), f = []}, 10), ceaddToPageLoadQueue = fonction (e) {fpush (e), d ()}); fonction v (e) {var t, a = etailles; renvoie a = _intersectionWith (a, [[970,250], [970,90], [728,90], [300,600], [300,250], [320,100], [320,50]], _ isEqual), etaillesles tailleslength&& (t = {slotID: eid, tailles: a, slotName: elabel}), t}}]);
}, {“41”: 41, “47”: 47, “50”: 50, “100”: 100, “123”: 123, “136”: 136, “184”: 184, “190”: 190 , “301”: 301, “302”: 302}];
la fenêtremodules [“cidlegacy “] = [function (require, module, exports) {” use strict “; DSservice (“$ cid”, function () {var r = Mathétage (100 * Mathrandom ()); return function () {return “cid-” r}});
}, {}];
la fenêtremodules [“facebooklegacy “] = [function (require, module, exports) {” use strict “; DSservice (“facebook”, [function () {thisfb = fonction (i) {fenêtreFB&CSSEETCHARfenêtreFBI]appliquer (ceci, Arrayprototypetranchecall (arguments, 1))}}]);
}, {}];
require = (function e (t, n, r) {function s (o, u) {if (! n [o]) {if (! t [o]) {var a = typeof require == “function” &&require ; if (! u&&a) return a (o,! 0); if (i) return i (o,! 0); var f = new Error (“Cannot find module ‘” o “‘”); throw fcode = “MODULE_NOT_FOUND”, f} var l = n [o] = {exportations: {}}; t [o] [0]appeler (lexportations, fonction (e) {var n = t [o] [1] [e]; retourne s (n? n: e)}, l, lexportations, e, t, n, r)} retourne n [o]exports} var i = typeof require == “function” &&require; for (var o = 0; o typeof key === ‘string’ && keyrencontre(/héritage $ /))forEach (clé => fenêtrerequire (clé));
}

function tryToMount (fn, el, nom) {
essayer {
fn (el); // initier le contrôleur
} catch (e) {
const elementTag = elexterneHTMLtranche (0, elexterneHTMLindexOf (elinnerHTML));
consoleerror (`Erreur lors de l’initialisation du contrôleur pour” $ {name} “sur” $ {elementTag} “`, e);
}
}
/ **
* monter le clientcontrôleurs de composants js
* /

function mountComponentModules () {
Objetclés (fenêtremodules)filter (key => typeof key === ‘string’ && clérencontre(/client $ /))forEach (clé => {
laissez controllerFn = fenêtrerequire (clé);

if (typeof controllerFn === ‘fonction’) {
nom de const = cléremplacer(‘client’, ”),
instancesSelector = `[data-uri * =” _ composants / $ {nom} / “]`,
defaultSelector = `[data-uri $ =” _ composants $ {name} “]`,
instances = documentquerySelectorAll (instancesSelector),
defaults = documentquerySelectorAll (defaultSelector);

for (let el des instances) {
tryToMount (controllerFn, el, nom);
}

for (laissez el des valeurs par défaut) {
tryToMount (controllerFn, el, nom);
}
}
});
} // Assurez-vous qu’une fenêtre `traiterenvNODE_ENV` est disponible dans le client pour toutes les dépendances,
// services ou composants qui pourraient en avoir besoin
// note: la valeur “ est échangée contre la variable d’environnement réelle dans / lib / cmd / compile / scriptsjs

la fenêtreprocess = fenêtreprocessus || {};
la fenêtretraiterenv = fenêtretraiterenv || {};

si (! fenêtretraiterenvNODE_ENV) {
la fenêtretraiterenvNODE_ENV = ”;
} // remarque: les contrôleurs hérités qui nécessitent des services hérités (eg dollar-tranche) doit
// attend que DOMContentLoaded s’initialise, car les fichiers eux-mêmes doivent d’abord être montés

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

Physique, Muon g-2, Fermilab, Muon, Physique au-delà du modèle standard, Recherche, Particule

Actualités – États-Unis – Nouvelle physique juste abandonnée (peut-être)

Source: https://nymag.com/intelligencer/2021/04/new-experiment-with-muon-particle-may-disrupt-physics.html

En s’appuyant sur ses expertises dans les domaines du digital, des technologies et des process , CSS Engineering vous accompagne dans vos chantiers de transformation les plus ambitieux et vous aide à faire émerger de nouvelles idées, de nouvelles offres, de nouveaux modes de collaboration, de nouvelles manières de produire et de vendre.

CSS Engineering s’implique dans les projets de chaque client comme si c’était les siens. Nous croyons qu’une société de conseil devrait être plus que d’un conseiller. Nous nous mettons à la place de nos clients, pour aligner nos incitations à leurs objectifs, et collaborer pour débloquer le plein potentiel de leur entreprise. Cela établit des relations profondes et agréables.

Nos services:

  1. Création des sites web professionnels
  2. Hébergement web haute performance et illimité
  3. Vente et installation des caméras de vidéo surveillance
  4. Vente et installation des système de sécurité et d’alarme
  5. E-Marketing

Toutes nos réalisations ici https://www.css-engineering.com/en/works/