[{"data":1,"prerenderedAt":615},["ShallowReactive",2],{"docs-navigation:de":3,"content-page:docs:i_jlhzSqyRf5xD_kvT2Wdp1mdAhiDOtaYzDSK7kzTc4":197,"content-page-surround:docs:i_jlhzSqyRf5xD_kvT2Wdp1mdAhiDOtaYzDSK7kzTc4":607,"i-lucide:file":609,"i-lucide:clipboard":613},[4,54,74],{"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,19,26,33,40,47],{"title":14,"id":15,"canonicalKey":16,"locale":8,"draft":6,"icon":17,"path":18},"Guild Wars auf dem Mac installieren","content:de:1.dokumentation:1.anleitungen:1.installation.md","1\u002F1","lucide:download","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Finstallation",{"title":20,"id":21,"canonicalKey":22,"locale":8,"draft":6,"navigation":23,"icon":24,"path":25},"Konten & Mobile-Verknüpfung","content:de:1.dokumentation:1.anleitungen:2.konten.md","1\u002F2",{"title":20},"lucide:key-round","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Fkonten",{"title":27,"id":28,"canonicalKey":29,"locale":8,"draft":6,"navigation":30,"icon":31,"path":32},"Auf dem Mac spielen: Optionen","content:de:1.dokumentation:1.anleitungen:3.guild-wars-auf-dem-mac-spielen.md","1\u002F3",{"title":27},"lucide:scale","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Fguild-wars-auf-dem-mac-spielen",{"title":34,"id":35,"canonicalKey":36,"locale":8,"draft":6,"navigation":37,"icon":38,"path":39},"Leistung","content:de:1.dokumentation:1.anleitungen:4.leistung.md","1\u002F4",{"title":34},"lucide:gauge","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Fleistung",{"title":41,"id":42,"canonicalKey":43,"locale":8,"draft":6,"navigation":44,"icon":45,"path":46},"Templates","content:de:1.dokumentation:1.anleitungen:5.templates.md","1\u002F5",{"title":41},"lucide:bookmark","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Ftemplates",{"title":48,"id":49,"canonicalKey":50,"locale":8,"draft":6,"navigation":51,"icon":52,"path":53},"Fehlerbehebung","content:de:1.dokumentation:1.anleitungen:6.fehlerbehebung.md","1\u002F6",{"title":48},"lucide:wrench","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Ffehlerbehebung",{"title":55,"page":6,"canonicalKey":56,"locale":8,"id":57,"draft":6,"icon":58,"sidebar":59,"children":60},"Projekt","2","content:de:1.dokumentation:2.projekt:.navigation.yml","lucide:shield-check","group",[61,67],{"title":62,"id":63,"canonicalKey":64,"locale":8,"draft":6,"navigation":65,"icon":58,"path":66},"Sicherheit & Kontorisiko","content:de:1.dokumentation:2.projekt:1.sicherheit.md","2\u002F1",{"title":62},"\u002Fde\u002Fdokumentation\u002Fprojekt\u002Fsicherheit",{"title":68,"id":69,"canonicalKey":70,"locale":8,"draft":6,"navigation":71,"icon":72,"path":73},"Über & Credits","content:de:1.dokumentation:2.projekt:2.ueber.md","2\u002F2",{"title":68},"lucide:users","\u002Fde\u002Fdokumentation\u002Fprojekt\u002Fueber",{"title":75,"page":6,"canonicalKey":76,"locale":77,"id":78,"draft":6,"icon":79,"sidebar":11,"fallback":80,"children":81},"For ArenaNet","3","en","content:en:1.docs:3.upstream:.navigation.yml","lucide:send",true,[82,89,96,122,148,160,179],{"title":83,"id":84,"canonicalKey":85,"locale":77,"draft":6,"navigation":86,"icon":87,"fallback":80,"path":88},"Introduction","content:en:1.docs:3.upstream:1.introduction.md","3\u002F1",{"title":83},"lucide:book-open-check","\u002Fde\u002Fdokumentation\u002Fupstream\u002Fintroduction",{"title":90,"id":91,"canonicalKey":92,"locale":77,"draft":6,"navigation":93,"icon":94,"fallback":80,"path":95},"Request summary","content:en:1.docs:3.upstream:2.request-summary.md","3\u002F2",{"title":90},"lucide:list-checks","\u002Fde\u002Fdokumentation\u002Fupstream\u002Frequest-summary",{"title":97,"page":6,"canonicalKey":98,"locale":77,"id":99,"draft":6,"icon":100,"sidebar":59,"fallback":80,"children":101},"File system","3\u002F3","content:en:1.docs:3.upstream:3.filesystem:.navigation.yml","lucide:folder-x",[102,108,115],{"title":103,"id":104,"canonicalKey":105,"locale":77,"draft":6,"navigation":106,"icon":100,"fallback":80,"path":107},"File routines (UR-01…04)","content:en:1.docs:3.upstream:3.filesystem:1.unimplemented-routines.md","3\u002F3\u002F1",{"title":103},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Ffilesystem\u002Funimplemented-routines",{"title":109,"id":110,"canonicalKey":111,"locale":77,"draft":6,"navigation":112,"icon":113,"fallback":80,"path":114},"RemoveExtension (UR-05)","content:en:1.docs:3.upstream:3.filesystem:2.path-remove-extension.md","3\u002F3\u002F2",{"title":109},"lucide:scissors","\u002Fde\u002Fdokumentation\u002Fupstream\u002Ffilesystem\u002Fpath-remove-extension",{"title":116,"id":117,"canonicalKey":118,"locale":77,"draft":6,"navigation":119,"icon":120,"fallback":80,"path":121},"File::Open mode (UR-06)","content:en:1.docs:3.upstream:3.filesystem:3.file-open-mode.md","3\u002F3\u002F3",{"title":116},"lucide:file-plus-2","\u002Fde\u002Fdokumentation\u002Fupstream\u002Ffilesystem\u002Ffile-open-mode",{"title":123,"page":6,"canonicalKey":124,"locale":77,"id":125,"draft":6,"icon":126,"sidebar":59,"fallback":80,"children":127},"Input","3\u002F4","content:en:1.docs:3.upstream:4.input:.navigation.yml","lucide:mouse-pointer-click",[128,134,141],{"title":129,"id":130,"canonicalKey":131,"locale":77,"draft":6,"navigation":132,"icon":126,"fallback":80,"path":133},"Double-click (UR-07)","content:en:1.docs:3.upstream:4.input:1.double-click-flag.md","3\u002F4\u002F1",{"title":129},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Finput\u002Fdouble-click-flag",{"title":135,"id":136,"canonicalKey":137,"locale":77,"draft":6,"navigation":138,"icon":139,"fallback":80,"path":140},"Key labels (UR-08)","content:en:1.docs:3.upstream:4.input:2.key-labels.md","3\u002F4\u002F2",{"title":135},"lucide:keyboard","\u002Fde\u002Fdokumentation\u002Fupstream\u002Finput\u002Fkey-labels",{"title":142,"id":143,"canonicalKey":144,"locale":77,"draft":6,"navigation":145,"icon":146,"fallback":80,"path":147},"Cursor re-test (UR-09)","content:en:1.docs:3.upstream:4.input:3.cursor-re-evaluation.md","3\u002F4\u002F3",{"title":142},"lucide:pointer","\u002Fde\u002Fdokumentation\u002Fupstream\u002Finput\u002Fcursor-re-evaluation",{"title":149,"page":6,"canonicalKey":150,"locale":77,"id":151,"draft":6,"icon":152,"sidebar":59,"fallback":80,"children":153},"Runtime","3\u002F5","content:en:1.docs:3.upstream:5.runtime:.navigation.yml","lucide:cpu",[154],{"title":155,"id":156,"canonicalKey":157,"locale":77,"draft":6,"navigation":158,"icon":152,"fallback":80,"path":159},"Heap maximum (UR-10)","content:en:1.docs:3.upstream:5.runtime:1.heap-maximum.md","3\u002F5\u002F1",{"title":155},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Fruntime\u002Fheap-maximum",{"title":161,"page":6,"canonicalKey":162,"locale":77,"id":163,"draft":6,"icon":164,"sidebar":59,"fallback":80,"children":165},"Interface proposals","3\u002F6","content:en:1.docs:3.upstream:6.proposals:.navigation.yml","lucide:plug",[166,173],{"title":167,"id":168,"canonicalKey":169,"locale":77,"draft":6,"navigation":170,"icon":171,"fallback":80,"path":172},"Build identity (UR-11)","content:en:1.docs:3.upstream:6.proposals:1.build-identification.md","3\u002F6\u002F1",{"title":167},"lucide:fingerprint","\u002Fde\u002Fdokumentation\u002Fupstream\u002Fproposals\u002Fbuild-identification",{"title":174,"id":175,"canonicalKey":176,"locale":77,"draft":6,"navigation":177,"icon":164,"fallback":80,"path":178},"Host interface (UR-12)","content:en:1.docs:3.upstream:6.proposals:2.platform-host-interface.md","3\u002F6\u002F2",{"title":174},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Fproposals\u002Fplatform-host-interface",{"title":180,"page":6,"canonicalKey":181,"locale":77,"id":182,"draft":6,"icon":183,"sidebar":59,"fallback":80,"children":184},"Reference","3\u002F7","content:en:1.docs:3.upstream:7.reference:.navigation.yml","lucide:microscope",[185,191],{"title":186,"id":187,"canonicalKey":188,"locale":77,"draft":6,"navigation":189,"icon":52,"fallback":80,"path":190},"Our workarounds","content:en:1.docs:3.upstream:7.reference:1.our-workarounds.md","3\u002F7\u002F1",{"title":186},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Freference\u002Four-workarounds",{"title":192,"id":193,"canonicalKey":194,"locale":77,"draft":6,"navigation":195,"icon":183,"fallback":80,"path":196},"Verification method","content:en:1.docs:3.upstream:7.reference:2.verification-method.md","3\u002F7\u002F2",{"title":192},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Freference\u002Fverification-method",{"title":198,"ref":199,"description":200,"icon":120,"updated":201,"navigation":202,"body":203,"type":589,"id":117,"canonicalKey":118,"draft":6,"partial":6,"locale":77,"collection":590,"navigationFile":6,"file":591,"route":597,"resolution":604},"UR-06: File::Open mode 1 creates the file it tests for","docs\u002Fupstream\u002Ffilesystem\u002Ffile-open-mode","Mode 1 is the open-an-existing-file mode, but it carries O_CREAT. The rename probe therefore creates the destination file and reports the name as taken.","2026-08-04",{"title":116},{"type":204,"children":205,"toc":572},"root",[206,227,239,256,266,271,284,291,303,332,350,355,361,393,399,415,421,429,434,455,461,510,516,555,561],{"type":207,"tag":208,"props":209,"children":210},"element","p",{},[211,218,220,225],{"type":207,"tag":212,"props":213,"children":214},"code",{},[215],{"type":216,"value":217},"text","File::Open",{"type":216,"value":219}," mode 1 is supposed to open a file that exists and fail when it's\nabsent. Today it carries ",{"type":207,"tag":212,"props":221,"children":222},{},[223],{"type":216,"value":224},"O_CREAT",{"type":216,"value":226},", so it creates the file instead.",{"type":207,"tag":208,"props":228,"children":229},{},[230,232,237],{"type":216,"value":231},"Build used for the measurements below:\n",{"type":207,"tag":212,"props":233,"children":234},{},[235],{"type":216,"value":236},"b0319704f3072d6948a66026a35af5eb0af12b48d70986783c293e7c77e98483",{"type":216,"value":238},".",{"type":207,"tag":208,"props":240,"children":241},{},[242,248,250,255],{"type":207,"tag":243,"props":244,"children":245},"strong",{},[246],{"type":216,"value":247},"Function 771",{"type":216,"value":249},", ",{"type":207,"tag":212,"props":251,"children":252},{},[253],{"type":216,"value":254},"File::Open(path, mode, err) -> handle",{"type":216,"value":238},{"type":207,"tag":208,"props":257,"children":258},{},[259,264],{"type":207,"tag":243,"props":260,"children":261},{},[262],{"type":216,"value":263},"Fix:",{"type":216,"value":265}," low effort, medium blast radius — the change is one flag in the mode\ntable, but every mode 1 caller changes behaviour. Code that depends on the\ncurrent create-on-open breaks; that's the correct outcome, but the mode 1\ncallers need a check. We identified two: function 9753 (template read) and\nfunction 9757 (rename probe).",{"type":207,"tag":208,"props":267,"children":268},{},[269],{"type":216,"value":270},"Mode 1 is the open-an-existing-file mode. Function 9753 uses it to read a\ntemplate, and function 9757 uses it to ask whether a rename destination is\nalready taken:",{"type":207,"tag":272,"props":273,"children":277},"pre",{"language":274,"class":275,"tabindex":276},"c","shiki dark:dark-plus","0",[278],{"type":207,"tag":212,"props":279,"children":281},{"class":280},"language-c",[282],{"type":216,"value":283},"if (!allowOverwrite) {\n    handle = File::Open(path, 1, NULL);\n    if (handle) return false;          \u002F\u002F the name is already in use\n}\nhandle = File::Open(path, 2, NULL);    \u002F\u002F create and write",{"type":207,"tag":285,"props":286,"children":288},"h2",{"id":287},"what-the-client-does-now",[289],{"type":216,"value":290},"What the client does now",{"type":207,"tag":208,"props":292,"children":293},{},[294,296,301],{"type":216,"value":295},"Both modes reach ",{"type":207,"tag":212,"props":297,"children":298},{},[299],{"type":216,"value":300},"openat",{"type":216,"value":302}," with identical flags. We captured a save and then a\nrename on a live client:",{"type":207,"tag":272,"props":304,"children":306},{"language":216,"class":305,"tabindex":276},"shiki shiki-themes light-plus dark-plus dark:dark-plus",[307],{"type":207,"tag":212,"props":308,"children":310},{"class":309},"language-text",[311,322,324],{"type":207,"tag":312,"props":313,"children":316},"span",{"class":314,"style":315},"line","display: inline",[317],{"type":207,"tag":312,"props":318,"children":319},{},[320],{"type":216,"value":321},"save    openat flags:32834 access:2 create:true errno:0 -> fd_pwrite 24\u002F24 -> fd_close",{"type":216,"value":323},"\n",{"type":207,"tag":312,"props":325,"children":326},{"class":314,"style":315},[327],{"type":207,"tag":312,"props":328,"children":329},{},[330],{"type":216,"value":331},"rename  openat flags:32834 access:2 create:true errno:0 -> fd_close",{"type":207,"tag":208,"props":333,"children":334},{},[335,337,342,344,349],{"type":216,"value":336},"The value ",{"type":207,"tag":212,"props":338,"children":339},{},[340],{"type":216,"value":341},"32834",{"type":216,"value":343}," is ",{"type":207,"tag":212,"props":345,"children":346},{},[347],{"type":216,"value":348},"O_RDWR | O_CREAT | O_LARGEFILE",{"type":216,"value":238},{"type":207,"tag":208,"props":351,"children":352},{},[353],{"type":216,"value":354},"Mode 1 therefore creates the very file it's testing for — the probe then sees\nthat the file exists and reports the name as taken.",{"type":207,"tag":285,"props":356,"children":358},{"id":357},"what-the-player-sees",[359],{"type":216,"value":360},"What the player sees",{"type":207,"tag":362,"props":363,"children":364},"ul",{},[365,371,383,388],{"type":207,"tag":366,"props":367,"children":368},"li",{},[369],{"type":216,"value":370},"Every rename fails, for every destination name.",{"type":207,"tag":366,"props":372,"children":373},{},[374,376,382],{"type":216,"value":375},"The client shows ",{"type":207,"tag":377,"props":378,"children":379},"em",{},[380],{"type":216,"value":381},"\"The attempt to rename the Skills Template named … failed\"",{"type":216,"value":238},{"type":207,"tag":366,"props":384,"children":385},{},[386],{"type":216,"value":387},"A file of zero length stays at the destination path.",{"type":207,"tag":366,"props":389,"children":390},{},[391],{"type":216,"value":392},"A load of an absent template creates an empty file instead of a failure.",{"type":207,"tag":285,"props":394,"children":396},{"id":395},"expected-behaviour",[397],{"type":216,"value":398},"Expected behaviour",{"type":207,"tag":208,"props":400,"children":401},{},[402,404,408,410,414],{"type":216,"value":403},"Mode 1 opens an existing file, without ",{"type":207,"tag":212,"props":405,"children":406},{},[407],{"type":216,"value":224},{"type":216,"value":409},", and fails when the file is\nabsent. Mode 2 keeps ",{"type":207,"tag":212,"props":411,"children":412},{},[413],{"type":216,"value":224},{"type":216,"value":238},{"type":207,"tag":285,"props":416,"children":418},{"id":417},"proposed-mode-table",[419],{"type":216,"value":420},"Proposed mode table",{"type":207,"tag":272,"props":422,"children":423},{"language":274,"class":275,"tabindex":276},[424],{"type":207,"tag":212,"props":425,"children":426},{"class":280},[427],{"type":216,"value":428},"\u002F\u002F File::Open(path, mode, err)\n\u002F\u002F\n\u002F\u002F mode 1  open existing    O_RDONLY  (or O_RDWR)      no O_CREAT\n\u002F\u002F mode 2  create and write O_RDWR | O_CREAT | O_TRUNC",{"type":207,"tag":208,"props":430,"children":431},{},[432],{"type":216,"value":433},"We don't know the full mode table. We report modes 1 and 2 only, because those\nare the two the template paths use.",{"type":207,"tag":435,"props":436,"children":438},"info",{"title":437},"Check for a read-only mount",[439,441,446,448,453],{"type":216,"value":440},"If a mode 1 open uses ",{"type":207,"tag":212,"props":442,"children":443},{},[444],{"type":216,"value":445},"O_RDWR",{"type":216,"value":447}," today, switching to ",{"type":207,"tag":212,"props":449,"children":450},{},[451],{"type":216,"value":452},"O_RDONLY",{"type":216,"value":454}," also changes\nbehaviour on a read-only file. Either choice works with our acceptance\ncriteria — just decide which one you want.",{"type":207,"tag":285,"props":456,"children":458},{"id":457},"acceptance-criteria",[459],{"type":216,"value":460},"Acceptance criteria",{"type":207,"tag":362,"props":462,"children":463},{},[464,474,486,495,500,505],{"type":207,"tag":366,"props":465,"children":466},{},[467,472],{"type":207,"tag":212,"props":468,"children":469},{},[470],{"type":216,"value":471},"File::Open(L\"Templates\u002FSkills\u002FAbsent.txt\", 1, NULL)",{"type":216,"value":473}," returns a null handle.",{"type":207,"tag":366,"props":475,"children":476},{},[477,479,484],{"type":216,"value":478},"After that call, ",{"type":207,"tag":212,"props":480,"children":481},{},[482],{"type":216,"value":483},"Templates\u002FSkills\u002FAbsent.txt",{"type":216,"value":485}," does not exist.",{"type":207,"tag":366,"props":487,"children":488},{},[489,493],{"type":207,"tag":212,"props":490,"children":491},{},[492],{"type":216,"value":217},{"type":216,"value":494}," mode 2 on the same path creates the file, as it does today.",{"type":207,"tag":366,"props":496,"children":497},{},[498],{"type":216,"value":499},"A rename to an unused name completes.",{"type":207,"tag":366,"props":501,"children":502},{},[503],{"type":216,"value":504},"A rename to a used name fails, and the existing file stays unchanged.",{"type":207,"tag":366,"props":506,"children":507},{},[508],{"type":216,"value":509},"A load of an absent template fails and creates no file.",{"type":207,"tag":285,"props":511,"children":513},{"id":512},"how-to-reproduce",[514],{"type":216,"value":515},"How to reproduce",{"type":207,"tag":517,"props":518,"children":520},"steps",{"mode":519},"numbered",[521,528,533,539,544,550],{"type":207,"tag":522,"props":523,"children":525},"h3",{"id":524},"how-to-reproduce-prepare-a-template",[526],{"type":216,"value":527},"Prepare a template",{"type":207,"tag":208,"props":529,"children":530},{},[531],{"type":216,"value":532},"Use a build in which the save path works. Save one template.",{"type":207,"tag":522,"props":534,"children":536},{"id":535},"how-to-reproduce-rename-it",[537],{"type":216,"value":538},"Rename it",{"type":207,"tag":208,"props":540,"children":541},{},[542],{"type":216,"value":543},"Rename the template to any unused name. The rename fails.",{"type":207,"tag":522,"props":545,"children":547},{"id":546},"how-to-reproduce-look-at-the-directory",[548],{"type":216,"value":549},"Look at the directory",{"type":207,"tag":208,"props":551,"children":552},{},[553],{"type":216,"value":554},"A file of zero length is now at the destination name.",{"type":207,"tag":285,"props":556,"children":558},{"id":557},"our-workaround-today",[559],{"type":216,"value":560},"Our workaround today",{"type":207,"tag":208,"props":562,"children":563},{},[564,566,570],{"type":216,"value":565},"The host adds a forwarder for the probe call site only. It asks the host\nwhether the file exists and calls the real ",{"type":207,"tag":212,"props":567,"children":568},{},[569],{"type":216,"value":217},{"type":216,"value":571}," only when it does; the\nwrite call site and the load path keep the real function. A corrected mode\ntable retires the forwarder.",{"title":573,"searchDepth":574,"depth":574,"links":575},"",4,[576,578,579,580,581,582,588],{"id":287,"depth":577,"text":290},2,{"id":357,"depth":577,"text":360},{"id":395,"depth":577,"text":398},{"id":417,"depth":577,"text":420},{"id":457,"depth":577,"text":460},{"id":512,"depth":577,"text":515,"children":583},[584,586,587],{"id":524,"depth":585,"text":527},3,{"id":535,"depth":585,"text":538},{"id":546,"depth":585,"text":549},{"id":557,"depth":577,"text":560},"markdown","docs",{"source":592,"path":593,"stem":594,"dir":595,"extension":596},"content","en\u002F1.docs\u002F3.upstream\u002F3.filesystem\u002F3.file-open-mode.md","en\u002F1.docs\u002F3.upstream\u002F3.filesystem\u002F3.file-open-mode","filesystem","md",{"requestedPath":121,"resolvedPath":598,"alternates":599},"\u002Fdocs\u002Fupstream\u002Ffilesystem\u002Ffile-open-mode",[600,602],{"locale":77,"path":598,"source":601},"variant",{"locale":8,"path":121,"source":603,"resolvedLocale":77},"fallback",{"requested":605,"resolved":606,"usedFallback":80},{"locale":8},{"locale":77},{"previous":608,"next":608},null,{"left":610,"top":610,"width":611,"height":611,"rotate":610,"vFlip":6,"hFlip":6,"body":612},0,24,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"\u002F>\u003Cpath d=\"M14 2v5a1 1 0 0 0 1 1h5\"\u002F>\u003C\u002Fg>",{"left":610,"top":610,"width":611,"height":611,"rotate":610,"vFlip":6,"hFlip":6,"body":614},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\"\u002F>\u003Cpath d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"\u002F>\u003C\u002Fg>",1786362944450]