[00:11:16] TimStarling: btw, do you have any idea of how to fix https://bugzilla.wikimedia.org/show_bug.cgi?id=44657 ? [00:15:34] either by fixing the unique index [00:15:39] # Try to insert block. Is there a conflicting block? [00:15:39] $status = $block->insert(); [00:15:40] if ( !$status ) { [00:15:47] this is meant to fail when you update a block [00:16:23] or by changing it to use UPDATE ... WHERE ipb_id=... [00:20:29] gn8 folks [02:28:33] Hi, I have a small question about Scribunto again... with templates, you could transclude any page. Is it possible to invoke a page in any namespace, or does it have to be in the Module: namespace for it to work? [02:29:04] Kira_K- It has to be in the Module namespace. [02:29:22] Ok, thank you [02:30:11] If you try something like {{#invoke:Template:Foo|func}}, it will try to load the page Module:Template:Foo. [02:31:41] But subpages do still work I assume? [02:31:53] Module:foo/bar ? [02:32:09] Yes [02:32:37] So I'd like to write a module. [02:32:44] I have a few minutes now, if anyone wants to help. [02:33:08] Susan- What sort of help do you need? [02:33:16] Just some help thinking about the best way to do this. [02:33:19] https://en.wikipedia.org/w/index.php?title=Template:SCOTUSKey&action=edit [02:33:23] I wrote that template many years ago. [02:33:28] It's obviously incredibly stupid. [02:33:39] But I needed a way to extract the volume number from those titles. [02:33:47] So now I'm wondering how I would rewrite that. [02:33:54] Would I make a generic module? A specific module? [02:34:28] I guess I also have to know how to use {{PAGENAME}}. [02:35:45] At the moment, the easiest way to use {{PAGENAME}} is probably to pass it in as a parameter to {{#invoke:}}; the mw.title module hasn't been merged yet. [02:36:01] Generic or specific is up to you, really. [02:36:58] So it would be something like Module:SCOTUSKey? [02:37:38] That'd work. Or you could even do Module:Template:SCOTUSKey to make it really obvious the module is just for that template. [02:38:16] That's a legal title? [02:38:32] I haven't checked, but it should work [02:38:40] Interesting. [02:40:14] Just tried it in my local MediaWiki, worked fine [02:41:18] So I'd have {{#invoke:Template:SCOTUSKey|{{PAGENAME}}}} ? [02:41:50] not quite, you need a function in there. {{#invoke:Template:SCOTUSKey|functionName|{{PAGENAME}}}} [02:42:11] Oh, right. [02:42:23] Okay. [02:43:42] Hmmmm. [02:43:50] Okay, we need to link the "Lua reference manual" from the edit screen. [02:43:53] On module pages. [02:44:10] And it looks like we never fixed up TemplatePreview or whatever to point to documentation about that. [02:44:19] I'm sorry, I don't remember that feature's name. [02:44:25] TemplateSandbox [02:44:27] And I still don't really understand how to use it. [02:44:29] Yes, that. [02:44:54] Yeah, both of those fieldsets have kind of just appeared. [02:45:01] They're gonna need some help links at least in the short term. [02:45:52] anomie: Any thoughts on where to put a link to Lua help? [02:46:01] Susan- Working on it now [02:46:05] Oh, okay. :-) [02:46:08] Then I'll stop distracting you. [02:46:33] I feel like people are gonna need some hand-holding with this for a little bit. [02:46:37] It's a little intimidating. [02:46:50] Not that ParserFunctions weren't, but... [02:47:20] So if you're working on the UI, I'll go back to focusing on this module. [02:47:31] I pasted in the getting started example. [02:47:47] I need a function now that manipulates {{PAGENAME}} or {{{1}}} or something. [02:48:26] Declare your function to take one argument, named "frame". Then your parameter is frame.args[1]. [02:48:55] So in {{#invoke:foo|bar|baz}}, baz is [1]? [02:49:04] yes [02:49:06] frame.args[1], I mean. [02:49:07] Okay. [02:49:37] I searched through https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual for "{{PAGENAME}}" and "magic word" and the results weren't super-helpful. [02:50:02] I guess I don't need that part of the code right now, though. [02:50:05] And in {{#invoke:foo|bar|name=baz}}, it would be frame.args['name'], or frame.args.name since the parameter name consists of just A-Za-z0-9_ and begins with A-Za-z_ [02:50:18] Okay. [02:50:28] And parameter names are limited to ASCII now? [02:50:32] Is that right? [02:50:43] I saw your e-mail on wikitech-l. [02:50:55] The parameter names can be anything, just like templates. That email was about variable and function names. [02:51:00] It wasn't clear whether you were just talking about variable or parameters as well. [02:51:03] Okay. [02:51:21] So variables and functions are ASCII only. But parameters are same rules as regular template parameters. [02:51:50] frame.args['Anyţhíng wörκs'] [02:52:07] Cool. [02:52:51] Okay, stupid question: [02:52:56] You should even be able to {{#invoke:foo|bar|name{{=}}huh?=value}} and get it as frame.args['name=huh?'] [02:52:57] is there any reason to use string? [02:53:08] Instead of mw.ustring, I mean. [02:53:20] It seems like string is only going to break shit. [02:53:33] mw.ustring would usually be better. If you know you're dealing with ASCII, or you really want to screw around with the individual bytes of UTF-8, you could use string. [02:53:45] Okay. [02:53:55] But if I'm going to be passing arbitrary PAGENAMEs, I probably want ustring. [02:53:58] Right? [02:54:00] yes [02:54:03] Okay, cool. :-) [02:54:53] So I need a function of mw.ustring that returns "123" from "List of United States Supreme Court cases, volume 123". [02:55:06] No split/rsplit? [02:55:53] you know, most string manipulation in mediawiki is done with functions that are not unicode-aware [02:56:10] User-facing or inside the PHP code, you mean? [02:56:10] it's a bit of an exaggeration to say they're only useful for ASCII [02:56:18] in PHP [02:56:35] Wiktionary will probably need string manipulation a lot because it deals with words and inflections so much [02:56:45] Lua reminds me very much of Python 2 (as compared to Python 3). [02:56:52] In terms of Unicode handling/support, at least. [02:57:00] How would you, say, remove the last 1, 2 or 3 characters from a string? [02:57:06] Unicode characters, not bytes [02:57:15] using mw.ustring obviously [02:57:24] > So I need a function of mw.ustring that returns "123" from "List of United States Supreme Court cases, volume 123". [02:57:24] but that's a pretty rare thing to want to do [02:57:34] Truncating a string? [02:57:37] Kira_K- mw.ustring( s, -3 ) gets you the last 3 characters [02:57:45] Kira_K- mw.ustring.sub( s, -3 ) gets you the last 3 characters [02:57:56] Susan: no, that's an easy example of a thing you can use plain string for [02:58:29] TimStarling: Do I need to be worried if the page name ends up using non-ASCII characters? [02:58:39] And I'm still not sure how I'd do it using string or unstring. [02:58:42] ustring [02:58:53] I'm getting closer, though. [02:59:00] Susan- Various ways to do it. One simple way is string.match( s, "%d+" ) which pulls off whatever sequence of digits is at the end of the string. [02:59:00] I have "function p.grab_volume_number(frame)" [02:59:15] oops. "%d+$" [02:59:38] Is there no string splitting function? [02:59:47] That seemed like the most obvious way to me. [03:00:16] Regular expressions would be nice... and I suppose that idea has been suggested before [03:00:38] anomie: ' and " are equivalent? [03:00:40] Kira_K- Lua has "patterns", which are similar but less powerful [03:00:43] Susan- Yes [03:00:48] Nice. [03:00:51] That drives me crazy in bash. [03:01:06] Yes I noticed [03:01:17] return string.match( frame.args[1], "%d+" ) [03:01:19] Probably not powerful enough unfortunately... [03:01:33] Oh, $. [03:01:41] return string.match( frame.args[1], "%d+$" ) [03:06:48] https://en.wikipedia.org/w/index.php?title=Template:SCOTUSKey&action=history [03:06:51] Sweet. :-) [03:07:43] Susan- I put an edit notice for the Module namespace on enwiki. [[Template:Editnotices/Namespace/Module]] if you want to suggest changes [03:08:35] anomie: Seems to have a syntax error somewhere. [03:08:54] There is a strange bug in the syntax highlighting on https://en.wiktionary.org/wiki/Module:languages [03:09:05] The second line should also be indented with a tab, but it's not? [03:09:21] anomie: Yeah, you've gotta all those {{ and }}. [03:09:24] And when I edit it, it's not a tab anymore [03:09:34] Here: https://en.wikipedia.org/w/index.php?title=Template:Editnotices/Namespace/Module&action=edit [03:09:58] Apparently it keeps converting tabs to spaces... [03:10:18] That page seemed to take forever to load for me. [03:10:51] Jesus. [03:11:02] Where? [03:11:10] https://en.wiktionary.org/wiki/Module:languages [03:11:14] I think it's the syntax highlighting. [03:11:18] Ballooning the HTML. [03:11:22] * anomie does not see Jesus there [03:11:39] I'm not logged in there, but it's taking forever to load. [03:12:07] It's a very long page [03:12:09] real 0m8.322s [03:13:29] It converts the tab at the beginning of the second line to spaces, but leaves all the other tabs alone... very strange [03:15:48] 30,568 lines. [03:15:57] The console says its session is too large [03:16:23] Kira_K- In the wikitext, that first line is 4 spaces rather than a tab. CodeEditor is apparently hiding that fact. [03:16:43] Right. [03:16:43] No I actually did paste a tab there [03:16:45] It changed it [03:17:11] If you think there's a bug, I'd recommend making a much smaller test case on en.wiktionary or on test2.wikipedia.org. [03:17:16] And filing a bug at bugs.wikimedia.org. [03:19:06] I'm trying to think of other awful and silly templates I've created on en.wiki. [03:19:17] I'm sure there are others... [03:19:58] I have to imagine that an edit to "Template:str_len" would improve overall en.wiki performance measurably. [03:20:50] Oh, anomie beat me to "Module:String". [03:20:54] Tables in Lua count from 1 and not from 0? [03:21:13] Kira_K- Well, you can have an index 0 if you want. But most functions assume 1. [03:21:39] hmm, which projects is lua on right now? I'm guessing not wikidata? [03:21:42] http://lua-users.org/wiki/CountingFromOne [03:21:43] If I type local l = {"foo", "bar"} then l[1] will be foo and not bar? [03:21:48] For that matter, you can have an index -1, or an index -1/0 (aka -infinity) [03:21:55] Kira_K- yes [03:22:01] duh: https://noc.wikimedia.org/conf/InitialiseSettings.php.txt # UseScribunto [03:22:27] Oh well [03:22:55] That many experimental extensions probably isn't a good idea for one site ;P [03:23:41] Susan- I see what you mean about trying to tab to the edit summary field... [03:24:49] How do I import a module from within another module? local languages = require("languages") gives a script error [03:25:25] try require 'Module:Languages' [03:25:44] https://en.wikipedia.org/wiki/Special:WhatLinksHere/Module:String [03:25:52] oh wait [03:25:53] That works [03:25:53] I see [03:26:07] no one copied it over yet [03:27:25] Is there a reason why the require function needs Module: to be in front? [03:27:57] anomie: Yeah, a lot of the bugs I saw last August are still here. :-/ [03:28:02] Kira_K- It's possible for extra loadable libraries to be distributed with Scribunto [03:28:23] duh- Well, {{str len/testcases}} looks good. I wonder if we should copy the sandbox to the real thing and see what happens. [03:28:29] Susan- Example? [03:28:36] anomie: https://bugzilla.wikimedia.org/show_bug.cgi?id=39609 [03:28:37] anomie: i agree! [03:28:41] So the Module: part is there to disambiguate between wiki modules and built-in libraries? [03:28:50] Kira_K- I suppose, yes [03:29:09] anomie: https://bugzilla.wikimedia.org/show_bug.cgi?id=39610 and https://bugzilla.wikimedia.org/show_bug.cgi?id=39649 as well. ;-) [03:29:17] Susan- As for that, I'd like to write something to extract luadoc comments [03:29:34] That might be nice, yeah. [03:29:42] anomie: also, i thought someone had worked on a port of citation/core that would be ready to go on enwiki when it was deployed? [03:29:43] 39610 is in the roadmap, but we didn't want to wait for it to be done [03:30:01] I think someone has, duh. [03:30:10] No idea if it's ready. [03:30:17] Transwiki importing should work now, though. [03:30:28] duh- They probably did. Tim enabled importing from test2wiki. But it should be looked over to see if it needs any editing, e.g. mw.ustring instead of string or anything like that [03:30:58] 39649 is an issue with CodeEditor, not Scribunto ;) [03:31:15] https://en.wikipedia.org/wiki/Template:Str_len/sandbox [03:31:29] Has that notice been broken for a while? [03:31:33] It links to /sandbox/sandbox and such. [03:31:42] https://test2.wikipedia.org/wiki/Module:Citation [03:32:26] anomie: would you mind importing that to enwiki so we can test it a bit locally? [03:33:39] anomie: There are other small improvements needed: https://bugzilla.wikimedia.org/show_bug.cgi?id=39605 [03:33:46] I'm not sure to what extent you've looked through these bugs. [03:33:59] So I apologize if this is redundant or not new. [03:34:03] Susan- Not at all, for the most part [03:35:07] https://bugzilla.wikimedia.org/show_bug.cgi?id=39646 is probably resolved. [03:35:36] I had a long list of bugs to file, but I seem to have misplaced it. [03:36:33] The syntax highlighting doesn't parse multiline comments apparently [03:36:45] But the code editor does [03:37:13] syntax hilighting actually causes browsers to crash in certain cases [03:37:30] duh- Imported Module:Citation, Module:Wikitext, and Module:Mw for you [03:37:38] thanks :) [03:39:14] duh - Note the url bits in Module:Mw are probably obsolete, we have the mw.uri module now. [03:39:17] Danny_B: Yeah, I commented on that bug. [03:39:46] anomie: ok, i probably dont have much time this tonight (midterms :() but ill take a look soon [03:42:13] anomie: Template:Str_len/sandbox looks good to me. [03:42:26] The test cases are a bit weak. [03:42:26] Susan- Good, because I just copied it to Template:Str_len ;) [03:42:33] But they all look fine. [03:42:44] Heh, yes you did. [03:43:04] Susan: just saw... thx for support [03:43:57] anomie: I wonder if there's a question as to how many of these massively used templates should be updated in a short period of time. [03:43:58] Which libraries are automatically imported by Scribunto? Only the mw library? [03:44:40] Kira_K- Well, all the different mw sublibraries. [03:45:00] where is the list of them actually? [03:46:00] Susan- Probably best to take it slow. I'm going to head out in a few minutes, and if no one has beaten me to it by then maybe I'll do {{str sub}} tomorrow. [03:46:03] So I still have to import mw.ustring, for example? [03:46:11] anomie: Probably should protect https://en.wikipedia.org/wiki/Module:String :-/ [03:46:19] Kira_K- No. mw.ustring is automatically loaded. [03:46:20] I feel bad saying that. [03:46:30] But it's going to skyrocket in number of transclusions. [03:46:33] Then what did you mean by sublibraries? [03:46:40] Susan- Good call [03:47:14] Kira_K- mw.ustring, mw.uri, mw.language. All those are "under" the mw library. Although technically they're all separate libraries, they're just namespaced under "mw". [03:47:30] So I was right after all... [03:47:42] I misunderstood you [03:50:42] Susan: https://en.wikipedia.org/wiki/Module:Mw check url.server [03:50:55] Eep. [03:52:10] https://en.wikipedia.org/w/index.php?title=Module:Mw&diff=538983150&oldid=538981386 [03:57:50] anomie: if you have a second, theres already one template in https://en.wikipedia.org/wiki/Category:Pages_with_script_errors [03:58:27] if ( nil == mw ) then mw = {} end (and others...) should rather be ( mw == nil ) [aka no Yoda conditionals] [04:02:33] duh- Hmm, "Template include size is too large". I wonder if something somewhere in there was depending on the 500 limit in the old {{str len}} [04:03:14] * duh has no clue :/ [04:07:16] probably pretty much every module that is used in multiple articles should be protected [04:09:49] Protected from whom? [04:17:53] Well, I'm off to bed. Back in 8 hours or so. [04:20:00] bad people [04:21:30] [23:14] Granularized page protection is one way to address it. [04:21:30] [23:14] Better drafts/flagged revs support for templates is another way to address it. [04:21:33] [23:15] If we could say, for a particular template, you need over 100 edits and over 4 years here, it would be better than admin-only page protection, I think. [04:21:36] [23:15] It would have a nearly identical result, but would allow vastly more users to edit. [04:22:05] You and I have discussed the idea of page protection groups or level before. [04:22:12] Levels, rather. [04:34:07] Susan: Making them wait four years would also make grawp wait 4 years to bypass autoconfirmed, so I'm all for it :P [09:41:43] It looks like Scribunto has been deployed in several wikis except fr.wikt... damn. [09:48:18] Darkdadaah: that will deployed there eventually :-] [09:49:10] !g Ie7e1b1d0e741230cb34a3cedf8cd8fe7ec9b8338 [09:49:10] https://gerrit.wikimedia.org/r/#q,Ie7e1b1d0e741230cb34a3cedf8cd8fe7ec9b8338,n,z [09:49:37] Darkdadaah: ci dessus c'est la liste des wikis :D [09:49:48] Darkdadaah: il y a au moins le wiki français :-] [09:50:44] hashar: Oui mais moi je bosse sur le Wiktionnaire, donc ça me rend plus jaloux qu'autre chose :) [09:54:23] * Darkdadaah prend son mal en patience [09:57:54] hashar: Thanks for the link by the way. [09:58:22] Darkdadaah: scribunto devrait être activés sur tout les autres wikis si ça ne merdouille pas trop :-] [09:58:59] hashar: Quel délai peut-on espérer ? Quelques jours ? [09:59:04] no ETA :-] [09:59:16] Darkdadaah: je ne sais pas trop je ne suis pas vraiment ce projet [10:00:28] Darkdadaah: avant fin mars logiquement qui est la fin de notre troisième trimestre d'activité ( http://www.mediawiki.org/wiki/Wikimedia_Engineering/2012-13_Goals#Milestones_by_quarter_7 ) [10:00:51] Darkdadaah: on se réunit à San Francisco la semaine prochaine. J'imagine que le déploiement sera finalisé la semaine prochaine [10:01:06] Darkdadaah: tout dépend des problèmes qui seront détectés cette semaine j'imagine [10:01:37] hashar: Oh, ok. Bon, je vais prévenir mes co-contributeurs qu'il ne faut pas qu'ils s'inquiètent trop ;) [10:02:02] Darkdadaah: voila :-] [10:02:24] Darkdadaah: pour plus de détails tu peux demander dans #wikimedia-wikidata (en anglais ou allemand) [10:02:37] Darkdadaah: c'est le chan de l'équipe allemande qui développe wikidata. [10:04:19] hashar: Ah, ils s'occupent de Scribunto aussi ? [10:19:18] Darkdadaah: pas vraiment en fait :-D [10:19:29] Darkdadaah: je me suis embrouillé l'esprit entre Scribunto et wikidata haha [10:22:24] hashar: Ok, en fait je me rappelle que je voulais leur poser une question de toute façon, donc voilà. [13:55:23] Reedy: poke [13:55:28] hi [13:55:32] * aude reading https://www.mediawiki.org/wiki/MediaWiki_1.21/Roadmap [13:55:56] so are the regular updates to wmf10 happening next week for enwiki and other wikipedias? [13:56:08] Yup, they should be [13:56:11] ok [13:56:28] so the following week,we deploy wikidata on clients and they will still be wmf10 [13:56:54] yeah [13:56:56] ok [13:58:34] andre__: hey there [14:00:59] sumanah, heja [16:55:06] hi, could someone help me get editting rights for https://wikitech.wikimedia.org/view/Dumps please, I am an intern with WMF and starting to work on dumps some [16:56:22] apergos any idea whom I should ping in particular for that ? [16:56:59] uh I don't know that there is a specific person, I can just do that [16:57:07] what is your wikiname? [16:57:33] mitevam: [16:59:40] its Mitevam [17:00:22] try that [17:02:06] yep, I can edit now [17:02:09] thanks :) [17:04:26] question, is there a way to run a db query to find pages that have interwiki links that are not from wikidata? [17:05:11] Presuambly [17:05:15] If you wrote one [17:20:08] Reedy, Hi. I was looking through all your 'Call to a member function x on a non-object' bugs for LQT. I went to https://bugzilla.wikimedia.org/show_bug.cgi?id=41185 and am trying to reproduce the issue, but can't work it out [17:20:29] Can you find what URLs triggered those? [17:21:38] I suspect the fix is as simple as putting line 112 in a if ( $t ), but want to test it [17:22:55] Reedy: easier said than done, Im looking at the db and cant figure out how [17:38:19] Dispenser: i may have windows 8 sometime today [18:22:41] Krenair: What's difficult about it? [18:22:44] null has been returned [18:22:54] $ret = null; [18:22:54] return $ret; [18:23:08] It should be easy to fix, but I want to test before uploading stuff :( [18:23:23] if ( $t ) { continue; } [18:23:27] agh [18:23:30] if ( !$t ) { continue; } [18:23:30] jeremyb_: Somebody had tested my edge case in ##windows already, but thanks for offering [18:23:31] Reedy: were you the deployer for mw.o and test2 yesterday? [18:23:49] chrismcmahon: https://www.mediawiki.org/wiki/Special:Version https://test2.wikipedia.org/wiki/Special:Version [18:23:55] sure [18:25:21] Reedy: aha. I don't suppose you'd have any idea why the GuidedTour E3 extension stopped working? https://bugzilla.wikimedia.org/show_bug.cgi?id=45156 [18:29:08] Betacommand: right now you cant [18:29:11] its an open bug [18:29:30] to add a new column to langlinks to figure out whether interwikis are local are foreign [18:29:38] the only way to do it is parse page text [18:43:58] it seems that {{int:lang}} outputs "en" on meta for all languages except de and fr. [18:44:52] I don't even know what that should be filed under in bugzilla... [18:45:32] andre__: ^ :) [18:45:48] YairRand- Is "lang" even a built-in message? Or is it just something people created in the MediaWiki namespace? [18:46:04] YairRand: "Wikimedia > General/Unknown" whenever you don't know :) [18:46:29] it's not a bug [18:46:37] use [[WM:RFH]] please [18:46:58] YairRand- BTW, it looks like pl, af, and nl should also work. [18:47:08] Meta doesn't use autotranslate so lang is not of big use [18:47:11] https://meta.wikimedia.org/wiki/Special:PrefixIndex/MediaWiki:Lang [18:47:39] all the codes have to be created manually? [18:47:47] sure [18:47:48] well, or with a bot or something [18:47:56] why do you care? (maybe explain on wiki) [18:48:21] Template:LangSwitch isn't working for other languages on meta [18:48:35] as a result of the lack of int:lang s [18:50:44] I'm not sure it works in the same way on Meta [18:51:26] seems to be the same [18:52:47] Patrick says "simplified version" in the history [18:53:04] let's start all over: where do you see broken stuff? :) [18:56:45] if I were to copy some translations to meta templates that use langswitch, they wouldn't work except for a few languages [22:20:21] * greg-g waves [22:56:20] andre__: only one k :) https://bugzilla.wikimedia.org/show_bug.cgi?id=38335 [22:57:32] Nemo_bis, eeks :) [23:03:32] we have a new staffer? Greg (WMF) [23:04:14] Yeah [23:04:33] just found it, thanks [23:04:43] http://lists.wikimedia.org/pipermail/wikitech-l/2013-February/066672.html [23:05:11] hey robla, when you do a new staffer, could you please considering emailing stewards-l ? [23:05:35] it means we can be aware of new ... (WMF) accounts [23:05:56] ok, I'll try to remember [23:06:09] thx, cannot ask for more [23:06:12] should that be something HR or OIT does? [23:06:28] sumanah: very possibly, actually, if that's the function of it. [23:06:29] sumanah: I don't mind who [23:06:51] sDrewth: this is for whenever a person creates a new (WMF) account? [23:06:51] locking new staff members is embarrasig ;-) [23:06:59] we can put it on the onboarding checklist somewhere [23:07:20] we have had this conversation with Philipped, and it doesn't progress [23:07:34] *Philippe [23:08:18] the system doesn't allow us to title lock (WMF) and still allow existing accounts to propagate xwiki [23:09:45] so a user with the right can override, but not bypass [23:15:20] andre__: I guess that like me you're not too used to syntax highlighting rules ^^' [23:15:52] the up-upstream bug is 5 years old, I suspect it won't see much action :/ [23:16:03] Nemo_bis, I'm slightly missing context (some bug report I tried to reproduce I guess), but I think that my answer is "Yes!" :) [23:16:06] ah [23:16:28] yes, same as above... I've been quite slow :/