[{"data":1,"prerenderedAt":602},["ShallowReactive",2],{"docs-navigation:de":3,"content-page:docs:uNToV6iY6_qptSrduXYtmZGh5LDeeVeRkL_D6128A2s":267,"content-page-surround:docs:uNToV6iY6_qptSrduXYtmZGh5LDeeVeRkL_D6128A2s":600},[4,65,85,206],{"title":5,"page":6,"canonicalKey":7,"locale":8,"id":9,"draft":6,"icon":10,"sidebar":11,"children":12},"Ableitungen",false,"1","de","content:de:1.dokumentation:1.anleitungen:.navigation.yml","lucide:route","section",[13,21,28,35,42,49,56],{"title":14,"id":15,"canonicalKey":16,"locale":8,"draft":6,"icon":17,"navigation":18,"path":20},"Guild Wars auf dem Mac installieren","content:de:1.dokumentation:1.anleitungen:1.installation.md","1\u002F1","lucide:download",{"title":19},"Install and sign in","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Finstallation",{"title":22,"id":23,"canonicalKey":24,"locale":8,"draft":6,"navigation":25,"icon":26,"path":27},"Konten & Mobile-Verknüpfung","content:de:1.dokumentation:1.anleitungen:2.konten.md","1\u002F2",{"title":22},"lucide:key-round","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Fkonten",{"title":29,"id":30,"canonicalKey":31,"locale":8,"draft":6,"navigation":32,"icon":33,"path":34},"Auf dem Mac spielen: Optionen","content:de:1.dokumentation:1.anleitungen:3.guild-wars-auf-dem-mac-spielen.md","1\u002F3",{"title":29},"lucide:scale","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Fguild-wars-auf-dem-mac-spielen",{"title":36,"id":37,"canonicalKey":38,"locale":8,"draft":6,"navigation":39,"icon":40,"path":41},"Leistung","content:de:1.dokumentation:1.anleitungen:4.leistung.md","1\u002F4",{"title":36},"lucide:gauge","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Fleistung",{"title":43,"id":44,"canonicalKey":45,"locale":8,"draft":6,"navigation":46,"icon":47,"path":48},"Templates","content:de:1.dokumentation:1.anleitungen:5.templates.md","1\u002F5",{"title":43},"lucide:bookmark","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Ftemplates",{"title":50,"id":51,"canonicalKey":52,"locale":8,"draft":6,"navigation":53,"icon":54,"path":55},"Fehlerbehebung","content:de:1.dokumentation:1.anleitungen:6.fehlerbehebung.md","1\u002F6",{"title":50},"lucide:wrench","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Ffehlerbehebung",{"title":57,"id":58,"canonicalKey":59,"locale":60,"draft":6,"navigation":61,"icon":62,"fallback":63,"path":64},"Known issues","content:en:1.docs:1.guides:7.known-issues.md","1\u002F7","en",{"title":57},"lucide:triangle-alert",true,"\u002Fde\u002Fdokumentation\u002Fguides\u002Fknown-issues",{"title":66,"page":6,"canonicalKey":67,"locale":8,"id":68,"draft":6,"icon":69,"sidebar":70,"children":71},"Projekt","2","content:de:1.dokumentation:2.projekt:.navigation.yml","lucide:shield-check","group",[72,78],{"title":73,"id":74,"canonicalKey":75,"locale":8,"draft":6,"navigation":76,"icon":69,"path":77},"Sicherheit & Kontorisiko","content:de:1.dokumentation:2.projekt:1.sicherheit.md","2\u002F1",{"title":73},"\u002Fde\u002Fdokumentation\u002Fprojekt\u002Fsicherheit",{"title":79,"id":80,"canonicalKey":81,"locale":8,"draft":6,"navigation":82,"icon":83,"path":84},"Über & Credits","content:de:1.dokumentation:2.projekt:2.ueber.md","2\u002F2",{"title":79},"lucide:users","\u002Fde\u002Fdokumentation\u002Fprojekt\u002Fueber",{"title":86,"page":6,"canonicalKey":87,"locale":60,"id":88,"draft":6,"icon":89,"sidebar":11,"fallback":63,"children":90},"For ArenaNet","3","content:en:1.docs:3.upstream:.navigation.yml","lucide:send",[91,98,105,131,157,169,188],{"title":92,"id":93,"canonicalKey":94,"locale":60,"draft":6,"navigation":95,"icon":96,"fallback":63,"path":97},"Introduction","content:en:1.docs:3.upstream:1.introduction.md","3\u002F1",{"title":92},"lucide:book-open-check","\u002Fde\u002Fdokumentation\u002Fupstream\u002Fintroduction",{"title":99,"id":100,"canonicalKey":101,"locale":60,"draft":6,"navigation":102,"icon":103,"fallback":63,"path":104},"Request summary","content:en:1.docs:3.upstream:2.request-summary.md","3\u002F2",{"title":99},"lucide:list-checks","\u002Fde\u002Fdokumentation\u002Fupstream\u002Frequest-summary",{"title":106,"page":6,"canonicalKey":107,"locale":60,"id":108,"draft":6,"icon":109,"sidebar":70,"fallback":63,"children":110},"File system","3\u002F3","content:en:1.docs:3.upstream:3.filesystem:.navigation.yml","lucide:folder-x",[111,117,124],{"title":112,"id":113,"canonicalKey":114,"locale":60,"draft":6,"navigation":115,"icon":109,"fallback":63,"path":116},"File routines (UR-01…04)","content:en:1.docs:3.upstream:3.filesystem:1.unimplemented-routines.md","3\u002F3\u002F1",{"title":112},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Ffilesystem\u002Funimplemented-routines",{"title":118,"id":119,"canonicalKey":120,"locale":60,"draft":6,"navigation":121,"icon":122,"fallback":63,"path":123},"RemoveExtension (UR-05)","content:en:1.docs:3.upstream:3.filesystem:2.path-remove-extension.md","3\u002F3\u002F2",{"title":118},"lucide:scissors","\u002Fde\u002Fdokumentation\u002Fupstream\u002Ffilesystem\u002Fpath-remove-extension",{"title":125,"id":126,"canonicalKey":127,"locale":60,"draft":6,"navigation":128,"icon":129,"fallback":63,"path":130},"File::Open mode (UR-06)","content:en:1.docs:3.upstream:3.filesystem:3.file-open-mode.md","3\u002F3\u002F3",{"title":125},"lucide:file-plus-2","\u002Fde\u002Fdokumentation\u002Fupstream\u002Ffilesystem\u002Ffile-open-mode",{"title":132,"page":6,"canonicalKey":133,"locale":60,"id":134,"draft":6,"icon":135,"sidebar":70,"fallback":63,"children":136},"Input","3\u002F4","content:en:1.docs:3.upstream:4.input:.navigation.yml","lucide:mouse-pointer-click",[137,143,150],{"title":138,"id":139,"canonicalKey":140,"locale":60,"draft":6,"navigation":141,"icon":135,"fallback":63,"path":142},"Double-click (UR-07)","content:en:1.docs:3.upstream:4.input:1.double-click-flag.md","3\u002F4\u002F1",{"title":138},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Finput\u002Fdouble-click-flag",{"title":144,"id":145,"canonicalKey":146,"locale":60,"draft":6,"navigation":147,"icon":148,"fallback":63,"path":149},"Key labels (UR-08)","content:en:1.docs:3.upstream:4.input:2.key-labels.md","3\u002F4\u002F2",{"title":144},"lucide:keyboard","\u002Fde\u002Fdokumentation\u002Fupstream\u002Finput\u002Fkey-labels",{"title":151,"id":152,"canonicalKey":153,"locale":60,"draft":6,"navigation":154,"icon":155,"fallback":63,"path":156},"Cursor re-test (UR-09)","content:en:1.docs:3.upstream:4.input:3.cursor-re-evaluation.md","3\u002F4\u002F3",{"title":151},"lucide:pointer","\u002Fde\u002Fdokumentation\u002Fupstream\u002Finput\u002Fcursor-re-evaluation",{"title":158,"page":6,"canonicalKey":159,"locale":60,"id":160,"draft":6,"icon":161,"sidebar":70,"fallback":63,"children":162},"Runtime","3\u002F5","content:en:1.docs:3.upstream:5.runtime:.navigation.yml","lucide:cpu",[163],{"title":164,"id":165,"canonicalKey":166,"locale":60,"draft":6,"navigation":167,"icon":161,"fallback":63,"path":168},"Heap maximum (UR-10)","content:en:1.docs:3.upstream:5.runtime:1.heap-maximum.md","3\u002F5\u002F1",{"title":164},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Fruntime\u002Fheap-maximum",{"title":170,"page":6,"canonicalKey":171,"locale":60,"id":172,"draft":6,"icon":173,"sidebar":70,"fallback":63,"children":174},"Interface proposals","3\u002F6","content:en:1.docs:3.upstream:6.proposals:.navigation.yml","lucide:plug",[175,182],{"title":176,"id":177,"canonicalKey":178,"locale":60,"draft":6,"navigation":179,"icon":180,"fallback":63,"path":181},"Build identity (UR-11)","content:en:1.docs:3.upstream:6.proposals:1.build-identification.md","3\u002F6\u002F1",{"title":176},"lucide:fingerprint","\u002Fde\u002Fdokumentation\u002Fupstream\u002Fproposals\u002Fbuild-identification",{"title":183,"id":184,"canonicalKey":185,"locale":60,"draft":6,"navigation":186,"icon":173,"fallback":63,"path":187},"Host interface (UR-12)","content:en:1.docs:3.upstream:6.proposals:2.platform-host-interface.md","3\u002F6\u002F2",{"title":183},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Fproposals\u002Fplatform-host-interface",{"title":189,"page":6,"canonicalKey":190,"locale":60,"id":191,"draft":6,"icon":192,"sidebar":70,"fallback":63,"children":193},"Reference","3\u002F7","content:en:1.docs:3.upstream:7.reference:.navigation.yml","lucide:microscope",[194,200],{"title":195,"id":196,"canonicalKey":197,"locale":60,"draft":6,"navigation":198,"icon":54,"fallback":63,"path":199},"Our workarounds","content:en:1.docs:3.upstream:7.reference:1.our-workarounds.md","3\u002F7\u002F1",{"title":195},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Freference\u002Four-workarounds",{"title":201,"id":202,"canonicalKey":203,"locale":60,"draft":6,"navigation":204,"icon":192,"fallback":63,"path":205},"Verification method","content:en:1.docs:3.upstream:7.reference:2.verification-method.md","3\u002F7\u002F2",{"title":201},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Freference\u002Fverification-method",{"title":207,"page":6,"canonicalKey":208,"locale":60,"id":209,"draft":6,"icon":210,"sidebar":11,"fallback":63,"children":211},"Features","4","content:en:1.docs:4.features:.navigation.yml","lucide:layout-grid",[212,218,225,232,239,246,253,260],{"title":213,"id":214,"canonicalKey":215,"locale":60,"draft":6,"navigation":216,"icon":83,"fallback":63,"path":217},"Accounts and launcher","content:en:1.docs:4.features:1.accounts.md","4\u002F1",{"title":213},"\u002Fde\u002Fdokumentation\u002Ffeatures\u002Faccounts",{"title":219,"id":220,"canonicalKey":221,"locale":60,"draft":6,"navigation":222,"icon":223,"fallback":63,"path":224},"Hub and Switch Character","content:en:1.docs:4.features:2.hub.md","4\u002F2",{"title":219},"lucide:search","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fhub",{"title":226,"id":227,"canonicalKey":228,"locale":60,"draft":6,"navigation":229,"icon":230,"fallback":63,"path":231},"Travel and maps","content:en:1.docs:4.features:3.travel-and-maps.md","4\u002F3",{"title":226},"lucide:map","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Ftravel-and-maps",{"title":233,"id":234,"canonicalKey":235,"locale":60,"draft":6,"navigation":236,"icon":237,"fallback":63,"path":238},"Chat and trade","content:en:1.docs:4.features:4.chat-and-trade.md","4\u002F4",{"title":233},"lucide:messages-square","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fchat-and-trade",{"title":240,"id":241,"canonicalKey":242,"locale":60,"draft":6,"navigation":243,"icon":244,"fallback":63,"path":245},"Inventory","content:en:1.docs:4.features:5.inventory.md","4\u002F5",{"title":240},"lucide:package","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Finventory",{"title":247,"id":248,"canonicalKey":249,"locale":60,"draft":6,"navigation":250,"icon":251,"fallback":63,"path":252},"Timers and readouts","content:en:1.docs:4.features:6.combat.md","4\u002F6",{"title":247},"lucide:timer","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fcombat",{"title":254,"id":255,"canonicalKey":256,"locale":60,"draft":6,"navigation":257,"icon":258,"fallback":63,"path":259},"Appearance","content:en:1.docs:4.features:7.appearance.md","4\u002F7",{"title":254},"lucide:palette","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fappearance",{"title":261,"id":262,"canonicalKey":263,"locale":60,"draft":6,"navigation":264,"icon":265,"fallback":63,"path":266},"Game files and updates","content:en:1.docs:4.features:8.game-files-and-updates.md","4\u002F8",{"title":261},"lucide:hard-drive-download","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fgame-files-and-updates",{"title":268,"ref":269,"description":270,"icon":180,"updated":271,"navigation":272,"body":273,"type":582,"id":177,"canonicalKey":178,"draft":6,"partial":6,"locale":60,"collection":583,"navigationFile":6,"file":584,"route":590,"resolution":597},"UR-11: publish build identity and a symbol map","docs\u002Fupstream\u002Fproposals\u002Fbuild-identification","Keep the build_id section and the assert strings, and publish the function name map that the build already produces. No runtime change, and it saves hours per client update.","2026-08-04",{"title":176},{"type":274,"children":275,"toc":564},"root",[276,284,295,302,307,312,319,325,379,385,390,395,401,406,493,498,504,509,515,520,526,558],{"type":277,"tag":278,"props":279,"children":280},"element","p",{},[281],{"type":282,"value":283},"text","This request doesn't correct a defect. It asks ArenaNet to keep three things\nthe build already produces, and to publish one of them. Two of the three items\nare \"change nothing\"; the third is publishing an artifact that already exists.",{"type":277,"tag":278,"props":285,"children":286},{},[287,293],{"type":277,"tag":288,"props":289,"children":290},"strong",{},[291],{"type":282,"value":292},"Fix:",{"type":282,"value":294}," low effort, no blast radius at runtime — the published module doesn't\nchange, only the set of published files grows.",{"type":277,"tag":296,"props":297,"children":299},"h2",{"id":298},"the-problem-this-solves",[300],{"type":282,"value":301},"The problem this solves",{"type":277,"tag":278,"props":303,"children":304},{},[305],{"type":282,"value":306},"The published module is stripped: about 17,600 functions, no names, each one\nidentified only by its index. Every recompile moves those indices — add one\nfunction and every index after it changes. Static data addresses move too, and\nnot by one common offset; we measured this on build 38797, and the addresses\nshare no single delta.",{"type":277,"tag":278,"props":308,"children":309},{},[310],{"type":282,"value":311},"Any host that needs to locate something inside the client repeats that work\nafter every update. For us it's the single largest cost of the project.",{"type":277,"tag":313,"props":314,"children":316},"info",{"title":315},"Why we can't solve this alone",[317],{"type":282,"value":318},"We can find code by shape — a function by its exact body bytes and caller set,\nwith proof that the surrounding code didn't change. That survives updates. A\nplain number has no shape: nothing in the module says \"this global is the\ncontext root\", so every memory address has to be measured by hand, on each\nbuild.",{"type":277,"tag":296,"props":320,"children":322},{"id":321},"what-we-ask-for",[323],{"type":282,"value":324},"What we ask for",{"type":277,"tag":326,"props":327,"children":329},"steps",{"mode":328},"numbered",[330,337,342,348,361,367],{"type":277,"tag":331,"props":332,"children":334},"h3",{"id":333},"what-we-ask-for-keep-the-build_id-custom-section",[335],{"type":282,"value":336},"Keep the build_id custom section",{"type":277,"tag":278,"props":338,"children":339},{},[340],{"type":282,"value":341},"The module carries a custom section with a build identifier. We use it to gate\nevery build-specific decision, and we refuse to run any transform on an\nunknown build.",{"type":277,"tag":331,"props":343,"children":345},{"id":344},"what-we-ask-for-keep-the-assert-strings-and-the-source-paths",[346],{"type":282,"value":347},"Keep the assert strings and the source paths",{"type":277,"tag":278,"props":349,"children":350},{},[351,353,359],{"type":282,"value":352},"The data section holds assert messages and original source paths, for example\n",{"type":277,"tag":354,"props":355,"children":356},"code",{},[357],{"type":282,"value":358},"p:\\code\\gw\\ui\\game\\party\\ptsearch.cpp",{"type":282,"value":360},". They come from the source, not the\ncompiler, so they survive recompiles that move every index. They're the most\nstable anchors in the binary — the Windows tool community has leaned on them\nfor twenty years.",{"type":277,"tag":331,"props":362,"children":364},{"id":363},"what-we-ask-for-publish-the-function-name-map",[365],{"type":282,"value":366},"Publish the function name map",{"type":277,"tag":278,"props":368,"children":369},{},[370,372,377],{"type":282,"value":371},"The build already produces a name map: the module references\n",{"type":277,"tag":354,"props":373,"children":374},{},[375],{"type":282,"value":376},"external_debug_info",{"type":282,"value":378},", and an earlier build shipped with names. Publishing\nthat map as a separate file per build solves the problem outright.",{"type":277,"tag":296,"props":380,"children":382},{"id":381},"the-name-map-in-detail",[383],{"type":282,"value":384},"The name map, in detail",{"type":277,"tag":278,"props":386,"children":387},{},[388],{"type":282,"value":389},"A name map turns our hardest problem into a table lookup.",{"type":277,"tag":278,"props":391,"children":392},{},[393],{"type":282,"value":394},"We already carry names forward between builds with a correlator that compares\nan older named build against the new stripped one, using nine heuristics. On\none build pair it mapped 17,302 of 17,739 functions automatically, left 433\nuncertain, and 4 unmapped. That's a good result — and still a guess. A\npublished map makes it exact.",{"type":277,"tag":331,"props":396,"children":398},{"id":397},"the-name-map-in-detail-acceptable-forms",[399],{"type":282,"value":400},"Acceptable forms",{"type":277,"tag":278,"props":402,"children":403},{},[404],{"type":282,"value":405},"We don't need full debug information. Any of these works:",{"type":277,"tag":407,"props":408,"children":409},"table",{},[410,434],{"type":277,"tag":411,"props":412,"children":413},"thead",{},[414],{"type":277,"tag":415,"props":416,"children":417},"tr",{},[418,424,429],{"type":277,"tag":419,"props":420,"children":421},"th",{},[422],{"type":282,"value":423},"Form",{"type":277,"tag":419,"props":425,"children":426},{},[427],{"type":282,"value":428},"Content",{"type":277,"tag":419,"props":430,"children":431},{},[432],{"type":282,"value":433},"Our result",{"type":277,"tag":435,"props":436,"children":437},"tbody",{},[438,457,475],{"type":277,"tag":415,"props":439,"children":440},{},[441,447,452],{"type":277,"tag":442,"props":443,"children":444},"td",{},[445],{"type":282,"value":446},"A full name section",{"type":277,"tag":442,"props":448,"children":449},{},[450],{"type":282,"value":451},"Index to name for every function",{"type":277,"tag":442,"props":453,"children":454},{},[455],{"type":282,"value":456},"Exact",{"type":277,"tag":415,"props":458,"children":459},{},[460,465,470],{"type":277,"tag":442,"props":461,"children":462},{},[463],{"type":282,"value":464},"A partial map",{"type":277,"tag":442,"props":466,"children":467},{},[468],{"type":282,"value":469},"Index to name for exported and asserted functions only",{"type":277,"tag":442,"props":471,"children":472},{},[473],{"type":282,"value":474},"Almost exact",{"type":277,"tag":415,"props":476,"children":477},{},[478,483,488],{"type":277,"tag":442,"props":479,"children":480},{},[481],{"type":282,"value":482},"A hash map",{"type":277,"tag":442,"props":484,"children":485},{},[486],{"type":282,"value":487},"Index to a stable hash of the mangled name",{"type":277,"tag":442,"props":489,"children":490},{},[491],{"type":282,"value":492},"Exact matching, no readable names",{"type":277,"tag":278,"props":494,"children":495},{},[496],{"type":282,"value":497},"The third form discloses the least and still solves the problem — we only need\nto know that function 2469 in the new build is the same function as 2461 in\nthe old one.",{"type":277,"tag":331,"props":499,"children":501},{"id":500},"the-name-map-in-detail-what-we-dont-ask-for",[502],{"type":282,"value":503},"What we don't ask for",{"type":277,"tag":278,"props":505,"children":506},{},[507],{"type":282,"value":508},"No source code, no private build-system symbols, no debug build.",{"type":277,"tag":296,"props":510,"children":512},{"id":511},"a-fourth-optional-item-announce-a-build",[513],{"type":282,"value":514},"A fourth, optional item: announce a build",{"type":277,"tag":278,"props":516,"children":517},{},[518],{"type":282,"value":519},"We poll the patch manifest every fifteen minutes to notice a new build.\nThat's polite, but wasteful for both sides. A field in the manifest, or a\nsmall feed, would let us react to a signal instead of a timer. Optional — the\npolling works, and we keep it under one request per quarter hour.",{"type":277,"tag":296,"props":521,"children":523},{"id":522},"acceptance-criteria",[524],{"type":282,"value":525},"Acceptance criteria",{"type":277,"tag":527,"props":528,"children":529},"ul",{},[530,543,548,553],{"type":277,"tag":531,"props":532,"children":533},"li",{},[534,536,541],{"type":282,"value":535},"The ",{"type":277,"tag":354,"props":537,"children":538},{},[539],{"type":282,"value":540},"build_id",{"type":282,"value":542}," custom section is present in the published module.",{"type":277,"tag":531,"props":544,"children":545},{},[546],{"type":282,"value":547},"The assert strings and the source paths stay in the data section.",{"type":277,"tag":531,"props":549,"children":550},{},[551],{"type":282,"value":552},"A name map, in one of the three forms above, is published with each build,\nat a stable URL.",{"type":277,"tag":531,"props":554,"children":555},{},[556],{"type":282,"value":557},"The map covers the functions in the code section of the same build.",{"type":277,"tag":313,"props":559,"children":561},{"title":560},"Why this matters for reports like these",[562],{"type":282,"value":563},"Every report in this section exists because the assert strings are in the\nbinary — they're what lets us map a finding to a translation unit. A stable\nplatform host keeps reporting defects with function indices, byte offsets, and\nreproducible measurements.",{"title":565,"searchDepth":566,"depth":566,"links":567},"",4,[568,570,576,580,581],{"id":298,"depth":569,"text":301},2,{"id":321,"depth":569,"text":324,"children":571},[572,574,575],{"id":333,"depth":573,"text":336},3,{"id":344,"depth":573,"text":347},{"id":363,"depth":573,"text":366},{"id":381,"depth":569,"text":384,"children":577},[578,579],{"id":397,"depth":573,"text":400},{"id":500,"depth":573,"text":503},{"id":511,"depth":569,"text":514},{"id":522,"depth":569,"text":525},"markdown","docs",{"source":585,"path":586,"stem":587,"dir":588,"extension":589},"content","en\u002F1.docs\u002F3.upstream\u002F6.proposals\u002F1.build-identification.md","en\u002F1.docs\u002F3.upstream\u002F6.proposals\u002F1.build-identification","proposals","md",{"requestedPath":181,"resolvedPath":591,"alternates":592},"\u002Fdocs\u002Fupstream\u002Fproposals\u002Fbuild-identification",[593,595],{"locale":60,"path":591,"source":594},"variant",{"locale":8,"path":181,"source":596,"resolvedLocale":60},"fallback",{"requested":598,"resolved":599,"usedFallback":63},{"locale":8},{"locale":60},{"previous":601,"next":601},null,1794063742819]