Merge "Mention translatewiki.net on edits only, when edit a default message"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 20 Oct 2014 17:08:51 +0000 (17:08 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 20 Oct 2014 17:08:51 +0000 (17:08 +0000)
423 files changed:
CREDITS
RELEASE-NOTES-1.25
docs/hooks.txt
docs/mwlogger.txt [new file with mode: 0644]
includes/AutoLoader.php
includes/DefaultSettings.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/Hooks.php
includes/MovePage.php
includes/OutputPage.php
includes/PrefixSearch.php
includes/User.php
includes/api/ApiBase.php
includes/api/ApiFormatBase.php
includes/api/ApiFormatDbg.php
includes/api/ApiFormatDump.php
includes/api/ApiFormatJson.php
includes/api/ApiFormatNone.php
includes/api/ApiFormatPhp.php
includes/api/ApiFormatRaw.php
includes/api/ApiFormatTxt.php
includes/api/ApiFormatWddx.php
includes/api/ApiFormatXml.php
includes/api/ApiFormatYaml.php
includes/api/ApiHelp.php
includes/api/ApiMain.php
includes/api/ApiParamInfo.php
includes/api/ApiParse.php
includes/api/ApiQuery.php
includes/api/ApiQueryBacklinks.php
includes/api/ApiQueryBase.php
includes/api/ApiResult.php
includes/api/ApiTokens.php
includes/api/ApiWatch.php
includes/api/i18n/en.json [new file with mode: 0644]
includes/api/i18n/qqq.json [new file with mode: 0644]
includes/db/Database.php
includes/db/LoadBalancer.php
includes/db/ORMTable.php
includes/debug/logger/Logger.php [new file with mode: 0644]
includes/debug/logger/NullSpi.php [new file with mode: 0644]
includes/debug/logger/Spi.php [new file with mode: 0644]
includes/debug/logger/monolog/Handler.php [new file with mode: 0644]
includes/debug/logger/monolog/Processor.php [new file with mode: 0644]
includes/debug/logger/monolog/Spi.php [new file with mode: 0644]
includes/exception/MWExceptionHandler.php
includes/filerepo/file/LocalFile.php
includes/htmlform/HTMLForm.php
includes/htmlform/HTMLFormFieldCloner.php
includes/htmlform/HTMLHiddenField.php
includes/htmlform/HTMLSelectNamespace.php [new file with mode: 0644]
includes/htmlform/HTMLTagFilter.php [new file with mode: 0644]
includes/installer/DatabaseUpdater.php
includes/installer/WebInstallerPage.php
includes/installer/i18n/ca.json
includes/installer/i18n/fi.json
includes/installer/i18n/hu.json
includes/installer/i18n/it.json
includes/installer/i18n/ja.json
includes/installer/i18n/ko.json
includes/installer/i18n/mk.json
includes/installer/i18n/sv.json
includes/jobqueue/JobQueueRedis.php
includes/objectcache/HashBagOStuff.php
includes/objectcache/MemcachedBagOStuff.php
includes/objectcache/SqlBagOStuff.php
includes/page/Article.php
includes/parser/CoreParserFunctions.php
includes/parser/CoreTagHooks.php
includes/parser/Parser.php
includes/parser/ParserOutput.php
includes/parser/Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php
includes/parser/StripState.php
includes/password/PasswordFactory.php
includes/skins/BaseTemplate.php
includes/skins/SkinApi.php
includes/skins/SkinApiTemplate.php
includes/skins/SkinFallbackTemplate.php
includes/skins/SkinTemplate.php
includes/specialpage/SpecialPageFactory.php
includes/specials/SpecialApiHelp.php [new file with mode: 0644]
includes/specials/SpecialBlock.php
includes/specials/SpecialContributions.php
includes/specials/SpecialDeletedContributions.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialListfiles.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialTrackingCategories.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialWatchlist.php
includes/specials/SpecialWhatlinkshere.php
includes/templates/Usercreate.php
includes/templates/Userlogin.php
languages/Names.php
languages/i18n/ar.json
languages/i18n/ast.json
languages/i18n/bcc.json
languages/i18n/be-tarask.json
languages/i18n/bn.json
languages/i18n/br.json
languages/i18n/ca.json
languages/i18n/cdo.json
languages/i18n/cs.json
languages/i18n/cy.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/egl.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/gl.json
languages/i18n/he.json
languages/i18n/hu.json
languages/i18n/hy.json
languages/i18n/ia.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/ka.json
languages/i18n/kk-cyrl.json
languages/i18n/ko.json
languages/i18n/lb.json
languages/i18n/lrc.json
languages/i18n/lt.json
languages/i18n/lv.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/mr.json
languages/i18n/ms.json
languages/i18n/mt.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/or.json
languages/i18n/pa.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/rue.json
languages/i18n/rup.json
languages/i18n/sah.json
languages/i18n/sc.json
languages/i18n/ses.json [new file with mode: 0644]
languages/i18n/si.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/ta.json
languages/i18n/th.json
languages/i18n/tr.json
languages/i18n/uk.json
languages/i18n/uz.json
languages/i18n/vi.json
languages/i18n/wuu.json
languages/i18n/yi.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesEn.php
languages/messages/MessagesSes.php [new file with mode: 0644]
maintenance/eval.php
maintenance/showJobs.php
resources/Resources.php
resources/lib/jquery/jquery.jStorage.js
resources/lib/oojs-ui/dist/themes/apex/images/icons/add.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/advanced.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/alert.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/arched-arrow-ltr.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/arched-arrow-rtl.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/check.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/clear.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/close.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/code.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/collapse.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/comment.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/expand.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/help.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/info.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/link.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/menu.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/move-ltr.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/move-rtl.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/picture.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/remove.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/search.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/settings.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/tag.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/icons/window.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/indicators/alert.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-down.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-ltr.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-rtl.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-up.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/indicators/required.png [deleted file]
resources/lib/oojs-ui/dist/themes/apex/images/textures/transparency.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/add-constructive.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/add-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/add.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/advanced-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/advanced.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/alert-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/alert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-ltr.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-rtl.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/check-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/check-primary.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/check.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/clear-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/clear.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/close-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/close.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/code-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/code.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/collapse-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/collapse.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/comment-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/comment.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/expand-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/expand.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/help-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/help.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/info-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/info.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/link-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/link.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/menu-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/menu.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-ltr-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-ltr.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-rtl-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-rtl.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/picture-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/picture.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/remove-destructive.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/remove-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/remove.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/search-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/search.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/settings-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/settings.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/tag-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/tag.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/window-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/window.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/alert-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/alert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-down-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-down.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-ltr-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-ltr.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-rtl-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-rtl.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-up-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-up.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/required-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/required.png [deleted file]
resources/lib/oojs-ui/dist/themes/mediawiki/images/textures/transparency.png [deleted file]
resources/lib/oojs-ui/dist/themes/minerva/images/icons/check-invert.png [deleted file]
resources/lib/oojs-ui/dist/themes/minerva/images/icons/check.png [deleted file]
resources/lib/oojs-ui/oojs-ui-apex.css
resources/lib/oojs-ui/oojs-ui-apex.js
resources/lib/oojs-ui/oojs-ui-apex.rtl.css [deleted file]
resources/lib/oojs-ui/oojs-ui-apex.svg.css
resources/lib/oojs-ui/oojs-ui-apex.svg.rtl.css [deleted file]
resources/lib/oojs-ui/oojs-ui-mediawiki.css
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui-mediawiki.rtl.css [deleted file]
resources/lib/oojs-ui/oojs-ui-mediawiki.svg.css
resources/lib/oojs-ui/oojs-ui-mediawiki.svg.rtl.css [deleted file]
resources/lib/oojs-ui/oojs-ui-minerva.css [deleted file]
resources/lib/oojs-ui/oojs-ui-minerva.js [deleted file]
resources/lib/oojs-ui/oojs-ui-minerva.rtl.css [deleted file]
resources/lib/oojs-ui/oojs-ui-minerva.svg.css [deleted file]
resources/lib/oojs-ui/oojs-ui-minerva.svg.rtl.css [deleted file]
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/oojs-ui.rtl.css [deleted file]
resources/lib/oojs-ui/oojs-ui.svg.rtl.css [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/add.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/advanced.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/alert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/check.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/clear.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/close.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/code.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/collapse.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/comment.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/expand.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/help.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/info.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/link.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/menu.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/move-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/move-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/picture.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/remove.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/search.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/settings.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/tag.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/window.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/indicators/alert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/indicators/arrow-down.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/indicators/arrow-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/indicators/arrow-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/indicators/arrow-up.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/indicators/required.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/textures/transparency.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/add.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/alert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-primary.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/check.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/clear.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/close.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/code.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/expand.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/help.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/info.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/link.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/picture-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/picture.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/remove-destructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/remove-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/remove.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/search.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/settings.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/window.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/required.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/textures/transparency.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/minerva/images/icons/check-invert.svg [deleted file]
resources/lib/oojs-ui/themes/minerva/images/icons/check.svg [deleted file]
resources/src/jquery/jquery.badge.css
resources/src/mediawiki.api/mediawiki.api.js
resources/src/mediawiki.legacy/commonPrint.css
resources/src/mediawiki.less/mediawiki.ui/mixins.less
resources/src/mediawiki.special/mediawiki.special.changeslist.legend.css
resources/src/mediawiki.ui/components/anchors.less
resources/src/mediawiki.ui/components/buttons.less
resources/src/mediawiki.ui/components/checkbox.less
resources/src/mediawiki/mediawiki.apihelp.css [new file with mode: 0644]
resources/src/mediawiki/mediawiki.apipretty.css [new file with mode: 0644]
resources/src/mediawiki/mediawiki.hlist.js
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/BlockTest.php
tests/phpunit/includes/HttpTest.php
tests/phpunit/includes/PrefixSearchTest.php [new file with mode: 0644]
tests/phpunit/includes/RequestContextTest.php
tests/phpunit/includes/TestUser.php
tests/phpunit/includes/TitlePermissionTest.php
tests/phpunit/includes/actions/ActionTest.php
tests/phpunit/includes/api/ApiMainTest.php
tests/phpunit/includes/api/ApiTestCase.php
tests/phpunit/includes/api/PrefixUniquenessTest.php
tests/phpunit/includes/api/format/ApiFormatTestBase.php
tests/phpunit/includes/api/query/ApiQueryContinue2Test.php
tests/phpunit/includes/api/query/ApiQueryContinueTest.php
tests/phpunit/includes/cache/RedisBloomCacheTest.php
tests/phpunit/includes/db/ORMTableTest.php
tests/phpunit/includes/db/TestORMRowTest.php
tests/phpunit/includes/installer/DatabaseUpdaterTest.php [new file with mode: 0644]
tests/phpunit/includes/upload/UploadBaseTest.php
tests/phpunit/includes/utils/MWCryptHKDFTest.php
tests/testHelpers.inc

diff --git a/CREDITS b/CREDITS
index dbd5a61..e70a035 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -15,6 +15,7 @@ following names for their contribution to the product.
 * Antoine Musso
 * Arthur Richards
 * Aryeh Gregor
+* Bartosz Dziewoński
 * Bertrand Grondin
 * Brad Jorsch
 * Brian Wolff
@@ -104,7 +105,6 @@ following names for their contribution to the product.
 * Asier Lostalé
 * Azliq7
 * Bagariavivek
-* Bartosz Dziewoński
 * Beau
 * Benny Situ
 * Bergi
index 95ff2d3..2180022 100644 (file)
@@ -18,9 +18,21 @@ production.
   for 'languageScripts'.
 * Added a new hook, "ContentAlterParserOutput", to allow extensions to modify the
   parser output for a content object before links update.
+* (bug 35785) Enhanced recent changes and extended watchlist are now default.
+  Documentation: https://meta.wikimedia.org/wiki/Help:Enhanced_recent_changes
+  and https://www.mediawiki.org/wiki/Manual:$wgDefaultUserOptions.
 * (bug 67341) SVG images will no longer be base64-encoded when being embedded
   in CSS. This results in slight size increase before gzip compression (due to
   percent-encoding), but up to 20% decrease after it.
+* Upgrade jStorage to v0.4.12.
+* MediaWiki now natively supports page status indicators: icons (or short text
+  snippets) usually displayed in the top-right corner of the page. They have
+  been in use on Wikipedia for a long time, implemented using templates and CSS
+  absolute positioning.
+  - Basic wikitext syntax: <indicator name="foo">[[File:Foo.svg|20px]]</indicator>
+  - Usage instructions: https://www.mediawiki.org/wiki/Help:Page_status_indicators
+  - Adjusting custom skins to support indicators:
+    https://www.mediawiki.org/wiki/Manual:Skinning#Page_status_indicators
 
 === Bug fixes in 1.25 ===
 * (bug 71003) No additional code will be generated to try to load CSS-embedded
@@ -31,8 +43,65 @@ production.
 === Action API changes in 1.25 ===
 * (bug 65403) XML tag highlighting is now only performed for formats
   "xmlfm" and "wddxfm".
+* action=paraminfo supports generalized submodules (modules=query+value),
+  querymodules and formatmodules are deprecated
+* action=paraminfo no longer outputs descriptions and other help text by
+  default. If needed, it may be requested using the new 'helpformat' parameter.
+* action=help has been completely rewritten, and outputs help in HTML
+  rather than plain text.
+* Hitting api.php without specifying an action now displays only the help for
+  the main module, with links to submodule help.
+* API help is no longer displayed on errors.
+* Internationalized messages returned by the API will be in the wiki's content
+  language by default. 'uselang' is now a recognized API parameter;
+  "uselang=user" may be used to select the language from the current user's
+  preferences.
+* Default output format for the API is now jsonfm.
+* Simplified continuation will return a "batchcomplete" property in the result
+  when a batch of pages is complete.
+* Pretty-printed HTML output now has nicer formatting and (if available)
+  better syntax highlighting.
 
 === Action API internal changes in 1.25 ===
+* ApiHelp has been rewritten to support i18n and paginated HTML output.
+  Most existing modules should continue working without changes, but should do
+  the following:
+  * Add an i18n message "apihelp-{$moduleName}-description" to replace getDescription().
+  * Add i18n messages "apihelp-{$moduleName}-param-{$param}" for each parameter
+    to replace getParamDescription(). If necessary, the settings array returned
+    by getParams() can use the new ApiBase::PARAM_HELP_MSG key to override the
+    message.
+  * Implement getExamplesMessages() to replace getExamples().
+* Modules with submodules (like action=query) must have their submodules
+  override ApiBase::getParent() to return the correct parent object.
+* The 'APIGetDescription' and 'APIGetParamDescription' hooks are deprecated,
+  and will have no effect for modules using i18n messages. Use
+  'APIGetDescriptionMessages' and 'APIGetParamDescriptionMessages' instead.
+* Api formatters will no longer be asked to display the help screen on errors.
+* ApiMain::getCredits() was removed. The credits are available in the
+  'api-credits' i18n message.
+* ApiFormatBase has been changed to support i18n and syntax highlighting via
+  extensions with the new 'ApiFormatHighlight' hook. Core syntax highlighting
+  has been removed.
+* ApiFormatBase now always buffers. Output is done when
+  ApiFormatBase::closePrinter is called.
+* The following methods have been deprecated and may be removed in a future
+  release:
+  * ApiBase::getDescription
+  * ApiBase::getParamDescription
+  * ApiBase::getExamples
+  * ApiBase::makeHelpMsg
+  * ApiBase::makeHelpArrayToString
+  * ApiBase::makeHelpMsgParameters
+  * ApiFormatBase::setUnescapeAmps
+  * ApiFormatBase::getWantsHelp
+  * ApiFormatBase::setHelp
+  * ApiFormatBase::formatHTML
+  * ApiFormatBase::setBufferResult
+  * ApiFormatBase::getDescription
+  * ApiMain::setHelp
+  * ApiMain::reallyMakeHelpMsg
+  * ApiMain::makeHelpMsgHeader
 
 === Languages updated in 1.25 ===
 
@@ -58,6 +127,9 @@ changes to languages because of Bugzilla reports.
   since 1.20)
 * Removed 'jquery.json' module. (deprecated since 1.24)
   Use the 'json' module and global JSON object instead.
+* Deprecated OutputPage::readOnlyPage() and OutputPage::rateLimited().
+  Also, the former will now throw an MWException if called with one or more
+  arguments.
 
 == Compatibility ==
 
index d862983..c60cc76 100644 (file)
@@ -379,20 +379,41 @@ $editPage : the EditPage object
 $text : the new text of the article (has yet to be saved)
 &$resultArr : data in this array will be added to the API result
 
+'ApiFormatHighlight': Use to syntax-highlight API pretty-printed output. When
+highlighting, add output to $context->getOutput() and return false.
+$context: An IContextSource.
+$text: Text to be highlighted.
+$mime: MIME type of $text.
+$format: API format code for $text.
+
 'APIGetAllowedParams': Use this hook to modify a module's parameters.
 &$module: ApiBase Module object
 &$params: Array of parameters
 $flags: int zero or OR-ed flags like ApiBase::GET_VALUES_FOR_HELP
 
-'APIGetDescription': Use this hook to modify a module's description.
+'APIGetDescription': DEPRECATED! Use APIGetDescriptionMessages instead.
+Use this hook to modify a module's description.
 &$module: ApiBase Module object
-&$desc: Array of descriptions
+&$desc: String description, or array of description strings
+
+'APIGetDescriptionMessages': Use this hook to modify a module's help message.
+$module: ApiBase Module object
+&$msg: Array of Message objects
 
-'APIGetParamDescription': Use this hook to modify a module's parameter
-descriptions.
+'APIGetParamDescription': DEPRECATED! Use APIGetParamDescriptionMessages instead.
+Use this hook to modify a module's parameter descriptions.
 &$module: ApiBase Module object
 &$desc: Array of parameter descriptions
 
+'APIGetParamDescriptionMessages': Use this hook to modify a module's parameter descriptions.
+$module: ApiBase Module object
+&$msg: Array of arrays of Message objects
+
+'APIHelpModifyOutput': Use this hook to modify an API module's help output.
+$module: ApiBase Module object
+&$help: Array of HTML strings to be joined for the output.
+$options: Array Options passed to ApiHelp::getHelp
+
 'APIQueryAfterExecute': After calling the execute() method of an
 action=query submodule. Use this to extend core API modules.
 &$module: Module object
diff --git a/docs/mwlogger.txt b/docs/mwlogger.txt
new file mode 100644 (file)
index 0000000..9964e8b
--- /dev/null
@@ -0,0 +1,59 @@
+MWLogger implements a PSR-3 [0] compatible message logging system.
+
+The MWLogger class is actually a thin wrapper around any PSR-3 LoggerInterface
+implementation. Named MWLogger instances can be obtained from the
+MWLogger::getInstance() static method. MWLogger expects a class implementing
+the MWLoggerSpi interface to act as a factory for new MWLogger instances.
+
+The "Spi" in MWLoggerSpi stands for "service provider interface". An SPI is
+a API intended to be implemented or extended by a third party. This software
+design pattern is intended to enable framework extension and replaceable
+components. It is specifically used in the MWLogger service to allow alternate
+PSR-3 logging implementations to be easily integrated with MediaWiki.
+
+The MWLogger::getInstance() static method is the means by which most code
+acquires an MWLogger instance. This in turn delegates creation of MWLogger
+instances to a class implementing the MWLoggerSpi service provider interface.
+
+The service provider interface allows the backend logging library to be
+implemented in multiple ways. The $wgMWLoggerDefaultSpi global provides the
+classname of the default MWLoggerSpi implementation to be loaded at runtime.
+This can either be the name of a class implementing the MWLoggerSpi with
+a zero argument constructor or a callable that will return an MWLoggerSpi
+instance. Alternately the MWLogger::registerProvider method can be called
+to inject an MWLoggerSpi instance into MWLogger and bypass the use of this
+configuration variable.
+
+The MWLoggerMonologSpi class implements a service provider to generate
+MWLogger instances that use the Monolog [1] logging library. See the PHP docs
+(or source) for MWLoggerMonologSpi for details on the configuration of this
+provider. The default configuration installs a null handler that will silently
+discard all logging events. The documentation provided by the class describes
+a more feature rich logging configuration.
+
+== Classes ==
+; MWLogger
+: PSR-3 compatible logger that wraps any \Psr\Log\LoggerInterface
+  implementation
+; MWLoggerSpi
+: Service provider interface for MWLogger factories
+; MWLoggerNullSpi
+: MWLoggerSpi for creating instances that discard all log events
+; MWLoggerMonologSpi
+: MWLoggerSpi for creating instances backed by the monolog logging library
+; MwLoggerMonologHandler
+: Monolog handler that replicates the udp2log and file logging
+  functionality of wfErrorLog()
+; MwLoggerMonologProcessor
+: Monolog log processer that adds host: wfHostname() and wiki: wfWikiID()
+  to all records
+
+== Globals ==
+; $wgMWLoggerDefaultSpi
+: Default service provider interface to use with MWLogger
+; $wgMWLoggerMonologSpiConfig
+: Configuration for MWLoggerMonologSpi describing how to configure the
+  Monolog logger instances.
+
+[0]: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
+[1]: https://github.com/Seldaek/monolog
index 2a45fc3..c835007 100644 (file)
@@ -106,6 +106,8 @@ $wgAutoloadLocalClasses = array(
        'HTMLSelectField' => 'includes/htmlform/HTMLSelectField.php',
        'HTMLSelectLimitField' => 'includes/htmlform/HTMLSelectLimitField.php',
        'HTMLSelectOrOtherField' => 'includes/htmlform/HTMLSelectOrOtherField.php',
+       'HTMLSelectNamespace' => 'includes/htmlform/HTMLSelectNamespace.php',
+       'HTMLTagFilter' => 'includes/htmlform/HTMLTagFilter.php',
        'HTMLSubmitField' => 'includes/htmlform/HTMLSubmitField.php',
        'HTMLTextAreaField' => 'includes/htmlform/HTMLTextAreaField.php',
        'HTMLTextField' => 'includes/htmlform/HTMLTextField.php',
@@ -461,6 +463,12 @@ $wgAutoloadLocalClasses = array(
 
        # includes/debug
        'MWDebug' => 'includes/debug/MWDebug.php',
+       'MWLogger' => 'includes/debug/logger/Logger.php',
+       'MWLoggerMonologHandler' => 'includes/debug/logger/monolog/Handler.php',
+       'MWLoggerMonologProcessor' => 'includes/debug/logger/monolog/Processor.php',
+       'MWLoggerMonologSpi' => 'includes/debug/logger/monolog/Spi.php',
+       'MWLoggerNullSpi' => 'includes/debug/logger/NullSpi.php',
+       'MWLoggerSpi' => 'includes/debug/logger/Spi.php',
 
        # includes/deferred
        'DataUpdate' => 'includes/deferred/DataUpdate.php',
@@ -1023,6 +1031,7 @@ $wgAutoloadLocalClasses = array(
        'SpecialAllMessages' => 'includes/specials/SpecialAllMessages.php',
        'SpecialAllMyUploads' => 'includes/specials/SpecialMyRedirectPages.php',
        'SpecialAllPages' => 'includes/specials/SpecialAllPages.php',
+       'SpecialApiHelp' => 'includes/specials/SpecialApiHelp.php',
        'SpecialBlankpage' => 'includes/specials/SpecialBlankpage.php',
        'SpecialBlock' => 'includes/specials/SpecialBlock.php',
        'SpecialBlockList' => 'includes/specials/SpecialBlockList.php',
index f2453e8..ed21a89 100644 (file)
@@ -2092,7 +2092,7 @@ $wgLanguageConverterCacheType = CACHE_ANYTHING;
  */
 $wgObjectCaches = array(
        CACHE_NONE => array( 'class' => 'EmptyBagOStuff' ),
-       CACHE_DB => array( 'class' => 'SqlBagOStuff', 'table' => 'objectcache' ),
+       CACHE_DB => array( 'class' => 'SqlBagOStuff' ),
 
        CACHE_ANYTHING => array( 'factory' => 'ObjectCache::newAnything' ),
        CACHE_ACCEL => array( 'factory' => 'ObjectCache::newAccelerator' ),
@@ -3797,6 +3797,7 @@ $wgNamespacesWithSubpages = array(
 $wgTrackingCategories = array(
        'index-category',
        'noindex-category',
+       'duplicate-args-category',
        'expensive-parserfunction-category',
        'post-expand-template-argument-category',
        'post-expand-template-inclusion-category',
@@ -4274,7 +4275,7 @@ $wgDefaultUserOptions = array(
        'enotifrevealaddr' => 0,
        'enotifusertalkpages' => 1,
        'enotifwatchlistpages' => 1,
-       'extendwatchlist' => 0,
+       'extendwatchlist' => 1,
        'fancysig' => 0,
        'forceeditsummary' => 0,
        'gender' => 'unknown',
@@ -4300,7 +4301,7 @@ $wgDefaultUserOptions = array(
        'thumbsize' => 5,
        'underline' => 2,
        'uselivepreview' => 0,
-       'usenewrc' => 0,
+       'usenewrc' => 1,
        'watchcreations' => 1,
        'watchdefault' => 1,
        'watchdeletion' => 0,
@@ -5223,6 +5224,43 @@ $wgDebugDumpSqlLength = 500;
  */
 $wgDebugLogGroups = array();
 
+/**
+ * Default service provider for creating MWLogger instances.
+ *
+ * This can either be the name of a class implementing the MWLoggerSpi
+ * interface with a zero argument constructor or a callable that will return
+ * an MWLoggerSpi instance. Alternately the MWLogger::registerProvider method
+ * can be called to inject an MWLoggerSpi instance into MWLogger and bypass
+ * the use of this configuration variable.
+ *
+ * @since 1.25
+ * @var $wgMWLoggerDefaultSpi string|callable
+ * @see MwLogger
+ */
+$wgMWLoggerDefaultSpi = 'MWLoggerNullSpi';
+
+/**
+ * Configuration for MWLoggerMonologSpi logger factory.
+ *
+ * Default configuration installs a null handler that will silently discard
+ * all logging events.
+ *
+ * @since 1.25
+ * @see MWLoggerMonologSpi
+ */
+$wgMWLoggerMonologSpiConfig = array(
+       'loggers' => array(
+               '@default' => array(
+                       'handlers' => array( 'null' ),
+               ),
+       ),
+       'handlers' => array(
+               'null' => array(
+                       'class' => '\\Monolog\\Logger\\NullHandler',
+               ),
+       ),
+);
+
 /**
  * Display debug data at the bottom of the main content area.
  *
@@ -6167,6 +6205,7 @@ $wgExtensionMessagesFiles = array();
  */
 $wgMessagesDirs = array(
        'core' => "$IP/languages/i18n",
+       'api' => "$IP/includes/api/i18n",
        'oojs-ui' => "$IP/resources/lib/oojs-ui/i18n",
 );
 
index c5ef534..764f413 100644 (file)
@@ -779,7 +779,8 @@ class EditPage {
                                // TODO: softened the check for cutover.  Once we determine
                                // that it is safe, we should complete the transition by
                                // removing the "edittime" clause.
-                               $this->incompleteForm = ( !$request->getVal( 'wpUltimateParam' ) && is_null( $this->edittime ) );
+                               $this->incompleteForm = ( !$request->getVal( 'wpUltimateParam' )
+                                       && is_null( $this->edittime ) );
                        }
                        if ( $this->incompleteForm ) {
                                # If the form is incomplete, force to preview.
@@ -2148,7 +2149,8 @@ class EditPage {
                        if ( !( $user && $user->isLoggedIn() ) && !$ip ) { # User does not exist
                                $wgOut->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n$1\n</div>",
                                        array( 'userpage-userdoesnotexist', wfEscapeWikiText( $username ) ) );
-                       } elseif ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) { # Show log extract if the user is currently blocked
+                       } elseif ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) {
+                               # Show log extract if the user is currently blocked
                                LogEventsList::showLogExtract(
                                        $wgOut,
                                        'block',
@@ -2215,7 +2217,10 @@ class EditPage {
                        if ( $title instanceof Title && $title->exists() && $title->userCan( 'read' ) ) {
                                global $wgOut;
                                // Added using template syntax, to take <noinclude>'s into account.
-                               $wgOut->addWikiTextTitleTidy( '<div class="mw-editintro">{{:' . $title->getFullText() . '}}</div>', $this->mTitle );
+                               $wgOut->addWikiTextTitleTidy(
+                                       '<div class="mw-editintro">{{:' . $title->getFullText() . '}}</div>',
+                                       $this->mTitle
+                               );
                                return true;
                        }
                }
index 3306acd..2c26fef 100644 (file)
@@ -102,19 +102,30 @@ if ( !function_exists( 'gzdecode' ) ) {
 }
 
 // hash_equals function only exists in PHP >= 5.6.0
+// http://php.net/hash_equals
 if ( !function_exists( 'hash_equals' ) ) {
        /**
-        * Check whether a user-provided string is equal to a fixed-length secret without
-        * revealing bytes of the secret through timing differences.
+        * Check whether a user-provided string is equal to a fixed-length secret string
+        * without revealing bytes of the secret string through timing differences.
         *
-        * This timing guarantee -- that a partial match takes the same time as a complete
-        * mismatch -- is why this function is used in some security-sensitive parts of the code.
-        * For example, it shouldn't be possible to guess an HMAC signature one byte at a time.
+        * The usual way to compare strings (PHP's === operator or the underlying memcmp()
+        * function in C) is to compare corresponding bytes and stop at the first difference,
+        * which would take longer for a partial match than for a complete mismatch. This
+        * is not secure when one of the strings (e.g. an HMAC or token) must remain secret
+        * and the other may come from an attacker. Statistical analysis of timing measurements
+        * over many requests may allow the attacker to guess the string's bytes one at a time
+        * (and check his guesses) even if the timing differences are extremely small.
+        *
+        * When making such a security-sensitive comparison, it is essential that the sequence
+        * in which instructions are executed and memory locations are accessed not depend on
+        * the secret string's value. HOWEVER, for simplicity, we do not attempt to minimize
+        * the inevitable leakage of the string's length. That is generally known anyway as
+        * a chararacteristic of the hash function used to compute the secret value.
         *
         * Longer explanation: http://www.emerose.com/timing-attacks-explained
         *
         * @codeCoverageIgnore
-        * @param string $known_string Fixed-length secret to compare against
+        * @param string $known_string Fixed-length secret string to compare against
         * @param string $user_string User-provided string
         * @return bool True if the strings are the same, false otherwise
         */
@@ -134,14 +145,14 @@ if ( !function_exists( 'hash_equals' ) ) {
                        return false;
                }
 
-               // Note that we do one thing PHP doesn't: try to avoid leaking information about
-               // relative lengths of $known_string and $user_string, and of multiple $known_strings.
-               // However, lengths may still inevitably leak through, for example, CPU cache misses.
                $known_string_len = strlen( $known_string );
-               $user_string_len = strlen( $user_string );
-               $result = $known_string_len ^ $user_string_len;
-               for ( $i = 0; $i < $user_string_len; $i++ ) {
-                       $result |= ord( $known_string[$i % $known_string_len] ) ^ ord( $user_string[$i] );
+               if ( $known_string_len !== strlen( $user_string ) ) {
+                       return false;
+               }
+
+               $result = 0;
+               for ( $i = 0; $i < $known_string_len; $i++ ) {
+                       $result |= ord( $known_string[$i] ) ^ ord( $user_string[$i] );
                }
 
                return ( $result === 0 );
@@ -2975,7 +2986,9 @@ function wfShellExec( $cmd, &$retval = null, $environ = array(),
  * function, as all the arguments to wfShellExec can become unwieldy.
  *
  * @note This also includes errors from limit.sh, e.g. if $wgMaxShellFileSize is exceeded.
- * @param string $cmd Command line, properly escaped for shell.
+ * @param string|string[] $cmd If string, a properly shell-escaped command line,
+ *   or an array of unescaped arguments, in which case each value will be escaped
+ *   Example:   [ 'convert', '-font', 'font name' ] would produce "'convert' '-font' 'font name'"
  * @param null|mixed &$retval Optional, will receive the program's exit code.
  *   (non-zero is usually failure)
  * @param array $environ Optional environment variables which should be
index 2928748..668c3d9 100644 (file)
@@ -179,7 +179,7 @@ class Hooks {
                        // Run autoloader (workaround for call_user_func_array bug)
                        // and throw error if not callable.
                        if ( !is_callable( $callback ) ) {
-                               throw new MWException( 'Invalid callback in hooks for ' . $event . "\n" );
+                               throw new MWException( 'Invalid callback ' . $func . ' in hooks for ' . $event . "\n" );
                        }
 
                        /*
index 5c9490b..79095e9 100644 (file)
@@ -69,14 +69,14 @@ class MovePage {
                $oldid = $this->oldTitle->getArticleID();
 
                if ( strlen( $this->newTitle->getDBkey() ) < 1 ) {
-                       $errors[] = array( 'articleexists' );
+                       $status->fatal( 'articleexists' );
                }
                if (
                        ( $this->oldTitle->getDBkey() == '' ) ||
                        ( !$oldid ) ||
                        ( $this->newTitle->getDBkey() == '' )
                ) {
-                       $errors[] = array( 'badarticleerror' );
+                       $status->fatal( 'badarticleerror' );
                }
 
                // Content model checks
index 3ff0d37..3bb2175 100644 (file)
@@ -122,6 +122,9 @@ class OutputPage extends ContextSource {
        /** @var array */
        protected $mCategories = array();
 
+       /** @var array */
+       protected $mIndicators = array();
+
        /** @var array Array of Interwiki Prefixed (non DB key) Titles (e.g. 'fr:Test page') */
        private $mLanguageLinks = array();
 
@@ -1329,6 +1332,32 @@ class OutputPage extends ContextSource {
                return $this->mCategories;
        }
 
+       /**
+        * Add an array of indicators, with their identifiers as array keys and HTML contents as values.
+        *
+        * In case of duplicate keys, existing values are overwritten.
+        *
+        * @param array $indicators
+        * @since 1.25
+        */
+       public function setIndicators( array $indicators ) {
+               $this->mIndicators = $indicators + $this->mIndicators;
+               // Keep ordered by key
+               ksort( $this->mIndicators );
+       }
+
+       /**
+        * Get the indicators associated with this page.
+        *
+        * The array will be internally ordered by item keys.
+        *
+        * @return array Keys: identifiers, values: HTML contents
+        * @since 1.25
+        */
+       public function getIndicators() {
+               return $this->mIndicators;
+       }
+
        /**
         * Restrict the page to loading modules bundled the software.
         *
@@ -1641,6 +1670,7 @@ class OutputPage extends ContextSource {
        public function addParserOutputMetadata( $parserOutput ) {
                $this->mLanguageLinks += $parserOutput->getLanguageLinks();
                $this->addCategoryLinks( $parserOutput->getCategories() );
+               $this->setIndicators( $parserOutput->getIndicators() );
                $this->mNewSectionLink = $parserOutput->getNewSection();
                $this->mHideNewSectionLink = $parserOutput->getHideNewSection();
 
@@ -2085,8 +2115,6 @@ class OutputPage extends ContextSource {
         * the object, let's actually output it:
         */
        public function output() {
-               global $wgLanguageCode;
-
                if ( $this->mDoNothing ) {
                        return;
                }
@@ -2140,7 +2168,7 @@ class OutputPage extends ContextSource {
                ob_start();
 
                $response->header( 'Content-type: ' . $config->get( 'MimeType' ) . '; charset=UTF-8' );
-               $response->header( 'Content-language: ' . $wgLanguageCode );
+               $response->header( 'Content-language: ' . $config->get( 'LanguageCode' ) );
 
                // Avoid Internet Explorer "compatibility view" in IE 8-10, so that
                // jQuery etc. can work correctly.
@@ -2414,90 +2442,32 @@ class OutputPage extends ContextSource {
        }
 
        /**
-        * Display a page stating that the Wiki is in read-only mode,
-        * and optionally show the source of the page that the user
-        * was trying to edit.  Should only be called (for this
-        * purpose) after wfReadOnly() has returned true.
-        *
-        * For historical reasons, this function is _also_ used to
-        * show the error message when a user tries to edit a page
-        * they are not allowed to edit.  (Unless it's because they're
-        * blocked, then we show blockedPage() instead.)  In this
-        * case, the second parameter should be set to true and a list
-        * of reasons supplied as the third parameter.
+        * Display a page stating that the Wiki is in read-only mode.
+        * Should only be called after wfReadOnly() has returned true.
         *
-        * @todo Needs to be split into multiple functions.
+        * Historically, this function was used to show the source of the page that the user
+        * was trying to edit and _also_ permissions error messages. The relevant code was
+        * moved into EditPage in 1.19 (r102024 / d83c2a431c2a) and removed here in 1.25.
         *
-        * @param string $source Source code to show (or null).
-        * @param bool $protected Is this a permissions error?
-        * @param array $reasons List of reasons for this error, as returned by
-        *   Title::getUserPermissionsErrors().
-        * @param string $action Action that was denied or null if unknown
+        * @deprecated since 1.25; throw the exception directly
         * @throws ReadOnlyError
         */
-       public function readOnlyPage( $source = null, $protected = false,
-               array $reasons = array(), $action = null
-       ) {
-               $this->setRobotPolicy( 'noindex,nofollow' );
-               $this->setArticleRelated( false );
-
-               // If no reason is given, just supply a default "I can't let you do
-               // that, Dave" message.  Should only occur if called by legacy code.
-               if ( $protected && empty( $reasons ) ) {
-                       $reasons[] = array( 'badaccess-group0' );
-               }
-
-               if ( !empty( $reasons ) ) {
-                       // Permissions error
-                       if ( $source ) {
-                               $this->setPageTitle( $this->msg( 'viewsource-title', $this->getTitle()->getPrefixedText() ) );
-                               $this->addBacklinkSubtitle( $this->getTitle() );
-                       } else {
-                               $this->setPageTitle( $this->msg( 'badaccess' ) );
-                       }
-                       $this->addWikiText( $this->formatPermissionsErrorMessage( $reasons, $action ) );
-               } else {
-                       // Wiki is read only
-                       throw new ReadOnlyError;
-               }
-
-               // Show source, if supplied
-               if ( is_string( $source ) ) {
-                       $this->addWikiMsg( 'viewsourcetext' );
-
-                       $pageLang = $this->getTitle()->getPageLanguage();
-                       $params = array(
-                               'id' => 'wpTextbox1',
-                               'name' => 'wpTextbox1',
-                               'cols' => $this->getUser()->getOption( 'cols' ),
-                               'rows' => $this->getUser()->getOption( 'rows' ),
-                               'readonly' => 'readonly',
-                               'lang' => $pageLang->getHtmlCode(),
-                               'dir' => $pageLang->getDir(),
-                       );
-                       $this->addHTML( Html::element( 'textarea', $params, $source ) );
-
-                       // Show templates used by this article
-                       $templates = Linker::formatTemplates( $this->getTitle()->getTemplateLinksFrom() );
-                       $this->addHTML( "<div class='templatesUsed'>
-$templates
-</div>
-" );
+       public function readOnlyPage() {
+               if ( func_num_args() > 0 ) {
+                       throw new MWException( __METHOD__ . ' no longer accepts arguments since 1.25.' );
                }
 
-               # If the title doesn't exist, it's fairly pointless to print a return
-               # link to it.  After all, you just tried editing it and couldn't, so
-               # what's there to do there?
-               if ( $this->getTitle()->exists() ) {
-                       $this->returnToMain( null, $this->getTitle() );
-               }
+               throw new ReadOnlyError;
        }
 
        /**
         * Turn off regular page output and return an error response
         * for when rate limiting has triggered.
+        *
+        * @deprecated since 1.25; throw the exception directly
         */
        public function rateLimited() {
+               wfDeprecated( __METHOD__, '1.25' );
                throw new ThrottledError;
        }
 
@@ -3572,7 +3542,9 @@ $templates
                $moduleStyles[] = 'user.groups';
 
                // Per-user custom styles
-               if ( $this->getConfig()->get( 'AllowUserCss' ) && $this->getTitle()->isCssSubpage() && $this->userCanPreview() ) {
+               if ( $this->getConfig()->get( 'AllowUserCss' ) && $this->getTitle()->isCssSubpage()
+                       && $this->userCanPreview()
+               ) {
                        // We're on a preview of a CSS subpage
                        // Exclude this page from the user module in case it's in there (bug 26283)
                        $link = $this->makeResourceLoaderLink( 'user', ResourceLoaderModule::TYPE_STYLES, false,
index 1f684fb..fe78e23 100644 (file)
@@ -63,8 +63,7 @@ abstract class PrefixSearch {
                        if ( $ns[0] == NS_MAIN ) {
                                $ns = $namespaces; // no explicit prefix, use default namespaces
                        }
-                       return $this->searchBackend(
-                               $ns, $title->getText(), $limit );
+                       return $this->searchBackend( $ns, $title->getText(), $limit );
                }
 
                // Is this a namespace prefix?
@@ -152,7 +151,31 @@ abstract class PrefixSearch {
                $srchres = array();
                if ( wfRunHooks( 'PrefixSearchBackend', array( $namespaces, $search, $limit, &$srchres ) ) ) {
                        return $this->titles( $this->defaultSearchBackend( $namespaces, $search, $limit ) );
+               } else {
+                       // Default search backend does proper prefix searching, but custom backends
+                       // may sort based on other algorythms that may cause the exact title match
+                       // to not be in the results or be lower down the list.
+
+                       // Pick namespace (based on PrefixSearch::defaultSearchBackend)
+                       $ns = in_array( NS_MAIN, $namespaces ) ? NS_MAIN : $namespaces[0];
+                       $t = Title::newFromText( $search, $ns );
+                       $string = $t->getPrefixedText();
+
+                       $key = array_search( $string, $srchres );
+                       if ( $key !== false ) {
+                               // Move it to the front
+                               $cut = array_splice( $srchres, $key, 1 );
+                               array_unshift( $srchres, $cut[0] );
+                       } elseif ( $t->exists() ) {
+                               // Add it in front
+                               array_unshift( $srchres, $string );
+
+                               if ( count( $srchres ) > $limit ) {
+                                       array_pop( $srchres );
+                               }
+                       }
                }
+
                return $this->strings( $srchres );
        }
 
index e6425f8..2fa6849 100644 (file)
@@ -3817,7 +3817,6 @@ class User implements IDBAccessObject {
                        return false;
                }
 
-               $passwordFactory = self::getPasswordFactory();
                if ( !$this->mPassword->equals( $password ) ) {
                        if ( $wgLegacyEncoding ) {
                                // Some wikis were converted from ISO 8859-1 to UTF-8, the passwords can't be converted
@@ -3831,6 +3830,7 @@ class User implements IDBAccessObject {
                        }
                }
 
+               $passwordFactory = self::getPasswordFactory();
                if ( $passwordFactory->needsUpdate( $this->mPassword ) ) {
                        $this->mPassword = $passwordFactory->newFromPlaintext( $password );
                        $this->saveSettings();
index 7bc3f71..a214f2e 100644 (file)
@@ -64,6 +64,16 @@ abstract class ApiBase extends ContextSource {
        // Boolean, if MIN/MAX are set, enforce (die) these?
        // Only applies if TYPE='integer' Use with extreme caution
        const PARAM_RANGE_ENFORCE = 9;
+       /// @since 1.25
+       // Specify an alternative i18n message for this help parameter.
+       // Value can be a string key, an array giving key and parameters, or a
+       // Message object.
+       const PARAM_HELP_MSG = 10;
+       /// @since 1.25
+       // Specify additional i18n messages to append to the normal message. Value
+       // is an array of any of strings giving the message key, arrays giving key and
+       // parameters, or Message objects.
+       const PARAM_HELP_MSG_APPEND = 11;
 
        const LIMIT_BIG1 = 500; // Fast query, std user limit
        const LIMIT_BIG2 = 5000; // Fast query, bot/sysop limit
@@ -143,27 +153,64 @@ abstract class ApiBase extends ContextSource {
        }
 
        /**
-        * Returns the description string for this module
-        * @return string|array
+        * Returns usage examples for this module.
+        *
+        * Return value has query strings as keys, with values being either strings
+        * (message key), arrays (message key + parameter), or Message objects.
+        *
+        * Do not call this base class implementation when overriding this method.
+        *
+        * @since 1.25
+        * @return array
         */
-       protected function getDescription() {
-               return false;
-       }
+       protected function getExamplesMessages() {
+               // Fall back to old non-localised method
+               $ret = array();
+
+               $examples = $this->getExamples();
+               if ( $examples ) {
+                       if ( !is_array( $examples ) ) {
+                               $examples = array( $examples );
+                       } elseif ( $examples && ( count( $examples ) & 1 ) == 0 &&
+                               array_keys( $examples ) === range( 0, count( $examples ) - 1 ) &&
+                               !preg_match( '/^\s*api\.php\?/', $examples[0] )
+                       ) {
+                               // Fix up the ugly "even numbered elements are description, odd
+                               // numbered elemts are the link" format (see doc for self::getExamples)
+                               $tmp = array();
+                               for ( $i = 0; $i < count( $examples ); $i += 2 ) {
+                                       $tmp[$examples[$i + 1]] = $examples[$i];
+                               }
+                               $examples = $tmp;
+                       }
 
-       /**
-        * Returns usage examples for this module. Return false if no examples are available.
-        * @return bool|string|array
-        */
-       protected function getExamples() {
-               return false;
+                       foreach ( $examples as $k => $v ) {
+                               if ( is_numeric( $k ) ) {
+                                       $qs = $v;
+                                       $msg = '';
+                               } else {
+                                       $qs = $k;
+                                       $msg = self::escapeWikiText( $v );
+                                       if ( is_array( $msg ) ) {
+                                               $msg = join( " ", $msg );
+                                       }
+                               }
+
+                               $qs = preg_replace( '/^\s*api\.php\?/', '', $qs );
+                               $ret[$qs] = $this->msg( 'api-help-fallback-example', array( $msg ) );
+                       }
+               }
+
+               return $ret;
        }
 
        /**
-        * @return bool|string|array Returns a false if the module has no help URL,
-        *   else returns a (array of) string
+        * Return links to more detailed help pages about the module.
+        * @since 1.25, returning boolean false is deprecated
+        * @return string|array
         */
        public function getHelpUrls() {
-               return false;
+               return array();
        }
 
        /**
@@ -176,22 +223,12 @@ abstract class ApiBase extends ContextSource {
         * in the overriding methods. Callers of this method can pass zero or
         * more OR-ed flags like GET_VALUES_FOR_HELP.
         *
-        * @return array|bool
+        * @return array
         */
        protected function getAllowedParams( /* $flags = 0 */ ) {
                // int $flags is not declared because it causes "Strict standards"
                // warning. Most derived classes do not implement it.
-               return false;
-       }
-
-       /**
-        * Returns an array of parameter descriptions.
-        * Don't call this function directly: use getFinalParamDescription() to
-        * allow hooks to modify descriptions as needed.
-        * @return array|bool False on no parameter descriptions
-        */
-       protected function getParamDescription() {
-               return false;
+               return array();
        }
 
        /**
@@ -226,6 +263,24 @@ abstract class ApiBase extends ContextSource {
                return $this->needsToken() !== false;
        }
 
+       /**
+        * Indicates whether this module is deprecated
+        * @since 1.25
+        * @return bool
+        */
+       public function isDeprecated() {
+               return false;
+       }
+
+       /**
+        * Indicates whether this module is "internal" or unstable
+        * @since 1.25
+        * @return bool
+        */
+       public function isInternal() {
+               return false;
+       }
+
        /**
         * Returns the token type this module requires in order to execute.
         *
@@ -234,11 +289,9 @@ abstract class ApiBase extends ContextSource {
         * core types, you must use the ApiQueryTokensRegisterTypes hook to
         * register it.
         *
-        * Returning a non-falsey value here will cause self::getFinalParams() to
-        * return a required string 'token' parameter and
-        * self::getFinalParamDescription() to ensure there is standardized
-        * documentation for it. Also, self::mustBePosted() must return true when
-        * tokens are used.
+        * Returning a non-falsey value here will force the addition of an
+        * appropriate 'token' parameter in self::getFinalParams(). Also,
+        * self::mustBePosted() must return true when tokens are used.
         *
         * In previous versions of MediaWiki, true was a valid return value.
         * Returning true will generate errors indicating that the API module needs
@@ -303,6 +356,73 @@ abstract class ApiBase extends ContextSource {
                return $this === $this->mMainModule;
        }
 
+       /**
+        * Get the parent of this module
+        * @since 1.25
+        * @return ApiBase|null
+        */
+       public function getParent() {
+               return $this->isMain() ? null : $this->getMain();
+       }
+
+       /**
+        * Get the path to this module
+        *
+        * @since 1.25
+        * @return string
+        */
+       public function getModulePath() {
+               if ( $this->isMain() ) {
+                       return 'main';
+               } elseif ( $this->getParent()->isMain() ) {
+                       return $this->getModuleName();
+               } else {
+                       return $this->getParent()->getModulePath() . '+' . $this->getModuleName();
+               }
+       }
+
+       /**
+        * Get a module from its module path
+        *
+        * @since 1.25
+        * @param string $path
+        * @return ApiBase|null
+        * @throws UsageException
+        */
+       public function getModuleFromPath( $path ) {
+               $module = $this->getMain();
+               if ( $path === 'main' ) {
+                       return $module;
+               }
+
+               $parts = explode( '+', $path );
+               if ( count( $parts ) === 1 ) {
+                       // In case the '+' was typed into URL, it resolves as a space
+                       $parts = explode( ' ', $path );
+               }
+
+               $count = count( $parts );
+               for ( $i = 0; $i < $count; $i++ ) {
+                       $parent = $module;
+                       $manager = $parent->getModuleManager();
+                       if ( $manager === null ) {
+                               $errorPath = join( '+', array_slice( $parts, 0, $i ) );
+                               $this->dieUsage( "The module \"$errorPath\" has no submodules", 'badmodule' );
+                       }
+                       $module = $manager->getModule( $parts[$i] );
+
+                       if ( $module === null ) {
+                               $errorPath = $i ? join( '+', array_slice( $parts, 0, $i ) ) : $parent->getModuleName();
+                               $this->dieUsage(
+                                       "The module \"$errorPath\" does not have a submodule \"{$parts[$i]}\"",
+                                       'badmodule'
+                               );
+                       }
+               }
+
+               return $module;
+       }
+
        /**
         * Get the result object
         * @return ApiResult
@@ -339,70 +459,6 @@ abstract class ApiBase extends ContextSource {
                return $this->mSlaveDB;
        }
 
-       /**
-        * Get final module description, after hooks have had a chance to tweak it as
-        * needed.
-        *
-        * @return array|bool False on no parameters
-        */
-       public function getFinalDescription() {
-               $desc = $this->getDescription();
-               wfRunHooks( 'APIGetDescription', array( &$this, &$desc ) );
-
-               return $desc;
-       }
-
-       /**
-        * Get final list of parameters, after hooks have had a chance to
-        * tweak it as needed.
-        *
-        * @param int $flags Zero or more flags like GET_VALUES_FOR_HELP
-        * @return array|bool False on no parameters
-        * @since 1.21 $flags param added
-        */
-       public function getFinalParams( $flags = 0 ) {
-               $params = $this->getAllowedParams( $flags );
-
-               if ( $this->needsToken() ) {
-                       $params['token'] = array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true,
-                       );
-               }
-
-               wfRunHooks( 'APIGetAllowedParams', array( &$this, &$params, $flags ) );
-
-               return $params;
-       }
-
-       /**
-        * Get final parameter descriptions, after hooks have had a chance to tweak it as
-        * needed.
-        *
-        * @return array|bool False on no parameter descriptions
-        */
-       public function getFinalParamDescription() {
-               $desc = $this->getParamDescription();
-
-               $tokenType = $this->needsToken();
-               if ( $tokenType ) {
-                       if ( !isset( $desc['token'] ) ) {
-                               $desc['token'] = array();
-                       } elseif ( !is_array( $desc['token'] ) ) {
-                               // We ignore a plain-string token, because it's probably an
-                               // extension that is supplying the string for BC.
-                               $desc['token'] = array();
-                       }
-                       array_unshift( $desc['token'],
-                               "A '$tokenType' token retrieved from action=query&meta=tokens"
-                       );
-               }
-
-               wfRunHooks( 'APIGetParamDescription', array( &$this, &$desc ) );
-
-               return $desc;
-       }
-
        /**@}*/
 
        /************************************************************************//**
@@ -1093,6 +1149,55 @@ abstract class ApiBase extends ContextSource {
                return $user;
        }
 
+       /**
+        * A subset of wfEscapeWikiText for BC texts
+        *
+        * @since 1.25
+        * @param string|array $v
+        * @return string|array
+        */
+       private static function escapeWikiText( $v ) {
+               if ( is_array( $v ) ) {
+                       return array_map( 'self::escapeWikiText', $v );
+               } else {
+                       return strtr( $v, array(
+                               '__' => '_&#95;', '{' => '&#123;', '}' => '&#125;',
+                               '[[Category:' => '[[:Category:',
+                               '[[File:' => '[[:File:', '[[Image:' => '[[:Image:',
+                       ) );
+               }
+       }
+
+       /**
+        * Create a Message from a string or array
+        *
+        * A string is used as a message key. An array has the message key as the
+        * first value and message parameters as subsequent values.
+        *
+        * @since 1.25
+        * @param string|array|Message $msg
+        * @param IContextSource $context
+        * @param array $params
+        * @return Message|null
+        */
+       public static function makeMessage( $msg, IContextSource $context, array $params = null ) {
+               if ( is_string( $msg ) ) {
+                       $msg = wfMessage( $msg );
+               } elseif ( is_array( $msg ) ) {
+                       $msg = call_user_func_array( 'wfMessage', $msg );
+               }
+               if ( !$msg instanceof Message ) {
+                       return null;
+               }
+
+               $msg->setContext( $context );
+               if ( $params ) {
+                       $msg->params( $params );
+               }
+
+               return $msg;
+       }
+
        /**@}*/
 
        /************************************************************************//**
@@ -1819,262 +1924,190 @@ abstract class ApiBase extends ContextSource {
         */
 
        /**
-        * Generates help message for this module, or false if there is no description
-        * @return string|bool
+        * Get final module description, after hooks have had a chance to tweak it as
+        * needed.
+        *
+        * @since 1.25, returns Message[] rather than string[]
+        * @return Message[]
         */
-       public function makeHelpMsg() {
-               static $lnPrfx = "\n  ";
+       public function getFinalDescription() {
+               $desc = $this->getDescription();
+               wfRunHooks( 'APIGetDescription', array( &$this, &$desc ) );
+               $desc = self::escapeWikiText( $desc );
+               if ( is_array( $desc ) ) {
+                       $desc = join( "\n", $desc );
+               } else {
+                       $desc = (string)$desc;
+               }
 
-               $msg = $this->getFinalDescription();
+               $msg = $this->msg( "apihelp-{$this->getModulePath()}-description", array(
+                       $this->getModulePrefix(),
+                       $this->getModuleName(),
+                       $this->getModulePath(),
+               ) );
+               if ( !$msg->exists() ) {
+                       $msg = $this->msg( 'api-help-fallback-description', $desc );
+               }
+               $msgs = array( $msg );
 
-               if ( $msg !== false ) {
+               wfRunHooks( 'APIGetDescriptionMessages', array( $this, &$msgs ) );
 
-                       if ( !is_array( $msg ) ) {
-                               $msg = array(
-                                       $msg
-                               );
-                       }
-                       $msg = $lnPrfx . implode( $lnPrfx, $msg ) . "\n";
+               return $msgs;
+       }
 
-                       $msg .= $this->makeHelpArrayToString( $lnPrfx, false, $this->getHelpUrls() );
+       /**
+        * Get final list of parameters, after hooks have had a chance to
+        * tweak it as needed.
+        *
+        * @param int $flags Zero or more flags like GET_VALUES_FOR_HELP
+        * @return array|bool False on no parameters
+        * @since 1.21 $flags param added
+        */
+       public function getFinalParams( $flags = 0 ) {
+               $params = $this->getAllowedParams( $flags );
+               if ( !$params ) {
+                       $params = array();
+               }
 
-                       if ( $this->isReadMode() ) {
-                               $msg .= "\nThis module requires read rights";
-                       }
-                       if ( $this->isWriteMode() ) {
-                               $msg .= "\nThis module requires write rights";
-                       }
-                       if ( $this->mustBePosted() ) {
-                               $msg .= "\nThis module only accepts POST requests";
+               if ( $this->needsToken() ) {
+                       $params['token'] = array(
+                               ApiBase::PARAM_TYPE => 'string',
+                               ApiBase::PARAM_REQUIRED => true,
+                               ApiBase::PARAM_HELP_MSG => array(
+                                       'api-help-param-token',
+                                       $this->needsToken(),
+                               ),
+                       ) + ( isset( $params['token'] ) ? $params['token'] : array() );
+               }
+
+               wfRunHooks( 'APIGetAllowedParams', array( &$this, &$params, $flags ) );
+
+               return $params;
+       }
+
+       /**
+        * Get final parameter descriptions, after hooks have had a chance to tweak it as
+        * needed.
+        *
+        * @since 1.25, returns array of Message[] rather than array of string[]
+        * @return array Keys are parameter names, values are arrays of Message objects
+        */
+       public function getFinalParamDescription() {
+               $desc = $this->getParamDescription();
+               wfRunHooks( 'APIGetParamDescription', array( &$this, &$desc ) );
+
+               if ( !$desc ) {
+                       $desc = array();
+               }
+               $desc = self::escapeWikiText( $desc );
+
+               $params = $this->getFinalParams( ApiBase::GET_VALUES_FOR_HELP );
+               $msgs = array();
+               foreach ( $params as $param => $settings ) {
+                       if ( !is_array( $settings ) ) {
+                               $settings = array();
                        }
-                       if ( $this->isReadMode() || $this->isWriteMode() ||
-                               $this->mustBePosted()
-                       ) {
-                               $msg .= "\n";
+
+                       $d = isset( $desc[$param] ) ? $desc[$param] : '';
+                       if ( is_array( $d ) ) {
+                               // Special handling for prop parameters
+                               $d = array_map( function ( $line ) {
+                                       if ( preg_match( '/^\s+(\S+)\s+-\s+(.+)$/', $line, $m ) ) {
+                                               $line = "\n;{$m[1]}:{$m[2]}";
+                                       }
+                                       return $line;
+                               }, $d );
+                               $d = join( ' ', $d );
                        }
 
-                       // Parameters
-                       $paramsMsg = $this->makeHelpMsgParameters();
-                       if ( $paramsMsg !== false ) {
-                               $msg .= "Parameters:\n$paramsMsg";
+                       if ( isset( $settings[ApiBase::PARAM_HELP_MSG] ) ) {
+                               $msg = $settings[ApiBase::PARAM_HELP_MSG];
+                       } else {
+                               $msg = $this->msg( "apihelp-{$this->getModulePath()}-param-{$param}" );
+                               if ( !$msg->exists() ) {
+                                       $msg = $this->msg( 'api-help-fallback-parameter', $d );
+                               }
+                       }
+                       $msg = ApiBase::makeMessage( $msg, $this->getContext(), array(
+                               $this->getModulePrefix(),
+                               $param,
+                               $this->getModuleName(),
+                               $this->getModulePath(),
+                       ) );
+                       if ( !$msg ) {
+                               $this->dieDebug( __METHOD__,
+                                       'Value in ApiBase::PARAM_HELP_MSG is not valid' );
                        }
+                       $msgs[$param] = array( $msg );
 
-                       $examples = $this->getExamples();
-                       if ( $examples ) {
-                               if ( !is_array( $examples ) ) {
-                                       $examples = array(
-                                               $examples
-                                       );
+                       if ( isset( $settings[ApiBase::PARAM_HELP_MSG_APPEND] ) ) {
+                               if ( !is_array( $settings[ApiBase::PARAM_HELP_MSG_APPEND] ) ) {
+                                       $this->dieDebug( __METHOD__,
+                                               'Value for ApiBase::PARAM_HELP_MSG_APPEND is not an array' );
                                }
-                               $msg .= "Example" . ( count( $examples ) > 1 ? 's' : '' ) . ":\n";
-                               foreach ( $examples as $k => $v ) {
-                                       if ( is_numeric( $k ) ) {
-                                               $msg .= "  $v\n";
+                               foreach ( $settings[ApiBase::PARAM_HELP_MSG_APPEND] as $m ) {
+                                       $m = ApiBase::makeMessage( $m, $this->getContext(), array(
+                                               $this->getModulePrefix(),
+                                               $param,
+                                               $this->getModuleName(),
+                                               $this->getModulePath(),
+                                       ) );
+                                       if ( $m ) {
+                                               $msgs[$param][] = $m;
                                        } else {
-                                               if ( is_array( $v ) ) {
-                                                       $msgExample = implode( "\n", array_map( array( $this, 'indentExampleText' ), $v ) );
-                                               } else {
-                                                       $msgExample = "  $v";
-                                               }
-                                               $msgExample .= ":";
-                                               $msg .= wordwrap( $msgExample, 100, "\n" ) . "\n    $k\n";
+                                               $this->dieDebug( __METHOD__,
+                                                       'Value in ApiBase::PARAM_HELP_MSG_APPEND is not valid' );
                                        }
                                }
                        }
                }
 
-               return $msg;
+               wfRunHooks( 'APIGetParamDescriptionMessages', array( $this, &$msgs ) );
+
+               return $msgs;
        }
 
        /**
-        * @param string $item
-        * @return string
-        */
-       private function indentExampleText( $item ) {
-               return "  " . $item;
-       }
-
-       /**
-        * @param string $prefix Text to split output items
-        * @param string $title What is being output
-        * @param string|array $input
-        * @return string
+        * Generates the list of flags for the help screen and for action=paraminfo
+        *
+        * Corresponding messages: api-help-flag-deprecated,
+        * api-help-flag-internal, api-help-flag-readrights,
+        * api-help-flag-writerights, api-help-flag-mustbeposted
+        *
+        * @return string[]
         */
-       protected function makeHelpArrayToString( $prefix, $title, $input ) {
-               if ( $input === false ) {
-                       return '';
+       protected function getHelpFlags() {
+               $flags = array();
+
+               if ( $this->isDeprecated() ) {
+                       $flags[] = 'deprecated';
                }
-               if ( !is_array( $input ) ) {
-                       $input = array( $input );
+               if ( $this->isInternal() ) {
+                       $flags[] = 'internal';
                }
-
-               if ( count( $input ) > 0 ) {
-                       if ( $title ) {
-                               $msg = $title . ( count( $input ) > 1 ? 's' : '' ) . ":\n  ";
-                       } else {
-                               $msg = '  ';
-                       }
-                       $msg .= implode( $prefix, $input ) . "\n";
-
-                       return $msg;
+               if ( $this->isReadMode() ) {
+                       $flags[] = 'readrights';
+               }
+               if ( $this->isWriteMode() ) {
+                       $flags[] = 'writerights';
+               }
+               if ( $this->mustBePosted() ) {
+                       $flags[] = 'mustbeposted';
                }
 
-               return '';
+               return $flags;
        }
 
        /**
-        * Generates the parameter descriptions for this module, to be displayed in the
-        * module's help.
-        * @return string|bool
+        * Called from ApiHelp before the pieces are joined together and returned.
+        *
+        * This exists mainly for ApiMain to add the Permissions and Credits
+        * sections. Other modules probably don't need it.
+        *
+        * @param string[] &$help Array of help data
+        * @param array $options Options passed to ApiHelp::getHelp
         */
-       public function makeHelpMsgParameters() {
-               $params = $this->getFinalParams( ApiBase::GET_VALUES_FOR_HELP );
-               if ( $params ) {
-
-                       $paramsDescription = $this->getFinalParamDescription();
-                       $msg = '';
-                       $paramPrefix = "\n" . str_repeat( ' ', 24 );
-                       $descWordwrap = "\n" . str_repeat( ' ', 28 );
-                       foreach ( $params as $paramName => $paramSettings ) {
-                               $desc = isset( $paramsDescription[$paramName] ) ? $paramsDescription[$paramName] : '';
-                               if ( is_array( $desc ) ) {
-                                       $desc = implode( $paramPrefix, $desc );
-                               }
-
-                               //handle shorthand
-                               if ( !is_array( $paramSettings ) ) {
-                                       $paramSettings = array(
-                                               self::PARAM_DFLT => $paramSettings,
-                                       );
-                               }
-
-                               //handle missing type
-                               if ( !isset( $paramSettings[ApiBase::PARAM_TYPE] ) ) {
-                                       $dflt = isset( $paramSettings[ApiBase::PARAM_DFLT] )
-                                               ? $paramSettings[ApiBase::PARAM_DFLT]
-                                               : null;
-                                       if ( is_bool( $dflt ) ) {
-                                               $paramSettings[ApiBase::PARAM_TYPE] = 'boolean';
-                                       } elseif ( is_string( $dflt ) || is_null( $dflt ) ) {
-                                               $paramSettings[ApiBase::PARAM_TYPE] = 'string';
-                                       } elseif ( is_int( $dflt ) ) {
-                                               $paramSettings[ApiBase::PARAM_TYPE] = 'integer';
-                                       }
-                               }
-
-                               if ( isset( $paramSettings[self::PARAM_DEPRECATED] )
-                                       && $paramSettings[self::PARAM_DEPRECATED]
-                               ) {
-                                       $desc = "DEPRECATED! $desc";
-                               }
-
-                               if ( isset( $paramSettings[self::PARAM_REQUIRED] )
-                                       && $paramSettings[self::PARAM_REQUIRED]
-                               ) {
-                                       $desc .= $paramPrefix . "This parameter is required";
-                               }
-
-                               $type = isset( $paramSettings[self::PARAM_TYPE] )
-                                       ? $paramSettings[self::PARAM_TYPE]
-                                       : null;
-                               if ( isset( $type ) ) {
-                                       $hintPipeSeparated = true;
-                                       $multi = isset( $paramSettings[self::PARAM_ISMULTI] )
-                                               ? $paramSettings[self::PARAM_ISMULTI]
-                                               : false;
-                                       if ( $multi ) {
-                                               $prompt = 'Values (separate with \'|\'): ';
-                                       } else {
-                                               $prompt = 'One value: ';
-                                       }
-
-                                       if ( $type === 'submodule' ) {
-                                               $type = $this->getModuleManager()->getNames( $paramName );
-                                               sort( $type );
-                                       }
-                                       if ( is_array( $type ) ) {
-                                               $choices = array();
-                                               $nothingPrompt = '';
-                                               foreach ( $type as $t ) {
-                                                       if ( $t === '' ) {
-                                                               $nothingPrompt = 'Can be empty, or ';
-                                                       } else {
-                                                               $choices[] = $t;
-                                                       }
-                                               }
-                                               $desc .= $paramPrefix . $nothingPrompt . $prompt;
-                                               $choicesstring = implode( ', ', $choices );
-                                               $desc .= wordwrap( $choicesstring, 100, $descWordwrap );
-                                               $hintPipeSeparated = false;
-                                       } else {
-                                               switch ( $type ) {
-                                                       case 'namespace':
-                                                               // Special handling because namespaces are
-                                                               // type-limited, yet they are not given
-                                                               $desc .= $paramPrefix . $prompt;
-                                                               $desc .= wordwrap( implode( ', ', MWNamespace::getValidNamespaces() ),
-                                                                       100, $descWordwrap );
-                                                               $hintPipeSeparated = false;
-                                                               break;
-                                                       case 'limit':
-                                                               $desc .= $paramPrefix . "No more than {$paramSettings[self::PARAM_MAX]}";
-                                                               if ( isset( $paramSettings[self::PARAM_MAX2] ) ) {
-                                                                       $desc .= " ({$paramSettings[self::PARAM_MAX2]} for bots)";
-                                                               }
-                                                               $desc .= ' allowed';
-                                                               break;
-                                                       case 'integer':
-                                                               $s = $multi ? 's' : '';
-                                                               $hasMin = isset( $paramSettings[self::PARAM_MIN] );
-                                                               $hasMax = isset( $paramSettings[self::PARAM_MAX] );
-                                                               if ( $hasMin || $hasMax ) {
-                                                                       if ( !$hasMax ) {
-                                                                               $intRangeStr = "The value$s must be no less than " .
-                                                                                       "{$paramSettings[self::PARAM_MIN]}";
-                                                                       } elseif ( !$hasMin ) {
-                                                                               $intRangeStr = "The value$s must be no more than " .
-                                                                                       "{$paramSettings[self::PARAM_MAX]}";
-                                                                       } else {
-                                                                               $intRangeStr = "The value$s must be between " .
-                                                                                       "{$paramSettings[self::PARAM_MIN]} and {$paramSettings[self::PARAM_MAX]}";
-                                                                       }
-
-                                                                       $desc .= $paramPrefix . $intRangeStr;
-                                                               }
-                                                               break;
-                                                       case 'upload':
-                                                               $desc .= $paramPrefix . "Must be posted as a file upload using multipart/form-data";
-                                                               break;
-                                               }
-                                       }
-
-                                       if ( $multi ) {
-                                               if ( $hintPipeSeparated ) {
-                                                       $desc .= $paramPrefix . "Separate values with '|'";
-                                               }
-
-                                               $isArray = is_array( $type );
-                                               if ( !$isArray
-                                                       || $isArray && count( $type ) > self::LIMIT_SML1
-                                               ) {
-                                                       $desc .= $paramPrefix . "Maximum number of values " .
-                                                               self::LIMIT_SML1 . " (" . self::LIMIT_SML2 . " for bots)";
-                                               }
-                                       }
-                               }
-
-                               $default = isset( $paramSettings[self::PARAM_DFLT] ) ? $paramSettings[self::PARAM_DFLT] : null;
-                               if ( !is_null( $default ) && $default !== false ) {
-                                       $desc .= $paramPrefix . "Default: $default";
-                               }
-
-                               $msg .= sprintf( "  %-19s - %s\n", $this->encodeParamName( $paramName ), $desc );
-                       }
-
-                       return $msg;
-               }
-
-               return false;
+       public function modifyHelp( array &$help, array $options ) {
        }
 
        /**@}*/
@@ -2365,6 +2398,321 @@ abstract class ApiBase extends ContextSource {
                return array();
        }
 
+       /**
+        * Returns the description string for this module
+        *
+        * Ignored if an i18n message exists for
+        * "apihelp-{$this->getModulePathString()}-description".
+        *
+        * @deprecated since 1.25
+        * @return Message|string|array
+        */
+       protected function getDescription() {
+               return false;
+       }
+
+       /**
+        * Returns an array of parameter descriptions.
+        *
+        * For each parameter, ignored if an i18n message exists for the parameter.
+        * By default that message is
+        * "apihelp-{$this->getModulePathString()}-param-{$param}", but it may be
+        * overridden using ApiBase::PARAM_HELP_MSG in the data returned by
+        * self::getFinalParams().
+        *
+        * @deprecated since 1.25
+        * @return array|bool False on no parameter descriptions
+        */
+       protected function getParamDescription() {
+               return false;
+       }
+
+       /**
+        * Returns usage examples for this module.
+        *
+        * Return value as an array is either:
+        *  - numeric keys with partial URLs ("api.php?" plus a query string) as
+        *    values
+        *  - sequential numeric keys with even-numbered keys being display-text
+        *    and odd-numbered keys being partial urls
+        *  - partial URLs as keys with display-text (string or array-to-be-joined)
+        *    as values
+        * Return value as a string is the same as an array with a numeric key and
+        * that value, and boolean false means "no examples".
+        *
+        * @deprecated since 1.25, use getExamplesMessages() instead
+        * @return bool|string|array
+        */
+       protected function getExamples() {
+               return false;
+       }
+
+       /**
+        * Generates help message for this module, or false if there is no description
+        * @deprecated since 1.25
+        * @return string|bool
+        */
+       public function makeHelpMsg() {
+               wfDeprecated( __METHOD__, '1.25' );
+               static $lnPrfx = "\n  ";
+
+               $msg = $this->getFinalDescription();
+
+               if ( $msg !== false ) {
+
+                       if ( !is_array( $msg ) ) {
+                               $msg = array(
+                                       $msg
+                               );
+                       }
+                       $msg = $lnPrfx . implode( $lnPrfx, $msg ) . "\n";
+
+                       $msg .= $this->makeHelpArrayToString( $lnPrfx, false, $this->getHelpUrls() );
+
+                       if ( $this->isReadMode() ) {
+                               $msg .= "\nThis module requires read rights";
+                       }
+                       if ( $this->isWriteMode() ) {
+                               $msg .= "\nThis module requires write rights";
+                       }
+                       if ( $this->mustBePosted() ) {
+                               $msg .= "\nThis module only accepts POST requests";
+                       }
+                       if ( $this->isReadMode() || $this->isWriteMode() ||
+                               $this->mustBePosted()
+                       ) {
+                               $msg .= "\n";
+                       }
+
+                       // Parameters
+                       $paramsMsg = $this->makeHelpMsgParameters();
+                       if ( $paramsMsg !== false ) {
+                               $msg .= "Parameters:\n$paramsMsg";
+                       }
+
+                       $examples = $this->getExamples();
+                       if ( $examples ) {
+                               if ( !is_array( $examples ) ) {
+                                       $examples = array(
+                                               $examples
+                                       );
+                               }
+                               $msg .= "Example" . ( count( $examples ) > 1 ? 's' : '' ) . ":\n";
+                               foreach ( $examples as $k => $v ) {
+                                       if ( is_numeric( $k ) ) {
+                                               $msg .= "  $v\n";
+                                       } else {
+                                               if ( is_array( $v ) ) {
+                                                       $msgExample = implode( "\n", array_map( array( $this, 'indentExampleText' ), $v ) );
+                                               } else {
+                                                       $msgExample = "  $v";
+                                               }
+                                               $msgExample .= ":";
+                                               $msg .= wordwrap( $msgExample, 100, "\n" ) . "\n    $k\n";
+                                       }
+                               }
+                       }
+               }
+
+               return $msg;
+       }
+
+       /**
+        * @deprecated since 1.25
+        * @param string $item
+        * @return string
+        */
+       private function indentExampleText( $item ) {
+               return "  " . $item;
+       }
+
+       /**
+        * @deprecated since 1.25
+        * @param string $prefix Text to split output items
+        * @param string $title What is being output
+        * @param string|array $input
+        * @return string
+        */
+       protected function makeHelpArrayToString( $prefix, $title, $input ) {
+               wfDeprecated( __METHOD__, '1.25' );
+               if ( $input === false ) {
+                       return '';
+               }
+               if ( !is_array( $input ) ) {
+                       $input = array( $input );
+               }
+
+               if ( count( $input ) > 0 ) {
+                       if ( $title ) {
+                               $msg = $title . ( count( $input ) > 1 ? 's' : '' ) . ":\n  ";
+                       } else {
+                               $msg = '  ';
+                       }
+                       $msg .= implode( $prefix, $input ) . "\n";
+
+                       return $msg;
+               }
+
+               return '';
+       }
+
+       /**
+        * Generates the parameter descriptions for this module, to be displayed in the
+        * module's help.
+        * @deprecated since 1.25
+        * @return string|bool
+        */
+       public function makeHelpMsgParameters() {
+               wfDeprecated( __METHOD__, '1.25' );
+               $params = $this->getFinalParams( ApiBase::GET_VALUES_FOR_HELP );
+               if ( $params ) {
+
+                       $paramsDescription = $this->getFinalParamDescription();
+                       $msg = '';
+                       $paramPrefix = "\n" . str_repeat( ' ', 24 );
+                       $descWordwrap = "\n" . str_repeat( ' ', 28 );
+                       foreach ( $params as $paramName => $paramSettings ) {
+                               $desc = isset( $paramsDescription[$paramName] ) ? $paramsDescription[$paramName] : '';
+                               if ( is_array( $desc ) ) {
+                                       $desc = implode( $paramPrefix, $desc );
+                               }
+
+                               //handle shorthand
+                               if ( !is_array( $paramSettings ) ) {
+                                       $paramSettings = array(
+                                               self::PARAM_DFLT => $paramSettings,
+                                       );
+                               }
+
+                               //handle missing type
+                               if ( !isset( $paramSettings[ApiBase::PARAM_TYPE] ) ) {
+                                       $dflt = isset( $paramSettings[ApiBase::PARAM_DFLT] )
+                                               ? $paramSettings[ApiBase::PARAM_DFLT]
+                                               : null;
+                                       if ( is_bool( $dflt ) ) {
+                                               $paramSettings[ApiBase::PARAM_TYPE] = 'boolean';
+                                       } elseif ( is_string( $dflt ) || is_null( $dflt ) ) {
+                                               $paramSettings[ApiBase::PARAM_TYPE] = 'string';
+                                       } elseif ( is_int( $dflt ) ) {
+                                               $paramSettings[ApiBase::PARAM_TYPE] = 'integer';
+                                       }
+                               }
+
+                               if ( isset( $paramSettings[self::PARAM_DEPRECATED] )
+                                       && $paramSettings[self::PARAM_DEPRECATED]
+                               ) {
+                                       $desc = "DEPRECATED! $desc";
+                               }
+
+                               if ( isset( $paramSettings[self::PARAM_REQUIRED] )
+                                       && $paramSettings[self::PARAM_REQUIRED]
+                               ) {
+                                       $desc .= $paramPrefix . "This parameter is required";
+                               }
+
+                               $type = isset( $paramSettings[self::PARAM_TYPE] )
+                                       ? $paramSettings[self::PARAM_TYPE]
+                                       : null;
+                               if ( isset( $type ) ) {
+                                       $hintPipeSeparated = true;
+                                       $multi = isset( $paramSettings[self::PARAM_ISMULTI] )
+                                               ? $paramSettings[self::PARAM_ISMULTI]
+                                               : false;
+                                       if ( $multi ) {
+                                               $prompt = 'Values (separate with \'|\'): ';
+                                       } else {
+                                               $prompt = 'One value: ';
+                                       }
+
+                                       if ( $type === 'submodule' ) {
+                                               $type = $this->getModuleManager()->getNames( $paramName );
+                                               sort( $type );
+                                       }
+                                       if ( is_array( $type ) ) {
+                                               $choices = array();
+                                               $nothingPrompt = '';
+                                               foreach ( $type as $t ) {
+                                                       if ( $t === '' ) {
+                                                               $nothingPrompt = 'Can be empty, or ';
+                                                       } else {
+                                                               $choices[] = $t;
+                                                       }
+                                               }
+                                               $desc .= $paramPrefix . $nothingPrompt . $prompt;
+                                               $choicesstring = implode( ', ', $choices );
+                                               $desc .= wordwrap( $choicesstring, 100, $descWordwrap );
+                                               $hintPipeSeparated = false;
+                                       } else {
+                                               switch ( $type ) {
+                                                       case 'namespace':
+                                                               // Special handling because namespaces are
+                                                               // type-limited, yet they are not given
+                                                               $desc .= $paramPrefix . $prompt;
+                                                               $desc .= wordwrap( implode( ', ', MWNamespace::getValidNamespaces() ),
+                                                                       100, $descWordwrap );
+                                                               $hintPipeSeparated = false;
+                                                               break;
+                                                       case 'limit':
+                                                               $desc .= $paramPrefix . "No more than {$paramSettings[self::PARAM_MAX]}";
+                                                               if ( isset( $paramSettings[self::PARAM_MAX2] ) ) {
+                                                                       $desc .= " ({$paramSettings[self::PARAM_MAX2]} for bots)";
+                                                               }
+                                                               $desc .= ' allowed';
+                                                               break;
+                                                       case 'integer':
+                                                               $s = $multi ? 's' : '';
+                                                               $hasMin = isset( $paramSettings[self::PARAM_MIN] );
+                                                               $hasMax = isset( $paramSettings[self::PARAM_MAX] );
+                                                               if ( $hasMin || $hasMax ) {
+                                                                       if ( !$hasMax ) {
+                                                                               $intRangeStr = "The value$s must be no less than " .
+                                                                                       "{$paramSettings[self::PARAM_MIN]}";
+                                                                       } elseif ( !$hasMin ) {
+                                                                               $intRangeStr = "The value$s must be no more than " .
+                                                                                       "{$paramSettings[self::PARAM_MAX]}";
+                                                                       } else {
+                                                                               $intRangeStr = "The value$s must be between " .
+                                                                                       "{$paramSettings[self::PARAM_MIN]} and {$paramSettings[self::PARAM_MAX]}";
+                                                                       }
+
+                                                                       $desc .= $paramPrefix . $intRangeStr;
+                                                               }
+                                                               break;
+                                                       case 'upload':
+                                                               $desc .= $paramPrefix . "Must be posted as a file upload using multipart/form-data";
+                                                               break;
+                                               }
+                                       }
+
+                                       if ( $multi ) {
+                                               if ( $hintPipeSeparated ) {
+                                                       $desc .= $paramPrefix . "Separate values with '|'";
+                                               }
+
+                                               $isArray = is_array( $type );
+                                               if ( !$isArray
+                                                       || $isArray && count( $type ) > self::LIMIT_SML1
+                                               ) {
+                                                       $desc .= $paramPrefix . "Maximum number of values " .
+                                                               self::LIMIT_SML1 . " (" . self::LIMIT_SML2 . " for bots)";
+                                               }
+                                       }
+                               }
+
+                               $default = isset( $paramSettings[self::PARAM_DFLT] ) ? $paramSettings[self::PARAM_DFLT] : null;
+                               if ( !is_null( $default ) && $default !== false ) {
+                                       $desc .= $paramPrefix . "Default: $default";
+                               }
+
+                               $msg .= sprintf( "  %-19s - %s\n", $this->encodeParamName( $paramName ), $desc );
+                       }
+
+                       return $msg;
+               }
+
+               return false;
+       }
+
        /**@}*/
 }
 
index 2a57688..f0037bb 100644 (file)
@@ -30,8 +30,8 @@
  * @ingroup API
  */
 abstract class ApiFormatBase extends ApiBase {
-       private $mIsHtml, $mFormat, $mUnescapeAmps, $mHelp, $mCleared;
-       private $mBufferResult = false, $mBuffer, $mDisabled = false;
+       private $mIsHtml, $mFormat, $mUnescapeAmps, $mHelp;
+       private $mBuffer, $mDisabled = false;
 
        /**
         * If $format ends with 'fm', pretty-print the output in HTML.
@@ -48,12 +48,14 @@ abstract class ApiFormatBase extends ApiBase {
                        $this->mFormat = $format;
                }
                $this->mFormat = strtoupper( $this->mFormat );
-               $this->mCleared = false;
        }
 
        /**
         * Overriding class returns the MIME type that should be sent to the client.
-        * This method is not called if getIsHtml() returns true.
+        *
+        * When getIsHtml() returns true, the return value here is used for syntax
+        * highlighting but the client sees text/html.
+        *
         * @return string
         */
        abstract public function getMimeType();
@@ -74,19 +76,6 @@ abstract class ApiFormatBase extends ApiBase {
                return $this->mFormat;
        }
 
-       /**
-        * Specify whether or not sequences like &amp;quot; should be unescaped
-        * to &quot; . This should only be set to true for the help message
-        * when rendered in the default (xmlfm) format. This is a temporary
-        * special-case fix that should be removed once the help has been
-        * reworked to use a fully HTML interface.
-        *
-        * @param bool $b Whether or not ampersands should be escaped.
-        */
-       public function setUnescapeAmps( $b ) {
-               $this->mUnescapeAmps = $b;
-       }
-
        /**
         * Returns true when the HTML pretty-printer should be used.
         * The default implementation assumes that formats ending with 'fm'
@@ -98,30 +87,27 @@ abstract class ApiFormatBase extends ApiBase {
        }
 
        /**
-        * Whether this formatter can format the help message in a nice way.
-        * By default, this returns the same as getIsHtml().
-        * When action=help is set explicitly, the help will always be shown
-        * @return bool
-        */
-       public function getWantsHelp() {
-               return $this->getIsHtml();
-       }
-
-       /**
-        * Disable the formatter completely. This causes calls to initPrinter(),
-        * printText() and closePrinter() to be ignored.
+        * Disable the formatter.
+        *
+        * This causes calls to initPrinter() and closePrinter() to be ignored.
         */
        public function disable() {
                $this->mDisabled = true;
        }
 
+       /**
+        * Whether the printer is disabled
+        * @return bool
+        */
        public function isDisabled() {
                return $this->mDisabled;
        }
 
        /**
-        * Whether this formatter can handle printing API errors. If this returns
-        * false, then on API errors the default printer will be instantiated.
+        * Whether this formatter can handle printing API errors.
+        *
+        * If this returns false, then on API errors the default printer will be
+        * instantiated.
         * @since 1.23
         * @return bool
         */
@@ -130,24 +116,19 @@ abstract class ApiFormatBase extends ApiBase {
        }
 
        /**
-        * Initialize the printer function and prepare the output headers, etc.
-        * This method must be the first outputting method during execution.
-        * A human-targeted notice about available formats is printed for the HTML-based output,
-        * except for help screens (caused by either an error in the API parameters,
-        * the calling of action=help, or requesting the root script api.php).
-        * @param bool $isHelpScreen Whether a help screen is going to be shown
+        * Initialize the printer function and prepare the output headers.
+        * @param bool $unused Always false since 1.25
         */
-       function initPrinter( $isHelpScreen ) {
+       function initPrinter( $unused = false ) {
                if ( $this->mDisabled ) {
                        return;
                }
-               $isHtml = $this->getIsHtml();
-               $mime = $isHtml ? 'text/html' : $this->getMimeType();
-               $script = wfScript( 'api' );
+
+               $mime = $this->getIsHtml() ? 'text/html' : $this->getMimeType();
 
                // Some printers (ex. Feed) do their own header settings,
                // in which case $mime will be set to null
-               if ( is_null( $mime ) ) {
+               if ( $mime === null ) {
                        return; // skip any initialization
                }
 
@@ -158,91 +139,61 @@ abstract class ApiFormatBase extends ApiBase {
                if ( $apiFrameOptions ) {
                        $this->getMain()->getRequest()->response()->header( "X-Frame-Options: $apiFrameOptions" );
                }
-
-               if ( $isHtml ) {
-?>
-<!DOCTYPE HTML>
-<html>
-<head>
-<?php
-                       if ( $this->mUnescapeAmps ) {
-?>     <title>MediaWiki API</title>
-<?php
-                       } else {
-?>     <title>MediaWiki API Result</title>
-<?php
-                       }
-?>
-</head>
-<body>
-<?php
-                       if ( !$isHelpScreen ) {
-// @codingStandardsIgnoreStart Exclude long line from CodeSniffer checks
-?>
-<br />
-<small>
-You are looking at the HTML representation of the <?php echo $this->mFormat; ?> format.<br />
-HTML is good for debugging, but is unsuitable for application use.<br />
-Specify the format parameter to change the output format.<br />
-To see the non HTML representation of the <?php echo $this->mFormat; ?> format, set format=<?php echo strtolower( $this->mFormat ); ?>.<br />
-See the <a href='https://www.mediawiki.org/wiki/API'>complete documentation</a>, or
-<a href='<?php echo $script; ?>'>API help</a> for more information.
-</small>
-<pre style='white-space: pre-wrap;'>
-<?php
-// @codingStandardsIgnoreEnd
-                       // don't wrap the contents of the <pre> for help screens
-                       // because these are actually formatted to rely on
-                       // the monospaced font for layout purposes
-                       } else {
-?>
-<pre>
-<?php
-                       }
-               }
        }
 
        /**
-        * Finish printing. Closes HTML tags.
+        * Finish printing and output buffered data.
         */
        public function closePrinter() {
                if ( $this->mDisabled ) {
                        return;
                }
-               if ( $this->getIsHtml() ) {
-?>
 
-</pre>
-</body>
-</html>
-<?php
+               $mime = $this->getMimeType();
+               if ( $this->getIsHtml() && $mime !== null ) {
+                       $format = $this->getFormat();
+                       $result = $this->getBuffer();
+
+                       $context = new DerivativeContext( $this->getMain() );
+                       $context->setSkin( SkinFactory::getDefaultInstance()->makeSkin( 'apioutput' ) );
+                       $context->setTitle( SpecialPage::getTitleFor( 'ApiHelp' ) );
+                       $out = new OutputPage( $context );
+                       $context->setOutput( $out );
+
+                       $out->addModules( 'mediawiki.apipretty' );
+                       $out->setPageTitle( $context->msg( 'api-format-title' ) );
+
+                       $header = $context->msg( 'api-format-prettyprint-header' )
+                          ->params( $format, strtolower( $format ) )
+                          ->parseAsBlock();
+                       $out->addHTML(
+                               Html::rawElement( 'div', array( 'class' => 'api-pretty-header' ),
+                                       ApiHelp::fixHelpLinks( $header )
+                               )
+                       );
+
+                       if ( wfRunHooks( 'ApiFormatHighlight', array( $context, $result, $mime, $format ) ) ) {
+                               $out->addHTML(
+                                       Html::element( 'pre', array( 'class' => 'api-pretty-content' ), $result )
+                               );
+                       }
+
+                       $out->output();
+               } else {
+                       // For non-HTML output, clear all errors that might have been
+                       // displayed if display_errors=On
+                       ob_clean();
+
+                       echo $this->getBuffer();
                }
        }
 
        /**
-        * The main format printing function. Call it to output the result
-        * string to the user. This function will automatically output HTML
-        * when format name ends in 'fm'.
+        * Append text to the output buffer.
         * @param string $text
         */
        public function printText( $text ) {
-               if ( $this->mDisabled ) {
-                       return;
-               }
-               if ( $this->mBufferResult ) {
-                       $this->mBuffer = $text;
-               } elseif ( $this->getIsHtml() ) {
-                       echo $this->formatHTML( $text );
-               } else {
-                       // For non-HTML output, clear all errors that might have been
-                       // displayed if display_errors=On
-                       // Do this only once, of course
-                       if ( !$this->mCleared ) {
-                               ob_clean();
-                               $this->mCleared = true;
-                       }
-                       echo $text;
-               }
+               $this->mBuffer .= $text;
        }
 
        /**
@@ -253,29 +204,81 @@ See the <a href='https://www.mediawiki.org/wiki/API'>complete documentation</a>,
                return $this->mBuffer;
        }
 
+       public function getExamplesMessages() {
+               return array(
+                       'action=query&meta=siteinfo&siprop=namespaces&format=' . $this->getModuleName()
+                               => array( 'apihelp-format-example-generic', $this->getFormat() )
+               );
+       }
+
+       public function getHelpUrls() {
+               return 'https://www.mediawiki.org/wiki/API:Data_formats';
+       }
+
        /**
-        * Set the flag to buffer the result instead of printing it.
-        * @param bool $value
+        * To avoid code duplication with the deprecation of dbg, dump, txt, wddx,
+        * and yaml, this method is added to do the necessary work. It should be
+        * removed when those deprecated formats are removed.
         */
-       public function setBufferResult( $value ) {
-               $this->mBufferResult = $value;
+       protected function markDeprecated() {
+               $fm = $this->getIsHtml() ? 'fm' : '';
+               $name = $this->getModuleName();
+               $this->logFeatureUsage( "format=$name" );
+               $this->setWarning( "format=$name has been deprecated. Please use format=json$fm instead." );
+       }
+
+       /************************************************************************//**
+        * @name   Deprecated
+        * @{
+        */
+
+       /**
+        * Specify whether or not sequences like &amp;quot; should be unescaped
+        * to &quot; . This should only be set to true for the help message
+        * when rendered in the default (xmlfm) format. This is a temporary
+        * special-case fix that should be removed once the help has been
+        * reworked to use a fully HTML interface.
+        *
+        * @deprecated since 1.25
+        * @param bool $b Whether or not ampersands should be escaped.
+        */
+       public function setUnescapeAmps( $b ) {
+               wfDeprecated( __METHOD__, '1.25' );
+               $this->mUnescapeAmps = $b;
+       }
+
+       /**
+        * Whether this formatter can format the help message in a nice way.
+        * By default, this returns the same as getIsHtml().
+        * When action=help is set explicitly, the help will always be shown
+        * @deprecated since 1.25
+        * @return bool
+        */
+       public function getWantsHelp() {
+               wfDeprecated( __METHOD__, '1.25' );
+               return $this->getIsHtml();
        }
 
        /**
         * Sets whether the pretty-printer should format *bold*
+        * @deprecated since 1.25
         * @param bool $help
         */
        public function setHelp( $help = true ) {
+               wfDeprecated( __METHOD__, '1.25' );
                $this->mHelp = $help;
        }
 
        /**
         * Pretty-print various elements in HTML format, such as xml tags and
         * URLs. This method also escapes characters like <
+        * @deprecated since 1.25
         * @param string $text
         * @return string
         */
        protected function formatHTML( $text ) {
+               wfDeprecated( __METHOD__, '1.25' );
+
                // Escape everything first for full coverage
                $text = htmlspecialchars( $text );
 
@@ -328,30 +331,26 @@ See the <a href='https://www.mediawiki.org/wiki/API'>complete documentation</a>,
                return $text;
        }
 
-       public function getExamples() {
-               return array(
-                       'api.php?action=query&meta=siteinfo&siprop=namespaces&format=' . $this->getModuleName()
-                               => "Format the query result in the {$this->getModuleName()} format",
-               );
-       }
-
-       public function getHelpUrls() {
-               return 'https://www.mediawiki.org/wiki/API:Data_formats';
-       }
-
+       /**
+        * @see ApiBase::getDescription
+        * @deprecated since 1.25
+        */
        public function getDescription() {
                return $this->getIsHtml() ? ' (pretty-print in HTML)' : '';
        }
 
        /**
-        * To avoid code duplication with the deprecation of dbg, dump, txt, wddx,
-        * and yaml, this method is added to do the necessary work. It should be
-        * removed when those deprecated formats are removed.
+        * Set the flag to buffer the result instead of printing it.
+        * @deprecated since 1.25, output is always buffered
+        * @param bool $value
         */
-       protected function markDeprecated() {
-               $fm = $this->getIsHtml() ? 'fm' : '';
-               $name = $this->getModuleName();
-               $this->logFeatureUsage( "format=$name" );
-               $this->setWarning( "format=$name has been deprecated. Please use format=json$fm instead." );
+       public function setBufferResult( $value ) {
        }
+
+       /**@}*/
 }
+
+/**
+ * For really cool vim folding this needs to be at the end:
+ * vim: foldmarker=@{,@} foldmethod=marker
+ */
index 5ec518b..273e205 100644 (file)
@@ -43,7 +43,7 @@ class ApiFormatDbg extends ApiFormatBase {
                $this->printText( var_export( $this->getResultData(), true ) );
        }
 
-       public function getDescription() {
-               return 'DEPRECATED! Output data in PHP\'s var_export() format' . parent::getDescription();
+       public function isDeprecated() {
+               return true;
        }
 }
index d4c7cab..7ef8960 100644 (file)
@@ -47,7 +47,7 @@ class ApiFormatDump extends ApiFormatBase {
                $this->printText( $result );
        }
 
-       public function getDescription() {
-               return 'DEPRECATED! Output data in PHP\'s var_dump() format' . parent::getDescription();
+       public function isDeprecated() {
+               return true;
        }
 }
index 6c5ad38..ce8656e 100644 (file)
@@ -51,7 +51,11 @@ class ApiFormatJson extends ApiFormatBase {
                return $this->mIsRaw;
        }
 
+       /**
+        * @deprecated since 1.25
+        */
        public function getWantsHelp() {
+               wfDeprecated( __METHOD__, '1.25' );
                // Help is always ugly in JSON
                return false;
        }
@@ -76,25 +80,13 @@ class ApiFormatJson extends ApiFormatBase {
 
        public function getAllowedParams() {
                return array(
-                       'callback' => null,
-                       'utf8' => false,
+                       'callback' => array(
+                               ApiBase::PARAM_HELP_MSG => 'apihelp-json-param-callback',
+                       ),
+                       'utf8' => array(
+                               ApiBase::PARAM_DFLT => false,
+                               ApiBase::PARAM_HELP_MSG => 'apihelp-json-param-utf8',
+                       ),
                );
        }
-
-       public function getParamDescription() {
-               return array(
-                       'callback' => 'If specified, wraps the output into a given function ' .
-                               'call. For safety, all user-specific data will be restricted.',
-                       'utf8' => 'If specified, encodes most (but not all) non-ASCII ' .
-                               'characters as UTF-8 instead of replacing them with hexadecimal escape sequences.',
-               );
-       }
-
-       public function getDescription() {
-               if ( $this->mIsRaw ) {
-                       return 'Output data with the debugging elements in JSON format' . parent::getDescription();
-               }
-
-               return 'Output data in JSON format' . parent::getDescription();
-       }
 }
index 78023af..dc623ac 100644 (file)
@@ -36,8 +36,4 @@ class ApiFormatNone extends ApiFormatBase {
 
        public function execute() {
        }
-
-       public function getDescription() {
-               return 'Output nothing' . parent::getDescription();
-       }
 }
index b2d1f04..ae93812 100644 (file)
@@ -37,8 +37,4 @@ class ApiFormatPhp extends ApiFormatBase {
        public function execute() {
                $this->printText( serialize( $this->getResultData() ) );
        }
-
-       public function getDescription() {
-               return 'Output data in serialized PHP format' . parent::getDescription();
-       }
 }
index 3f5c8b7..81d2f4f 100644 (file)
  */
 class ApiFormatRaw extends ApiFormatBase {
 
+       private $errorFallback;
+
        /**
         * @param ApiMain $main
         * @param ApiFormatBase $errorFallback Object to fall back on for errors
         */
        public function __construct( ApiMain $main, ApiFormatBase $errorFallback ) {
                parent::__construct( $main, 'raw' );
-               $this->mErrorFallback = $errorFallback;
+               $this->errorFallback = $errorFallback;
        }
 
        public function getMimeType() {
                $data = $this->getResultData();
 
                if ( isset( $data['error'] ) ) {
-                       return $this->mErrorFallback->getMimeType();
+                       return $this->errorFallback->getMimeType();
                }
 
                if ( !isset( $data['mime'] ) ) {
@@ -53,11 +55,28 @@ class ApiFormatRaw extends ApiFormatBase {
                return $data['mime'];
        }
 
-       public function execute() {
+       public function initPrinter( $unused = false ) {
+               $data = $this->getResultData();
+               if ( isset( $data['error'] ) ) {
+                       $this->errorFallback->initPrinter( $unused );
+               } else {
+                       parent::initPrinter( $unused );
+               }
+       }
+
+       public function closePrinter() {
                $data = $this->getResultData();
                if ( isset( $data['error'] ) ) {
-                       $this->mErrorFallback->execute();
+                       $this->errorFallback->closePrinter();
+               } else {
+                       parent::closePrinter();
+               }
+       }
 
+       public function execute() {
+               $data = $this->getResultData();
+               if ( isset( $data['error'] ) ) {
+                       $this->errorFallback->execute();
                        return;
                }
 
index c451ed7..505b259 100644 (file)
@@ -43,7 +43,7 @@ class ApiFormatTxt extends ApiFormatBase {
                $this->printText( print_r( $this->getResultData(), true ) );
        }
 
-       public function getDescription() {
-               return 'DEPRECATED! Output data in PHP\'s print_r() format' . parent::getDescription();
+       public function isDeprecated() {
+               return true;
        }
 }
index ba90c26..e2d4d61 100644 (file)
@@ -109,7 +109,7 @@ class ApiFormatWddx extends ApiFormatBase {
                }
        }
 
-       public function getDescription() {
-               return 'DEPRECATED! Output data in WDDX format' . parent::getDescription();
+       public function isDeprecated() {
+               return true;
        }
 }
index b3d5937..7010dd6 100644 (file)
@@ -237,20 +237,13 @@ class ApiFormatXml extends ApiFormatBase {
 
        public function getAllowedParams() {
                return array(
-                       'xslt' => null,
-                       'includexmlnamespace' => false,
+                       'xslt' => array(
+                               ApiBase::PARAM_HELP_MSG => 'apihelp-xml-param-xslt',
+                       ),
+                       'includexmlnamespace' => array(
+                               ApiBase::PARAM_DFLT => false,
+                               ApiBase::PARAM_HELP_MSG => 'apihelp-xml-param-includexmlnamespace',
+                       ),
                );
        }
-
-       public function getParamDescription() {
-               return array(
-                       'xslt' => 'If specified, adds <xslt> as stylesheet. This should be a wiki page '
-                               . 'in the MediaWiki namespace whose page name ends with ".xsl"',
-                       'includexmlnamespace' => 'If specified, adds an XML namespace'
-               );
-       }
-
-       public function getDescription() {
-               return 'Output data in XML format' . parent::getDescription();
-       }
 }
index 3798f89..c9089a7 100644 (file)
@@ -40,7 +40,7 @@ class ApiFormatYaml extends ApiFormatJson {
                parent::execute();
        }
 
-       public function getDescription() {
-               return 'DEPRECATED! Output data in YAML format' . ApiFormatBase::getDescription();
+       public function isDeprecated() {
+               return true;
        }
 }
index bcd6c12..8ae05e0 100644 (file)
@@ -2,9 +2,9 @@
 /**
  *
  *
- * Created on Sep 6, 2006
+ * Created on Aug 29, 2014
  *
- * Copyright © 2006 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
+ * Copyright © 2014 Brad Jorsch <bjorsch@wikimedia.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  */
 
 /**
- * This is a simple class to handle action=help
+ * Class to output help for an API module
  *
+ * @since 1.25 completely rewritten
  * @ingroup API
  */
 class ApiHelp extends ApiBase {
-       /**
-        * Module for displaying help
-        */
        public function execute() {
-               // Get parameters
+               global $wgContLang;
+
                $params = $this->extractRequestParams();
+               $modules = array();
 
-               if ( !isset( $params['modules'] ) && !isset( $params['querymodules'] ) ) {
-                       $this->dieUsage( '', 'help' );
+               foreach ( $params['modules'] as $path ) {
+                       $modules[] = $this->getModuleFromPath( $path );
                }
 
-               $this->getMain()->setHelp();
-               $result = $this->getResult();
+               // Get the help
+               $context = new DerivativeContext( $this->getMain()->getContext() );
+               $context->setSkin( SkinFactory::getDefaultInstance()->makeSkin( 'apioutput' ) );
+               $context->setLanguage( $this->getMain()->getLanguage() );
+               $context->setTitle( SpecialPage::getTitleFor( 'ApiHelp' ) );
+               $out = new OutputPage( $context );
+               $context->setOutput( $out );
 
-               if ( is_array( $params['modules'] ) ) {
-                       $modules = $params['modules'];
+               self::getHelp( $context, $modules, $params );
+
+               // Grab the output from the skin
+               ob_start();
+               $context->getOutput()->output();
+               $html = ob_get_clean();
+
+               $result = $this->getResult();
+               if ( $params['wrap'] ) {
+                       $data = array(
+                               'mime' => 'text/html',
+                               'help' => $help,
+                       );
+                       $result->setSubelements( $data, 'help' );
+                       $result->addValue( null, $this->getModuleName(), $data );
                } else {
-                       $modules = array();
+                       $result->reset();
+                       $result->addValue( null, 'text', $html, ApiResult::NO_SIZE_CHECK );
+                       $result->addValue( null, 'mime', 'text/html', ApiResult::NO_SIZE_CHECK );
                }
+       }
+
+       /**
+        * Generate help for the specified modules
+        *
+        * Help is placed into the OutputPage object returned by
+        * $context->getOutput().
+        *
+        * Recognized options include:
+        *  - headerlevel: (int) Header tag level
+        *  - nolead: (bool) Skip the inclusion of api-help-lead
+        *  - noheader: (bool) Skip the inclusion of the top-level section headers
+        *  - submodules: (bool) Include help for submodules of the current module
+        *  - recursivesubmodules: (bool) Include help for submodules recursively
+        *  - helptitle: (string) Title to link for additional modules' help. Should contain $1.
+        *
+        * @param IContextSource $context
+        * @param ApiBase[]|ApiBase $modules
+        * @param array $options Formatting options (described above)
+        * @return string
+        */
+       public static function getHelp( IContextSource $context, $modules, array $options ) {
+               global $wgMemc, $wgContLang;
+
+               if ( !is_array( $modules ) ) {
+                       $modules = array( $modules );
+               }
+
+               $out = $context->getOutput();
+               $out->addModules( 'mediawiki.apihelp' );
+               $out->setPageTitle( $context->msg( 'api-help-title' ) );
 
-               if ( is_array( $params['querymodules'] ) ) {
-                       $this->logFeatureUsage( 'action=help&querymodules' );
-                       $queryModules = $params['querymodules'];
-                       foreach ( $queryModules as $m ) {
-                               $modules[] = 'query+' . $m;
+               $cacheKey = null;
+               if ( count( $modules ) == 1 && $modules[0] instanceof ApiMain &&
+                       $options['recursivesubmodules'] && $context->getLanguage() === $wgContLang
+               ) {
+                       $cacheHelpTimeout = $context->getConfig()->get( 'APICacheHelpTimeout' );
+                       if ( $cacheHelpTimeout > 0 ) {
+                               // Get help text from cache if present
+                               $cacheKey = wfMemcKey( 'apihelp', $modules[0]->getModulePath(),
+                                       str_replace( ' ', '_', SpecialVersion::getVersion( 'nodb' ) ) );
+                               $cached = $wgMemc->get( $cacheKey );
+                               if ( $cached ) {
+                                       $out->addHTML( $cached );
+                                       return;
+                               }
                        }
-               } else {
-                       $queryModules = array();
                }
+               if ( $out->getHTML() !== '' ) {
+                       // Don't save to cache, there's someone else's content in the page
+                       // already
+                       $cacheKey = null;
+               }
+
+               $options['recursivesubmodules'] = !empty( $options['recursivesubmodules'] );
+               $options['submodules'] = $options['recursivesubmodules'] || !empty( $options['submodules'] );
 
-               $r = array();
-               foreach ( $modules as $m ) {
-                       // sub-modules could be given in the form of "name[+name[+name...]]"
-                       $subNames = explode( '+', $m );
-                       if ( count( $subNames ) === 1 ) {
-                               // In case the '+' was typed into URL, it resolves as a space
-                               $subNames = explode( ' ', $m );
+               // Prepend lead
+               if ( empty( $options['nolead'] ) ) {
+                       $msg = $context->msg( 'api-help-lead' );
+                       if ( !$msg->isDisabled() ) {
+                               $out->addHTML( $msg->parseAsBlock() );
                        }
+               }
 
-                       $module = $this->getMain();
-                       $subNamesCount = count( $subNames );
-                       for ( $i = 0; $i < $subNamesCount; $i++ ) {
-                               $subs = $module->getModuleManager();
-                               if ( $subs === null ) {
-                                       $module = null;
-                               } else {
-                                       $module = $subs->getModule( $subNames[$i] );
-                               }
+               $haveModules = array();
+               $out->addHTML( self::getHelpInternal( $context, $modules, $options, $haveModules ) );
 
-                               if ( $module === null ) {
-                                       if ( count( $subNames ) === 2
-                                               && $i === 1
-                                               && $subNames[0] === 'query'
-                                               && in_array( $subNames[1], $queryModules )
-                                       ) {
-                                               // Legacy: This is one of the renamed 'querymodule=...' parameters,
-                                               // do not use '+' notation in the output, use submodule's name instead.
-                                               $name = $subNames[1];
-                                       } else {
-                                               $name = implode( '+', array_slice( $subNames, 0, $i + 1 ) );
-                                       }
-                                       $r[] = array( 'name' => $name, 'missing' => '' );
-                                       break;
+               $helptitle = isset( $options['helptitle'] ) ? $options['helptitle'] : null;
+               $html = self::fixHelpLinks( $out->getHTML(), $helptitle, $haveModules );
+               $out->clearHTML();
+               $out->addHTML( $html );
+
+               if ( $cacheKey !== null ) {
+                       $wgMemc->set( $cacheKey, $out->getHTML(), $cacheHelpTimeout );
+               }
+       }
+
+       /**
+        * Replace Special:ApiHelp links with links to api.php
+        *
+        * @param string $html
+        * @param string|null $helptitle Title to link to rather than api.php, must contain '$1'
+        * @param array $localModules Modules to link within the current page
+        * @return string
+        */
+       public static function fixHelpLinks( $html, $helptitle = null, $localModules = array() ) {
+               $formatter = new HtmlFormatter( $html );
+               $doc = $formatter->getDoc();
+               $xpath = new DOMXPath( $doc );
+               $nodes = $xpath->query( '//a[@href][not(contains(@class,\'apihelp-linktrail\'))]' );
+               foreach ( $nodes as $node ) {
+                       $href = $node->getAttribute( 'href' );
+                       do {
+                               $old = $href;
+                               $href = rawurldecode( $href );
+                       } while ( $old !== $href );
+                       if ( preg_match( '!Special:ApiHelp/([^&/|]+)!', $href, $m ) ) {
+                               if ( isset( $localModules[$m[1]] ) ) {
+                                       $href = '#' . $m[1];
+                               } elseif ( $helptitle !== null ) {
+                                       $href = Title::newFromText( str_replace( '$1', $m[1], $helptitle ) )
+                                               ->getFullUrl();
                                } else {
-                                       $type = $subs->getModuleGroup( $subNames[$i] );
+                                       $href = wfAppendQuery( wfScript( 'api' ), array(
+                                               'action' => 'help',
+                                               'modules' => $m[1],
+                                       ) );
                                }
-                       }
-
-                       if ( $module !== null ) {
-                               $r[] = $this->buildModuleHelp( $module, $type );
+                               $node->setAttribute( 'href', $href );
+                               $node->removeAttribute( 'title' );
                        }
                }
 
-               $result->setIndexedTagName( $r, 'module' );
-               $result->addValue( null, $this->getModuleName(), $r );
+               return $formatter->getText();
+       }
+
+       /**
+        * Wrap a message in HTML with a class.
+        *
+        * @param Message $msg
+        * @param string $class
+        * @param string $tag
+        * @return string
+        */
+       private static function wrap( Message $msg, $class, $tag = 'span' ) {
+               return Html::rawElement( $tag, array( 'class' => $class ),
+                       $msg->parse()
+               );
        }
 
        /**
-        * @param ApiBase $module
-        * @param string $type What type of request is this? e.g. action, query, list, prop, meta, format
+        * Recursively-called function to actually construct the help
+        *
+        * @param IContextSource $context
+        * @param ApiBase[] $modules
+        * @param array $options
+        * @param array &$haveModules
         * @return string
         */
-       private function buildModuleHelp( $module, $type ) {
-               $msg = ApiMain::makeHelpMsgHeader( $module, $type );
+       private static function getHelpInternal( IContextSource $context, array $modules,
+               array $options, &$haveModules
+       ) {
+               $out = '';
+
+               $level = min( 6, empty( $options['headerlevel'] ) ? 2 : $options['headerlevel'] );
+               $options['headerlevel'] = $level;
+
+               foreach ( $modules as $module ) {
+                       $haveModules[$module->getModulePath()] = true;
+                       $module->setContext( $context );
+                       $help = array(
+                               'header' => '',
+                               'flags' => '',
+                               'description' => '',
+                               'help-urls' => '',
+                               'parameters' => '',
+                               'examples' => '',
+                               'submodules' => '',
+                       );
+
+                       if ( empty( $options['noheader'] ) ) {
+                               $path = $module->getModulePath();
+                               if ( $module->isMain() ) {
+                                       $header = $context->msg( 'api-help-main-header' )->parse();
+                               } else {
+                                       $name = $module->getModuleName();
+                                       $header = $module->getParent()->getModuleManager()->getModuleGroup( $name ) .
+                                               "=$name";
+                                       if ( $module->getModulePrefix() !== '' ) {
+                                               $header .= ' ' .
+                                                       $context->msg( 'parentheses', $module->getModulePrefix() )->parse();
+                                       }
+                               }
+                               $help['header'] .= Html::element( "h$level",
+                                       array( 'id' => $path, 'class' => 'apihelp-header' ),
+                                       $header
+                               );
+                       }
+
+                       $links = array();
+                       $any = false;
+                       for ( $m = $module; $m !== null; $m = $m->getParent() ) {
+                               $name = $m->getModuleName();
+                               if ( $name === 'main_int' ) {
+                                       $name = 'main';
+                               }
+
+                               if ( count( $modules ) === 1 && $m === $modules[0] &&
+                                       !( !empty( $options['submodules'] ) && $m->getModuleManager() )
+                               ) {
+                                       $link = Html::element( 'b', null, $name );
+                               } else {
+                                       $link = SpecialPage::getTitleFor( 'ApiHelp', $m->getModulePath() )->getLocalURL();
+                                       $link = Html::element( 'a',
+                                               array( 'href' => $link, 'class' => 'apihelp-linktrail' ),
+                                               $name
+                                       );
+                                       $any = true;
+                               }
+                               array_unshift( $links, $link );
+                       }
+                       if ( $any ) {
+                               $help['header'] .= self::wrap(
+                                       $context->msg( 'parentheses' )
+                                               ->rawParams( $context->getLanguage()->pipeList( $links ) ),
+                                       'apihelp-linktrail', 'div'
+                               );
+                       }
+
+                       $flags = $module->getHelpFlags();
+                       if ( $flags ) {
+                               $help['flags'] .= Html::openElement( 'div',
+                                       array( 'class' => 'apihelp-block apihelp-flags' ) );
+                               $msg = $context->msg( 'api-help-flags' );
+                               if ( !$msg->isDisabled() ) {
+                                       $help['flags'] .= self::wrap(
+                                               $msg->numParams( count( $flags ) ), 'apihelp-block-head', 'div'
+                                       );
+                               }
+                               $help['flags'] .= Html::openElement( 'ul' );
+                               foreach ( $flags as $flag ) {
+                                       $help['flags'] .= Html::rawElement( 'li', null,
+                                               self::wrap( $context->msg( "api-help-flag-$flag" ), "apihelp-flag-$flag" )
+                                       );
+                               }
+                               $help['flags'] .= Html::closeElement( 'ul' );
+                               $help['flags'] .= Html::closeElement( 'div' );
+                       }
+
+                       foreach ( $module->getFinalDescription() as $msg ) {
+                               $msg->setContext( $context );
+                               $help['description'] .= $msg->parseAsBlock();
+                       }
+
+                       $urls = $module->getHelpUrls();
+                       if ( $urls ) {
+                               $help['help-urls'] .= Html::openElement( 'div',
+                                       array( 'class' => 'apihelp-block apihelp-help-urls' )
+                               );
+                               $msg = $context->msg( 'api-help-help-urls' );
+                               if ( !$msg->isDisabled() ) {
+                                       $help['help-urls'] .= self::wrap(
+                                               $msg->numParams( count( $urls ) ), 'apihelp-block-head', 'div'
+                                       );
+                               }
+                               if ( !is_array( $urls ) ) {
+                                       $urls = array( $urls );
+                               }
+                               $help['help-urls'] .= Html::openElement( 'ul' );
+                               foreach ( $urls as $url ) {
+                                       $help['help-urls'] .= Html::rawElement( 'li', null,
+                                               Html::element( 'a', array( 'href' => $url ), $url )
+                                       );
+                               }
+                               $help['help-urls'] .= Html::closeElement( 'ul' );
+                               $help['help-urls'] .= Html::closeElement( 'div' );
+                       }
+
+                       $params = $module->getFinalParams( ApiBase::GET_VALUES_FOR_HELP );
+                       $groups = array();
+                       if ( $params ) {
+                               $help['parameters'] .= Html::openElement( 'div',
+                                       array( 'class' => 'apihelp-block apihelp-parameters' )
+                               );
+                               $msg = $context->msg( 'api-help-parameters' );
+                               if ( !$msg->isDisabled() ) {
+                                       $help['parameters'] .= self::wrap(
+                                               $msg->numParams( count( $params ) ), 'apihelp-block-head', 'div'
+                                       );
+                               }
+                               $help['parameters'] .= Html::openElement( 'dl' );
+
+                               $descriptions = $module->getFinalParamDescription();
+
+                               foreach ( $params as $name => $settings ) {
+                                       if ( !is_array( $settings ) ) {
+                                               $settings = array( ApiBase::PARAM_DFLT => $settings );
+                                       }
+
+                                       $help['parameters'] .= Html::element( 'dt', null,
+                                               $module->encodeParamName( $name ) );
+
+                                       // Add description
+                                       $description = array();
+                                       if ( isset( $descriptions[$name] ) ) {
+                                               foreach ( $descriptions[$name] as $msg ) {
+                                                       $msg->setContext( $context );
+                                                       $description[] = $msg->parseAsBlock();
+                                               }
+                                       }
+
+                                       // Add usage info
+                                       $info = array();
+
+                                       // Required?
+                                       if ( !empty( $settings[ApiBase::PARAM_REQUIRED] ) ) {
+                                               $info[] = $context->msg( 'api-help-param-required' )->parse();
+                                       }
+
+                                       // Type documentation
+                                       if ( !isset( $settings[ApiBase::PARAM_TYPE] ) ) {
+                                               $dflt = isset( $settings[ApiBase::PARAM_DFLT] )
+                                                       ? $settings[ApiBase::PARAM_DFLT]
+                                                       : null;
+                                               if ( is_bool( $dflt ) ) {
+                                                       $settings[ApiBase::PARAM_TYPE] = 'boolean';
+                                               } elseif ( is_string( $dflt ) || is_null( $dflt ) ) {
+                                                       $settings[ApiBase::PARAM_TYPE] = 'string';
+                                               } elseif ( is_int( $dflt ) ) {
+                                                       $settings[ApiBase::PARAM_TYPE] = 'integer';
+                                               }
+                                       }
+                                       if ( isset( $settings[ApiBase::PARAM_TYPE] ) ) {
+                                               $type = $settings[ApiBase::PARAM_TYPE];
+                                               $multi = !empty( $settings[ApiBase::PARAM_ISMULTI] );
+                                               $hintPipeSeparated = true;
+                                               $count = ApiBase::LIMIT_SML2 + 1;
+
+                                               if ( is_array( $type ) ) {
+                                                       $count = count( $type );
+                                                       $type = array_map( 'wfEscapeWikiText', $type );
+                                                       $i = array_search( '', $type, true );
+                                                       if ( $i === false ) {
+                                                               $type = $context->getLanguage()->commaList( $type );
+                                                       } else {
+                                                               unset( $type[$i] );
+                                                               $type = $context->msg( 'api-help-param-list-can-be-empty' )
+                                                                       ->numParams( count( $type ) )
+                                                                       ->params( $context->getLanguage()->commaList( $type ) )
+                                                                       ->parse();
+                                                       }
+                                                       $info[] = $context->msg( 'api-help-param-list' )
+                                                               ->params( $multi ? 2 : 1 )
+                                                               ->params( $type )
+                                                               ->parse();
+                                                       $hintPipeSeparated = false;
+                                               } else {
+                                                       switch ( $type ) {
+                                                               case 'submodule':
+                                                                       $groups[] = $name;
+                                                                       $submodules = $module->getModuleManager()->getNames( $name );
+                                                                       $count = count( $submodules );
+                                                                       sort( $submodules );
+                                                                       $prefix = $module->isMain()
+                                                                               ? '' : ( $module->getModulePath() . '+' );
+                                                                       $submodules = array_map( function ( $name ) use ( $prefix ) {
+                                                                               return "[[Special:ApiHelp/{$prefix}{$name}|{$name}]]";
+                                                                       }, $submodules );
+                                                                       $info[] = $context->msg( 'api-help-param-list' )
+                                                                               ->params( $multi ? 2 : 1 )
+                                                                               ->params( $context->getLanguage()->commaList( $submodules ) )
+                                                                               ->parse();
+                                                                       $hintPipeSeparated = false;
+                                                                       break;
+
+                                                               case 'namespace':
+                                                                       $namespaces = MWNamespace::getValidNamespaces();
+                                                                       $count = count( $namespaces );
+                                                                       $info[] = $context->msg( 'api-help-param-list' )
+                                                                               ->params( $multi ? 2 : 1 )
+                                                                               ->params( $context->getLanguage()->commaList( $namespaces ) )
+                                                                               ->parse();
+                                                                       $hintPipeSeparated = false;
+                                                                       break;
+
+                                                               case 'limit':
+                                                                       if ( isset( $settings[ApiBase::PARAM_MAX2] ) ) {
+                                                                               $info[] = $context->msg( 'api-help-param-limit2' )
+                                                                                       ->numParams( $settings[ApiBase::PARAM_MAX] )
+                                                                                       ->numParams( $settings[ApiBase::PARAM_MAX2] )
+                                                                                       ->parse();
+                                                                       } else {
+                                                                               $info[] = $context->msg( 'api-help-param-limit' )
+                                                                                       ->numParams( $settings[ApiBase::PARAM_MAX] )
+                                                                                       ->parse();
+                                                                       }
+                                                                       break;
+
+                                                               case 'integer':
+                                                                       // Possible messages:
+                                                                       // api-help-param-integer-min,
+                                                                       // api-help-param-integer-max,
+                                                                       // api-help-param-integer-minmax
+                                                                       $suffix = '';
+                                                                       $min = $max = 0;
+                                                                       if ( isset( $settings[ApiBase::PARAM_MIN] ) ) {
+                                                                               $suffix .= 'min';
+                                                                               $min = $settings[ApiBase::PARAM_MIN];
+                                                                       }
+                                                                       if ( isset( $settings[ApiBase::PARAM_MAX] ) ) {
+                                                                               $suffix .= 'max';
+                                                                               $max = $settings[ApiBase::PARAM_MAX];
+                                                                       }
+                                                                       if ( $suffix !== '' ) {
+                                                                               $info[] =
+                                                                                       $context->msg( "api-help-param-integer-$suffix" )
+                                                                                               ->params( $multi ? 2 : 1 )
+                                                                                               ->numParams( $min, $max )
+                                                                                               ->parse();
+                                                                       }
+                                                                       break;
+
+                                                               case 'upload':
+                                                                       $info[] = $context->msg( 'api-help-param-upload' )
+                                                                               ->parse();
+                                                                       break;
+                                                       }
+                                               }
+
+                                               if ( $multi ) {
+                                                       $extra = array();
+                                                       if ( $hintPipeSeparated ) {
+                                                               $extra[] = $context->msg( 'api-help-param-multi-separate' )->parse();
+                                                       }
+                                                       if ( $count > ApiBase::LIMIT_SML1 ) {
+                                                               $extra[] = $context->msg( 'api-help-param-multi-max' )
+                                                                       ->numParams( ApiBase::LIMIT_SML1, ApiBase::LIMIT_SML2 )
+                                                                       ->parse();
+                                                       }
+                                                       if ( $extra ) {
+                                                               $info[] = join( ' ', $extra );
+                                                       }
+                                               }
+                                       }
+
+                                       // Add default
+                                       $default = isset( $settings[ApiBase::PARAM_DFLT] )
+                                               ? $settings[ApiBase::PARAM_DFLT]
+                                               : null;
+                                       if ( $default === '' ) {
+                                               $info[] = $context->msg( 'api-help-param-default-empty' )
+                                                       ->parse();
+                                       } elseif ( $default !== null && $default !== false ) {
+                                               $info[] = $context->msg( 'api-help-param-default' )
+                                                       ->params( wfEscapeWikiText( $default ) )
+                                                       ->parse();
+                                       }
+
+                                       if ( !$description && !$info ) {
+                                               $description[] = self::wrap(
+                                                       $context->msg( 'api-help-param-no-description' ),
+                                                       'apihelp-empty'
+                                               );
+                                       }
+
+                                       // Add "deprecated" flag
+                                       if ( !empty( $settings[ApiBase::PARAM_DEPRECATED] ) ) {
+                                               $help['parameters'] .= Html::openElement( 'dd',
+                                                       array( 'class' => 'info' ) );
+                                               $help['parameters'] .= self::wrap(
+                                                       $context->msg( 'api-help-param-deprecated' ),
+                                                       'apihelp-deprecated', 'strong'
+                                               );
+                                               $help['parameters'] .= Html::closeElement( 'dd' );
+                                       }
+
+                                       if ( $description ) {
+                                               $help['parameters'] .= Html::openElement( 'dd',
+                                                       array( 'class' => 'description' ) );
+                                               $help['parameters'] .= join( '', $description );
+                                               $help['parameters'] .= Html::closeElement( 'dd' );
+                                       }
+
+                                       foreach ( $info as $i ) {
+                                               $help['parameters'] .= Html::rawElement( 'dd', array( 'class' => 'info' ), $i );
+                                       }
+                               }
+
+                               $help['parameters'] .= Html::closeElement( 'dl' );
+                               $help['parameters'] .= Html::closeElement( 'div' );
+                       }
+
+                       $examples = $module->getExamplesMessages();
+                       if ( $examples ) {
+                               $help['examples'] .= Html::openElement( 'div',
+                                       array( 'class' => 'apihelp-block apihelp-examples' ) );
+                               $msg = $context->msg( 'api-help-examples' );
+                               if ( !$msg->isDisabled() ) {
+                                       $help['examples'] .= self::wrap(
+                                               $msg->numParams( count( $examples ) ), 'apihelp-block-head', 'div'
+                                       );
+                               }
+
+                               $help['examples'] .= Html::openElement( 'dl' );
+                               foreach ( $examples as $qs => $msg ) {
+                                       $msg = ApiBase::makeMessage( $msg, $context, array(
+                                               $module->getModulePrefix(),
+                                               $module->getModuleName(),
+                                               $module->getModulePath()
+                                       ) );
+
+                                       $link = wfAppendQuery( wfScript( 'api' ), $qs );
+                                       $help['examples'] .= Html::rawElement( 'dt', null, $msg->parse() );
+                                       $help['examples'] .= Html::rawElement( 'dd', null,
+                                               Html::element( 'a', array( 'href' => $link ), "api.php?$qs" )
+                                       );
+                               }
+                               $help['examples'] .= Html::closeElement( 'dl' );
+                               $help['examples'] .= Html::closeElement( 'div' );
+                       }
+
+                       if ( $options['submodules'] && $module->getModuleManager() ) {
+                               $manager = $module->getModuleManager();
+                               $submodules = array();
+                               foreach ( $groups as $group ) {
+                                       $names = $manager->getNames( $group );
+                                       sort( $names );
+                                       foreach ( $names as $name ) {
+                                               $submodules[] = $manager->getModule( $name );
+                                       }
+                               }
+                               $help['submodules'] .= self::getHelpInternal( $context, $submodules, array(
+                                       'submodules' => $options['recursivesubmodules'],
+                                       'headerlevel' => $level + 1,
+                                       'noheader' => false,
+                               ) + $options, $haveModules );
+                       }
+
+                       $module->modifyHelp( $help, $options );
 
-               $msg2 = $module->makeHelpMsg();
-               if ( $msg2 !== false ) {
-                       $msg .= $msg2;
+                       wfRunHooks( 'APIHelpModifyOutput', array( $module, &$help, $options ) );
+
+                       $out .= join( "\n", $help );
                }
 
-               return $msg;
+               return $out;
        }
 
        public function shouldCheckMaxlag() {
@@ -131,39 +606,36 @@ class ApiHelp extends ApiBase {
                return false;
        }
 
+       public function getCustomPrinter() {
+               $params = $this->extractRequestParams();
+               if ( $params['wrap'] ) {
+                       return null;
+               }
+
+               $main = $this->getMain();
+               $errorPrinter = $main->createPrinterByName( $main->getParameter( 'format' ) );
+               return new ApiFormatRaw( $main, $errorPrinter );
+       }
+
        public function getAllowedParams() {
                return array(
                        'modules' => array(
-                               ApiBase::PARAM_ISMULTI => true
-                       ),
-                       'querymodules' => array(
+                               ApiBase::PARAM_DFLT => 'main',
                                ApiBase::PARAM_ISMULTI => true,
-                               ApiBase::PARAM_DEPRECATED => true
                        ),
+                       'submodules' => false,
+                       'recursivesubmodules' => false,
+                       'wrap' => false,
+                       'toc' => false,
                );
        }
 
-       public function getParamDescription() {
-               return array(
-                       'modules' => 'List of module names (value of the action= parameter). ' .
-                               'Can specify submodules with a \'+\'',
-                       'querymodules' => 'Use modules=query+value instead. List of query ' .
-                               'module names (value of prop=, meta= or list= parameter)',
-               );
-       }
-
-       public function getDescription() {
-               return 'Display this help screen. Or the help screen for the specified module.';
-       }
-
-       public function getExamples() {
+       public function getExamplesMessages() {
                return array(
-                       'api.php?action=help' => 'Whole help page',
-                       'api.php?action=help&modules=protect' => 'Module (action) help page',
-                       'api.php?action=help&modules=query+categorymembers'
-                               => 'Help for the query/categorymembers module',
-                       'api.php?action=help&modules=login|query+info'
-                               => 'Help for the login and query/info modules',
+                       'action=help' => 'apihelp-help-example-main',
+                       'action=help&recursivesubmodules=1' => 'apihelp-help-example-recursive',
+                       'action=help&modules=help' => 'apihelp-help-example-help',
+                       'action=help&modules=query+info|query+categorymembers' => 'apihelp-help-example-query',
                );
        }
 
index bd20b14..a759c11 100644 (file)
@@ -42,7 +42,7 @@ class ApiMain extends ApiBase {
        /**
         * When no format parameter is given, this format will be used
         */
-       const API_DEFAULT_FORMAT = 'xmlfm';
+       const API_DEFAULT_FORMAT = 'jsonfm';
 
        /**
         * List of available modules: action name => module class
@@ -121,11 +121,11 @@ class ApiMain extends ApiBase {
         */
        private static $mRights = array(
                'writeapi' => array(
-                       'msg' => 'Use of the write API',
+                       'msg' => 'right-writeapi',
                        'params' => array()
                ),
                'apihighlimits' => array(
-                       'msg' => 'Use higher limits in API queries (Slow queries: $1 results; Fast queries: $2 results). The limits for slow queries also apply to multivalue parameters.',
+                       'msg' => 'api-help-right-apihighlimits',
                        'params' => array( ApiBase::LIMIT_SML2, ApiBase::LIMIT_BIG2 )
                )
        );
@@ -187,6 +187,19 @@ class ApiMain extends ApiBase {
                        }
                }
 
+               $uselang = $this->getParameter( 'uselang' );
+               if ( $uselang === 'user' ) {
+                       $uselang = $this->getUser()->getOption( 'language' );
+                       $uselang = RequestContext::sanitizeLangCode( $uselang );
+                       wfRunHooks( 'UserGetLanguageObject', array( $this->getUser(), &$uselang, $this ) );
+               }
+               $code = RequestContext::sanitizeLangCode( $uselang );
+               $this->getContext()->setLanguage( $code );
+               if ( !$this->mInternalMode ) {
+                       global $wgLang;
+                       $wgLang = RequestContext::getMain()->getLanguage();
+               }
+
                $config = $this->getConfig();
                $this->mModuleMgr = new ApiModuleManager( $this );
                $this->mModuleMgr->addModules( self::$Modules, 'action' );
@@ -290,6 +303,16 @@ class ApiMain extends ApiBase {
                        }
                }
 
+               if ( $mode === 'public' && $this->getParameter( 'uselang' ) === 'user' ) {
+                       // User language is used for i18n, so we don't want to publicly
+                       // cache. Anons are ok, because if they have non-default language
+                       // then there's an appropriate Vary header set by whatever set
+                       // their non-default language.
+                       wfDebug( __METHOD__ . ": downgrading cache mode 'public' to " .
+                          "'anon-public-user-private' due to uselang=user\n" );
+                       $mode = 'anon-public-user-private';
+               }
+
                wfDebug( __METHOD__ . ": setting cache mode $mode\n" );
                $this->mCacheMode = $mode;
        }
@@ -373,10 +396,6 @@ class ApiMain extends ApiBase {
                // avoid sending public cache headers for errors.
                $this->sendCacheHeaders();
 
-               if ( $this->mPrinter->getIsHtml() && !$this->mPrinter->isDisabled() ) {
-                       echo wfReportTime();
-               }
-
                ob_end_flush();
        }
 
@@ -670,13 +689,10 @@ class ApiMain extends ApiBase {
                $config = $this->getConfig();
 
                if ( $e instanceof UsageException ) {
-                       // User entered incorrect parameters - print usage screen
+                       // User entered incorrect parameters - generate error response
                        $errMessage = $e->getMessageArray();
-
-                       // Only print the help message when this is for the developer, not runtime
-                       if ( $this->mPrinter->getWantsHelp() || $this->mAction == 'help' ) {
-                               ApiResult::setContent( $errMessage, $this->makeHelpMsg() );
-                       }
+                       $link = wfExpandUrl( wfScript( 'api' ) );
+                       ApiResult::setContent( $errMessage, "See $link for API usage" );
                } else {
                        // Something is seriously wrong
                        if ( ( $e instanceof DBQueryError ) && !$config->get( 'ShowSQLErrors' ) ) {
@@ -1084,15 +1100,7 @@ class ApiMain extends ApiBase {
                $printer = $this->mPrinter;
                $printer->profileIn();
 
-               /**
-                * If the help message is requested in the default (xmlfm) format,
-                * tell the printer not to escape ampersands so that our links do
-                * not break.
-                */
-               $isHelp = $isError || $this->mAction == 'help';
-               $printer->setUnescapeAmps( $isHelp && $printer->getFormat() == 'XML' && $printer->getIsHtml() );
-
-               $printer->initPrinter( $isHelp );
+               $printer->initPrinter( false );
 
                $printer->execute();
                $printer->closePrinter();
@@ -1112,15 +1120,17 @@ class ApiMain extends ApiBase {
         * @return array
         */
        public function getAllowedParams() {
+               global $wgContLang;
+
                return array(
-                       'format' => array(
-                               ApiBase::PARAM_DFLT => ApiMain::API_DEFAULT_FORMAT,
-                               ApiBase::PARAM_TYPE => 'submodule',
-                       ),
                        'action' => array(
                                ApiBase::PARAM_DFLT => 'help',
                                ApiBase::PARAM_TYPE => 'submodule',
                        ),
+                       'format' => array(
+                               ApiBase::PARAM_DFLT => ApiMain::API_DEFAULT_FORMAT,
+                               ApiBase::PARAM_TYPE => 'submodule',
+                       ),
                        'maxlag' => array(
                                ApiBase::PARAM_TYPE => 'integer'
                        ),
@@ -1139,12 +1149,102 @@ class ApiMain extends ApiBase {
                        'servedby' => false,
                        'curtimestamp' => false,
                        'origin' => null,
+                       'uselang' => array(
+                               ApiBase::PARAM_DFLT => $wgContLang->getCode(),
+                       ),
+               );
+       }
+
+       /** @see ApiBase::getExamplesMessages() */
+       public function getExamplesMessages() {
+               return array(
+                       'action=help' => 'apihelp-help-example-main',
+                       'action=help&recursivesubmodules=1' => 'apihelp-help-example-recursive',
                );
        }
 
+       public function modifyHelp( array &$help, array $options ) {
+               // Wish PHP had an "array_insert_before". Instead, we have to manually
+               // reindex the array to get 'permissions' in the right place.
+               $oldHelp = $help;
+               $help = array();
+               foreach ( $oldHelp as $k => $v ) {
+                       if ( $k === 'submodules' ) {
+                               $help['permissions'] = '';
+                       }
+                       $help[$k] = $v;
+               }
+               $help['credits'] = '';
+
+               // Fill 'permissions'
+               $help['permissions'] .= Html::openElement( 'div',
+                       array( 'class' => 'apihelp-block apihelp-permissions' ) );
+               $m = $this->msg( 'api-help-permissions' );
+               if ( !$m->isDisabled() ) {
+                       $help['permissions'] .= Html::rawElement( 'div', array( 'class' => 'apihelp-block-head' ),
+                               $m->numParams( count( self::$mRights ) )->parse()
+                       );
+               }
+               $help['permissions'] .= Html::openElement( 'dl' );
+               foreach ( self::$mRights as $right => $rightMsg ) {
+                       $help['permissions'] .= Html::element( 'dt', null, $right );
+
+                       $rightMsg = $this->msg( $rightMsg['msg'], $rightMsg['params'] )->parse();
+                       $help['permissions'] .= Html::rawElement( 'dd', null, $rightMsg );
+
+                       $groups = array_map( function ( $group ) {
+                               return $group == '*' ? 'all' : $group;
+                       }, User::getGroupsWithPermission( $right ) );
+
+                       $help['permissions'] .= Html::rawElement( 'dd', null,
+                               $this->msg( 'api-help-permissions-granted-to' )
+                                       ->numParams( count( $groups ) )
+                                       ->params( $this->getLanguage()->commaList( $groups ) )
+                                       ->parse()
+                       );
+               }
+               $help['permissions'] .= Html::closeElement( 'dl' );
+               $help['permissions'] .= Html::closeElement( 'div' );
+
+               // Fill 'credits', if applicable
+               if ( empty( $options['nolead'] ) ) {
+                       $help['credits'] .= Html::element( 'h' . min( 6, $options['headerlevel'] + 1 ),
+                               array( 'id' => '+credits', 'class' => 'apihelp-header' ),
+                               $this->msg( 'api-credits-header' )->parse()
+                       );
+                       $help['credits'] .= $this->msg( 'api-credits' )->useDatabase( false )->parseAsBlock();
+               }
+       }
+
+       private $mCanApiHighLimits = null;
+
        /**
-        * See ApiBase for description.
-        *
+        * Check whether the current user is allowed to use high limits
+        * @return bool
+        */
+       public function canApiHighLimits() {
+               if ( !isset( $this->mCanApiHighLimits ) ) {
+                       $this->mCanApiHighLimits = $this->getUser()->isAllowed( 'apihighlimits' );
+               }
+
+               return $this->mCanApiHighLimits;
+       }
+
+       /**
+        * Overrides to return this instance's module manager.
+        * @return ApiModuleManager
+        */
+       public function getModuleManager() {
+               return $this->mModuleMgr;
+       }
+
+       /************************************************************************//**
+        * @name   Deprecated
+        * @{
+        */
+
+       /**
+        * @deprecated since 1.25
         * @return array
         */
        public function getParamDescription() {
@@ -1180,8 +1280,7 @@ class ApiMain extends ApiBase {
        }
 
        /**
-        * See ApiBase for description.
-        *
+        * @deprecated since 1.25
         * @return array
         */
        public function getDescription() {
@@ -1225,40 +1324,25 @@ class ApiMain extends ApiBase {
                );
        }
 
-       /**
-        * Returns an array of strings with credits for the API
-        * @return array
-        */
-       protected function getCredits() {
-               return array(
-                       'API developers:',
-                       '    Roan Kattouw (lead developer Sep 2007-2009)',
-                       '    Victor Vasiliev',
-                       '    Bryan Tong Minh',
-                       '    Sam Reed',
-                       '    Yuri Astrakhan (creator, lead developer Sep 2006-Sep 2007, 2012-2013)',
-                       '    Brad Jorsch (lead developer 2013-now)',
-                       '',
-                       'Please send your comments, suggestions and questions to mediawiki-api@lists.wikimedia.org',
-                       'or file a bug report at https://bugzilla.wikimedia.org/'
-               );
-       }
-
        /**
         * Sets whether the pretty-printer should format *bold* and $italics$
         *
+        * @deprecated since 1.25
         * @param bool $help
         */
        public function setHelp( $help = true ) {
+               wfDeprecated( __METHOD__, '1.25' );
                $this->mPrinter->setHelp( $help );
        }
 
        /**
         * Override the parent to generate help messages for all available modules.
         *
+        * @deprecated since 1.25
         * @return string
         */
        public function makeHelpMsg() {
+               wfDeprecated( __METHOD__, '1.25' );
                global $wgMemc;
                $this->setHelp();
                // Get help text from cache if present
@@ -1281,9 +1365,11 @@ class ApiMain extends ApiBase {
        }
 
        /**
+        * @deprecated since 1.25
         * @return mixed|string
         */
        public function reallyMakeHelpMsg() {
+               wfDeprecated( __METHOD__, '1.25' );
                $this->setHelp();
 
                // Use parent to make default message for the main module
@@ -1305,8 +1391,12 @@ class ApiMain extends ApiBase {
 
                $msg .= "\n$astriks Permissions $astriks\n\n";
                foreach ( self::$mRights as $right => $rightMsg ) {
+                       $rightsMsg = $this->msg( $rightMsg['msg'], $rightMsg['params'] )
+                               ->useDatabase( false )
+                               ->inLanguage( 'en' )
+                               ->text();
                        $groups = User::getGroupsWithPermission( $right );
-                       $msg .= "* " . $right . " *\n  " . wfMsgReplaceArgs( $rightMsg['msg'], $rightMsg['params'] ) .
+                       $msg .= "* " . $right . " *\n  $rightsMsg" .
                                "\nGranted to:\n  " . str_replace( '*', 'all', implode( ', ', $groups ) ) . "\n\n";
                }
 
@@ -1321,18 +1411,22 @@ class ApiMain extends ApiBase {
                        $msg .= "\n";
                }
 
-               $msg .= "\n*** Credits: ***\n   " . implode( "\n   ", $this->getCredits() ) . "\n";
+               $credits = $this->msg( 'api-credits' )->useDatabase( 'false' )->inLanguage( 'en' )->text();
+               $credits = str_replace( "\n", "\n   ", $credits );
+               $msg .= "\n*** Credits: ***\n   $credits\n";
 
                return $msg;
        }
 
        /**
+        * @deprecated since 1.25
         * @param ApiBase $module
         * @param string $paramName What type of request is this? e.g. action,
         *    query, list, prop, meta, format
         * @return string
         */
        public static function makeHelpMsgHeader( $module, $paramName ) {
+               wfDeprecated( __METHOD__, '1.25' );
                $modulePrefix = $module->getModulePrefix();
                if ( strval( $modulePrefix ) !== '' ) {
                        $modulePrefix = "($modulePrefix) ";
@@ -1341,20 +1435,6 @@ class ApiMain extends ApiBase {
                return "* $paramName={$module->getModuleName()} $modulePrefix*";
        }
 
-       private $mCanApiHighLimits = null;
-
-       /**
-        * Check whether the current user is allowed to use high limits
-        * @return bool
-        */
-       public function canApiHighLimits() {
-               if ( !isset( $this->mCanApiHighLimits ) ) {
-                       $this->mCanApiHighLimits = $this->getUser()->isAllowed( 'apihighlimits' );
-               }
-
-               return $this->mCanApiHighLimits;
-       }
-
        /**
         * Check whether the user wants us to show version information in the API help
         * @return bool
@@ -1366,14 +1446,6 @@ class ApiMain extends ApiBase {
                return false;
        }
 
-       /**
-        * Overrides to return this instance's module manager.
-        * @return ApiModuleManager
-        */
-       public function getModuleManager() {
-               return $this->mModuleMgr;
-       }
-
        /**
         * Add or overwrite a module in this ApiMain instance. Intended for use by extending
         * classes who wish to add their own modules to their lexicon or override the
@@ -1418,11 +1490,13 @@ class ApiMain extends ApiBase {
        public function getFormats() {
                return $this->getModuleManager()->getNamesWithClasses( 'format' );
        }
+
+       /**@}*/
+
 }
 
 /**
  * This exception will be thrown when dieUsage is called to stop module execution.
- * The exception handling code will print a help screen explaining how this API may be used.
  *
  * @ingroup API
  */
@@ -1476,3 +1550,8 @@ class UsageException extends MWException {
                return "{$this->getCodeString()}: {$this->getMessage()}";
        }
 }
+
+/**
+ * For really cool vim folding this needs to be at the end:
+ * vim: foldmarker=@{,@} foldmethod=marker
+ */
index 067b2f5..5965a46 100644 (file)
  */
 class ApiParamInfo extends ApiBase {
 
-       /**
-        * @var ApiQuery
-        */
-       protected $queryObj;
+       private $helpFormat;
+       private $context;
 
        public function __construct( ApiMain $main, $action ) {
                parent::__construct( $main, $action );
-               $this->queryObj = new ApiQuery( $this->getMain(), 'query' );
        }
 
        public function execute() {
+               global $wgContLang;
+
                // Get parameters
                $params = $this->extractRequestParams();
-               $resultObj = $this->getResult();
+
+               $this->helpFormat = $params['helpformat'];
+               $this->context = new RequestContext;
+               $this->context->setUser( new User ); // anon to avoid caching issues
+               $this->context->setLanguage( $this->getMain()->getLanguage() );
+
+               if ( is_array( $params['modules'] ) ) {
+                       $modules = $params['modules'];
+               } else {
+                       $modules = array();
+               }
+
+               if ( is_array( $params['querymodules'] ) ) {
+                       $this->logFeatureUsage( 'action=paraminfo&querymodules' );
+                       $queryModules = $params['querymodules'];
+                       foreach ( $queryModules as $m ) {
+                               $modules[] = 'query+' . $m;
+                       }
+               } else {
+                       $queryModules = array();
+               }
+
+               if ( is_array( $params['formatmodules'] ) ) {
+                       $this->logFeatureUsage( 'action=paraminfo&formatmodules' );
+                       $formatModules = $params['formatmodules'];
+                       foreach ( $formatModules as $m ) {
+                               $modules[] = $m;
+                       }
+               } else {
+                       $formatModules = array();
+               }
 
                $res = array();
 
-               $this->addModulesInfo( $params, 'modules', $res, $resultObj );
+               foreach ( $modules as $m ) {
+                       try {
+                               $module = $this->getModuleFromPath( $m );
+                       } catch ( UsageException $ex ) {
+                               $this->setWarning( $ex->getMessage() );
+                               continue;
+                       }
+                       $key = 'modules';
+
+                       // Back compat
+                       $isBCQuery = false;
+                       if ( $module->getParent() && $module->getParent()->getModuleName() == 'query' &&
+                               in_array( $module->getModuleName(), $queryModules )
+                       ) {
+                               $isBCQuery = true;
+                               $key = 'querymodules';
+                       }
+                       if ( in_array( $module->getModuleName(), $formatModules ) ) {
+                               $key = 'formatmodules';
+                       }
+
+                       $item = $this->getModuleInfo( $module );
+                       if ( $isBCQuery ) {
+                               $item['querytype'] = $item['group'];
+                       }
+                       $res[$key][] = $item;
+               }
+
+               $result = $this->getResult();
+               $result->addValue( array( $this->getModuleName() ), 'helpformat', $this->helpFormat );
 
-               $this->addModulesInfo( $params, 'querymodules', $res, $resultObj );
+               foreach ( $res as $key => $stuff ) {
+                       $result->setIndexedTagName( $res[$key], 'module' );
+               }
 
                if ( $params['mainmodule'] ) {
-                       $res['mainmodule'] = $this->getClassInfo( $this->getMain() );
+                       $this->logFeatureUsage( 'action=paraminfo&mainmodule' );
+                       $res['mainmodule'] = $this->getModuleInfo( $this->getMain() );
                }
 
                if ( $params['pagesetmodule'] ) {
-                       $pageSet = new ApiPageSet( $this->queryObj );
-                       $res['pagesetmodule'] = $this->getClassInfo( $pageSet );
+                       $this->logFeatureUsage( 'action=paraminfo&pagesetmodule' );
+                       $pageSet = new ApiPageSet( $this->getMain()->getModuleManager()->getModule( 'query' ) );
+                       $res['pagesetmodule'] = $this->getModuleInfo( $pageSet );
+                       unset( $res['pagesetmodule']['name'] );
+                       unset( $res['pagesetmodule']['path'] );
+                       unset( $res['pagesetmodule']['group'] );
                }
 
-               $this->addModulesInfo( $params, 'formatmodules', $res, $resultObj );
-
-               $resultObj->addValue( null, $this->getModuleName(), $res );
+               $result->addValue( null, $this->getModuleName(), $res );
        }
 
        /**
-        * If the type is requested in parameters, adds a section to res with module info.
-        * @param array $params User parameters array
-        * @param string $type Parameter name
-        * @param array $res Store results in this array
-        * @param ApiResult $resultObj Results object to set indexed tag.
+        * @param array $res Result array
+        * @param string $key Result key
+        * @param Message[] $msgs
         */
-       private function addModulesInfo( $params, $type, &$res, $resultObj ) {
-               if ( !is_array( $params[$type] ) ) {
-                       return;
-               }
-               $isQuery = ( $type === 'querymodules' );
-               if ( $isQuery ) {
-                       $mgr = $this->queryObj->getModuleManager();
-               } else {
-                       $mgr = $this->getMain()->getModuleManager();
-               }
-               $res[$type] = array();
-               foreach ( $params[$type] as $mod ) {
-                       if ( !$mgr->isDefined( $mod ) ) {
-                               $res[$type][] = array( 'name' => $mod, 'missing' => '' );
-                               continue;
-                       }
-                       $obj = $mgr->getModule( $mod );
-                       $item = $this->getClassInfo( $obj );
-                       $item['name'] = $mod;
-                       if ( $isQuery ) {
-                               $item['querytype'] = $mgr->getModuleGroup( $mod );
-                       }
-                       $res[$type][] = $item;
+       protected function formatHelpMessages( array &$res, $key, array $msgs ) {
+               switch ( $this->helpFormat ) {
+                       case 'none':
+                               break;
+
+                       case 'wikitext':
+                               $ret = array();
+                               foreach ( $msgs as $m ) {
+                                       $ret[] = $m->setContext( $this->context )->text();
+                               }
+                               $res[$key] = join( "\n\n", $ret );
+                               break;
+
+                       case 'html':
+                               $ret = array();
+                               foreach ( $msgs as $m ) {
+                                       $ret[] = $m->setContext( $this->context )->parseAsBlock();
+                               }
+                               $res[$key] = join( "\n", $ret );
+                               break;
+
+                       case 'raw':
+                               $res[$key] = array();
+                               foreach ( $msgs as $m ) {
+                                       $res[$key][] = array(
+                                               'key' => $m->getKey(),
+                                               'params' => $m->getParams(),
+                                       );
+                               }
+                               $this->getResult()->setIndexedTagName( $res[$key], 'msg' );
+                               break;
                }
-               $resultObj->setIndexedTagName( $res[$type], 'module' );
        }
 
        /**
-        * @param ApiBase $obj
+        * @param ApiBase $module
         * @return ApiResult
         */
-       private function getClassInfo( $obj ) {
+       private function getModuleInfo( $module ) {
                $result = $this->getResult();
-               $retval['classname'] = get_class( $obj );
-               $retval['description'] = implode( "\n", (array)$obj->getFinalDescription() );
-               $retval['examples'] = '';
-
-               // version is deprecated since 1.21, but needs to be returned for v1
-               $retval['version'] = '';
-               $retval['prefix'] = $obj->getModulePrefix();
-
-               if ( $obj->isReadMode() ) {
-                       $retval['readrights'] = '';
-               }
-               if ( $obj->isWriteMode() ) {
-                       $retval['writerights'] = '';
-               }
-               if ( $obj->mustBePosted() ) {
-                       $retval['mustbeposted'] = '';
-               }
-               if ( $obj instanceof ApiQueryGeneratorBase ) {
-                       $retval['generator'] = '';
+               $ret = array();
+
+               $ret['name'] = $module->getModuleName();
+               $ret['classname'] = get_class( $module );
+               $ret['path'] = $module->getModulePath();
+               if ( !$module->isMain() ) {
+                       $ret['group'] = $module->getParent()->getModuleManager()->getModuleGroup(
+                               $module->getModuleName()
+                       );
                }
+               $ret['prefix'] = $module->getModulePrefix();
 
-               $allowedParams = $obj->getFinalParams( ApiBase::GET_VALUES_FOR_HELP );
-               if ( !is_array( $allowedParams ) ) {
-                       return $retval;
-               }
+               $this->formatHelpMessages( $ret, 'description', $module->getFinalDescription() );
 
-               $retval['helpurls'] = (array)$obj->getHelpUrls();
-               if ( isset( $retval['helpurls'][0] ) && $retval['helpurls'][0] === false ) {
-                       $retval['helpurls'] = array();
+               foreach ( $module->getHelpFlags() as $flag ) {
+                       $ret[$flag] = '';
                }
-               $result->setIndexedTagName( $retval['helpurls'], 'helpurl' );
 
-               $examples = $obj->getExamples();
-               $retval['allexamples'] = array();
-               if ( $examples !== false ) {
-                       if ( is_string( $examples ) ) {
-                               $examples = array( $examples );
-                       }
-                       foreach ( $examples as $k => $v ) {
-                               if ( strlen( $retval['examples'] ) ) {
-                                       $retval['examples'] .= ' ';
-                               }
-                               $item = array();
-                               if ( is_numeric( $k ) ) {
-                                       $retval['examples'] .= $v;
-                                       ApiResult::setContent( $item, $v );
-                               } else {
-                                       if ( !is_array( $v ) ) {
-                                               $item['description'] = $v;
+               $ret['helpurls'] = (array)$module->getHelpUrls();
+               if ( isset( $ret['helpurls'][0] ) && $ret['helpurls'][0] === false ) {
+                       $ret['helpurls'] = array();
+               }
+               $result->setIndexedTagName( $ret['helpurls'], 'helpurl' );
+
+               if ( $this->helpFormat !== 'none' ) {
+                       $ret['examples'] = array();
+                       $examples = $module->getExamplesMessages();
+                       foreach ( $examples as $qs => $msg ) {
+                               $item = array(
+                                       'query' => $qs
+                               );
+                               $msg = ApiBase::makeMessage( $msg, $this->context, array(
+                                       $module->getModulePrefix(),
+                                       $module->getModuleName(),
+                                       $module->getModulePath()
+                               ) );
+                               $this->formatHelpMessages( $item, 'description', array( $msg ) );
+                               if ( isset( $item['description'] ) ) {
+                                       if ( is_array( $item['description'] ) ) {
+                                               $item['description'] = $item['description'][0];
                                        } else {
-                                               $item['description'] = implode( $v, "\n" );
+                                               $result->setSubelements( $item, 'description' );
                                        }
-                                       $retval['examples'] .= $item['description'] . ' ' . $k;
-                                       ApiResult::setContent( $item, $k );
                                }
-                               $retval['allexamples'][] = $item;
+                               $ret['examples'][] = $item;
                        }
+                       $result->setIndexedTagName( $ret['examples'], 'example' );
                }
-               $result->setIndexedTagName( $retval['allexamples'], 'example' );
-
-               $retval['parameters'] = array();
-               $paramDesc = $obj->getFinalParamDescription();
-               foreach ( $allowedParams as $n => $p ) {
-                       $a = array( 'name' => $n );
-                       if ( isset( $paramDesc[$n] ) ) {
-                               $a['description'] = implode( "\n", (array)$paramDesc[$n] );
+
+               $ret['parameters'] = array();
+               $params = $module->getFinalParams( ApiBase::GET_VALUES_FOR_HELP );
+               $paramDesc = $module->getFinalParamDescription();
+               foreach ( $params as $name => $settings ) {
+                       if ( !is_array( $settings ) ) {
+                               $settings = array( ApiBase::PARAM_DFLT => $settings );
                        }
 
-                       //handle shorthand
-                       if ( !is_array( $p ) ) {
-                               $p = array(
-                                       ApiBase::PARAM_DFLT => $p,
-                               );
+                       $item = array(
+                               'name' => $name
+                       );
+                       if ( isset( $paramDesc[$name] ) ) {
+                               $this->formatHelpMessages( $item, 'description', $paramDesc[$name] );
                        }
 
-                       //handle missing type
-                       if ( !isset( $p[ApiBase::PARAM_TYPE] ) ) {
-                               $dflt = isset( $p[ApiBase::PARAM_DFLT] ) ? $p[ApiBase::PARAM_DFLT] : null;
-                               if ( is_bool( $dflt ) ) {
-                                       $p[ApiBase::PARAM_TYPE] = 'boolean';
-                               } elseif ( is_string( $dflt ) || is_null( $dflt ) ) {
-                                       $p[ApiBase::PARAM_TYPE] = 'string';
-                               } elseif ( is_int( $dflt ) ) {
-                                       $p[ApiBase::PARAM_TYPE] = 'integer';
-                               }
+                       if ( !empty( $settings[ApiBase::PARAM_REQUIRED] ) ) {
+                               $item['required'] = '';
                        }
 
-                       if ( isset( $p[ApiBase::PARAM_DEPRECATED] ) && $p[ApiBase::PARAM_DEPRECATED] ) {
-                               $a['deprecated'] = '';
+                       if ( !empty( $settings[ApiBase::PARAM_DEPRECATED] ) ) {
+                               $item['deprecated'] = '';
                        }
-                       if ( isset( $p[ApiBase::PARAM_REQUIRED] ) && $p[ApiBase::PARAM_REQUIRED] ) {
-                               $a['required'] = '';
+
+                       if ( $name === 'token' && $module->needsToken() ) {
+                               $item['tokentype'] = $module->needsToken();
                        }
 
-                       if ( $n === 'token' && $obj->needsToken() ) {
-                               $a['tokentype'] = $obj->needsToken();
+                       if ( !isset( $settings[ApiBase::PARAM_TYPE] ) ) {
+                               $dflt = isset( $settings[ApiBase::PARAM_DFLT] )
+                                       ? $settings[ApiBase::PARAM_DFLT]
+                                       : null;
+                               if ( is_bool( $dflt ) ) {
+                                       $settings[ApiBase::PARAM_TYPE] = 'boolean';
+                               } elseif ( is_string( $dflt ) || is_null( $dflt ) ) {
+                                       $settings[ApiBase::PARAM_TYPE] = 'string';
+                               } elseif ( is_int( $dflt ) ) {
+                                       $settings[ApiBase::PARAM_TYPE] = 'integer';
+                               }
                        }
 
-                       if ( isset( $p[ApiBase::PARAM_DFLT] ) ) {
-                               $type = $p[ApiBase::PARAM_TYPE];
-                               if ( $type === 'boolean' ) {
-                                       $a['default'] = ( $p[ApiBase::PARAM_DFLT] ? 'true' : 'false' );
-                               } elseif ( $type === 'string' ) {
-                                       $a['default'] = strval( $p[ApiBase::PARAM_DFLT] );
-                               } elseif ( $type === 'integer' ) {
-                                       $a['default'] = intval( $p[ApiBase::PARAM_DFLT] );
-                               } else {
-                                       $a['default'] = $p[ApiBase::PARAM_DFLT];
+                       if ( isset( $settings[ApiBase::PARAM_DFLT] ) ) {
+                               switch ( $settings[ApiBase::PARAM_TYPE] ) {
+                                       case 'boolean':
+                                               $item['default'] = ( $settings[ApiBase::PARAM_DFLT] ? 'true' : 'false' );
+                                               break;
+                                       case 'string':
+                                               $item['default'] = strval( $settings[ApiBase::PARAM_DFLT] );
+                                               break;
+                                       case 'integer':
+                                               $item['default'] = intval( $settings[ApiBase::PARAM_DFLT] );
+                                               break;
+                                       default:
+                                               $item['default'] = $settings[ApiBase::PARAM_DFLT];
+                                               break;
                                }
                        }
-                       if ( isset( $p[ApiBase::PARAM_ISMULTI] ) && $p[ApiBase::PARAM_ISMULTI] ) {
-                               $a['multi'] = '';
-                               $a['limit'] = $this->getMain()->canApiHighLimits() ?
+
+                       if ( !empty( $settings[ApiBase::PARAM_ISMULTI] ) ) {
+                               $item['multi'] = '';
+                               $item['limit'] = $this->getMain()->canApiHighLimits() ?
                                        ApiBase::LIMIT_SML2 :
                                        ApiBase::LIMIT_SML1;
-                               $a['lowlimit'] = ApiBase::LIMIT_SML1;
-                               $a['highlimit'] = ApiBase::LIMIT_SML2;
+                               $item['lowlimit'] = ApiBase::LIMIT_SML1;
+                               $item['highlimit'] = ApiBase::LIMIT_SML2;
                        }
 
-                       if ( isset( $p[ApiBase::PARAM_ALLOW_DUPLICATES] ) && $p[ApiBase::PARAM_ALLOW_DUPLICATES] ) {
-                               $a['allowsduplicates'] = '';
+                       if ( !empty( $settings[ApiBase::PARAM_ALLOW_DUPLICATES] ) ) {
+                               $item['allowsduplicates'] = '';
                        }
 
-                       if ( isset( $p[ApiBase::PARAM_TYPE] ) ) {
-                               if ( $p[ApiBase::PARAM_TYPE] === 'submodule' ) {
-                                       $a['type'] = $obj->getModuleManager()->getNames( $n );
-                                       sort( $a['type'] );
-                                       $a['submodules'] = '';
+                       if ( isset( $settings[ApiBase::PARAM_TYPE] ) ) {
+                               if ( $settings[ApiBase::PARAM_TYPE] === 'submodule' ) {
+                                       $item['type'] = $module->getModuleManager()->getNames( $name );
+                                       sort( $item['type'] );
+                                       $item['submodules'] = '';
                                } else {
-                                       $a['type'] = $p[ApiBase::PARAM_TYPE];
+                                       $item['type'] = $settings[ApiBase::PARAM_TYPE];
                                }
-                               if ( is_array( $a['type'] ) ) {
+                               if ( is_array( $item['type'] ) ) {
                                        // To prevent sparse arrays from being serialized to JSON as objects
-                                       $a['type'] = array_values( $a['type'] );
-                                       $result->setIndexedTagName( $a['type'], 't' );
+                                       $item['type'] = array_values( $item['type'] );
+                                       $result->setIndexedTagName( $item['type'], 't' );
                                }
                        }
-                       if ( isset( $p[ApiBase::PARAM_MAX] ) ) {
-                               $a['max'] = $p[ApiBase::PARAM_MAX];
+                       if ( isset( $settings[ApiBase::PARAM_MAX] ) ) {
+                               $item['max'] = $settings[ApiBase::PARAM_MAX];
                        }
-                       if ( isset( $p[ApiBase::PARAM_MAX2] ) ) {
-                               $a['highmax'] = $p[ApiBase::PARAM_MAX2];
+                       if ( isset( $settings[ApiBase::PARAM_MAX2] ) ) {
+                               $item['highmax'] = $settings[ApiBase::PARAM_MAX2];
                        }
-                       if ( isset( $p[ApiBase::PARAM_MIN] ) ) {
-                               $a['min'] = $p[ApiBase::PARAM_MIN];
+                       if ( isset( $settings[ApiBase::PARAM_MIN] ) ) {
+                               $item['min'] = $settings[ApiBase::PARAM_MIN];
                        }
-                       $retval['parameters'][] = $a;
+                       $ret['parameters'][] = $item;
                }
-               $result->setIndexedTagName( $retval['parameters'], 'param' );
+               $result->setIndexedTagName( $ret['parameters'], 'param' );
 
-               return $retval;
+               return $ret;
        }
 
        public function isReadMode() {
@@ -262,9 +326,9 @@ class ApiParamInfo extends ApiBase {
        }
 
        public function getAllowedParams() {
-               $modules = $this->getMain()->getModuleManager()->getNames( 'action' );
-               sort( $modules );
-               $querymodules = $this->queryObj->getModuleManager()->getNames();
+               // back compat
+               $querymodules = $this->getMain()->getModuleManager()
+                       ->getModule( 'query' )->getModuleManager()->getNames();
                sort( $querymodules );
                $formatmodules = $this->getMain()->getModuleManager()->getNames( 'format' );
                sort( $formatmodules );
@@ -272,15 +336,25 @@ class ApiParamInfo extends ApiBase {
                return array(
                        'modules' => array(
                                ApiBase::PARAM_ISMULTI => true,
-                               ApiBase::PARAM_TYPE => $modules,
                        ),
+                       'helpformat' => array(
+                               ApiBase::PARAM_DFLT => 'none',
+                               ApiBase::PARAM_TYPE => array( 'html', 'wikitext', 'raw', 'none' ),
+                       ),
+
                        'querymodules' => array(
+                               ApiBase::PARAM_DEPRECATED => true,
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_TYPE => $querymodules,
                        ),
-                       'mainmodule' => false,
-                       'pagesetmodule' => false,
+                       'mainmodule' => array(
+                               ApiBase::PARAM_DEPRECATED => true,
+                       ),
+                       'pagesetmodule' => array(
+                               ApiBase::PARAM_DEPRECATED => true,
+                       ),
                        'formatmodules' => array(
+                               ApiBase::PARAM_DEPRECATED => true,
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_TYPE => $formatmodules,
                        )
@@ -289,7 +363,9 @@ class ApiParamInfo extends ApiBase {
 
        public function getParamDescription() {
                return array(
-                       'modules' => 'List of module names (value of the action= parameter)',
+                       'modules' => 'List of module names (values of the action= and format= parameters, or "main"). Can specify submodules with a \'+\'',
+                       'helpformat' => 'Format of help strings',
+
                        'querymodules' => 'List of query module names (value of prop=, meta= or list= parameter)',
                        'mainmodule' => 'Get information about the main (top-level) module as well',
                        'pagesetmodule' => 'Get information about the pageset module ' .
@@ -304,7 +380,7 @@ class ApiParamInfo extends ApiBase {
 
        public function getExamples() {
                return array(
-                       'api.php?action=paraminfo&modules=parse&querymodules=allpages|siteinfo'
+                       'api.php?action=paraminfo&modules=parse|phpfm|query+allpages|query+siteinfo'
                );
        }
 
index 06fdf85..c2ec8d4 100644 (file)
@@ -79,16 +79,6 @@ class ApiParse extends ApiBase {
                // TODO: Does this still need $wgTitle?
                global $wgParser, $wgTitle;
 
-               // Currently unnecessary, code to act as a safeguard against any change
-               // in current behavior of uselang
-               $oldLang = null;
-               if ( isset( $params['uselang'] )
-                       && $params['uselang'] != $this->getContext()->getLanguage()->getCode()
-               ) {
-                       $oldLang = $this->getContext()->getLanguage(); // Backup language
-                       $this->getContext()->setLanguage( Language::factory( $params['uselang'] ) );
-               }
-
                $redirValues = null;
 
                // Return result
@@ -347,6 +337,14 @@ class ApiParse extends ApiBase {
                        $result_array['modulemessages'] = array_values( array_unique( $p_result->getModuleMessages() ) );
                }
 
+               if ( isset( $prop['indicators'] ) ) {
+                       foreach ( $p_result->getIndicators() as $name => $content ) {
+                               $indicator = array( 'name' => $name );
+                               ApiResult::setContent( $indicator, $content );
+                               $result_array['indicators'][] = $indicator;
+                       }
+               }
+
                if ( isset( $prop['iwlinks'] ) ) {
                        $result_array['iwlinks'] = $this->formatIWLinks( $p_result->getInterwikiLinks() );
                }
@@ -401,6 +399,7 @@ class ApiParse extends ApiBase {
                        'sections' => 's',
                        'headitems' => 'hi',
                        'modules' => 'm',
+                       'indicators' => 'ind',
                        'modulescripts' => 'm',
                        'modulestyles' => 'm',
                        'modulemessages' => 'm',
@@ -409,10 +408,6 @@ class ApiParse extends ApiBase {
                );
                $this->setIndexedTagNames( $result_array, $result_mapping );
                $result->addValue( null, $this->getModuleName(), $result_array );
-
-               if ( !is_null( $oldLang ) ) {
-                       $this->getContext()->setLanguage( $oldLang ); // Reset language to $oldLang
-               }
        }
 
        /**
@@ -499,7 +494,7 @@ class ApiParse extends ApiBase {
                        $entry['lang'] = $bits[0];
                        if ( $title ) {
                                $entry['url'] = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
-                               // localised language name in user language (maybe set by uselang=)
+                               // localised language name in 'uselang' language
                                $entry['langname'] = Language::fetchLanguageName(
                                        $title->getInterwiki(),
                                        $this->getLanguage()->getCode()
@@ -694,6 +689,7 @@ class ApiParse extends ApiBase {
                                        'headitems',
                                        'headhtml',
                                        'modules',
+                                       'indicators',
                                        'iwlinks',
                                        'wikitext',
                                        'properties',
@@ -704,7 +700,6 @@ class ApiParse extends ApiBase {
                        'pst' => false,
                        'onlypst' => false,
                        'effectivelanglinks' => false,
-                       'uselang' => null,
                        'section' => null,
                        'disablepp' => false,
                        'disableeditsection' => false,
@@ -750,6 +745,7 @@ class ApiParse extends ApiBase {
                                ' headitems      - Gives items to put in the <head> of the page',
                                ' headhtml       - Gives parsed <head> of the page',
                                ' modules        - Gives the ResourceLoader modules used on the page',
+                               ' indicators     - Gives the HTML of page status indicators used on the page',
                                ' iwlinks        - Gives interwiki links in the parsed wikitext',
                                ' wikitext       - Gives the original wikitext that was parsed',
                                ' properties     - Gives various properties defined in the parsed wikitext',
@@ -771,7 +767,6 @@ class ApiParse extends ApiBase {
                                'Returns the same wikitext, after a PST has been applied.',
                                "Only valid when used with {$p}text",
                        ),
-                       'uselang' => 'Which language to parse the request in',
                        'section' => 'Only retrieve the content of this section number',
                        'disablepp' => 'Disable the PP Report from the parser output',
                        'disableeditsection' => 'Disable edit section links from the parser output',
index 7c750e4..a8e20dc 100644 (file)
@@ -540,9 +540,11 @@ class ApiQuery extends ApiBase {
 
        /**
         * Override the parent to generate help messages for all available query modules.
+        * @deprecated since 1.25
         * @return string
         */
        public function makeHelpMsg() {
+               wfDeprecated( __METHOD__, '1.25' );
 
                // Use parent to make default message for the query module
                $msg = parent::makeHelpMsg();
@@ -562,6 +564,7 @@ class ApiQuery extends ApiBase {
 
        /**
         * For all modules of a given group, generate help messages and join them together
+        * @deprecated since 1.25
         * @param string $group Module group
         * @return string
         */
index e344236..f00a6e7 100644 (file)
@@ -422,7 +422,15 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
 
                if ( is_null( $resultPageSet ) ) {
                        // Try to add the result data in one go and pray that it fits
-                       $fit = $result->addValue( 'query', $this->getModuleName(), array_values( $this->resultArr ) );
+                       $code = $this->bl_code;
+                       $data = array_map( function ( $arr ) use ( $result, $code ) {
+                               if ( isset( $arr['redirlinks'] ) ) {
+                                       $arr['redirlinks'] = array_values( $arr['redirlinks'] );
+                                       $result->setIndexedTagName( $arr['redirlinks'], $code );
+                               }
+                               return $arr;
+                       }, array_values( $this->resultArr ) );
+                       $fit = $result->addValue( 'query', $this->getModuleName(), $data );
                        if ( !$fit ) {
                                // It didn't fit. Add elements one by one until the
                                // result is full.
index 65e10ab..b1581f3 100644 (file)
@@ -90,6 +90,13 @@ abstract class ApiQueryBase extends ApiBase {
                return $this->mQueryModule;
        }
 
+       /**
+        * @see ApiBase::getParent()
+        */
+       public function getParent() {
+               return $this->getQuery();
+       }
+
        /**
         * Get the Query database connection (read-only)
         * @return DatabaseBase
@@ -711,6 +718,17 @@ abstract class ApiQueryGeneratorBase extends ApiQueryBase {
                }
        }
 
+       /**
+        * @see ApiBase::getHelpFlags()
+        *
+        * Corresponding messages: api-help-flag-generator
+        */
+       protected function getHelpFlags() {
+               $flags = parent::getHelpFlags();
+               $flags[] = 'generator';
+               return $flags;
+       }
+
        /**
         * Execute this module as a generator
         * @param ApiPageSet $resultPageSet All output should be appended to this object
index 2e80447..946977d 100644 (file)
@@ -569,6 +569,7 @@ class ApiResult extends ApiBase {
                } else {
                        $key = 'continue';
                        $data = array();
+                       $batchcomplete = false;
 
                        $finishedModules = array_diff(
                                array_keys( $this->continueAllModules ),
@@ -611,9 +612,11 @@ class ApiResult extends ApiBase {
                                $finishedModules = array_diff(
                                        $finishedModules, $this->continueGeneratedModules
                                );
+                               $batchcomplete = true;
                        } else {
                                // Generator and prop modules are all done. Mark it so.
                                $this->generatorDone = true;
+                               $batchcomplete = true;
                        }
 
                        // Set 'continue' if any continuation data is set or if the generator
@@ -623,6 +626,10 @@ class ApiResult extends ApiBase {
                                        ( $this->generatorDone ? '-' : join( '|', $this->generatorParams ) ) .
                                        '||' . join( '|', $finishedModules );
                        }
+
+                       if ( $batchcomplete ) {
+                               $this->addValue( null, 'batchcomplete', '', ApiResult::ADD_ON_TOP | ApiResult::NO_SIZE_CHECK );
+                       }
                }
                if ( $data ) {
                        $this->addValue( null, $key, $data, ApiResult::ADD_ON_TOP | ApiResult::NO_SIZE_CHECK );
index 164594e..e5e9d5d 100644 (file)
@@ -77,6 +77,10 @@ class ApiTokens extends ApiBase {
                return $types;
        }
 
+       public function isDeprecated() {
+               return true;
+       }
+
        public function getAllowedParams() {
                return array(
                        'type' => array(
index e6a660b..8cd0f05 100644 (file)
@@ -104,17 +104,6 @@ class ApiWatch extends ApiBase {
 
                $res = array( 'title' => $title->getPrefixedText() );
 
-               // Currently unnecessary, code to act as a safeguard against any change
-               // in current behavior of uselang.
-               // Copy from ApiParse
-               $oldLang = null;
-               if ( isset( $params['uselang'] ) &&
-                       $params['uselang'] != $this->getContext()->getLanguage()->getCode()
-               ) {
-                       $oldLang = $this->getContext()->getLanguage(); // Backup language
-                       $this->getContext()->setLanguage( Language::factory( $params['uselang'] ) );
-               }
-
                if ( $params['unwatch'] ) {
                        $status = UnwatchAction::doUnwatch( $title, $user );
                        if ( $status->isOK() ) {
@@ -131,10 +120,6 @@ class ApiWatch extends ApiBase {
                        }
                }
 
-               if ( !is_null( $oldLang ) ) {
-                       $this->getContext()->setLanguage( $oldLang ); // Reset language to $oldLang
-               }
-
                if ( !$status->isOK() ) {
                        if ( $compatibilityMode ) {
                                $this->dieStatus( $status );
@@ -176,7 +161,6 @@ class ApiWatch extends ApiBase {
                                ApiBase::PARAM_DEPRECATED => true
                        ),
                        'unwatch' => false,
-                       'uselang' => null,
                        'continue' => '',
                );
                if ( $flags ) {
@@ -192,7 +176,6 @@ class ApiWatch extends ApiBase {
                return $psModule->getParamDescription() + array(
                        'title' => 'The page to (un)watch. use titles instead',
                        'unwatch' => 'If set the page will be unwatched rather than watched',
-                       'uselang' => 'Language to show the message in',
                        'continue' => 'When more results are available, use this to continue',
                );
        }
diff --git a/includes/api/i18n/en.json b/includes/api/i18n/en.json
new file mode 100644 (file)
index 0000000..c871be0
--- /dev/null
@@ -0,0 +1,98 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Anomie"
+               ]
+       },
+
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [https://www.mediawiki.org/wiki/API:Main_page Documentation]\n* [https://www.mediawiki.org/wiki/API:FAQ FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailing list]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API Announcements]\n* [https://bugzilla.wikimedia.org/buglist.cgi?component=API&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&order=bugs.delta_ts Bugs & requests]\n</div>\n<strong>Status:</strong> All features shown on this page should be working, but the API is still in active development, and may change at any time. Subscribe to [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce mailing list] for notice of updates.\n\n<strong>Erroneous requests:</strong> When erroneous requests are sent to the API, a HTTP header will be sent with the key \"MediaWiki-API-Error\" and then both the value of the header and the error code sent back will be set to the same value. For more information see https://www.mediawiki.org/wiki/API:Errors_and_warnings.",
+       "apihelp-main-param-action": "Which action to perform.",
+       "apihelp-main-param-format": "The format of the output.",
+       "apihelp-main-param-maxlag": "Maximum lag can be used when MediaWiki is installed on a database replicated cluster. To save actions causing any more site replication lag, this parameter can make the client wait until the replication lag is less than the specified value. In case of excessive lag, error code \"maxlag\" is returned with a message like \"Waiting for $host: $lag seconds lagged\".<br />See https://www.mediawiki.org/wiki/Manual:Maxlag_parameter for more information.",
+       "apihelp-main-param-smaxage": "Set the s-maxage header to this many seconds. Errors are never cached.",
+       "apihelp-main-param-maxage": "Set the max-age header to this many seconds. Errors are never cached.",
+       "apihelp-main-param-assert": "Verify the user is logged in if set to \"user\", or has the bot userright if \"bot\".",
+       "apihelp-main-param-requestid": "Any value given here will be included in the response. May be used to distinguish requests.",
+       "apihelp-main-param-servedby": "Include the hostname that served the request in the results.",
+       "apihelp-main-param-curtimestamp": "Include the current timestamp in the result.",
+       "apihelp-main-param-origin": "When accessing the API using a cross-domain AJAX request (CORS), set this to the originating domain. This must be included in any pre-flight request, and therefore must be part of the request URI (not the POST body). This must match one of the origins in the Origin: header exactly, so it has to be set to something like http://en.wikipedia.org or https://meta.wikimedia.org. If this parameter does not match the Origin: header, a 403 response will be returned. If this parameter matches the Origin: header and the origin is whitelisted, an Access-Control-Allow-Origin header will be set.",
+       "apihelp-main-param-uselang": "Language to use for message translations. A list of codes may be fetched from [[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo&siprop=languages]], or specify \"user\" to use the current user's language preference.",
+
+       "apihelp-format-example-generic": "Format the query result in the $1 format",
+       "apihelp-dbg-description": "Output data in PHP's var_export() format.",
+       "apihelp-dbgfm-description": "Output data in PHP's var_export() format (pretty-print in HTML).",
+       "apihelp-dump-description": "Output data in PHP's var_dump() format.",
+       "apihelp-dumpfm-description": "Output data in PHP's var_dump() format (pretty-print in HTML).",
+       "apihelp-json-description": "Output data in JSON format.",
+       "apihelp-json-param-callback": "If specified, wraps the output into a given function call. For safety, all user-specific data will be restricted.",
+       "apihelp-json-param-utf8": "If specified, encodes most (but not all) non-ASCII characters as UTF-8 instead of replacing them with hexadecimal escape sequences.",
+       "apihelp-jsonfm-description": "Output data in JSON format (pretty-print in HTML).",
+       "apihelp-none-description": "Output nothing.",
+       "apihelp-php-description": "Output data in serialized PHP format.",
+       "apihelp-phpfm-description": "Output data in serialized PHP format (pretty-print in HTML).",
+       "apihelp-rawfm-description": "Output data with the debugging elements in JSON format (pretty-print in HTML).",
+       "apihelp-txt-description": "Output data in PHP's print_r() format.",
+       "apihelp-txtfm-description": "Output data in PHP's print_r() format (pretty-print in HTML).",
+       "apihelp-wddx-description": "Output data in WDDX format.",
+       "apihelp-wddxfm-description": "Output data in WDDX format (pretty-print in HTML).",
+       "apihelp-xml-description": "Output data in XML format.",
+       "apihelp-xml-param-xslt": "If specified, adds &lt;xslt&gt; as stylesheet. This should be a wiki page in the MediaWiki namespace whose page name ends with \".xsl\".",
+       "apihelp-xml-param-includexmlnamespace": "If specified, adds an XML namespace.",
+       "apihelp-xmlfm-description": "Output data in XML format (pretty-print in HTML).",
+       "apihelp-yaml-description": "Output data in YAML format.",
+       "apihelp-yamlfm-description": "Output data in YAML format (pretty-print in HTML).",
+
+       "apihelp-help-description": "Display help for the specified modules.",
+       "apihelp-help-param-modules": "Modules to display help for (values of the action= and format= parameters, or \"main\"). Can specify submodules with a \"+\".",
+       "apihelp-help-param-submodules": "Include help for submodules of the named module.",
+       "apihelp-help-param-recursivesubmodules": "Include help for submodules recursively.",
+       "apihelp-help-param-helpformat": "Format of the help output.",
+       "apihelp-help-param-wrap": "Wrap the output in a standard API response structure.",
+       "apihelp-help-param-toc": "Include a table of contents in the HTML output.",
+       "apihelp-help-example-main": "Help for the main module",
+       "apihelp-help-example-recursive": "All help in one page",
+       "apihelp-help-example-help": "Help for the help module itself",
+       "apihelp-help-example-query": "Help for two query submodules",
+
+       "api-format-title": "MediaWiki API result",
+       "api-format-prettyprint-header": "You are looking at the HTML representation of the $1 format. HTML is good for debugging, but is unsuitable for application use.\n\nSpecify the format parameter to change the output format. To see the non-HTML representation of the $1 format, set format=$2.\n\nSee the [https://www.mediawiki.org/wiki/API complete documentation], or [[Special:ApiHelp/main|API help]] for more information.",
+
+       "api-help-title": "MediaWiki API help",
+       "api-help-lead": "This is an auto-generated MediaWiki API documentation page.\n\nDocumentation and examples: https://www.mediawiki.org/wiki/API",
+       "api-help-main-header": "Main module",
+       "api-help-fallback-description": "$1",
+       "api-help-fallback-parameter": "$1",
+       "api-help-fallback-example": "$1",
+       "api-help-flags": "",
+       "api-help-flag-deprecated": "This module is deprecated.",
+       "api-help-flag-internal": "<strong>This module is internal or unstable.</strong> Its operation may change without notice.",
+       "api-help-flag-readrights": "This module requires read rights.",
+       "api-help-flag-writerights": "This module requires write rights.",
+       "api-help-flag-mustbeposted": "This module only accepts POST requests.",
+       "api-help-flag-generator": "This module can be used as a generator.",
+       "api-help-help-urls": "",
+       "api-help-parameters": "{{PLURAL:$1|Parameter|Parameters}}:",
+       "api-help-param-deprecated": "Deprecated.",
+       "api-help-param-required": "This parameter is required.",
+       "api-help-param-list": "{{PLURAL:$1|1=One value|2=Values (separate with \"{{!}}\")}}: $2",
+       "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=Must be empty|Can be empty, or $2}}",
+       "api-help-param-limit": "No more than $1 allowed.",
+       "api-help-param-limit2": "No more than $1 ($2 for bots) allowed.",
+       "api-help-param-integer-min": "The {{PLURAL:$1|1=value|2=values}} must be no less than $2.",
+       "api-help-param-integer-max": "The {{PLURAL:$1|1=value|2=values}} must be no greater than $3.",
+       "api-help-param-integer-minmax": "The {{PLURAL:$1|1=value|2=values}} must be between $2 and $3.",
+       "api-help-param-upload": "Must be posted as a file upload using multipart/form-data.",
+       "api-help-param-multi-separate": "Separate values with \"|\".",
+       "api-help-param-multi-max": "Maximum number of values is {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} for bots).",
+       "api-help-param-default": "Default: $1",
+       "api-help-param-default-empty": "Default: <span class=\"apihelp-empty\">(empty)</span>",
+       "api-help-param-token": "A \"$1\" token retrieved from [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]",
+       "api-help-param-no-description": "<span class=\"apihelp-empty\">(no description)</span>",
+       "api-help-examples": "{{PLURAL:$1|Example|Examples}}:",
+       "api-help-permissions": "{{PLURAL:$1|Permission|Permissions}}:",
+       "api-help-permissions-granted-to": "{{PLURAL:$1|Granted to}}: $2",
+       "api-help-right-apihighlimits": "Use higher limits in API queries (slow queries: $1; fast queries: $2). The limits for slow queries also apply to multivalue parameters.",
+
+       "api-credits-header": "Credits",
+       "api-credits": "API developers:\n* Roan Kattouw (lead developer Sep 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (creator, lead developer Sep 2006–Sep 2007)\n* Brad Jorsch (lead developer 2013–present)\n\nPlease send your comments, suggestions and questions to mediawiki-api@lists.wikimedia.org\nor file a bug report at https://bugzilla.wikimedia.org/."
+}
diff --git a/includes/api/i18n/qqq.json b/includes/api/i18n/qqq.json
new file mode 100644 (file)
index 0000000..0b10779
--- /dev/null
@@ -0,0 +1,96 @@
+{
+       "@metadata": {
+               "authors": []
+       },
+
+       "apihelp-main-description": "{{doc-apihelp-description|main}}",
+       "apihelp-main-param-action": "{{doc-apihelp-param|main|action}}",
+       "apihelp-main-param-format": "{{doc-apihelp-param|main|format}}",
+       "apihelp-main-param-maxlag": "{{doc-apihelp-param|main|maxlag}}",
+       "apihelp-main-param-smaxage": "{{doc-apihelp-param|main|smaxage}}",
+       "apihelp-main-param-maxage": "{{doc-apihelp-param|main|maxage}}",
+       "apihelp-main-param-assert": "{{doc-apihelp-param|main|assert}}",
+       "apihelp-main-param-requestid": "{{doc-apihelp-param|main|requestid}}",
+       "apihelp-main-param-servedby": "{{doc-apihelp-param|main|servedby}}",
+       "apihelp-main-param-curtimestamp": "{{doc-apihelp-param|main|curtimestamp}}",
+       "apihelp-main-param-origin": "{{doc-apihelp-param|main|origin}}",
+       "apihelp-main-param-uselang": "{{doc-apihelp-param|main|uselang}}",
+
+       "apihelp-format-example-generic": "{{doc-apihelp-example|format|params=* $1 - Format name|paramstart=2|noseealso=1}}",
+       "apihelp-dbg-description": "{{doc-apihelp-description|dbg|seealso=* {{msg-mw|apihelp-dbgfm-description}}}}",
+       "apihelp-dbgfm-description": "{{doc-apihelp-description|dbgfm|seealso=* {{msg-mw|apihelp-dbg-description}}}}",
+       "apihelp-dump-description": "{{doc-apihelp-description|dump|seealso=* {{msg-mw|apihelp-dumpfm-description}}}}",
+       "apihelp-dumpfm-description": "{{doc-apihelp-description|dumpfm|seealso=* {{msg-mw|apihelp-dump-description}}}}",
+       "apihelp-json-description": "{{doc-apihelp-description|json|seealso=* {{msg-mw|apihelp-jsonfm-description}}}}",
+       "apihelp-json-param-callback": "{{doc-apihelp-param|json|callback}}",
+       "apihelp-json-param-utf8": "{{doc-apihelp-param|json|utf8}}",
+       "apihelp-jsonfm-description": "{{doc-apihelp-description|jsonfm|seealso=* {{msg-mw|apihelp-json-description}}}}",
+       "apihelp-none-description": "{{doc-apihelp-description|none}}",
+       "apihelp-php-description": "{{doc-apihelp-description|php|seealso=* {{msg-mw|apihelp-phpfm-description}}}}",
+       "apihelp-phpfm-description": "{{doc-apihelp-description|phpfm|seealso=* {{msg-mw|apihelp-php-description}}}}",
+       "apihelp-rawfm-description": "{{doc-apihelp-description|rawfm|seealso=* {{msg-mw|apihelp-raw-description}}}}",
+       "apihelp-txt-description": "{{doc-apihelp-description|txt|seealso=* {{msg-mw|apihelp-txtfm-description}}}}",
+       "apihelp-txtfm-description": "{{doc-apihelp-description|txtfm|seealso=* {{msg-mw|apihelp-txt-description}}}}",
+       "apihelp-wddx-description": "{{doc-apihelp-description|wddx|seealso=* {{msg-mw|apihelp-wddxfm-description}}}}",
+       "apihelp-wddxfm-description": "{{doc-apihelp-description|wddxfm|seealso=* {{msg-mw|apihelp-wddx-description}}}}",
+       "apihelp-xml-description": "{{doc-apihelp-description|xml|seealso=* {{msg-mw|apihelp-xmlfm-description}}}}",
+       "apihelp-xml-param-xslt": "{{doc-apihelp-param|xml|xslt}}",
+       "apihelp-xml-param-includexmlnamespace": "{{doc-apihelp-param|xml|includexmlnamespace}}",
+       "apihelp-xmlfm-description": "{{doc-apihelp-description|xmlfm|seealso=* {{msg-mw|apihelp-xml-description}}}}",
+       "apihelp-yaml-description": "{{doc-apihelp-description|yaml|seealso=* {{msg-mw|apihelp-yamlfm-description}}}}",
+       "apihelp-yamlfm-description": "{{doc-apihelp-description|yamlfm|seealso=* {{msg-mw|apihelp-yaml-description}}}}",
+
+       "apihelp-help-description": "{{doc-apihelp-description|help}}",
+       "apihelp-help-param-modules": "{{doc-apihelp-param|help|modules}}",
+       "apihelp-help-param-submodules": "{{doc-apihelp-param|help|submodules}}",
+       "apihelp-help-param-recursivesubmodules": "{{doc-apihelp-param|help|recursivesubmodules}}",
+       "apihelp-help-param-helpformat": "{{doc-apihelp-param|help|helpformat}}",
+       "apihelp-help-param-wrap": "{{doc-apihelp-param|help|wrap}}",
+       "apihelp-help-param-toc": "{{doc-apihelp-param|help|toc}}",
+       "apihelp-help-example-main": "{{doc-apihelp-example|help}}",
+       "apihelp-help-example-recursive": "{{doc-apihelp-example|help}}",
+       "apihelp-help-example-help": "{{doc-apihelp-example|help}}",
+       "apihelp-help-example-query": "{{doc-apihelp-example|help}}",
+
+       "api-format-title": "Page title when API output is pretty-printed in HTML.",
+       "api-format-prettyprint-header": "{{technical}} Displayed as a header when API output is pretty-printed in HTML.\n\nParameters:\n* $1 - Format name\n* $2 - Non-pretty-printing module name",
+
+       "api-help-title": "Page title for the auto-generated help output",
+       "api-help-lead": "Text displayed at the top of the API help page",
+       "api-help-main-header": "Text for the header of the main module",
+       "api-help-fallback-description": "{{notranslate}}",
+       "api-help-fallback-parameter": "{{notranslate}}",
+       "api-help-fallback-example": "{{notranslate}}",
+       "api-help-flags": "{{optional}} Label for the API help flags box\n\nParameters:\n* $1 - Number of flags to be displayed",
+       "api-help-flag-deprecated": "Flag displayed for an API module that is deprecated",
+       "api-help-flag-internal": "Flag displayed for an API module that is considered internal or unstable",
+       "api-help-flag-readrights": "Flag displayed for an API module that requires read rights",
+       "api-help-flag-writerights": "Flag displayed for an API module that requires write rights",
+       "api-help-flag-mustbeposted": "Flag displayed for an API module that only accepts POST requests",
+       "api-help-flag-generator": "Flag displayed for an API module that can be used as a generator",
+       "api-help-help-urls": "{{optional}} Label for the API help urls section\n\nParameters:\n* $1 - Number of urls to be displayed",
+       "api-help-parameters": "Label for the API help parameters section\n\nParameters:\n* $1 - Number of parameters to be displayed",
+       "api-help-param-deprecated": "Displayed in the API help for any deprecated parameter",
+       "api-help-param-required": "Displayed in the API help for any required parameter",
+       "api-help-param-list": "Used to display the possible values for a parameter taking a list of values\n\nParameters:\n* $1 - 1 if the parameter takes one value, 2 if the parameter takes any number of values\n* $2 - Comma-separated list of values, possibly formatted using {{msg-mw|api-help-param-list-can-be-empty}}",
+       "api-help-param-list-can-be-empty": "Used to indicate that one of the possible values in the list is the empty string.\n\nParameters:\n* $1 - Number of items in the rest of the list; may be 0\n* $2 - Remainder of the list as a comma-separated string",
+       "api-help-param-limit": "Used to display the maximum value of a limit parameter\n\nParameters:\n* $1 - Maximum value",
+       "api-help-param-limit2": "Used to display the maximum values of a limit parameter\n\nParameters:\n* $1 - Maximum value without the apihighlimits right\n* $2 - Maximum value with the apihighlimits right",
+       "api-help-param-integer-min": "Used to display an integer parameter with a minimum but no maximum value\n\nParameters:\n* $1 - 1 if the parameter takes one value, 2 if the parameter takes any number of values\n* $2 - Minimum value\n* $3 - unused\n\nSee also:\n* {{msg-mw|api-help-param-integer-max}}\n* {{msg-mw|api-help-param-integer-minmax}}",
+       "api-help-param-integer-max": "Used to display an integer parameter with a maximum but no minimum value\n\nParameters:\n* $1 - 1 if the parameter takes one value, 2 if the parameter takes any number of values\n* $2 - unused\n* $3 - Maximum value\n\nSee also:\n* {{msg-mw|api-help-param-integer-min}}\n* {{msg-mw|api-help-param-integer-minmax}}",
+       "api-help-param-integer-minmax": "Used to display an integer parameter with a maximum and minimum values\n\nParameters:\n* $1 - 1 if the parameter takes one value, 2 if the parameter takes any number of values\n* $2 - Minimum value\n* $3 - Maximum value\n\nSee also:\n* {{msg-mw|api-help-param-integer-min}}\n* {{msg-mw|api-help-param-integer-max}}",
+       "api-help-param-upload": "{{technical}} Used to indicate that an 'upload'-type parameter must be posted as a file upload using multipart/form-data",
+       "api-help-param-multi-separate": "Used to indicate how to separate multiple values. Not used with {{msg-mw|api-help-param-list}}.",
+       "api-help-param-multi-max": "Used to indicate the maximum number of values accepted for a multi-valued parameter.\n\nParameters:\n* $1 - Maximum value without the apihighlimits right\n* $2 - Maximum value with the apihighlimits right",
+       "api-help-param-default": "Used to display the default value for an API parameter\n\nParameters:\n* $1 - Default value\n\nSee also:\n* {{msg-mw|api-help-param-default-empty}}",
+       "api-help-param-default-empty": "Used to display the default value for an API parameter when that default is an empty value\n\nSee also:\n* {{msg-mw|api-help-param-default}}",
+       "api-help-param-token": "{{doc-apihelp-param|description=any 'token' parameter|paramstart=3|params=\n* $1 - Token type|noseealso=1}}",
+       "api-help-param-no-description": "Displayed on API parameters that lack any description",
+       "api-help-examples": "Label for the API help examples section\n\nParameters:\n* $1 - Number of examples to be displayed",
+       "api-help-permissions": "Label for the \"permissions\" section in the main module's help output.\n\nParameters:\n* $1 - Number of permissions displayed",
+       "api-help-permissions-granted-to": "Used to introduce the list of groups each permission is assigned to.\n\nParameters:\n* $1 - Number of groups\n* $2 - List of group names, comma-separated",
+       "api-help-right-apihighlimits": "{{technical}}{{doc-right|apihighlimits|prefix=api-help}}\nThis message is used instead of {{msg-mw|right-apihighlimits}} in the API help to display the actual limits.\n\nParameters:\n* $1 - Limit for slow queries\n* $2 - Limit for fast queries",
+
+       "api-credits-header": "Header for the API credits section in the API help output",
+       "api-credits": "API credits text, displayed in the API help output"
+}
index 29642d0..4bb646e 100644 (file)
@@ -2346,7 +2346,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                # Split database and table into proper variables.
                # We reverse the explode so that database.table and table both output
                # the correct table.
-               $dbDetails = explode( '.', $name, 2 );
+               $dbDetails = explode( '.', $name, 3 );
                if ( count( $dbDetails ) == 3 ) {
                        list( $database, $schema, $table ) = $dbDetails;
                        # We don't want any prefix added in this case
index 9797f29..186915c 100644 (file)
@@ -315,20 +315,6 @@ class LoadBalancer {
                return $i;
        }
 
-       /**
-        * Wait for a specified number of microseconds, and return the period waited
-        * @param int $t
-        * @return int
-        */
-       function sleep( $t ) {
-               wfProfileIn( __METHOD__ );
-               wfDebug( __METHOD__ . ": waiting $t us\n" );
-               usleep( $t );
-               wfProfileOut( __METHOD__ );
-
-               return $t;
-       }
-
        /**
         * Set the master wait position
         * If a DB_SLAVE connection has been opened already, waits
index 2f898b7..755a851 100644 (file)
@@ -129,6 +129,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
         * Gets the db field prefix.
         *
         * @since 1.20
+        * @deprecated since 1.25, use the $this->fieldPrefix property instead
         *
         * @return string
         */
@@ -770,7 +771,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
         * @return string
         */
        public function getPrefixedField( $field ) {
-               return $this->getFieldPrefix() . $field;
+               return $this->fieldPrefix . $field;
        }
 
        /**
@@ -796,7 +797,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
         * @return string
         */
        public function unprefixFieldName( $fieldName ) {
-               return substr( $fieldName, strlen( $this->getFieldPrefix() ) );
+               return substr( $fieldName, strlen( $this->fieldPrefix ) );
        }
 
        /**
diff --git a/includes/debug/logger/Logger.php b/includes/debug/logger/Logger.php
new file mode 100644 (file)
index 0000000..f5dd1cf
--- /dev/null
@@ -0,0 +1,212 @@
+<?php
+/**
+ * @section LICENSE
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * PSR-3 logging service.
+ *
+ * This class provides a service interface for logging system events. The
+ * MWLogger class itself is intended to be a thin wrapper around another PSR-3
+ * compliant logging library. Creation of MWLogger instances is managed via
+ * the MWLogger::getInstance() static method which in turn delegates to the
+ * currently registered service provider.
+ *
+ * A service provider is any class implementing the MWLoggerSpi interface.
+ * There are two possible methods of registering a service provider. The
+ * MWLogger::registerProvider() static method can be called at any time to
+ * change the service provider. If MWLogger::getInstance() is called before
+ * any service provider has been registered, it will attempt to use the
+ * $wgMWLoggerDefaultSpi global to bootstrap MWLoggerSpi registration.
+ * $wgMWLoggerDefaultSpi can either be the name of a class implementing the
+ * MWLoggerSpi interface with a zero argument constructor or a callable that
+ * will return an MWLoggerSpi instance.
+ *
+ * @see MWLoggerSpi
+ * @since 1.25
+ * @author Bryan Davis <bd808@wikimedia.org>
+ * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
+ */
+class MWLogger implements \Psr\Log\LoggerInterface {
+
+       /**
+        * Service provider.
+        * @var MWLoggerSpi $spi
+        */
+       protected static $spi;
+
+
+       /**
+        * Wrapped PSR-3 logger instance.
+        *
+        * @var \Psr\Log\LoggerInterface $delegate
+        */
+       protected $delegate;
+
+
+       /**
+        * @param \Psr\Log\LoggerInterface $logger
+        */
+       public function __construct( \Psr\Log\LoggerInterface $logger ) {
+               $this->delegate = $logger;
+       }
+
+
+       /**
+        * Logs with an arbitrary level.
+        *
+        * @param string|int $level
+        * @param string $message
+        * @param array $context
+        */
+       public function log( $level, $message, array $context = array() ) {
+               $this->delegate->log( $level, $message, $context );
+       }
+
+
+       /**
+        * System is unusable.
+        *
+        * @param string $message
+        * @param array $context
+        */
+       public function emergency( $message, array $context = array() ) {
+               $this->log( \Psr\Log\LogLevel::EMERGENCY, $message, $context );
+       }
+
+
+       /**
+        * Action must be taken immediately.
+        *
+        * Example: Entire website down, database unavailable, etc. This should
+        * trigger the SMS alerts and wake you up.
+        *
+        * @param string $message
+        * @param array $context
+        */
+       public function alert( $message, array $context = array() ) {
+               $this->log( \Psr\Log\LogLevel::ALERT, $message, $context );
+       }
+
+
+       /**
+        * Critical conditions.
+        *
+        * Example: Application component unavailable, unexpected exception.
+        *
+        * @param string $message
+        * @param array $context
+        */
+       public function critical( $message, array $context = array( ) ) {
+               $this->log( \Psr\Log\LogLevel::CRITICAL, $message, $context );
+       }
+
+
+       /**
+        * Runtime errors that do not require immediate action but should typically
+        * be logged and monitored.
+        *
+        * @param string $message
+        * @param array $context
+        */
+       public function error( $message, array $context = array( ) ) {
+               $this->log( \Psr\Log\LogLevel::ERROR, $message, $context );
+       }
+
+
+       /**
+        * Exceptional occurrences that are not errors.
+        *
+        * Example: Use of deprecated APIs, poor use of an API, undesirable things
+        * that are not necessarily wrong.
+        *
+        * @param string $message
+        * @param array $context
+        */
+       public function warning( $message, array $context = array() ) {
+               $this->log( \Psr\Log\LogLevel::WARNING, $message, $context );
+       }
+
+
+       /**
+        * Normal but significant events.
+        *
+        * @param string $message
+        * @param array $context
+        */
+       public function notice( $message, array $context = array() ) {
+               $this->log( \Psr\Log\LogLevel::NOTICE, $message, $context );
+       }
+
+
+       /**
+        * Interesting events.
+        *
+        * Example: User logs in, SQL logs.
+        *
+        * @param string $message
+        * @param array $context
+        */
+       public function info( $message, array $context = array() ) {
+               $this->log( \Psr\Log\LogLevel::INFO, $message, $context );
+       }
+
+
+       /**
+        * Detailed debug information.
+        *
+        * @param string $message
+        * @param array $context
+        */
+       public function debug( $message, array $context = array() ) {
+               $this->log( \Psr\Log\LogLevel::DEBUG, $message, $context );
+       }
+
+
+       /**
+        * Register a service provider to create new MWLogger instances.
+        *
+        * @param MWLoggerSpi $provider Provider to register
+        */
+       public static function registerProvider( MWLoggerSpi $provider ) {
+               self::$spi = $provider;
+       }
+
+
+       /**
+        * Get a named logger instance from the currently configured logger factory.
+        *
+        * @param string $channel Logger channel (name)
+        * @return MWLogger
+        */
+       public static function getInstance( $channel ) {
+               if ( self::$spi === null ) {
+                       global $wgMWLoggerDefaultSpi;
+                       if ( is_callable( $wgMWLoggerDefaultSpi ) ) {
+                               $provider = $wgMWLoggerDefaultSpi();
+                       } else {
+                               $provider = new $wgMWLoggerDefaultSpi();
+                       }
+                       self::registerProvider( $provider );
+               }
+
+               return self::$spi->getLogger( $channel );
+       }
+
+}
diff --git a/includes/debug/logger/NullSpi.php b/includes/debug/logger/NullSpi.php
new file mode 100644 (file)
index 0000000..6c38c32
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+/**
+ * @section LICENSE
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * MWLogger service provider that creates \Psr\Log\NullLogger instances.
+ * A NullLogger silently discards all log events sent to it.
+ *
+ * @see MWLogger
+ * @since 1.25
+ * @author Bryan Davis <bd808@wikimedia.org>
+ * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
+ */
+class MWLoggerNullSpi implements MWLoggerSpi {
+
+       /**
+        * @var \Psr\Log\NullLogger $singleton
+        */
+       protected $singleton;
+
+
+       public function __construct() {
+               $this->singleton = new \Psr\Log\NullLogger();
+       }
+
+
+       /**
+        * Get a logger instance.
+        *
+        * @param string $channel Logging channel
+        * @return MWLogger Logger instance
+        */
+       public function getLogger( $channel ) {
+               return $this->singleton;
+       }
+
+}
diff --git a/includes/debug/logger/Spi.php b/includes/debug/logger/Spi.php
new file mode 100644 (file)
index 0000000..7139856
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+/**
+ * @section LICENSE
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Service provider interface for MWLogger implementation libraries.
+ *
+ * MediaWiki can be configured to use a class implementing this interface to
+ * create new MWLogger instances via either the $wgMWLoggerDefaultSpi global
+ * variable or code that constructs an instance and registeres it via the
+ * MWLogger::registerProvider() static method.
+ *
+ * @see MWLogger
+ * @since 1.25
+ * @author Bryan Davis <bd808@wikimedia.org>
+ * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
+ */
+interface MWLoggerSpi {
+
+       /**
+        * Get a logger instance.
+        *
+        * @param string $channel Logging channel
+        * @return MWLogger Logger instance
+        */
+       public function getLogger( $channel );
+
+}
diff --git a/includes/debug/logger/monolog/Handler.php b/includes/debug/logger/monolog/Handler.php
new file mode 100644 (file)
index 0000000..1472459
--- /dev/null
@@ -0,0 +1,212 @@
+<?php
+/**
+ * @section LICENSE
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+
+/**
+ * Log handler that replicates the behavior of MediaWiki's wfErrorLog()
+ * logging service. Log output can be directed to a local file, a PHP stream,
+ * or a udp2log server.
+ *
+ * For udp2log output, the stream specification must have the form:
+ * "udp://HOST:PORT[/PREFIX]"
+ * where:
+ * - HOST: IPv4, IPv6 or hostname
+ * - PORT: server port
+ * - PREFIX: optional (but recommended) prefix telling udp2log how to route
+ * the log event
+ *
+ * When not targeting a udp2log stream this class will act as a drop-in
+ * replacement for Monolog's StreamHandler.
+ *
+ * @since 1.25
+ * @author Bryan Davis <bd808@wikimedia.org>
+ * @copyright © 2013 Bryan Davis and Wikimedia Foundation.
+ */
+class MWLoggerMonologHandler extends \Monolog\Handler\AbstractProcessingHandler {
+
+       /**
+        * Log sink descriptor
+        * @var string $uri
+        */
+       protected $uri;
+
+       /**
+        * Log sink
+        * @var resource $sink
+        */
+       protected $sink;
+
+       /**
+        * @var string $error
+        */
+       protected $error;
+
+       /**
+        * @var string $host
+        */
+       protected $host;
+
+       /**
+        * @var int $port
+        */
+       protected $port;
+
+       /**
+        * @var string $prefix
+        */
+       protected $prefix;
+
+
+       /**
+        * @param string $stream Stream URI
+        * @param int $level Minimum logging level that will trigger handler
+        * @param bool $bubble Can handled meesages bubble up the handler stack?
+        */
+       public function __construct(
+               $stream, $level = \Monolog\Logger::DEBUG, $bubble = true
+       ) {
+               parent::__construct( $level, $bubble );
+               $this->uri = $stream;
+       }
+
+
+       /**
+        * Open the log sink described by our stream URI.
+        */
+       protected function openSink() {
+               if ( !$this->uri ) {
+                       throw new LogicException(
+                               'Missing stream uri, the stream can not be opened.' );
+               }
+               $this->error = null;
+               set_error_handler( array( $this, 'errorTrap' ) );
+
+               if ( substr( $this->uri, 0, 4 ) == 'udp:' ) {
+                       $parsed = parse_url( $this->uri );
+                       if ( !isset( $parsed['host'] ) ) {
+                               throw new UnexpectedValueException( sprintf(
+                                       'Udp transport "%s" must specify a host', $this->uri
+                               ) );
+                       }
+                       if ( !isset( $parsed['port'] ) ) {
+                               throw new UnexpectedValueException( sprintf(
+                                       'Udp transport "%s" must specify a port', $this->uri
+                               ) );
+                       }
+
+                       $this->host = $parsed['host'];
+                       $this->port = $parsed['port'];
+                       $this->prefix = '';
+
+                       if ( isset( $parsed['path'] ) ) {
+                               $this->prefix = ltrim( $parsed['path'], '/' );
+                       }
+
+                       if ( filter_var( $this->host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) ) {
+                               $domain = AF_INET6;
+
+                       } else {
+                               $domain = AF_INET;
+                       }
+
+                       $this->sink = socket_create( $domain, SOCK_DGRAM, SOL_UDP );
+
+               } else {
+                       $this->sink = fopen( $this->uri, 'a' );
+               }
+               restore_error_handler();
+
+               if ( !is_resource( $this->sink ) ) {
+                       $this->sink = null;
+                       throw new UnexpectedValueException( sprintf(
+                               'The stream or file "%s" could not be opened: %s',
+                               $this->uri, $this->error
+                       ) );
+               }
+       }
+
+
+       /**
+        * Custom error handler.
+        * @param int $code Error number
+        * @param string $msg Error message
+        */
+       protected function errorTrap( $code, $msg ) {
+               $this->error = $msg;
+       }
+
+
+       /**
+        * Should we use UDP to send messages to the sink?
+        * @return bool
+        */
+       protected function useUdp() {
+               return $this->host !== null;
+       }
+
+
+       protected function write( array $record ) {
+               if ( $this->sink === null ) {
+                       $this->openSink();
+               }
+
+               $text = (string) $record['formatted'];
+               if ( $this->useUdp() ) {
+
+                       // Clean it up for the multiplexer
+                       if ( $this->prefix !== '' ) {
+                               $text = preg_replace( '/^/m', "{$this->prefix} ", $text );
+
+                               // Limit to 64KB
+                               if ( strlen( $text ) > 65506 ) {
+                                       $text = substr( $text, 0, 65506 );
+                               }
+
+                               if ( substr( $text, -1 ) != "\n" ) {
+                                       $text .= "\n";
+                               }
+
+                       } elseif ( strlen( $text ) > 65507 ) {
+                               $text = substr( $text, 0, 65507 );
+                       }
+
+                       socket_sendto(
+                               $this->sink, $text, strlen( $text ), 0, $this->host, $this->port );
+
+               } else {
+                       fwrite( $this->sink, $text );
+               }
+       }
+
+
+       public function close() {
+               if ( is_resource( $this->sink ) ) {
+                       if ( $this->useUdp() ) {
+                               socket_close( $this->sink );
+
+                       } else {
+                               fclose( $this->sink );
+                       }
+               }
+               $this->sink = null;
+       }
+
+}
diff --git a/includes/debug/logger/monolog/Processor.php b/includes/debug/logger/monolog/Processor.php
new file mode 100644 (file)
index 0000000..a9f72c8
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+/**
+ * @section LICENSE
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+
+/**
+ * Injects `wfHostname()` and `wfWikiID()` in all records.
+ *
+ * @since 1.25
+ * @author Bryan Davis <bd808@wikimedia.org>
+ * @copyright © 2013 Bryan Davis and Wikimedia Foundation.
+ */
+class MWLoggerMonologProcessor {
+
+       /**
+        * @param array $record
+        * @return array
+        */
+       public function __invoke( array $record ) {
+               $record['extra'] = array_merge(
+                       $record['extra'],
+                       array(
+                               'host' => wfHostname(),
+                               'wiki' => wfWikiID(),
+                       )
+               );
+               return $record;
+       }
+
+}
diff --git a/includes/debug/logger/monolog/Spi.php b/includes/debug/logger/monolog/Spi.php
new file mode 100644 (file)
index 0000000..fc39b25
--- /dev/null
@@ -0,0 +1,279 @@
+<?php
+/**
+ * @section LICENSE
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * MWLogger service provider that creates loggers implemented by Monolog.
+ *
+ * Configured using an array of configuration data with the keys 'loggers',
+ * 'processors', 'handlers' and 'formatters'.
+ *
+ * The ['loggers']['@default'] configuration will be used to create loggers
+ * for any channel that isn't explicitly named in the 'loggers' configuration
+ * section.
+ *
+ * Configuration can be specified using the $wgMWLoggerMonologSpiConfig global
+ * variable.
+ *
+ * Example:
+ * @code
+ * $wgMWLoggerMonologSpiConfig = array(
+ *     'loggers' => array(
+ *         '@default' => array(
+ *             'processors' => array( 'wiki', 'psr', 'pid', 'uid', 'web' ),
+ *             'handlers'   => array( 'stream' ),
+ *         ),
+ *         'runJobs' => array(
+ *             'processors' => array( 'wiki', 'psr', 'pid' ),
+ *             'handlers'   => array( 'stream' ),
+ *         )
+ *     ),
+ *     'processors' => array(
+ *         'wiki' => array(
+ *             'class' => 'MWLoggerMonologProcessor',
+ *         ),
+ *         'psr' => array(
+ *             'class' => '\\Monolog\\Processor\\PsrLogMessageProcessor',
+ *         ),
+ *         'pid' => array(
+ *             'class' => '\\Monolog\\Processor\\ProcessIdProcessor',
+ *         ),
+ *         'uid' => array(
+ *             'class' => '\\Monolog\\Processor\\UidProcessor',
+ *         ),
+ *         'web' => array(
+ *             'class' => '\\Monolog\\Processor\\WebProcessor',
+ *         ),
+ *     ),
+ *     'handlers' => array(
+ *         'stream' => array(
+ *             'class'     => '\\Monolog\\Handler\\StreamHandler',
+ *             'args'      => array( 'path/to/your.log' ),
+ *             'formatter' => 'line',
+ *         ),
+ *         'redis' => array(
+ *             'class'     => '\\Monolog\\Handler\\RedisHandler',
+ *             'args'      => array( function() {
+ *                     $redis = new Redis();
+ *                     $redis->connect( '127.0.0.1', 6379 );
+ *                     return $redis;
+ *                 },
+ *                 'logstash'
+ *             ),
+ *             'formatter' => 'logstash',
+ *         ),
+ *         'udp2log' => array(
+ *             'class' => 'MWLoggerMonologHandler',
+ *             'args' => array(
+ *                 'udp://127.0.0.1:8420/mediawiki
+ *             ),
+ *             'formatter' => 'line',
+ *         ),
+ *     ),
+ *     'formatters' => array(
+ *         'line' => array(
+ *             'class' => '\\Monolog\\Formatter\\LineFormatter',
+ *          ),
+ *          'logstash' => array(
+ *              'class' => '\\Monolog\\Formatter\\LogstashFormatter',
+ *              'args'  => array( 'mediawiki', php_uname( 'n' ), null, '', 1 ),
+ *          ),
+ *     ),
+ * );
+ * @endcode
+ *
+ * @see https://github.com/Seldaek/monolog
+ * @since 1.25
+ * @author Bryan Davis <bd808@wikimedia.org>
+ * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
+ */
+class MWLoggerMonologSpi implements MWLoggerSpi {
+
+       /**
+        * @var array $singletons
+        */
+       protected $singletons;
+
+       /**
+        * Configuration for creating new loggers.
+        * @var array $config
+        */
+       protected $config;
+
+
+       /**
+        * @param array $config Configuration data. Defaults to global
+        *     $wgMWLoggerMonologSpiConfig
+        */
+       public function __construct( $config = null ) {
+               if ( $config === null ) {
+                       global $wgMWLoggerMonologSpiConfig;
+                       $config = $wgMWLoggerMonologSpiConfig;
+               }
+               $this->config = $config;
+               $this->reset();
+       }
+
+
+       /**
+        * Reset internal caches.
+        *
+        * This is public for use in unit tests. Under normal operation there should
+        * be no need to flush the caches.
+        */
+       public function reset() {
+               $this->singletons = array(
+                       'loggers'    => array(),
+                       'handlers'   => array(),
+                       'formatters' => array(),
+                       'processors' => array(),
+               );
+       }
+
+
+       /**
+        * Get a logger instance.
+        *
+        * Creates and caches a logger instance based on configuration found in the
+        * $wgMWLoggerMonologSpiConfig global. Subsequent request for the same channel
+        * name will return the cached instance.
+        *
+        * @param string $channel Logging channel
+        * @return MWLogger Logger instance
+        */
+       public function getLogger( $channel ) {
+               if ( !isset( $this->singletons['loggers'][$channel] ) ) {
+                       // Fallback to using the '@default' configuration if an explict
+                       // configuration for the requested channel isn't found.
+                       $spec = isset( $this->config['loggers'][$channel] ) ?
+                               $this->config['loggers'][$channel] :
+                               $this->config['loggers']['@default'];
+
+                               $monolog = $this->createLogger( $channel, $spec );
+                               $this->singletons['loggers'][$channel] = new MWLogger( $monolog );
+               }
+
+               return $this->singletons['loggers'][$channel];
+       }
+
+
+       /**
+        * Create a logger.
+        * @param string $channel Logger channel
+        * @param array $spec Configuration
+        * @return \Monolog\Logger
+        */
+       protected function createLogger( $channel, $spec ) {
+               $obj = new \Monolog\Logger( $channel );
+
+               if ( isset( $spec['processors'] ) ) {
+                       foreach ( $spec['processors'] as $processor ) {
+                               $obj->pushProcessor( $this->getProcessor( $processor ) );
+                       }
+               }
+
+               if ( isset( $spec['handlers'] ) ) {
+                       foreach ( $spec['handlers'] as $handler ) {
+                               $obj->pushHandler( $this->getHandler( $handler ) );
+                       }
+               }
+               return $obj;
+       }
+
+
+       /**
+        * Create or return cached processor.
+        * @param string $name Processor name
+        * @return callable
+        */
+       protected function getProcessor( $name ) {
+               if ( !isset( $this->singletons['processors'][$name] ) ) {
+                       $spec = $this->config['processors'][$name];
+                       $this->singletons['processors'][$name] = $this->instantiate( $spec );
+               }
+               return $this->singletons['processors'][$name];
+       }
+
+
+       /**
+        * Create or return cached handler.
+        * @param string $name Processor name
+        * @return \Monolog\Handler\HandlerInterface
+        */
+       protected function getHandler( $name ) {
+               if ( !isset( $this->singletons['handlers'][$name] ) ) {
+                       $spec = $this->config['handlers'][$name];
+                       $handler = $this->instantiate( $spec );
+                       $handler->setFormatter( $this->getFormatter( $spec['formatter'] ) );
+                       $this->singletons['handlers'][$name] = $handler;
+               }
+               return $this->singletons['handlers'][$name];
+       }
+
+
+       /**
+        * Create or return cached formatter.
+        * @param string $name Formatter name
+        * @return \Monolog\Formatter\FormatterInterface
+        */
+       protected function getFormatter( $name ) {
+               if ( !isset( $this->singletons['formatters'][$name] ) ) {
+                       $spec = $this->config['formatters'][$name];
+                       $this->singletons['formatters'][$name] = $this->instantiate( $spec );
+               }
+               return $this->singletons['formatters'][$name];
+       }
+
+
+       /**
+        * Instantiate the requested object.
+        *
+        * The specification array must contain a 'class' key with string value that
+        * specifies the class name to instantiate. It can optionally contain an
+        * 'args' key that provides constructor arguments.
+        *
+        * @param array $spec Object specification
+        * @return object
+        */
+       protected function instantiate( $spec ) {
+               $clazz = $spec['class'];
+               $args = isset( $spec['args'] ) ? $spec['args'] : array();
+               // If an argument is a callable, call it.
+               // This allows passing things such as a database connection to a logger.
+               $args = array_map( function ( $value ) {
+                               if ( is_callable( $value ) ) {
+                                       return $value();
+                               } else {
+                                       return $value;
+                               }
+                       }, $args );
+
+               if ( empty( $args ) ) {
+                       $obj = new $clazz();
+
+               } else {
+                       $ref = new ReflectionClass( $clazz );
+                       $obj = $ref->newInstanceArgs( $args );
+               }
+
+               return $obj;
+       }
+
+}
index 71917e1..1f1ba9c 100644 (file)
@@ -82,6 +82,8 @@ class MWExceptionHandler {
                        } else {
                                echo nl2br( htmlspecialchars( $message ) ) . "\n";
                        }
+
+                       self::logException( $e );
                }
        }
 
index 8824b66..08c9afb 100644 (file)
@@ -1850,7 +1850,7 @@ class LocalFile extends File {
         * Start a transaction and lock the image for update
         * Increments a reference counter if the lock is already held
         * @throws MWException Throws an error if the lock was not acquired
-        * @return bool Success
+        * @return bool Whether the file lock owns/spawned the DB transaction
         */
        function lock() {
                $dbw = $this->repo->getMasterDB();
@@ -1877,7 +1877,7 @@ class LocalFile extends File {
 
                $this->markVolatile(); // file may change soon
 
-               return true;
+               return $this->lockedOwnTrx;
        }
 
        /**
@@ -2419,13 +2419,19 @@ class LocalFileRestoreBatch {
                        return $this->file->repo->newGood();
                }
 
-               $this->file->lock();
+               $lockOwnsTrx = $this->file->lock();
 
                $dbw = $this->file->repo->getMasterDB();
                $status = $this->file->repo->newGood();
 
                $exists = (bool)$dbw->selectField( 'image', '1',
-                       array( 'img_name' => $this->file->getName() ), __METHOD__, array( 'FOR UPDATE' ) );
+                       array( 'img_name' => $this->file->getName() ),
+                       __METHOD__,
+                       // The lock() should already prevents changes, but this still may need
+                       // to bypass any transaction snapshot. However, if lock() started the
+                       // trx (which it probably did) then snapshot is post-lock and up-to-date.
+                       $lockOwnsTrx ? array() : array( 'LOCK IN SHARE MODE' )
+               );
 
                // Fetch all or selected archived revisions for the file,
                // sorted from the most recent to the oldest.
@@ -2797,7 +2803,7 @@ class LocalFileMoveBatch {
                        array( 'oi_archive_name', 'oi_deleted' ),
                        array( 'oi_name' => $this->oldName ),
                        __METHOD__,
-                       array( 'FOR UPDATE' ) // ignore snapshot
+                       array( 'LOCK IN SHARE MODE' ) // ignore snapshot
                );
 
                foreach ( $result as $row ) {
index 4511046..62345b8 100644 (file)
@@ -115,6 +115,8 @@ class HTMLForm extends ContextSource {
                'info' => 'HTMLInfoField',
                'selectorother' => 'HTMLSelectOrOtherField',
                'selectandother' => 'HTMLSelectAndOtherField',
+               'namespaceselect' => 'HTMLSelectNamespace',
+               'tagfilter' => 'HTMLTagFilter',
                'submit' => 'HTMLSubmitField',
                'hidden' => 'HTMLHiddenField',
                'edittools' => 'HTMLEditTools',
index 029911c..5dadaf8 100644 (file)
@@ -276,6 +276,7 @@ class HTMLFormFieldCloner extends HTMLFormField {
                }
 
                $html = '';
+               $hidden = '';
                $hasLabel = false;
 
                $fields = $this->createFieldsForKey( $key );
@@ -283,11 +284,18 @@ class HTMLFormFieldCloner extends HTMLFormField {
                        $v = ( empty( $field->mParams['nodata'] ) && $values !== null )
                                ? $values[$fieldname]
                                : $field->getDefault();
-                       $html .= $field->$getFieldHtmlMethod( $v );
 
-                       $labelValue = trim( $field->getLabel() );
-                       if ( $labelValue != '&#160;' && $labelValue !== '' ) {
-                               $hasLabel = true;
+                       if ( $field instanceof HTMLHiddenField ) {
+                               // HTMLHiddenField doesn't generate its own HTML
+                               list( $name, $value, $params ) = $field->getHiddenFieldData( $v );
+                               $hidden .= Html::hidden( $name, $value, $params ) . "\n";
+                       } else {
+                               $html .= $field->$getFieldHtmlMethod( $v );
+
+                               $labelValue = trim( $field->getLabel() );
+                               if ( $labelValue != '&#160;' && $labelValue !== '' ) {
+                                       $hasLabel = true;
+                               }
                        }
                }
 
@@ -335,6 +343,8 @@ class HTMLFormFieldCloner extends HTMLFormField {
                        }
                }
 
+               $html .= $hidden;
+
                if ( !empty( $this->mParams['row-legend'] ) ) {
                        $legend = $this->msg( $this->mParams['row-legend'] )->text();
                        $html = Xml::fieldset( $legend, $html );
index e32c0bb..ffde915 100644 (file)
@@ -1,22 +1,36 @@
 <?php
 
 class HTMLHiddenField extends HTMLFormField {
+       protected $outputAsDefault = true;
+
        public function __construct( $params ) {
                parent::__construct( $params );
 
+               if ( isset( $this->mParams['output-as-default'] ) ) {
+                       $this->outputAsDefault = (bool)$this->mParams['output-as-default'];
+               }
+
                # Per HTML5 spec, hidden fields cannot be 'required'
                # http://www.w3.org/TR/html5/forms.html#hidden-state-%28type=hidden%29
                unset( $this->mParams['required'] );
        }
 
-       public function getTableRow( $value ) {
+       public function getHiddenFieldData( $value ) {
                $params = array();
                if ( $this->mID ) {
                        $params['id'] = $this->mID;
                }
 
-               $this->mParent->addHiddenField( $this->mName, $this->mDefault, $params );
+               if ( $this->outputAsDefault ) {
+                       $value = $this->mDefault;
+               }
+
+               return array( $this->mName, $value, $params );
+       }
 
+       public function getTableRow( $value ) {
+               list( $name, $value, $params ) = $this->getHiddenFieldData( $value );
+               $this->mParent->addHiddenField( $name, $value, $params );
                return '';
        }
 
diff --git a/includes/htmlform/HTMLSelectNamespace.php b/includes/htmlform/HTMLSelectNamespace.php
new file mode 100644 (file)
index 0000000..9638106
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Wrapper for Html::namespaceSelector to use in HTMLForm
+ */
+class HTMLSelectNamespace extends HTMLFormField {
+       function getInputHTML( $value ) {
+               return Html::namespaceSelector(
+                       array(
+                               'selected' => $value,
+                               'all' => 'all'
+                       ), array(
+                               'name' => $this->mName,
+                               'id' => $this->mID,
+                               'class' => 'namespaceselector',
+                       )
+               );
+       }
+}
diff --git a/includes/htmlform/HTMLTagFilter.php b/includes/htmlform/HTMLTagFilter.php
new file mode 100644 (file)
index 0000000..da5e85c
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Wrapper for ChgangeTags::buildTagFilterSelector to use in HTMLForm
+ */
+class HTMLTagFilter extends HTMLFormField {
+       function getInputHTML( $value ) {
+               $tagFilter = ChangeTags::buildTagFilterSelector( $value );
+               if ( $tagFilter ) {
+                       list( $tagFilterLabel, $tagFilterSelector ) = $tagFilter;
+                       // we only need the select field, HTMLForm should handle the label
+                       return $tagFilterSelector;
+               }
+               return;
+       }
+}
index 193d592..6e0c37f 100644 (file)
@@ -31,6 +31,7 @@ require_once __DIR__ . '/../../maintenance/Maintenance.php';
  * @since 1.17
  */
 abstract class DatabaseUpdater {
+       protected static $updateCounter = 0;
 
        /**
         * Array of updates to perform on the database
@@ -460,7 +461,8 @@ abstract class DatabaseUpdater {
                if ( !$this->canUseNewUpdatelog() ) {
                        return;
                }
-               $key = "updatelist-$version-" . time();
+               $key = "updatelist-$version-" . time() . self::$updateCounter;
+               self::$updateCounter++;
                $this->db->insert( 'updatelog',
                        array( 'ul_key' => $key, 'ul_value' => serialize( $updates ) ),
                        __METHOD__ );
index 2e31e41..b2b0a69 100644 (file)
@@ -796,6 +796,9 @@ class WebInstallerName extends WebInstallerPage {
                        ) ) .
                        $this->parent->getTextBox( array(
                                'var' => '_AdminEmail',
+                               'attribs' => array(
+                                       'dir' => 'ltr',
+                               ),
                                'label' => 'config-admin-email',
                                'help' => $this->parent->getHelpBox( 'config-admin-email-help' )
                        ) ) .
index 9f84215..e0c985b 100644 (file)
@@ -5,7 +5,8 @@
                        "පසිඳු කාවින්ද",
                        "Kippelboy",
                        "Toniher",
-                       "Fitoschido"
+                       "Fitoschido",
+                       "Jmarchn"
                ]
        },
        "config-desc": "L'instal·lador del MediaWiki",
@@ -19,6 +20,8 @@
        "config-localsettings-incomplete": "El <code>LocalSettings.php</code> que hi ha sembla incomplet.\nLa variable $1 no està definida.\nCanvieu <code>LocalSettings.php</code> perquè la variable estigui definida i feu clic a «{{int:Config-continue}}».",
        "config-localsettings-connection-error": "S'ha trobat un error en connectar-se amb la base de dades fent servir els paràmetres especificats a <code>LocalSettings.php</code>. Corregiu aquests paràmetres i torneu-ho a provar.\n\n$1",
        "config-session-error": "Error en iniciar la sessió: $1",
+       "config-session-expired": "Les dades de la vostra sessió sembla que han caducat.\nLes sessions estan configurades per a un temps de $1.\nPodeu augmentar-lo posant <code>session.gc_maxlifetime</code> en php.ini.\nReprengueu el procés d'instal·lació.",
+       "config-no-session": "Les dades de la vostra sessió s'han perdut!\nComprovar el vostre php.ini i assegureu-vos que <code>session.save_path</code> està assignat a un directori apropiat.",
        "config-your-language": "La vostra llengua:",
        "config-your-language-help": "Seleccioneu la llengua que s'utilitzarà durant el procés d'instal·lació.",
        "config-wiki-language": "Llengua del wiki:",
@@ -43,6 +46,8 @@
        "config-help-restart": "Voleu esborrar totes les dades que heu introduït i tornar a començar el procés d'instal·lació?",
        "config-restart": "Sí, torna a començar",
        "config-welcome": "=== Comprovacions de l'entorn ===\nS'efectuaran comprovacions bàsiques per veure si l'entorn és adequat per a la instal·lació del MediaWiki.\nRecordeu d'incloure aquesta informació si heu de demanar ajuda sobre com completar la instal·lació.",
+       "config-copyright": "=== Drets d'autor i condicions ===\n\n$1\n\nAquest programa és de programari lliure; podeu redistribuir-lo i/o modificar-lo sota les condicions de la Llicència Pública General GNU com es publicada per la Free Software Foundation; qualsevol versió 2 de la llicència, o (opcionalment) qualsevol versió posterior.\n\nAquest programa és distribueix amb l'esperança que serà útil, però <strong>sense cap garantia</strong>; sense ni tan sols la garantia implícita de <strong>\ncomerciabilitat</strong> o <strong>idoneïtat per a un propòsit particular</strong>.\nConsulteu la Llicència Pública General GNU, per a més detalls.\n\nHauríeu d'haver rebut <doclink href=\"Copying\">una còpia de la Llicència Pública General GNU</doclink> amb aquest programa; si no, escriviu a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA o [http://www.gnu.org/copyleft/gpl.html per llegir-lo en línia].",
+       "config-sidebar": "* [//www.mediawiki.org la Pàgina d'inici]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Guia de l'Usuari]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Guia de l'Administrador]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ]\n----\n* <doclink href=Readme>Llegeix-me</doclink>\n* <doclink href=ReleaseNotes>Notes de la versió</doclink>\n* <doclink href=Còpia>Còpia</doclink>\n* <doclink href=UpgradeDoc>Actualització</doclink>",
        "config-env-good": "S'ha comprovat l'entorn.\nPodeu instal·lar el MediaWiki.",
        "config-env-bad": "S'ha comprovat l'entorn.\nNo podeu instal·lar el MediaWiki.",
        "config-env-php": "El PHP $1 està instal·lat.",
        "config-profile-private": "Wiki privat",
        "config-license": "Copyright i llicència:",
        "config-license-none": "Sense llicència al peu de pàgina",
+       "config-license-cc-by-sa": "Creative Commons Reconeixement-CompartirIgual",
+       "config-license-cc-by": "Creative Commons Reconeixement",
+       "config-license-cc-by-nc-sa": "Creative Commons Reconeixement-NoComercial-CompartirIgual",
+       "config-license-cc-0": "Creative Commons Zero (Domini Públic)",
+       "config-license-gfdl": "GNU Free Documentation License 1.3 o posterior",
        "config-license-pd": "Domini públic",
+       "config-license-cc-choose": "Selecció d'una llicència personalitzada de Creative Commons",
        "config-email-settings": "Paràmetres del correu electrònic",
        "config-email-user": "Habilita el correu electrònic usuari-a-usuari",
        "config-email-user-help": "Permet que tots els usuaris puguin enviar-se correu si ho han habilitat a les preferències.",
index c40544d..f88ab91 100644 (file)
@@ -13,7 +13,8 @@
                        "Elseweyr",
                        "Lliehu",
                        "Syreeni",
-                       "Stryn"
+                       "Stryn",
+                       "SMAUG"
                ]
        },
        "config-desc": "MediaWiki-asennin",
        "config-profile-fishbowl": "Vain hyväksytyt muokkaajat",
        "config-profile-private": "Yksityinen wiki",
        "config-license": "Tekijänoikeus ja lisenssi:",
+       "config-license-cc-by-sa": "Creative Commons Nimeä-Tarttuva",
+       "config-license-cc-by": "Creative Commons Nimeä",
+       "config-license-cc-by-nc-sa": "Creative Commons Nimeä-Epäkaupallinen-Tarttuva",
+       "config-license-cc-0": "Creative Commons Zero (Public Domain)",
+       "config-license-gfdl": "GNU Free Documentation -lisenssi 1.3 tai uudempi",
        "config-license-pd": "Public domain",
+       "config-license-cc-choose": "Valitse mukautettu Creative Commons -lisenssi",
        "config-email-settings": "Sähköpostiasetukset",
        "config-enable-email": "Ota käyttöön sähköpostien lähetys",
        "config-enable-email-help": "Jotta sähköposti toimii, [http://www.php.net/manual/en/mail.configuration.php PHP:n sähköpostiasetukset] täytyy asettaa oikein.\nJos et halua käyttää sähköpostiominaisuuksia, ne voi kytkeä pois päältä tästä.",
index a150fbc..a35ea31 100644 (file)
@@ -6,7 +6,8 @@
                        "아라",
                        "Dj",
                        "Misibacsi",
-                       "Tacsipacsi"
+                       "Tacsipacsi",
+                       "Dorgan"
                ]
        },
        "config-desc": "A MediaWiki telepítője",
        "config-env-good": "A környezet ellenőrzése befejeződött.\nA MediaWiki telepíthető.",
        "config-env-bad": "A környezet ellenőrzése befejeződött.\nA MediaWiki nem telepíthető.",
        "config-env-php": "A PHP verziója: $1",
-       "config-env-php-toolow": "PHP $1 van telepítve,\nazonban a MediaWikinek PHP $2, vagy újabb szükséges.",
        "config-unicode-using-utf8": "A rendszer Unicode normalizálására Brion Vibber utf8_normalize.so könyvtárát használja.",
        "config-unicode-using-intl": "A rendszer Unicode normalizálására az [http://pecl.php.net/intl intl PECL kiterjesztést] használja.",
        "config-unicode-pure-php-warning": "'''Figyelmeztetés''': Az Unicode normalizáláshoz szükséges [http://pecl.php.net/intl intl PECL kiterjesztés] nem érhető el, helyette a lassú, PHP alapú implementáció lesz használva.\nHa nagy látogatottságú oldalt üzemeltetsz, itt találhatsz további információkat [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations a témáról].",
        "config-unicode-update-warning": "'''Figyelmeztetés''': Az Unicode normalizáláshoz szükséges burkolókönyvtár [http://site.icu-project.org/ ICU projekt] függvénykönyvtárának régebbi változatát használja.\nHa ügyelni kívánsz a Unicode használatára, fontold meg a [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations frissítését].",
        "config-no-db": "Nem sikerült egyetlen használható adatbázis-illesztőprogramot sem találni.  Telepítened kell egyet a PHP-hez.\nA következő adatbázistípusok támogatottak: $1.\n\nHa a PHP-t magad fordítottad, konfiguráld újra úgy, hogy engedélyezve legyen egy adatbáziskliens, pl. a <code>./configure --with-mysql</code> parancs használatával.\nHa a PHP-t Debian vagy Ubuntu csomaggal telepítetted, akkor szükséged lesz a php5-mysql modulra is.",
        "config-no-fts3": "'''Figyelmeztetés''': Az SQLite [//sqlite.org/fts3.html FTS3 modul] nélkül lett fordítva, a keresési funkciók nem fognak működni ezen a rendszeren.",
-       "config-register-globals": "'''Figyelmeztetés: A PHP <code>[http://php.net/register_globals register_globals]</code> beállítása engedélyezve van.'''\n'''Tiltsd le, ha van rá lehetőséged.'''\nA MediaWiki működőképes a beállítás használata mellett, de a szerver biztonsági kockázatnak lesz kitéve.",
        "config-magic-quotes-runtime": "'''Kritikus hiba: a [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] aktív!'''\nEz a beállítás kiszámíthatatlan károkat okoz a bevitt adatokban.\nA MediaWiki csak akkor telepíthető, ha ki van kapcsolva.",
        "config-magic-quotes-sybase": "'''Kritikus hiba: a [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_sybase] aktív!'''\nEz a beállítás kiszámíthatatlan károkat okoz a bevitt adatokban.\nA MediaWiki csak akkor telepíthető, ha ki van kapcsolva.",
        "config-mbstring": "'''Kritikus hiba: az [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime mbstring.func_overload] aktív!'''\nEz a beállítás hibákat okoz és kiszámíthatatlanul károsíthatja bevitt adatokat.\nA MediaWiki csak akkor telepíthető, ha ki van kapcsolva.",
        "config-memcache-badport": "A Memcached a(z) $1 és $2 közötti portokat szokta használni.",
        "config-extensions": "Kiterjesztések",
        "config-extensions-help": "A fent felsorolt kiterjesztések találhatóak meg az <code>./extensions</code> könyvtárban.\n\nLehetséges, hogy további beállításra lesz szükség hozzájuk, de már most engedélyezheted őket.",
+       "config-skins": "Felületek",
+       "config-skins-use-as-default": "Felület használata alapértelmezettként",
        "config-install-alreadydone": "'''Figyelmeztetés:''' Úgy tűnik, hogy a MediaWiki telepítve van, és te ismét megpróbálod telepíteni.\nFolytasd a következő oldalon.",
        "config-install-begin": "A „{{int:config-continue}}” gomb megnyomása elindítja a MediaWiki telepítését.\nHa szeretnél módosítani a beállításokon, kattints a \"{{int:config-back}}\" gombra.",
        "config-install-step-done": "kész",
index a61fff2..8ef3188 100644 (file)
@@ -10,7 +10,8 @@
                        "Lucas2",
                        "Ontsed",
                        "Seb35",
-                       "Nemo bis"
+                       "Nemo bis",
+                       "Ricordisamoa"
                ]
        },
        "config-desc": "Il programma di installazione per MediaWiki",
        "config-admin-error-password": "Errore interno durante l'impostazione di una password per amministratore \"<nowiki>$1</nowiki>\": <pre>$2</pre>",
        "config-admin-error-bademail": "È stato inserito un indirizzo email non valido.",
        "config-subscribe": "Sottoscrivi la [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce mailing list degli annunci di rilasci].",
-       "config-subscribe-help": "Si tratta di una mailing list a basso traffico dedicata agli annunci di nuove versioni, compresi importanti segnalazioni riguardanti la sicurezza.\nÈ consigliato iscriversi e aggiornare la proprio installazione di MediaWiki quando una nuova versione viene resa pubblica.",
+       "config-subscribe-help": "Si tratta di una mailing list a basso traffico dedicata agli annunci di nuove versioni, compresi importanti segnalazioni riguardanti la sicurezza.\nÈ consigliato iscriversi e aggiornare la propria installazione di MediaWiki quando una nuova versione viene resa pubblica.",
        "config-subscribe-noemail": "Hai provato ad iscriverti alla mailing list dedicata agli annunci delle nuove versioni senza fornire un indirizzo email.\nInserire un indirizzo email se si desidera effettuare l'iscrizione alla mailing list.",
        "config-almost-done": "Hai quasi finito!\nAdesso puoi saltare la rimanente parte della configurazione e semplicemente installare la wiki.",
        "config-optional-continue": "Fammi altre domande.",
index 21fcb9d..dedc3c2 100644 (file)
        "config-install-stats": "統計情報の初期化",
        "config-install-keys": "秘密鍵の生成",
        "config-insecure-keys": "<strong>警告:</strong> インストール中に生成されたセキュアキー ($1) は完璧に安全ではありません。手動で変更することを検討してください。",
+       "config-install-updates": "不要な更新を実行するのを防ぐ",
        "config-install-sysop": "管理者のアカウントの作成",
        "config-install-subscribe-fail": "mediawiki-announce を購読できませんでした: $1",
        "config-install-subscribe-notpossible": "cURL がインストールされていないため、<code>allow_url_fopen</code> を利用できません。",
index bc828a5..081f50f 100644 (file)
@@ -5,17 +5,18 @@
                        "아라",
                        "Hym411",
                        "Priviet",
-                       "Namoroka"
+                       "Namoroka",
+                       "Revi"
                ]
        },
        "config-desc": "미디어위키 설치 프로그램",
        "config-title": "미디어위키 $1 설치",
        "config-information": "정보",
-       "config-localsettings-upgrade": "<code>LocalSettings.php</code> 파일을 감지했습니다.\n이 설치를 업그레이드하려면 아래 상자에 <code>$wgUpgradeKey</code>의 값을 입력하세요.\n<code>LocalSettings.php</code>에서 찾을 수 있습니다.",
+       "config-localsettings-upgrade": "<code>LocalSettings.php</code> 파일을 감지했습니다.\n이 설치를 업그레이드하려면, 아래 상자에 <code>$wgUpgradeKey</code>의 값을 입력하세요.\n<code>LocalSettings.php</code>에서 찾을 수 있습니다.",
        "config-localsettings-cli-upgrade": "<code>LocalSettings.php</code> 파일을 감지했습니다.\n이 설치를 업그레이드하려면 <code>update.php</code>를 대신 실행하세요",
        "config-localsettings-key": "업그레이드 키:",
-       "config-localsettings-badkey": "ì\9e\85ë ¥한 키가 잘못되었습니다.",
-       "config-upgrade-key-missing": "기존에 설치 했던 미디어위키를 감지했습니다.\n이 설치를 업그레이드하려면 <code>LocalSettings.php</code>의 아래에 다음 줄을 넣으세요:\n\n$1",
+       "config-localsettings-badkey": "ì \9cê³µ한 키가 잘못되었습니다.",
+       "config-upgrade-key-missing": "미디어위키의 기존 설치를 감지했습니다.\n이 설치를 업그레이드하려면, <code>LocalSettings.php</code>의 아래에 다음 줄을 넣으세요:\n\n$1",
        "config-localsettings-incomplete": "기존 <code>LocalSettings.php</code>가 완전하지 않은 것 같습니다.\n$1 변수가 설정되어 있지 않습니다.\n이 변수가 설정되도록 <code>LocalSettings.php</code>를 바꾸고 \"{{int:Config-continue}}\"을 클릭하세요.",
        "config-localsettings-connection-error": "<code>LocalSettings.php</code>에 지정한 설정을 사용하여 데이터베이스에 연결할 때 오류가 발생했습니다. 이러한 설정을 고치고 다시 시도하세요.\n\n$1",
        "config-session-error": "세션 시작 오류: $1",
        "config-help-restart": "입력한 모든 저장된 데이터를 지우고 설치 과정을 다시 시작하겠습니까?",
        "config-restart": "예, 다시 시작합니다",
        "config-welcome": "=== 사용 환경 검사 ===\n기본 검사는 지금 이 환경이 미디어위키 설치에 적합한지 수행합니다.\n설치를 완료하는 방법에 대한 지원을 찾는다면 이 정보를 포함해야 하는 것을 기억하세요.",
-       "config-copyright": "=== ì \80ì\9e\91ê¶\8c ë°\8f ì\9d´ì\9a© ì\95½ê´\80 ===\n\n$1\n\nì\9d´ í\94\84ë¡\9cê·¸ë\9e¨ì\9d\80 ì\9e\90ì\9c  ì\86\8cí\94\84í\8a¸ì\9b¨ì\96´ì\9e\85ë\8b\88ë\8b¤. ë\8b¹ì\8b ì\9d\80 ì\9e\90ì\9c  ì\86\8cí\94\84í\8a¸ì\9b¨ì\96´ ì\9e¬ë\8b¨ì\9d´ ë°\9cí\91\9cí\95\9c GNU ì\9d¼ë°\98 ê³µì¤\91 ì\82¬ì\9a© í\97\88ê°\80ì\84\9c ë²\84ì \84 2ë\82\98 ê·¸ ì\9d´í\9b\84 ë²\84ì \84ì\97\90 ë\94°ë\9d¼ ì\9d´ í\94\84ë¡\9cê·¸ë\9e¨ì\9d\84 ì\9e¬ë°°í\8f¬í\95\98ê±°ë\82\98 ì\88\98ì \95í\95  ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤.\n\nì\9d´ í\94\84ë¡\9cê·¸ë\9e¨ì\9d´ ì\9c ì\9a©í\95\98ê²\8c ì\82¬ì\9a©ë\90  ì\88\98 ì\9e\88기를 ë°\94ë\9d¼ì§\80ë§\8c '''ì\83\81ì\9a©ì\9c¼ë¡\9c ì\82¬ì\9a©'''ë\90\98ê±°ë\82\98 '''í\8a¹ì \95 ëª©ì \81ì\97\90 ë§\9eì\9d\84 ê²\83'''ì\9d´ë\9d¼ë\8a\94 ê²\83ì\9d\84 '''ë³´ì¦\9dí\95\98ì§\80 ì\95\8aì\8aµë\8b\88ë\8b¤'''.\nì\9e\90ì\84¸í\95\9c ë\82´ì\9a©ì\9d\80 GNU ì\9d¼ë°\98 ê³µì¤\91 ì\82¬ì\9a© í\97\88ê°\80ì\84\9c를 ì°¸ê³ í\95\98ì\8b­ì\8b\9cì\98¤.\n\në\8b¹ì\8b ì\9d\80 ì\9d´ í\94\84ë¡\9cê·¸ë\9e¨ì\9d\84 í\86µí\95´ <doclink href=Copying>GNU ì\9d¼ë°\98 ê³µì¤\91 ì\82¬ì\9a© í\97\88ê°\80ì\84\9c ì \84문</doclink>ì\9d\84 ë°\9bì\95\98ì\8aµë\8b\88ë\8b¤. ê·¸ë \87ì§\80 ì\95\8aë\8b¤ë©´, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USAë¡\9c í\8e¸ì§\80를 ë³´ë\82´ì£¼ì\8b\9cê±°ë\82\98 [http://www.gnu.org/copyleft/gpl.html ì\98¨ë\9d¼ì\9d¸ì\9c¼ë¡\9c ì\9d½ì\96´ë³´ì\8b\9c기] ë°\94ë\9e\8dë\8b\88ë\8b¤.",
+       "config-copyright": "=== 저작권 및 약관 ===\n\n$1\n\n이 프로그램은 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 프로그램을 재배포하거나 수정할 수 있습니다.\n\n이 프로그램이 유용하게 사용될 수 있기를 바라지만 '''상용으로 사용'''되거나 '''특정 목적에 맞을 것'''이라는 것을 '''보증하지 않습니다'''.\n자세한 내용은 GNU 일반 공중 사용 허가서를 참고하십시오.\n\n당신은 이 프로그램을 통해 <doclink href=Copying>GNU 일반 공중 사용 허가서 전문</doclink>을 받았습니다. 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [http://www.gnu.org/copyleft/gpl.html 온라인으로 읽어보시기] 바랍니다.",
        "config-sidebar": "* [//www.mediawiki.org 미디어위키 홈]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 사용자 가이드]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents 관리자 가이드]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ]\n----\n* <doclink href=Readme>읽어보기</doclink>\n* <doclink href=ReleaseNotes>릴리스 노트</doclink>\n* <doclink href=Copying>전문</doclink>\n* <doclink href=UpgradeDoc>업그레이드하기</doclink>",
        "config-env-good": "환경이 확인되었습니다.\n미디어위키를 설치할 수 있습니다.",
        "config-env-bad": "환경이 확인되었습니다.\n미디어위키를 설치할 수 없습니다.",
-       "config-env-php": "PHP $1(이)가 설치되었습니다.",
+       "config-env-php": "PHP $1이(가) 설치되어 있습니다.",
+       "config-env-hhvm": "HHMV $1이(가) 설치되어 있습니다.",
        "config-unicode-using-utf8": "유니코드 정규화에 Brion Vibber의 utf8_normalize.so를 사용합니다.",
        "config-unicode-using-intl": "유니코드 정규화에 [http://pecl.php.net/intl intl PECL 확장 기능]을 사용합니다.",
-       "config-unicode-pure-php-warning": "'''경고''': 유니코드 정규화를 처리할 [http://pecl.php.net/intl intl PECL 확장 기능]을 사용할 수 없기 때문에 느린 pure-PHP 구현을 대신 사용합니다.\n트래픽이 높은 사이트에서 실행하시려면 [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations 유니코드 정규화]를 읽어보시기 바랍니다.",
-       "config-unicode-update-warning": "'''경고''': 유니코드 정규화 래퍼의 설치된 버전은 [http://site.icu-project.org/ ICU 프로젝트]의 라이브러리의 이전 버전을 사용합니다.\n만약 유니코드를 사용하는 것에 대해 우려가 된다면 [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations 업그레이드]해야합니다.",
+       "config-unicode-pure-php-warning": "<strong>경고</strong>: 유니코드 정규화를 처리할 [http://pecl.php.net/intl intl PECL 확장 기능]을 사용할 수 없기 때문에 느린 pure-PHP 구현을 대신 사용합니다.\n트래픽이 높은 사이트에서 실행하시려면 [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations 유니코드 정규화]를 읽어보셔야 합니다.",
+       "config-unicode-update-warning": "<strong>경고</strong>: 유니코드 정규화 래퍼의 설치된 버전은 [http://site.icu-project.org/ ICU 프로젝트]의 라이브러리의 이전 버전을 사용합니다.\n만약 유니코드를 사용하는 것에 대해 우려가 된다면 [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations 업그레이드]해야합니다.",
        "config-no-db": "적절한 데이터베이스 드라이버를 찾을 수 없습니다! PHP용 데이터베이스 드라이버를 설치해야 합니다.\n다음 데이터베이스 유형을 지원합니다: $1.\n\nPHP를 직접 컴파일했다면, 예를 들어 <code>./configure --with-mysql</code>을 사용하여, 데이터베이스 클라이언트를 활성화하도록 다시 설정하세요.\n데비안이나 우분투 패키지에서 PHP를 설치했다면 <code>php5-mysql</code> 모듈도 설치해야 합니다.",
-       "config-outdated-sqlite": "'''경고''': 최소인 $2 버전보다 낮은 SQLite $1(이)가 있습니다. SQLite를 사용할 수 없습니다.",
-       "config-no-fts3": "'''경고''': SQLite를 [//sqlite.org/fts3.html FTS3 모듈] 없이 컴파일하며, 검색 기능은 백엔드에 사용할 수 없습니다.",
+       "config-outdated-sqlite": "<strong>경고</strong>: 최소인 $2 버전보다 낮은 SQLite $1(이)가 있습니다. SQLite를 사용할 수 없습니다.",
+       "config-no-fts3": "<strong>경고</strong>: SQLite를 [//sqlite.org/fts3.html FTS3 모듈] 없이 컴파일하며, 검색 기능은 백엔드에 사용할 수 없습니다.",
        "config-register-globals-error": "<strong>오류: PHP의 <code>[http://php.net/register_globals register_globals]</code> 옵션이 활성화되어 있습니다.\n설치를 계속하려면 비활성화해야 합니다.</strong>\n어떻게 하는지에 대한 도움말에 대해서는 [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals]를 보세요.",
-       "config-magic-quotes-runtime": "'''치명: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]이 활성화됩니다!'''\n이 옵션은 데이터를 입력하는 데 예기치 않는 손상이 일으킵니다.\n이 옵션을 비활성화하지 않는 한 미디어위키를 설치하고 사용할 수 없습니다.",
-       "config-magic-quotes-sybase": "'''치명: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase]이 활성화됩니다!'''\n이 옵션은 데이터를 입력하는 데 예기치 않는 손상을 일으킵니다.\n이 옵션을 비활성화하지 않는 한 미디어위키를 설치하고 사용할 수 없습니다.",
-       "config-mbstring": "'''치명: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]이 활성화됩니다!'''\n이 옵션은 오류가 발생하고 데이터를 입력하는 데 예기치 않는 손상을 일으킬 수 있습니다.\n이 옵션을 비활성화하지 않는 한 미디어위키를 설치하고 사용할 수 없습니다.",
-       "config-safe-mode": "'''경고:''' [http://www.php.net/features.safe-mode 안전 모드]가 활성화됩니다!\n특히 파일을 올리거나 <code>math</code>를 지원하는 데 문제가 발생할 수 있습니다.",
+       "config-magic-quotes-gpc": "<strong>치명: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc]이 활성화되어 있습니다!</strong>\n이 옵션은 데이터를 입력하는 데 예기치 않는 손상을 일으킵니다.\n이 옵션을 비활성화하지 않는 한 미디어위키를 설치하고 사용할 수 없습니다.",
+       "config-magic-quotes-runtime": "<strong>치명: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]이 활성화되어 있습니다!</strong>\n이 옵션은 데이터를 입력하는 데 예기치 않는 손상이 일으킵니다.\n이 옵션을 비활성화하지 않는 한 미디어위키를 설치하고 사용할 수 없습니다.",
+       "config-magic-quotes-sybase": "<strong>치명: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase]이 활성화되어 있습니다!</strong>\n이 옵션은 데이터를 입력하는 데 예기치 않는 손상을 일으킵니다.\n이 옵션을 비활성화하지 않는 한 미디어위키를 설치하고 사용할 수 없습니다.",
+       "config-mbstring": "<strong>치명: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]이 활성화되어 있습니다!</strong>\n이 옵션은 오류가 발생하고 데이터를 입력하는 데 예기치 않는 손상을 일으킬 수 있습니다.\n이 옵션을 비활성화하지 않는 한 미디어위키를 설치하고 사용할 수 없습니다.",
+       "config-safe-mode": "<strong>경고:</strong> PHP의 [http://www.php.net/features.safe-mode 안전 모드]가 활성화되어 있습니다!\n특히 파일을 올리거나 <code>math</code>를 지원하는 데 문제가 발생할 수 있습니다.",
        "config-xml-bad": "PHP의 XML 모듈이 없습니다.\n미디어위키는 이 모듈의 기능이 필요하며 이 설정에서는 작동하지 않습니다.\nMandrake를 실행하고 있다면 php-xml 패키지를 설치하세요.",
-       "config-pcre-old": "'''치명적인 오류:''' PCRE $1 또는 이후의 것들이 필요합니다. 당신의 PHP 바이너리는 PCRE $2와 연결되어 있습니다. [https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE 더 많은 정보].",
-       "config-pcre-no-utf8": "'''치명''': PHP의 PCRE 모듈은 RCRE_UTF8 지원 없이 컴파일된 것 같습니다.\n미디어위키가 제대로 작동하려면 UTF-8을 지원해야 합니다.",
+       "config-pcre-old": "<strong>치명:</strong> PCRE $1 또는 그 이상이 필요합니다.\nPHP 바이너리는 PCRE $2에 연결되어 있습니다. [https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE 자세한 정보].",
+       "config-pcre-no-utf8": "<strong>치명:</strong> PHP의 PCRE 모듈은 RCRE_UTF8 지원 없이 컴파일된 것 같습니다.\n미디어위키가 올바르게 작동하려면 UTF-8을 지원해야 합니다.",
        "config-memory-raised": "PHP의 <code>memory_limit</code>는 $1이며 $2(으)로 늘렸습니다.",
        "config-memory-bad": "'''경고:''' PHP의 <code>memory_limit</code>는 $1입니다.\n아마도 너무 낮은 것 같습니다.\n설치가 실패할 수 있습니다!",
        "config-ctype": "'''치명''': PHP는 [http://www.php.net/manual/en/ctype.installation.php Ctype 확장 기능]을 지원하도록 하여 컴파일해야 합니다.",
+       "config-iconv": "<strong>치명</strong>: PHP는 [http://www.php.net/manual/en/iconv.installation.php iconv 확장 기능]을 지원하도록 하여 컴파일해야 합니다.",
        "config-json": "'''치명:''' PHP가 JSON 지원이 없이 컴파일되었습니다.\n미디어위키를 설치하기 전에 PHP JSON 확장 기능이나 [http://pecl.php.net/package/jsonc PECL jsonc] 확장 기능 중 하나를 설치해야 합니다.\n* PHP 확장 기능은 Red Hat Enterprise Linux (CentOS) 5와 6에 포함되어 있지만, <code>/etc/php.ini</code>나 <code>/etc/php.d/json.ini</code>에서 활성화해야 합니다.\n* 2013년 5월 이후에 출시된 일부 리눅스 배포판은 PHP 확장 기능이 생략된 대신, <code>php5-json</code>이나 <code>php-pecl-jsonc</code>로 PECL 확장 기능이 포장되어 있습니다.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache]가 설치되었습니다",
        "config-apc": "[http://www.php.net/apc APC]가 설치되었습니다",
        "config-suhosin-max-value-length": "수호신(Suhosin)이 설치되고 $1 바이트로 GET 매개 변수 <code>length</code>를 제한하고 있습니다.\n미디어위키의 ResourceLoader 구성 요소는 이 제한을 회피하지만 성능이 저하됩니다.\n가능하면 <code>php.ini</code>의 <code>suhosin.get.max_value_length</code>를 1024 이상으로 설정하고 <code>LocalSettings.php</code>의 <code>$wgResourceLoaderMaxQueryLength</code>를 같은 값으로 설정해야 합니다.",
        "config-db-type": "데이터베이스 종류:",
        "config-db-host": "데이터베이스 호스트:",
-       "config-db-host-help": "ë\8d°ì\9d´í\84°ë² ì\9d´ì\8a¤ ì\84\9cë²\84ê°\80 ë\8b¤ë¥¸ ì\84\9cë²\84ì\97\90 ì\9e\88ì\9c¼ë©´ ì\97¬ê¸°ì\97\90 í\98¸ì\8a¤í\8a¸ ì\9d´ë¦\84ì\9d´ë\82\98 IP ì£¼ì\86\8c를 ì\9e\85ë ¥í\95\98ì\84¸ì\9a\94.\n\nê³µì\9c í\95\98ë\8a\94 ì\9b¹ í\98¸ì\8a¤í\8c\85ì\9d\84 ì\82¬ì\9a©í\95\98ê³  ì\9e\88ì\9c¼ë©´ í\98¸ì\8a¤í\8c\85 ì \9cê³µ ì\97\85ì²´ë\8a\94 ì \95í\99\95í\95\9c í\98¸ì\8a¤í\8a¸ ì\9d´ë¦\84ì\9d\84 ì\84¤ëª\85í\95\98ê³  ì\9e\88ì\9d\84 ê²\83ì\9e\85ë\8b\88ë\8b¤.\n\nì\9c\88ë\8f\84 ì\84\9cë²\84ì\97\90 ì\84¤ì¹\98í\95\98ê³  MySQLì\9d\84 ì\82¬ì\9a©í\95\98ë©´ \"localhost\"ê°\80 í\95´ë\8b¹ 서버 이름으로는 작동하지 않을 수 있습니다. 그렇게 된다면 로컬 IP 주소로 \"127.0.0.1\"을 시도하세요.\n\nPostgreSQL을 사용하면 유닉스 소켓을 통해 연결되도록 입력란을 비워두세요.",
+       "config-db-host-help": "ë\8d°ì\9d´í\84°ë² ì\9d´ì\8a¤ ì\84\9cë²\84ê°\80 ë\8b¤ë¥¸ ì\84\9cë²\84ì\97\90 ì\9e\88ì\9c¼ë©´ ì\97¬ê¸°ì\97\90 í\98¸ì\8a¤í\8a¸ ì\9d´ë¦\84ì\9d´ë\82\98 IP ì£¼ì\86\8c를 ì\9e\85ë ¥í\95\98ì\84¸ì\9a\94.\n\nê³µì\9c í\95\98ë\8a\94 ì\9b¹ í\98¸ì\8a¤í\8c\85ì\9d\84 ì\82¬ì\9a©í\95\98ê³  ì\9e\88ì\9c¼ë©´ í\98¸ì\8a¤í\8c\85 ì \9cê³µ ì\97\85ì²´ë\8a\94 ì\98¬ë°\94른 í\98¸ì\8a¤í\8a¸ ì\9d´ë¦\84ì\9d\84 ì\84¤ëª\85í\95\98ê³  ì\9e\88ì\9d\84 ê²\83ì\9e\85ë\8b\88ë\8b¤.\n\nWindows ì\84\9cë²\84ì\97\90 ì\84¤ì¹\98í\95\98ê³  MySQLì\9d\84 ì\82¬ì\9a©í\95\98ë©´ \"localhost\"ê°\80 서버 이름으로는 작동하지 않을 수 있습니다. 그렇게 된다면 로컬 IP 주소로 \"127.0.0.1\"을 시도하세요.\n\nPostgreSQL을 사용하면 유닉스 소켓을 통해 연결되도록 입력란을 비워두세요.",
        "config-db-host-oracle": "데이터베이스 TNS:",
        "config-db-host-oracle-help": "올바른 [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm 로컬 연결 이름]을 입력하세요. tnsnames.ora 파일이 이 설치 위치에서 참조할 수 있는 곳에 있어야 합니다.<br />10g 이후의 클라이언트 라이브러리를 사용하는 경우 [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm 쉬운 연결] 네이밍 메서드도 사용할 수 있습니다.",
        "config-db-wiki-settings": "이 위키 식별",
        "config-db-name": "데이터베이스 이름:",
        "config-db-name-help": "위키를 식별하기 위한 이름을 선택하세요.\n공백이 없어야 합니다.\n\n공유하는 웹 호스팅 사용하면 호스팅 제공 업체가 특정 데이터베이스 이름을 제공하거나 제어판에서 데이터베이스를 만들 수 있습니다.",
        "config-db-name-oracle": "데이터베이스 스키마:",
-       "config-db-account-oracle-warn": "데이터베이스 백엔드로 오라클을 설치하기 위해 지원하는 세 가지 시나리오가 있습니다:\n\n설치 과정의 일부로 데이터베이스 계정을 만들려면 설치를 위해 데이터베이스 계정으로 SYSDBA 역할을 가진 계정을 제공하고 웹 접근 계정에 대해 원하는 자격 증명을 지정하세요, 그렇지 않으면 수동으로 웹 접근 계정을 만들 수 있으며 (스키마 개체를 만들 권한이 필요한 경우) 또는 생성 권한으 가진 계정과 웹 접근이 제한된 계정의 두 가지 다른 계정을 제공할 수도 있습니다\n\n필요한 권한을 가진 계정을 만드는 스크립트는 이 설치 위치의 \"maintenance/oracle/\" 디렉터리에서 찾을 수 있습니다. 제한된 계정을 사용하면 기본 계정의 모든 유지 관리 기능이 비활성화된다는 점에 유의하십시오.",
+       "config-db-account-oracle-warn": "데이터베이스 백엔드로 Oracle을 설치하기 위해 지원하는 세 가지 시나리오가 있습니다:\n\n설치 과정의 일부로 데이터베이스 계정을 만들려면 설치를 위해 데이터베이스 계정으로 SYSDBA 역할을 가진 계정을 제공하고 웹 접근 계정에 대해 원하는 자격 증명을 지정하세요, 그렇지 않으면 수동으로 웹 접근 계정을 만들 수 있으며 (스키마 개체를 만들 권한이 필요한 경우) 또는 생성 권한을 가진 계정과 웹 접근이 제한된 계정의 두 가지 다른 계정을 제공할 수도 있습니다\n\n필요한 권한을 가진 계정을 만드는 스크립트는 이 설치 위치의 \"maintenance/oracle/\" 디렉터리에서 찾을 수 있습니다. 제한된 계정을 사용하면 기본 계정의 모든 유지 관리 기능이 비활성화된다는 점에 유의하십시오.",
        "config-db-install-account": "설치를 위한 사용자 계정",
        "config-db-username": "데이터베이스 사용자 이름:",
        "config-db-password": "데이터베이스 비밀번호:",
        "config-oracle-temp-ts": "임시 테이블공간:",
        "config-type-mysql": "MySQL (또는 호환되는 데이터베이스 시스템)",
        "config-type-oracle": "Oracle",
-       "config-type-mssql": "마이크로소프트 SQL 서버",
+       "config-type-mssql": "Microsoft SQL 서버",
        "config-support-info": "미디어위키는 다음의 데이터베이스 시스템을 지원합니다:\n\n$1\n\n데이터베이스 시스템이 표시되지 않을 때 아래에 나열된 다음 지원을 활성화하려면 위의 링크된 지시에 따라 설치해볼 수 있습니다.",
-       "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL]은 미디어위키의 기본 대상이며 가장 잘 지원됩니다. 미디어위키는 또한 MySQL와 호환되는 [{{int:version-db-mariadb-url}} MariaDB]와 [{{int:version-db-percona-url}} Percona 서버]에서도 작동합니다. \n\n([http://www.php.net/manual/en/mysql.installation.php MySQL을 지원하여 PHP를 컴파일하는 방법])",
-       "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL]은 MySQL의 대안으로서 인기 있는 오픈 소스 데이터베이스 시스템입니다. ([http://www.php.net/manual/en/pgsql.installation.php PostgreSQL을 지원하여 PHP를 컴파일하는 방법]) 몇 가지 해결하지 못한 사소한 버그가 있을 수 있으며, 이를 제작 환경에서 사용하지 않는 것이 좋습니다.",
-       "config-dbsupport-sqlite": "*  [{{int:version-db-sqlite-url}} SQLite]는 매우 잘 지원되고 가벼운 데이터베이스 시스템입니다. ([http://www.php.net/manual/en/pdo.installation.php SQLite를 지원하여 PHP를 컴파일하는 방법], PDO 사용)",
-       "config-dbsupport-oracle": "*  [{{int:version-db-oracle-url}} 오라클]은 상용 엔터프라이스 데이터베이스입니다. ([http://www.php.net/manual/en/oci8.installation.php OCI8을 지원하여 PHP를 컴파일하는 방법])",
-       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} 마이크로소프트 SQL 서버]는 윈도용 상용 기업 데이터베이스입니다.([http://www.php.net/manual/en/sqlsrv.installation.php SQLSRV 지원으로 PHP를 컴파일하는 방법])",
+       "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL]은 미디어위키의 기본 대상이며 가장 잘 지원됩니다. 미디어위키는 또한 MySQL와 호환되는 [{{int:version-db-mariadb-url}} MariaDB]와 [{{int:version-db-percona-url}} Percona 서버]에서도 작동합니다. ([http://www.php.net/manual/en/mysql.installation.php MySQL 지원으로 PHP를 컴파일하는 방법])",
+       "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL]은 MySQL의 대안으로서 인기 있는 오픈 소스 데이터베이스 시스템입니다. ([http://www.php.net/manual/en/pgsql.installation.php PostgreSQL 지원으로 PHP를 컴파일하는 방법]) 몇 가지 해결하지 못한 사소한 버그가 있을 수 있으며, 이를 제작 환경에서 사용하지 않는 것이 좋습니다.",
+       "config-dbsupport-sqlite": "*  [{{int:version-db-sqlite-url}} SQLite]는 매우 잘 지원되고 가벼운 데이터베이스 시스템입니다. ([http://www.php.net/manual/en/pdo.installation.php SQLite 지원으로 PHP를 컴파일하는 방법], PDO 사용)",
+       "config-dbsupport-oracle": "*  [{{int:version-db-oracle-url}} Oracle]은 상용 기업 데이터베이스입니다. ([http://www.php.net/manual/en/oci8.installation.php OCI8 지원으로 PHP를 컴파일하는 방법])",
+       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL 서버]는 Windows용 상용 기업 데이터베이스입니다. ([http://www.php.net/manual/en/sqlsrv.installation.php SQLSRV 지원으로 PHP를 컴파일하는 방법])",
        "config-header-mysql": "MySQL 설정",
        "config-header-postgres": "PostgreSQL 설정",
        "config-header-sqlite": "SQLite 설정",
        "config-header-oracle": "Oracle 설정",
-       "config-header-mssql": "마이크로소프트 SQL 서버 설정",
+       "config-header-mssql": "Microsoft SQL 서버 설정",
        "config-invalid-db-type": "잘못된 데이터베이스 종류",
        "config-missing-db-name": "\"{{int:config-db-name}}\"에 대한 값을 입력해야 합니다.",
        "config-missing-db-host": "\"{{int:config-db-host}}\"에 대한 값을 입력해야 합니다.",
        "config-missing-db-server-oracle": "\"{{int:config-db-host-oracle}}\"에 대한 값을 입력해야 합니다.",
-       "config-invalid-db-server-oracle": "\"$1\" 데이터베이스 TNS가 잘못됐습니다.\n\"TNS Name\"이나 \"Easy Connect\" 문자열 중 하나를 사용하세요 ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm 오라클 네이밍 메서드])",
+       "config-invalid-db-server-oracle": "\"$1\" 데이터베이스 TNS가 잘못됐습니다.\n\"TNS Name\"이나 \"Easy Connect\" 문자열 중 하나를 사용하세요 ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Oracle 네이밍 메서드]).",
        "config-invalid-db-name": "\"$1\" 데이터베이스 이름이 잘못되었습니다.\nASCII 글자 (a-z, A-Z), 숫자 (0-9), 밑줄 (_)과 하이픈 (-)만 사용하세요.",
        "config-invalid-db-prefix": "\"$1\" 데이터베이스 접두어가 잘못됐습니다.\nASCII 글자 (a-z, A-Z), 숫자 (0-9), 밑줄 (_)과 하이픈 (-)만 사용하세요.",
        "config-connection-error": "$1.\n\n호스트, 계정 이름과 비밀번호를 확인하고 다시 시도하세요.",
        "config-db-sys-create-oracle": "설치 프로그램은 새 계정을 만들기 위한 SYSDBA 계정만을 지원합니다.",
        "config-db-sys-user-exists-oracle": "\"$1\" 사용자 계정이 이미 존재합니다. SYSDBA는 새 계정을 만드는 데에만 사용할 수 있습니다!",
        "config-postgres-old": "PostgreSQL $1 이상이 필요하나 $2(이)가 있습니다.",
-       "config-mssql-old": "마이크로소프트 SQL 서버 $1 이상의 버전이 필요합니다. 현재 버전은 $2입니다.",
+       "config-mssql-old": "Microsoft SQL 서버 $1 이상의 버전이 필요합니다. 현재 버전은 $2입니다.",
        "config-sqlite-name-help": "위키를 식별하기 위한 이름을 선택하세요.\n공백이나 하이픈을 사용하지 마십시오.\nSQLite 데이터 파일 이름에 사용됩니다.",
        "config-sqlite-parent-unwritable-group": "<code><nowiki>$1</nowiki></code> 데이터 디렉토리를 만들 수 없으며, 이는 웹 서버는 상위 디렉토리인 <code><nowiki>$2</nowiki></code>에 쓸 수 없기 때문입니다.\n\n설치 프로그램은 웹 서버로 실행 중인 사용자를 지정할 수 없습니다.\n계속하려면 웹 서버가 쓸 수 있는 <code><nowiki>$3</nowiki></code> 디렉토리를 만드세요.\n유닉스/리눅스 시스템에서의 수행:\n\n<pre>cd $2\nmkdir $3\nchgrp $4 $3\nchmod g+w $3</pre>",
        "config-sqlite-parent-unwritable-nogroup": "<code><nowiki>$1</nowiki></code> 데이터 디렉토리를 만들 수 없으며, 이는 웹 서버가 상위 디렉토리인 <code><nowiki>$2</nowiki></code>에 쓸 수 없기 때문입니다.\n\n설치 프로그램은 웹 서버로 실행 중인 사용자를 지정할 수 없습니다.\n계속하려면 웹 서버(와 그 외 서버!)가 전역으로 쓸 수 있는 <code><nowiki>$3</nowiki></code> 디렉토리를 만드세요.\n유닉스/리눅스 시스템에서의 수행:\n\n<pre>cd $2\nmkdir $3\nchmod a+w $3</pre>",
        "config-extensions": "확장 기능",
        "config-extensions-help": "위에 나열된 확장 기능이 <code>./extensions</code>에서 발견되었습니다.\n\n추가적인 설정이 필요할 수 있습니다만 지금 활성화시킬 수 있습니다.",
        "config-skins": "스킨",
+       "config-skins-help": "위에 나열된 스킨이 <code>./skins</code> 디렉터리에서 감지되었습니다. 적어도 하나를 활성화하고 나서, 기본값을 선택해야 합니다.",
        "config-skins-use-as-default": "이 스킨을 기본값으로 사용",
+       "config-skins-missing": "스킨을 찾을 수 없습니다; 미디어위키는 당신이 적절한 스킨을 설치할 때까지 대체 스킨을 사용합니다.",
        "config-skins-must-enable-some": "적어도 활성화활 스킨 하나를 선택해야 합니다.",
        "config-skins-must-enable-default": "기본값으로 설정한 스킨은 반드시 활성화해야 합니다.",
        "config-install-alreadydone": "'''경고:''' 이미 미디어위키를 설치했고 다시 설치하려고 합니다.\n다음 페이지로 진행하세요.",
        "config-install-stats": "통계를 초기화하는 중",
        "config-install-keys": "보안 키를 만드는 중",
        "config-insecure-keys": "'''경고:''' 설치 중에 생성한 {{PLURAL:$2|보안 키}} ($1)는 완전히 안전하지 {{PLURAL:$2|않습니다}}. 직접 바꾸는 것을 고려하세요.",
+       "config-install-updates": "불필요한 업데이트 실행 방지",
+       "config-install-updates-failed": "<strong>오류:</strong> 다음 오류로 테이블 안에 업데이트 키를 넣기에 실패했습니다: $1",
        "config-install-sysop": "관리자 사용자 계정을 만드는 중",
        "config-install-subscribe-fail": "미디어위키 알림을 구독할 수 없습니다: $1",
        "config-install-subscribe-notpossible": "cURL이 설치되어 있지 않고 <code>allow_url_fopen</code>을 사용할 수 없습니다.",
index 3576585..52d049b 100644 (file)
@@ -92,7 +92,7 @@
        "config-db-host": "Домаќин на базата:",
        "config-db-host-help": "Ако вашата база е на друг опслужувач, тогаш тука внесете го името на домаќинот или IP-адресата.\n\nАко користите заедничко (споделено) вдомување, тогаш вашиот вдомител треба да го наведе точното име на домаќинот во неговата документација.\n\nАко воспоставувате на опслужувач на Windows и користите MySQL, можноста „localhost“ може да не функционира за опслужувачкото име. Во тој случај, обидете се со внесување на „127.0.0.1“ како локална IP-адреса.\n\nАко користите PostgreSQL, оставете го полево празно за да се поврзете преку Unix-приклучок.",
        "config-db-host-oracle": "TNS на базата:",
-       "config-db-host-oracle-help": "Ð\92неÑ\81еÑ\82е Ð²Ð°Ð¶ÐµÑ\87ко [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Ð»Ð¾ÐºÐ°Ð»но име за поврзување]. На оваа воспоставка мора да ѝ биде видлива податотеката tnsnames.ora.<br />Ако користите клиентски библиотеки 10g или понови, тогаш можете да го користите и методот на иметнување на [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].",
+       "config-db-host-oracle-help": "Ð\92неÑ\81еÑ\82е Ð²Ð°Ð¶ÐµÑ\87ко [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Ð¼ÐµÑ\81но име за поврзување]. На оваа воспоставка мора да ѝ биде видлива податотеката tnsnames.ora.<br />Ако користите клиентски библиотеки 10g или понови, тогаш можете да го користите и методот на иметнување на [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].",
        "config-db-wiki-settings": "Идентификувај го викиво",
        "config-db-name": "Име на базата:",
        "config-db-name-help": "Одберете име што ќе го претставува вашето вики.\nИмето не смее да содржи празни места.\n\nАко користите заедничко (споделено) вдомување, тогаш вашиот вдомител ќе ви даде конкретно име на база за користење, или пак ќе ви даде да создавате бази преку контролната табла.",
index 2bdfb10..60d072a 100644 (file)
@@ -6,7 +6,8 @@
                        "WikiPhoenix",
                        "Josve05a",
                        "Lokal Profil",
-                       "Tobulos1"
+                       "Tobulos1",
+                       "Rotsee"
                ]
        },
        "config-desc": "Installationsprogrammet för MediaWiki",
        "config-profile-no-anon": "Kontoskapande krävs",
        "config-profile-fishbowl": "Endast auktoriserade redigerare",
        "config-profile-private": "Privat wiki",
-       "config-profile-help": "Wikis fungerar bäst när du låter som många människor som möjligt redigera dem.\nI MediaWiki, är det lätt att granska de senaste ändringarna och återställa alla skador som utförs av naiva eller illvilliga användare.\n\nMen många har funnit MediaWiki användbart i en mängd olika roller, och ibland är det inte lätt att övertyga alla fördelarna med wiki-sättet.\nSå valet är ditt.\n\nModellen <strong>{{int:config-profil-wiki}}</strong> tillåter vem som helst att redigera, utan att ens behöva logga in.\nEn wiki med <strong>{{int:config-profil-ingen-anon}}</strong> ger extra ansvarskänsla, men kan avskräcka tillfälliga bidragsgivare.\n\nScenariot <strong>{{int:config-profil-fishbowl}}</strong> tillåter godkända användare att redigera, men allmänheten kan se sidorna, inklusive historik.\nA <strong>{{int:config-profil-privat}}</strong> tillåter endast godkända användare att se sidor, samma grupp får även redigera.\n\nMer komplexa användarrättighetskonfigurationer finns tillgängliga efter installationen, se [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights avsnittet i manualen].",
+       "config-profile-help": "Wikier fungerar bäst när du låter som många människor som möjligt redigera dem.\nI MediaWiki är det lätt att granska de senaste ändringarna och återställa alla skador som utförs av naiva eller illvilliga användare.\n\nMen många har funnit MediaWiki användbart i en mängd olika roller, och ibland är det inte lätt att övertyga alla om fördelarna med wiki-sättet.\nSå valet är ditt.\n\nModellen <strong>{{int:config-profil-wiki}}</strong> tillåter vem som helst att redigera, utan att ens behöva logga in.\nEn wiki med <strong>{{int:config-profil-ingen-anon}}</strong> ger extra ansvarskänsla, men kan avskräcka tillfälliga bidragsgivare.\n\nScenariot <strong>{{int:config-profil-fishbowl}}</strong> tillåter godkända användare att redigera, men allmänheten kan se sidorna, inklusive historik.\nA <strong>{{int:config-profil-privat}}</strong> tillåter endast godkända användare att se sidor, samma grupp får även redigera.\n\nMer komplexa användarrättighetskonfigurationer finns tillgängliga efter installationen, se [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights avsnittet i manualen].",
        "config-license": "Upphovsrätt och licens:",
        "config-license-none": "Ingen licenssidfot",
        "config-license-cc-by-sa": "Creative Commons Erkännande-DelaLika",
index 3519eac..3ac5cf4 100644 (file)
@@ -134,9 +134,6 @@ class JobQueueRedis extends JobQueue {
         * @throws JobQueueError
         */
        protected function doGetAcquiredCount() {
-               if ( $this->claimTTL <= 0 ) {
-                       return 0; // no acknowledgements
-               }
                $conn = $this->getConnection();
                try {
                        $conn->multi( Redis::PIPELINE );
@@ -172,9 +169,6 @@ class JobQueueRedis extends JobQueue {
         * @throws JobQueueError
         */
        protected function doGetAbandonedCount() {
-               if ( $this->claimTTL <= 0 ) {
-                       return 0; // no acknowledgements
-               }
                $conn = $this->getConnection();
                try {
                        return $conn->zSize( $this->getQueueKey( 'z-abandoned' ) );
@@ -308,15 +302,11 @@ LUA;
                $conn = $this->getConnection();
                try {
                        do {
-                               if ( $this->claimTTL > 0 ) {
-                                       // Keep the claimed job list down for high-traffic queues
-                                       if ( mt_rand( 0, 99 ) == 0 ) {
-                                               $this->recyclePruneAndUndelayJobs();
-                                       }
-                                       $blob = $this->popAndAcquireBlob( $conn );
-                               } else {
-                                       $blob = $this->popAndDeleteBlob( $conn );
+                               // Keep the claimed job list down for high-traffic queues
+                               if ( !$this->daemonized && mt_rand( 0, 99 ) == 0 ) {
+                                       $this->recyclePruneAndUndelayJobs();
                                }
+                               $blob = $this->popAndAcquireBlob( $conn );
                                if ( !is_string( $blob ) ) {
                                        break; // no jobs; nothing to do
                                }
@@ -338,39 +328,6 @@ LUA;
                return $job;
        }
 
-       /**
-        * @param RedisConnRef $conn
-        * @return array Serialized string or false
-        * @throws RedisException
-        */
-       protected function popAndDeleteBlob( RedisConnRef $conn ) {
-               static $script =
-<<<LUA
-               local kUnclaimed, kSha1ById, kIdBySha1, kData = unpack(KEYS)
-               -- Pop an item off the queue
-               local id = redis.call('rpop',kUnclaimed)
-               if not id then return false end
-               -- Get the job data and remove it
-               local item = redis.call('hGet',kData,id)
-               redis.call('hDel',kData,id)
-               -- Allow new duplicates of this job
-               local sha1 = redis.call('hGet',kSha1ById,id)
-               if sha1 then redis.call('hDel',kIdBySha1,sha1) end
-               redis.call('hDel',kSha1ById,id)
-               -- Return the job data
-               return item
-LUA;
-               return $conn->luaEval( $script,
-                       array(
-                               $this->getQueueKey( 'l-unclaimed' ), # KEYS[1]
-                               $this->getQueueKey( 'h-sha1ById' ), # KEYS[2]
-                               $this->getQueueKey( 'h-idBySha1' ), # KEYS[3]
-                               $this->getQueueKey( 'h-data' ), # KEYS[4]
-                       ),
-                       4 # number of first argument(s) that are keys
-               );
-       }
-
        /**
         * @param RedisConnRef $conn
         * @return array Serialized string or false
@@ -416,36 +373,35 @@ LUA;
                if ( !isset( $job->metadata['uuid'] ) ) {
                        throw new MWException( "Job of type '{$job->getType()}' has no UUID." );
                }
-               if ( $this->claimTTL > 0 ) {
-                       $conn = $this->getConnection();
-                       try {
-                               static $script =
+
+               $conn = $this->getConnection();
+               try {
+                       static $script =
 <<<LUA
-                               local kClaimed, kAttempts, kData = unpack(KEYS)
-                               -- Unmark the job as claimed
-                               redis.call('zRem',kClaimed,ARGV[1])
-                               redis.call('hDel',kAttempts,ARGV[1])
-                               -- Delete the job data itself
-                               return redis.call('hDel',kData,ARGV[1])
+                       local kClaimed, kAttempts, kData = unpack(KEYS)
+                       -- Unmark the job as claimed
+                       redis.call('zRem',kClaimed,ARGV[1])
+                       redis.call('hDel',kAttempts,ARGV[1])
+                       -- Delete the job data itself
+                       return redis.call('hDel',kData,ARGV[1])
 LUA;
-                               $res = $conn->luaEval( $script,
-                                       array(
-                                               $this->getQueueKey( 'z-claimed' ), # KEYS[1]
-                                               $this->getQueueKey( 'h-attempts' ), # KEYS[2]
-                                               $this->getQueueKey( 'h-data' ), # KEYS[3]
-                                               $job->metadata['uuid'] # ARGV[1]
-                                       ),
-                                       3 # number of first argument(s) that are keys
-                               );
-
-                               if ( !$res ) {
-                                       wfDebugLog( 'JobQueueRedis', "Could not acknowledge {$this->type} job." );
-
-                                       return false;
-                               }
-                       } catch ( RedisException $e ) {
-                               $this->throwRedisException( $conn, $e );
+                       $res = $conn->luaEval( $script,
+                               array(
+                                       $this->getQueueKey( 'z-claimed' ), # KEYS[1]
+                                       $this->getQueueKey( 'h-attempts' ), # KEYS[2]
+                                       $this->getQueueKey( 'h-data' ), # KEYS[3]
+                                       $job->metadata['uuid'] # ARGV[1]
+                               ),
+                               3 # number of first argument(s) that are keys
+                       );
+
+                       if ( !$res ) {
+                               wfDebugLog( 'JobQueueRedis', "Could not acknowledge {$this->type} job." );
+
+                               return false;
                        }
+               } catch ( RedisException $e ) {
+                       $this->throwRedisException( $conn, $e );
                }
 
                return true;
@@ -725,7 +681,7 @@ LUA;
                }
                $periods = array( 3600 ); // standard cleanup (useful on config change)
                if ( $this->claimTTL > 0 ) {
-                       $periods[] = ceil( $this->claimTTL / 2 ); // avoid bad timing
+                       $periods[] = ceil( $this->claimTTL / 2 ); // halved to avoid bad timing
                }
                if ( $this->checkDelay ) {
                        $periods[] = 300; // 5 minutes
index 6e50a8c..06a0865 100644 (file)
@@ -65,7 +65,7 @@ class HashBagOStuff extends BagOStuff {
                        return false;
                }
 
-               $casToken = serialize( $this->bag[$key][0] );
+               $casToken = $this->bag[$key][0];
 
                return $this->bag[$key][0];
        }
@@ -89,7 +89,7 @@ class HashBagOStuff extends BagOStuff {
         * @return bool
         */
        function cas( $casToken, $key, $value, $exptime = 0 ) {
-               if ( serialize( $this->get( $key ) ) === $casToken ) {
+               if ( $this->get( $key ) === $casToken ) {
                        return $this->set( $key, $value, $exptime );
                }
 
index 53edcdd..0e133a8 100644 (file)
@@ -145,7 +145,7 @@ class MemcachedBagOStuff extends BagOStuff {
         * TTLs higher than 30 days will be detected as absolute TTLs
         * (UNIX timestamps), and will result in the cache entry being
         * discarded immediately because the expiry is in the past.
-        * Clamp expiries >30d at 30d, unless they're >=1e9 in which
+        * Clamp expires >30d at 30d, unless they're >=1e9 in which
         * case they are likely to really be absolute (1e9 = 2011-09-09)
         * @param int $expiry
         * @return int
index 5872079..3b0f816 100644 (file)
@@ -638,6 +638,11 @@ class SqlBagOStuff extends BagOStuff {
                return true;
        }
 
+       /**
+        * Delete content of shard tables in every server.
+        * Return true if the operation is successful, false otherwise.
+        * @return bool
+        */
        public function deleteAll() {
                for ( $serverIndex = 0; $serverIndex < $this->numServers; $serverIndex++ ) {
                        try {
index 96e315f..54fab29 100644 (file)
@@ -1218,7 +1218,8 @@ class Article implements Page {
                        if ( !( $user && $user->isLoggedIn() ) && !$ip ) { # User does not exist
                                $outputPage->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n\$1\n</div>",
                                        array( 'userpage-userdoesnotexist-view', wfEscapeWikiText( $rootPart ) ) );
-                       } elseif ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) { # Show log extract if the user is currently blocked
+                       } elseif ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) {
+                               # Show log extract if the user is currently blocked
                                LogEventsList::showLogExtract(
                                        $outputPage,
                                        'block',
@@ -1381,9 +1382,14 @@ class Article implements Page {
                        : 'revision-info';
 
                $outputPage = $this->getContext()->getOutput();
-               $outputPage->addSubtitle( "<div id=\"mw-{$infomsg}\">" . wfMessage( $infomsg,
-                       $td )->rawParams( $userlinks )->params( $revision->getID(), $tddate,
-                       $tdtime, $revision->getUserText() )->rawParams( Linker::revComment( $revision, true, true ) )->parse() . "</div>" );
+               $outputPage->addSubtitle( "<div id=\"mw-{$infomsg}\">" .
+                       wfMessage( $infomsg, $td )
+                               ->rawParams( $userlinks )
+                               ->params( $revision->getID(), $tddate, $tdtime, $revision->getUserText() )
+                               ->rawParams( Linker::revComment( $revision, true, true ) )
+                               ->parse() .
+                       "</div>"
+               );
 
                $lnk = $current
                        ? wfMessage( 'currentrevisionlink' )->escaped()
@@ -1631,10 +1637,11 @@ class Article implements Page {
                if ( $hasHistory ) {
                        $title = $this->getTitle();
 
-                       // The following can use the real revision count as this is only being shown for users that can delete
-                       // this page.
-                       // This, as a side-effect, also makes sure that the following query isn't being run for pages with a
-                       // larger history, unless the user has the 'bigdelete' right (and is about to delete this page).
+                       // The following can use the real revision count as this is only being shown for users
+                       // that can delete this page.
+                       // This, as a side-effect, also makes sure that the following query isn't being run for
+                       // pages with a larger history, unless the user has the 'bigdelete' right
+                       // (and is about to delete this page).
                        $dbr = wfGetDB( DB_SLAVE );
                        $revisions = $edits = (int)$dbr->selectField(
                                'revision',
@@ -1644,7 +1651,8 @@ class Article implements Page {
                        );
 
                        // @todo FIXME: i18n issue/patchwork message
-                       $this->getContext()->getOutput()->addHTML( '<strong class="mw-delete-warning-revisions">' .
+                       $this->getContext()->getOutput()->addHTML(
+                               '<strong class="mw-delete-warning-revisions">' .
                                wfMessage( 'historywarning' )->numParams( $revisions )->parse() .
                                wfMessage( 'word-separator' )->plain() . Linker::linkKnown( $title,
                                        wfMessage( 'history' )->escaped(),
index 355a3c1..d45b32f 100644 (file)
@@ -379,8 +379,7 @@ class CoreParserFunctions {
                $text = $parser->doQuotes( $text );
 
                // remove stripped text (e.g. the UNIQ-QINU stuff) that was generated by tag extensions/whatever
-               $text = preg_replace( '/' . preg_quote( $parser->uniqPrefix(), '/' ) . '.*?'
-                       . preg_quote( Parser::MARKER_SUFFIX, '/' ) . '/', '', $text );
+               $text = $parser->killMarkers( $text );
 
                // list of disallowed tags for DISPLAYTITLE
                // these will be escaped even though they are allowed in normal wiki text
index 85920cc..3ffa16c 100644 (file)
@@ -35,6 +35,7 @@ class CoreTagHooks {
                $parser->setHook( 'pre', array( __CLASS__, 'pre' ) );
                $parser->setHook( 'nowiki', array( __CLASS__, 'nowiki' ) );
                $parser->setHook( 'gallery', array( __CLASS__, 'gallery' ) );
+               $parser->setHook( 'indicator', array( __CLASS__, 'indicator' ) );
                if ( $wgRawHtml ) {
                        $parser->setHook( 'html', array( __CLASS__, 'html' ) );
                }
@@ -119,4 +120,30 @@ class CoreTagHooks {
        public static function gallery( $content, $attributes, $parser ) {
                return $parser->renderImageGallery( $content, $attributes );
        }
+
+       /**
+        * XML-style tag for page status indicators: icons (or short text snippets) usually displayed in
+        * the top-right corner of the page, outside of the main content.
+        *
+        * @param string $content
+        * @param array $attributes
+        * @param Parser $parser
+        * @param PPFrame $frame
+        * @return string
+        * @since 1.25
+        */
+       public static function indicator( $content, array $attributes, Parser $parser, PPFrame $frame ) {
+               if ( !isset( $attributes['name'] ) || trim( $attributes['name'] ) === '' ) {
+                       return '<span class="error">' .
+                               wfMessage( 'invalid-indicator-name' )->inContentLanguage()->text() .
+                               '</span>';
+               }
+
+               $parser->getOutput()->setIndicator(
+                       trim( $attributes['name'] ),
+                       $parser->recursiveTagParse( $content, $frame )
+               );
+
+               return '';
+       }
 }
index ddd1f9a..bcef8bc 100644 (file)
@@ -112,8 +112,20 @@ class Parser {
        const OT_MSG = 3;
        const OT_PLAIN = 4; # like extractSections() - portions of the original are returned unchanged.
 
-       # Marker Suffix needs to be accessible staticly.
+       /**
+        * Prefix for temporary replacement strings generated by the preprocessor
+        * ("strip markers"). Using \x7f at the front gives us a little extra
+        * robustness since it shouldn't match when butted up against
+        * identifier-like string constructs.
+        *
+        * Must not consist of all title characters, or else it will change
+        * the behavior of <nowiki> in a link.
+        */
+       const MARKER_PREFIX = "\x7fUNIQ";
+       /** Suffix for strip markers */
        const MARKER_SUFFIX = "-QINU\x7f";
+       /** Regex which matches the state ID part of strip markers */
+       const MARKER_STATE_ID_REGEX = '[0-9a-f]{16}';
 
        # Markers used for wrapping the table of contents
        const TOC_START = '<mw:toc>';
@@ -330,18 +342,9 @@ class Parser {
                $this->mLangLinkLanguages = array();
                $this->currentRevisionCache = null;
 
-               /**
-                * Prefix for temporary replacement strings for the multipass parser.
-                * \x07 should never appear in input as it's disallowed in XML.
-                * Using it at the front also gives us a little extra robustness
-                * since it shouldn't match when butted up against identifier-like
-                * string constructs.
-                *
-                * Must not consist of all title characters, or else it will change
-                * the behavior of <nowiki> in a link.
-                */
-               $this->mUniqPrefix = "\x7fUNIQ" . self::getRandomString();
-               $this->mStripState = new StripState( $this->mUniqPrefix );
+               $stripId = self::getRandomString();
+               $this->mUniqPrefix = self::MARKER_PREFIX . $stripId;
+               $this->mStripState = new StripState( $stripId );
 
                # Clear these on every parse, bug 4549
                $this->mTplRedirCache = $this->mTplDomCache = array();
index 43e8d0b..428e7b2 100644 (file)
@@ -25,6 +25,7 @@ class ParserOutput extends CacheTime {
        public $mText,                       # The output text
                $mLanguageLinks,              # List of the full text of language links, in the order they appear
                $mCategories,                 # Map of category names to sort keys
+               $mIndicators = array(),       # Page status indicators, usually displayed in top-right corner
                $mTitleText,                  # title text of the chosen language variant
                $mLinks = array(),            # 2-D map of NS/DBK to ID for the links in the document. ID=zero for broken.
                $mTemplates = array(),        # 2-D map of NS/DBK to ID for the template references. ID=zero for broken.
@@ -130,6 +131,13 @@ class ParserOutput extends CacheTime {
                return $this->mCategories;
        }
 
+       /**
+        * @since 1.25
+        */
+       public function getIndicators() {
+               return $this->mIndicators;
+       }
+
        public function getTitleText() {
                return $this->mTitleText;
        }
@@ -267,6 +275,13 @@ class ParserOutput extends CacheTime {
                $this->mCategories[$c] = $sort;
        }
 
+       /**
+        * @since 1.25
+        */
+       public function setIndicator( $id, $content ) {
+               $this->mIndicators[$id] = $content;
+       }
+
        public function addLanguageLink( $t ) {
                $this->mLanguageLinks[] = $t;
        }
index 2edb79a..2cce574 100644 (file)
@@ -1043,11 +1043,17 @@ class PPFrame_DOM implements PPFrame {
                                        // Numbered parameter
                                        $index = $nameNodes->item( 0 )->attributes->getNamedItem( 'index' )->textContent;
                                        $index = $index - $indexOffset;
+                                       if ( isset( $namedArgs[$index] ) || isset( $numberedArgs[$index] ) ) {
+                                               $this->parser->addTrackingCategory( 'duplicate-args-category' );
+                                       }
                                        $numberedArgs[$index] = $value->item( 0 );
                                        unset( $namedArgs[$index] );
                                } else {
                                        // Named parameter
                                        $name = trim( $this->expand( $nameNodes->item( 0 ), PPFrame::STRIP_COMMENTS ) );
+                                       if ( isset( $namedArgs[$name] ) || isset( $numberedArgs[$name] ) ) {
+                                               $this->parser->addTrackingCategory( 'duplicate-args-category' );
+                                       }
                                        $namedArgs[$name] = $value->item( 0 );
                                        unset( $numberedArgs[$name] );
                                }
index 6376396..b4b14dc 100644 (file)
@@ -985,11 +985,17 @@ class PPFrame_Hash implements PPFrame {
                                if ( $bits['index'] !== '' ) {
                                        // Numbered parameter
                                        $index = $bits['index'] - $indexOffset;
+                                       if ( isset( $namedArgs[$index] ) || isset( $numberedArgs[$index] ) ) {
+                                               $this->parser->addTrackingCategory( 'duplicate-args-category' );
+                                       }
                                        $numberedArgs[$index] = $bits['value'];
                                        unset( $namedArgs[$index] );
                                } else {
                                        // Named parameter
                                        $name = trim( $this->expand( $bits['name'], PPFrame::STRIP_COMMENTS ) );
+                                       if ( isset( $namedArgs[$name] ) || isset( $numberedArgs[$name] ) ) {
+                                               $this->parser->addTrackingCategory( 'duplicate-args-category' );
+                                       }
                                        $namedArgs[$name] = $bits['value'];
                                        unset( $numberedArgs[$name] );
                                }
index 5d1743e..a1d362b 100644 (file)
@@ -26,6 +26,7 @@
  * @ingroup Parser
  */
 class StripState {
+       protected $id;
        protected $prefix;
        protected $data;
        protected $regex;
@@ -37,15 +38,17 @@ class StripState {
        const UNSTRIP_RECURSION_LIMIT = 20;
 
        /**
-        * @param string $prefix
+        * @param string $id
         */
-       public function __construct( $prefix ) {
-               $this->prefix = $prefix;
+       public function __construct( $id ) {
+               $this->id = $id;
+               $this->prefix = Parser::MARKER_PREFIX . $id;
                $this->data = array(
                        'nowiki' => array(),
                        'general' => array()
                );
-               $this->regex = "/{$this->prefix}([^\x7f]+)" . Parser::MARKER_SUFFIX . '/';
+               $this->regex = "/" . Parser::MARKER_PREFIX .
+                       '(' . Parser::MARKER_STATE_ID_REGEX . ")([^\x7f]+)" . Parser::MARKER_SUFFIX . '/';
                $this->circularRefGuard = array();
        }
 
@@ -73,11 +76,11 @@ class StripState {
         * @param string $value
         */
        protected function addItem( $type, $marker, $value ) {
-               if ( !preg_match( $this->regex, $marker, $m ) ) {
+               if ( !preg_match( $this->regex, $marker, $m ) || $m[1] !== $this->id ) {
                        throw new MWException( "Invalid marker: $marker" );
                }
 
-               $this->data[$type][$m[1]] = $value;
+               $this->data[$type][$m[2]] = $value;
        }
 
        /**
@@ -131,8 +134,8 @@ class StripState {
         * @return array
         */
        protected function unstripCallback( $m ) {
-               $marker = $m[1];
-               if ( isset( $this->data[$this->tempType][$marker] ) ) {
+               $marker = $m[2];
+               if ( $m[1] === $this->id && isset( $this->data[$this->tempType][$marker] ) ) {
                        if ( isset( $this->circularRefGuard[$marker] ) ) {
                                return '<span class="error">'
                                        . wfMessage( 'parser-unstrip-loop-warning' )->inContentLanguage()->text()
@@ -164,7 +167,7 @@ class StripState {
         * @return StripState
         */
        public function getSubState( $text ) {
-               $subState = new StripState( $this->prefix );
+               $subState = new StripState( $this->id );
                $pos = 0;
                while ( true ) {
                        $startPos = strpos( $text, $this->prefix, $pos );
@@ -175,11 +178,11 @@ class StripState {
 
                        $endPos += strlen( Parser::MARKER_SUFFIX );
                        $marker = substr( $text, $startPos, $endPos - $startPos );
-                       if ( !preg_match( $this->regex, $marker, $m ) ) {
+                       if ( !preg_match( $this->regex, $marker, $m ) || $m[1] !== $this->id ) {
                                continue;
                        }
 
-                       $key = $m[1];
+                       $key = $m[2];
                        if ( isset( $this->data['nowiki'][$key] ) ) {
                                $subState->data['nowiki'][$key] = $this->data['nowiki'][$key];
                        } elseif ( isset( $this->data['general'][$key] ) ) {
@@ -219,8 +222,12 @@ class StripState {
         * @return string
         */
        protected function mergeCallback( $m ) {
-               $key = $m[1];
-               return "{$this->prefix}{$this->tempMergePrefix}-$key" . Parser::MARKER_SUFFIX;
+               if ( $m[1] === $this->id ) {
+                       $key = $m[2];
+                       return "{$this->prefix}{$this->tempMergePrefix}-$key" . Parser::MARKER_SUFFIX;
+               } else {
+                       return $m[0];
+               }
        }
 
        /**
@@ -230,6 +237,15 @@ class StripState {
         * @return string
         */
        public function killMarkers( $text ) {
-               return preg_replace( $this->regex, '', $text );
+               $id = $this->id; // PHP 5.3 hack
+               return preg_replace_callback( $this->regex,
+                       function ( $m ) use ( $id ) {
+                               if ( $m[1] === $id ) {
+                                       return '';
+                               } else {
+                                       return $m[0];
+                               }
+                       },
+                       $text );
        }
 }
index 48d6866..86a3fef 100644 (file)
@@ -68,6 +68,15 @@ final class PasswordFactory {
                $this->default = $type;
        }
 
+       /**
+        * Get the default password type
+        *
+        * @return string
+        */
+       public function getDefaultType() {
+               return $this->default;
+       }
+
        /**
         * Initialize the internal static variables using the global variables
         *
index 6dc33ac..7217000 100644 (file)
@@ -600,6 +600,37 @@ abstract class BaseTemplate extends QuickTemplate {
                return $footericons;
        }
 
+       /**
+        * Get the suggested HTML for page status indicators: icons (or short text snippets) usually
+        * displayed in the top-right corner of the page, outside of the main content.
+        *
+        * Your skin may implement this differently, for example by handling some indicator names
+        * specially with a different UI. However, it is recommended to use a `<div class="mw-indicator"
+        * id="mw-indicator-<id>" />` as a wrapper element for each indicator, for better compatibility
+        * with extensions and user scripts.
+        *
+        * The raw data is available in `$this->data['indicators']` as an associative array (keys:
+        * identifiers, values: contents) internally ordered by keys.
+        *
+        * @return string HTML
+        * @since 1.25
+        */
+       public function getIndicators() {
+               $out = "<div class=\"mw-indicators\">\n";
+               foreach ( $this->data['indicators'] as $id => $content ) {
+                       $out .= Html::rawElement(
+                               'div',
+                               array(
+                                       'id' => Sanitizer::escapeId( "mw-indicator-$id" ),
+                                       'class' => 'mw-indicator',
+                               ),
+                               $content
+                       ) . "\n";
+               }
+               $out .= "</div>\n";
+               return $out;
+       }
+
        /**
         * Output the basic end-page trail including bottomscripts, reporttime, and
         * debug stuff. This should be called right before outputting the closing
index 064c076..2fef220 100644 (file)
@@ -38,4 +38,34 @@ class SkinApi extends SkinTemplate {
                parent::setupSkinUserCss( $out );
                $out->addModuleStyles( 'mediawiki.skinning.interface' );
        }
+
+       // Skip work and hooks for stuff we don't use
+
+       function buildSidebar() {
+               return array();
+       }
+
+       function getNewtalks() {
+               return '';
+       }
+
+       function getSiteNotice() {
+               return '';
+       }
+
+       public function getLanguages() {
+               return array();
+       }
+
+       protected function buildPersonalUrls() {
+               return array();
+       }
+
+       protected function buildContentNavigationUrls() {
+               return array();
+       }
+
+       protected function buildNavUrls() {
+               return array();
+       }
 }
index be77c61..d5c57eb 100644 (file)
@@ -49,4 +49,18 @@ class SkinApiTemplate extends BaseTemplate {
 
        <?php
        }
+
+       // Skip work and hooks for stuff we don't use
+
+       function getToolbox() {
+               return array();
+       }
+
+       function getPersonalTools() {
+               return array();
+       }
+
+       function getSidebar( $options = array() ) {
+               return array();
+       }
 }
index 603ee5c..ea94fad 100644 (file)
@@ -91,9 +91,7 @@ class SkinFallbackTemplate extends BaseTemplate {
                </form>
 
                <div class="mw-body" role="main">
-                       <h1 class="firstHeading">
-                               <span dir="auto"><?php $this->html( 'title' ) ?></span>
-                       </h1>
+                       <h1 class="firstHeading"><span dir="auto"><?php $this->html( 'title' ) ?></span></h1>
 
                        <div class="mw-body-content">
                                <?php $this->html( 'bodytext' ) ?>
index c1db302..1b99bc3 100644 (file)
@@ -438,6 +438,8 @@ class SkinTemplate extends Skin {
                        }
                }
 
+               $tpl->set( 'indicators', $out->getIndicators() );
+
                $tpl->set( 'sitenotice', $this->getSiteNotice() );
                $tpl->set( 'bottomscripts', $this->bottomScripts() );
                $tpl->set( 'printfooter', $this->printSource() );
index 9a6b787..febd119 100644 (file)
@@ -156,6 +156,7 @@ class SpecialPageFactory {
                'Booksources' => 'SpecialBookSources',
 
                // Unlisted / redirects
+               'ApiHelp' => 'SpecialApiHelp',
                'Blankpage' => 'SpecialBlankpage',
                'Diff' => 'SpecialDiff',
                'Emailuser' => 'SpecialEmailUser',
diff --git a/includes/specials/SpecialApiHelp.php b/includes/specials/SpecialApiHelp.php
new file mode 100644 (file)
index 0000000..b43911f
--- /dev/null
@@ -0,0 +1,93 @@
+<?php
+/**
+ * Implements Special:ApiHelp
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+
+/**
+ * Special page to redirect to API help pages, for situations where linking to
+ * the api.php endpoint is not wanted.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialApiHelp extends UnlistedSpecialPage {
+       public function __construct() {
+               parent::__construct( 'ApiHelp' );
+       }
+
+       public function execute( $par ) {
+               if ( empty( $par ) ) {
+                       $par = 'main';
+               }
+
+               // These come from transclusions
+               $request = $this->getRequest();
+               $options = array(
+                       'action' => 'help',
+                       'nolead' => true,
+                       'submodules' => $request->getCheck( 'submodules' ),
+                       'recursivesubmodules' => $request->getCheck( 'recursivesubmodules' ),
+                       'title' => $request->getVal( 'title', $this->getPageTitle( '$1' )->getPrefixedText() ),
+               );
+
+               // These are for linking from wikitext, since url parameters are a pain
+               // to do.
+               while ( true ) {
+                       if ( substr( $par, 0, 4 ) === 'sub/' ) {
+                               $par = substr( $par, 4 );
+                               $options['submodules'] = 1;
+                               continue;
+                       }
+
+                       if ( substr( $par, 0, 5 ) === 'rsub/' ) {
+                               $par = substr( $par, 5 );
+                               $options['recursivesubmodules'] = 1;
+                               continue;
+                       }
+
+                       $moduleName = $par;
+                       break;
+               }
+
+               if ( !$this->including() ) {
+                       unset( $options['nolead'], $options['title'] );
+                       $options['modules'] = $moduleName;
+                       $link = wfAppendQuery( wfExpandUrl( wfScript( 'api' ), PROTO_CURRENT ), $options );
+                       $this->getOutput()->redirect( $link );
+                       return;
+               }
+
+               $main = new ApiMain( $this->getContext(), false );
+               try {
+                       $module = $main->getModuleFromPath( $moduleName );
+               } catch ( UsageException $ex ) {
+                       $this->getOutput()->addHTML( Html::rawElement( 'span', array( 'class' => 'error' ),
+                               $this->msg( 'apihelp-no-such-module', $moduleName )->inContentLanguage()->parse()
+                       ) );
+                       return;
+               }
+
+               ApiHelp::getHelp( $this->getContext(), $module, $options );
+       }
+
+       public function isIncludable() {
+               return true;
+       }
+}
index 3297c17..cf82b86 100644 (file)
@@ -98,6 +98,7 @@ class SpecialBlock extends FormSpecialPage {
                $form->setWrapperLegendMsg( 'blockip-legend' );
                $form->setHeaderText( '' );
                $form->setSubmitCallback( array( __CLASS__, 'processUIForm' ) );
+               $form->setSubmitDestructive();
 
                $msg = $this->alreadyBlocked ? 'ipb-change-block' : 'ipbsubmit';
                $form->setSubmitTextMsg( $msg );
index 5631c3a..107413e 100644 (file)
@@ -485,6 +485,8 @@ class SpecialContributions extends IncludableSpecialPage {
                        $filterSelection = Html::rawElement( 'td', array( 'colspan' => 2 ), '' );
                }
 
+               $this->getOutput()->addModules( 'mediawiki.userSuggest' );
+
                $labelNewbies = Xml::radioLabel(
                        $this->msg( 'sp-contributions-newbies' )->text(),
                        'contribs',
@@ -505,9 +507,15 @@ class SpecialContributions extends IncludableSpecialPage {
                        'target',
                        $this->opts['target'],
                        'text',
-                       array( 'size' => '40', 'required' => '', 'class' => 'mw-input mw-ui-input-inline' ) +
-                               ( $this->opts['target'] ? array() : array( 'autofocus' )
-                               )
+                       array(
+                               'size' => '40',
+                               'required' => '',
+                               'class' => array(
+                                       'mw-input',
+                                       'mw-ui-input-inline',
+                                       'mw-autocomplete-user', // used by mediawiki.userSuggest
+                               ),
+                       ) + ( $this->opts['target'] ? array() : array( 'autofocus' ) )
                );
                $targetSelection = Html::rawElement(
                        'td',
index 68f2c46..e739a86 100644 (file)
@@ -315,7 +315,8 @@ class DeletedContributionsPage extends SpecialPage {
                        return;
                }
 
-               $options['limit'] = $request->getInt( 'limit', $this->getConfig()->get( 'QueryPageDefaultLimit' ) );
+               $options['limit'] = $request->getInt( 'limit',
+                       $this->getConfig()->get( 'QueryPageDefaultLimit' ) );
                $options['target'] = $target;
 
                $userObj = User::newFromName( $target, false );
@@ -533,6 +534,8 @@ class DeletedContributionsPage extends SpecialPage {
                        $f .= "\t" . Html::hidden( $name, $value ) . "\n";
                }
 
+               $this->getOutput()->addModules( 'mediawiki.userSuggest' );
+
                $f .= Xml::openElement( 'fieldset' );
                $f .= Xml::element( 'legend', array(), $this->msg( 'sp-contributions-search' )->text() );
                $f .= Xml::tags(
@@ -546,7 +549,10 @@ class DeletedContributionsPage extends SpecialPage {
                        'text',
                        array(
                                'size' => '20',
-                               'required' => ''
+                               'required' => '',
+                               'class' => array(
+                                       'mw-autocomplete-user', // used by mediawiki.userSuggest
+                               ),
                        ) + ( $options['target'] ? array() : array( 'autofocus' ) )
                ) . ' ';
                $f .= Html::namespaceSelector(
index db83019..bc63e99 100644 (file)
@@ -629,7 +629,10 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
        private function buildRemoveLine( $title ) {
                $link = Linker::link( $title );
 
-               $tools['talk'] = Linker::link( $title->getTalkPage(), $this->msg( 'talkpagelinktext' )->escaped() );
+               $tools['talk'] = Linker::link(
+                       $title->getTalkPage(),
+                       $this->msg( 'talkpagelinktext' )->escaped()
+               );
 
                if ( $title->exists() ) {
                        $tools['history'] = Linker::linkKnown(
index 2a97abc..c68341c 100644 (file)
@@ -203,7 +203,9 @@ class ImageListPager extends TablePager {
                        } else {
                                return false;
                        }
-               } elseif ( $this->getConfig()->get( 'MiserMode' ) && $this->mShowAll /* && mUserName === null */ ) {
+               } elseif ( $this->getConfig()->get( 'MiserMode' )
+                       && $this->mShowAll /* && mUserName === null */
+               ) {
                        // no oi_timestamp index, so only alphabetical sorting in this case.
                        if ( $field === 'img_name' ) {
                                return true;
@@ -519,6 +521,7 @@ class ImageListPager extends TablePager {
                        );
                }
 
+               $this->getOutput()->addModules( 'mediawiki.userSuggest' );
                $fields['user'] = array(
                        'type' => 'text',
                        'name' => 'user',
@@ -527,6 +530,7 @@ class ImageListPager extends TablePager {
                        'default' => $this->mUserName,
                        'size' => '40',
                        'maxlength' => '255',
+                       'cssclass' => 'mw-autocomplete-user', // used by mediawiki.userSuggest
                );
 
                $fields['ilshowall'] = array(
@@ -541,6 +545,7 @@ class ImageListPager extends TablePager {
                unset( $query['title'] );
                unset( $query['limit'] );
                unset( $query['ilsearch'] );
+               unset( $query['ilshowall'] );
                unset( $query['user'] );
 
                $form = new HTMLForm( $fields, $this->getContext() );
index 0b70bb7..5b34297 100644 (file)
@@ -198,6 +198,7 @@ class SpecialNewpages extends IncludableSpecialPage {
        }
 
        protected function form() {
+               $out = $this->getOutput();
                // Consume values
                $this->opts->consumeValue( 'offset' ); // don't carry offset, DWIW
                $namespace = $this->opts->consumeValue( 'namespace' );
@@ -216,72 +217,62 @@ class SpecialNewpages extends IncludableSpecialPage {
                }
                $hidden = implode( "\n", $hidden );
 
-               $tagFilter = ChangeTags::buildTagFilterSelector( $tagFilterVal );
-               if ( $tagFilter ) {
-                       list( $tagFilterLabel, $tagFilterSelector ) = $tagFilter;
-               }
+               $form = array(
+                       'namespace' => array(
+                               'type' => 'namespaceselect',
+                               'name' => 'namespace',
+                               'label-message' => 'namespace',
+                               'default' => $namespace,
+                       ),
+                       'nsinvert' => array(
+                               'type' => 'check',
+                               'name' => 'nsinvert',
+                               'label-message' => 'invert',
+                               'default' => $nsinvert,
+                               'tooltip' => $this->msg( 'tooltip-invert' )->text(),
+                       ),
+                       'tagFilter' => array(
+                               'type' => 'tagfilter',
+                               'name' => 'tagfilter',
+                               'label-raw' => wfMessage( 'tag-filter' )->parse(),
+                               'default' => $tagFilterVal,
+                       ),
+                       'username' => array(
+                               'type' => 'text',
+                               'name' => 'username',
+                               'label-message' => 'newpages-username',
+                               'default' => $userText,
+                               'id' => 'mw-np-username',
+                               'size' => 30,
+                               'cssclass' => 'mw-autocomplete-user', // used by mediawiki.userSuggest
+                       ),
+               );
+
+               $htmlForm = new HTMLForm( $form, $this->getContext() );
+
+               $htmlForm->setSubmitText( $this->msg( 'allpagessubmit' )->text() );
+               $htmlForm->setSubmitProgressive();
+               // The form should be visible on each request (inclusive requests with submitted forms), so
+               // return always false here.
+               $htmlForm->setSubmitCallback(
+                       function() {
+                               return false;
+                       }
+               );
+               $htmlForm->setMethod( 'get' );
+
+               $out->addHtml( Xml::fieldset( $this->msg( 'newpages' )->text() ) );
 
-               $form = Xml::openElement( 'form', array( 'action' => wfScript() ) ) .
-                       Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) .
-                       Xml::fieldset( $this->msg( 'newpages' )->text() ) .
-                       Xml::openElement( 'table', array( 'id' => 'mw-newpages-table' ) ) .
-                       '<tr>
-                               <td class="mw-label">' .
-                       Xml::label( $this->msg( 'namespace' )->text(), 'namespace' ) .
-                       '</td>
-                       <td class="mw-input">' .
-                       Html::namespaceSelector(
-                               array(
-                                       'selected' => $namespace,
-                                       'all' => 'all',
-                               ), array(
-                                       'name' => 'namespace',
-                                       'id' => 'namespace',
-                                       'class' => 'namespaceselector',
-                               )
-                       ) . '&#160;' .
-                       Xml::checkLabel(
-                               $this->msg( 'invert' )->text(),
-                               'invert',
-                               'nsinvert',
-                               $nsinvert,
-                               array( 'title' => $this->msg( 'tooltip-invert' )->text() )
+               $htmlForm->show();
+
+               $out->addHtml(
+                       Html::rawElement(
+                               'div',
+                               null,
+                               $this->filterLinks()
                        ) .
-                       '</td>
-                       </tr>' . ( $tagFilter ? (
-                       '<tr>
-                               <td class="mw-label">' .
-                               $tagFilterLabel .
-                               '</td>
-                               <td class="mw-input">' .
-                               $tagFilterSelector .
-                               '</td>
-                       </tr>' ) : '' ) .
-                       '<tr>
-                               <td class="mw-label">' .
-                                       Xml::label( $this->msg( 'newpages-username' )->text(), 'mw-np-username' ) .
-                                       '</td>
-                               <td class="mw-input">' .
-                                       Xml::input( 'username', 30, $userText, array( 'id' => 'mw-np-username' ) ) .
-                                       '</td>
-                       </tr>' .
-                       '<tr> <td></td>
-                               <td class="mw-submit">' .
-                       Xml::submitButton( $this->msg( 'allpagessubmit' )->text() ) .
-                       '</td>
-               </tr>' .
-                       '<tr>
-                               <td></td>
-                               <td class="mw-input">' .
-                       $this->filterLinks() .
-                       '</td>
-                       </tr>' .
-                       Xml::closeElement( 'table' ) .
-                       Xml::closeElement( 'fieldset' ) .
-                       $hidden .
-                       Xml::closeElement( 'form' );
-
-               $this->getOutput()->addHTML( $form );
+                       Xml::closeElement( 'fieldset' )
+               );
        }
 
        /**
index 552031f..7684c05 100644 (file)
@@ -56,6 +56,71 @@ class SpecialTrackingCategories extends SpecialPage {
                        </tr></thead>"
                );
 
+               $trackingCategories = $this->prepareTrackingCategoriesData();
+
+               $batch = new LinkBatch();
+               foreach ( $trackingCategories as $catMsg => $data ) {
+                       $batch->addObj( $data['msg'] );
+                       foreach ( $data['cats'] as $catTitle ) {
+                               $batch->addObj( $catTitle );
+                       }
+               }
+               $batch->execute();
+
+               foreach ( $trackingCategories as $catMsg => $data ) {
+                       $allMsgs = array();
+                       $catDesc = $catMsg . '-desc';
+
+                       $catMsgTitleText = Linker::link(
+                               $data['msg'],
+                               htmlspecialchars( $catMsg )
+                       );
+
+                       foreach ( $data['cats'] as $catTitle ) {
+                               $catTitleText = Linker::link(
+                                       $catTitle,
+                                       htmlspecialchars( $catTitle->getText() )
+                               );
+                               $allMsgs[] = $catTitleText;
+                       }
+
+                       # Extra message, when no category was found
+                       if ( !count( $allMsgs ) ) {
+                               $allMsgs[] = $this->msg( 'trackingcategories-disabled' )->parse();
+                       }
+
+                       /*
+                        * Show category description if it exists as a system message
+                        * as category-name-desc
+                        */
+                       $descMsg = $this->msg( $catDesc );
+                       if ( $descMsg->isBlank() ) {
+                               $descMsg = $this->msg( 'trackingcategories-nodesc' );
+                       }
+
+                       $this->getOutput()->addHTML(
+                               Html::openElement( 'tr' ) .
+                               Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-name' ) ) .
+                                       $this->getLanguage()->commaList( array_unique( $allMsgs ) ) .
+                               Html::closeElement( 'td' ) .
+                               Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-msg' ) ) .
+                                       $catMsgTitleText .
+                               Html::closeElement( 'td' ) .
+                               Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-desc' ) ) .
+                                       $descMsg->parse() .
+                               Html::closeElement( 'td' ) .
+                               Html::closeElement( 'tr' )
+                       );
+               }
+               $this->getOutput()->addHTML( Html::closeElement( 'table' ) );
+       }
+
+       /**
+        * Read the global and extract title objects from the corresponding messages
+        * @return array Array( 'msg' => Title, 'cats' => Title[] )
+        */
+       private function prepareTrackingCategoriesData() {
+               $trackingCategories = array();
                foreach ( $this->getConfig()->get( 'TrackingCategories' ) as $catMsg ) {
                        /*
                         * Check if the tracking category varies by namespace
@@ -63,16 +128,11 @@ class SpecialTrackingCategories extends SpecialPage {
                         * If it does vary, show pages considering all namespaces
                         */
                        $msgObj = $this->msg( $catMsg )->inContentLanguage();
-                       $allMsgs = array();
-                       $catDesc = $catMsg . '-desc';
+                       $allCats = array();
                        $catMsgTitle = Title::makeTitleSafe( NS_MEDIAWIKI, $catMsg );
                        if ( !$catMsgTitle ) {
                                continue;
                        }
-                       $catMsgTitleText = Linker::link(
-                               $catMsgTitle,
-                               htmlspecialchars( $catMsg )
-                       );
 
                        // Match things like {{NAMESPACE}} and {{NAMESPACENUMBER}}.
                        // False positives are ok, this is just an efficiency shortcut
@@ -88,11 +148,7 @@ class SpecialTrackingCategories extends SpecialPage {
                                        if ( $catName !== '-' ) {
                                                $catTitle = Title::makeTitleSafe( NS_CATEGORY, $catName );
                                                if ( $catTitle ) {
-                                                       $catTitleText = Linker::link(
-                                                               $catTitle,
-                                                               htmlspecialchars( $catName )
-                                                       );
-                                                       $allMsgs[] = $catTitleText;
+                                                       $allCats[] = $catTitle;
                                                }
                                        }
                                }
@@ -102,44 +158,17 @@ class SpecialTrackingCategories extends SpecialPage {
                                if ( $catName !== '-' ) {
                                        $catTitle = Title::makeTitleSafe( NS_CATEGORY, $catName );
                                        if ( $catTitle ) {
-                                               $catTitleText = Linker::link(
-                                                       $catTitle,
-                                                       htmlspecialchars( $catName )
-                                               );
-                                               $allMsgs[] = $catTitleText;
+                                               $allCats[] = $catTitle;
                                        }
                                }
                        }
-
-                       # Extra message, when no category was found
-                       if ( !count( $allMsgs ) ) {
-                               $allMsgs[] = $this->msg( 'trackingcategories-disabled' )->parse();
-                       }
-
-                       /*
-                        * Show category description if it exists as a system message
-                        * as category-name-desc
-                        */
-                       $descMsg = $this->msg( $catDesc );
-                       if ( $descMsg->isBlank() ) {
-                               $descMsg = $this->msg( 'trackingcategories-nodesc' );
-                       }
-
-                       $this->getOutput()->addHTML(
-                               Html::openElement( 'tr' ) .
-                               Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-name' ) ) .
-                                       $this->getLanguage()->commaList( array_unique( $allMsgs ) ) .
-                               Html::closeElement( 'td' ) .
-                               Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-msg' ) ) .
-                                       $catMsgTitleText .
-                               Html::closeElement( 'td' ) .
-                               Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-desc' ) ) .
-                                       $descMsg->parse() .
-                               Html::closeElement( 'td' ) .
-                               Html::closeElement( 'tr' )
+                       $trackingCategories[$catMsg] = array(
+                               'cats' => $allCats,
+                               'msg' => $catMsgTitle,
                        );
                }
-               $this->getOutput()->addHTML( Html::closeElement( 'table' ) );
+
+               return $trackingCategories;
        }
 
        protected function getGroupName() {
index c3e871b..a1f48e9 100644 (file)
@@ -1628,7 +1628,9 @@ class SpecialUndelete extends SpecialPage {
        }
 
        function undelete() {
-               if ( $this->getConfig()->get( 'UploadMaintenance' ) && $this->mTargetObj->getNamespace() == NS_FILE ) {
+               if ( $this->getConfig()->get( 'UploadMaintenance' )
+                       && $this->mTargetObj->getNamespace() == NS_FILE
+               ) {
                        throw new ErrorPageError( 'undelete-error', 'filedelete-maintenance' );
                }
 
index 7becfaa..421840f 100644 (file)
@@ -288,7 +288,9 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                );
        }
 
-       protected function runMainQueryHook( &$tables, &$fields, &$conds, &$query_options, &$join_conds, $opts ) {
+       protected function runMainQueryHook( &$tables, &$fields, &$conds, &$query_options,
+               &$join_conds, $opts
+       ) {
                return parent::runMainQueryHook( $tables, $fields, $conds, $query_options, $join_conds, $opts )
                        && wfRunHooks(
                                'SpecialWatchlistQuery',
@@ -367,7 +369,9 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                                $updated = false;
                        }
 
-                       if ( $this->getConfig()->get( 'RCShowWatchingUsers' ) && $user->getOption( 'shownumberswatching' ) ) {
+                       if ( $this->getConfig()->get( 'RCShowWatchingUsers' )
+                               && $user->getOption( 'shownumberswatching' )
+                       ) {
                                $rc->numberofWatchingusers = $dbr->selectField( 'watchlist',
                                        'COUNT(*)',
                                        array(
@@ -503,7 +507,9 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                        $form .= $this->msg( 'nowatchlist' )->parse() . "\n";
                } else {
                        $form .= $this->msg( 'watchlist-details' )->numParams( $numItems )->parse() . "\n";
-                       if ( $this->getConfig()->get( 'EnotifWatchlist' ) && $user->getOption( 'enotifwatchlistpages' ) ) {
+                       if ( $this->getConfig()->get( 'EnotifWatchlist' )
+                               && $user->getOption( 'enotifwatchlistpages' )
+                       ) {
                                $form .= $this->msg( 'wlheader-enotif' )->parse() . "\n";
                        }
                        if ( $showUpdatedMarker ) {
index 7dc6da1..e373cff 100644 (file)
@@ -431,9 +431,9 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
 
                $f .= Xml::fieldset( $this->msg( 'whatlinkshere' )->text() );
 
-               # Target input
+               # Target input (.mw-searchInput enables suggestions)
                $f .= Xml::inputLabel( $this->msg( 'whatlinkshere-page' )->text(), 'target',
-                       'mw-whatlinkshere-target', 40, $target );
+                       'mw-whatlinkshere-target', 40, $target, array( 'class' => 'mw-searchInput' ) );
 
                $f .= ' ';
 
index d435615..4eea01c 100644 (file)
@@ -258,6 +258,7 @@ class UsercreateTemplate extends BaseTemplate {
                                        $this->getMsg( $this->data['loggedin'] ? 'createacct-another-submit' : 'createacct-submit' ),
                                        $attrs = array(
                                                'id' => 'wpCreateaccount',
+                                               'name' => 'wpCreateaccount',
                                                'tabindex' => $tabIndex++
                                        ),
                                        array(
index 99fe218..2a9badf 100644 (file)
@@ -150,6 +150,7 @@ class UserloginTemplate extends BaseTemplate {
                                <?php
                                $attrs = array(
                                        'id' => 'wpLoginAttempt',
+                                       'name' => 'wpLoginAttempt',
                                        'tabindex' => '6',
                                );
                                $modifiers = array(
index ad149ad..24c83a9 100644 (file)
@@ -85,6 +85,7 @@
        'br' => 'brezhoneg',    # Breton
        'brh' => 'Bráhuí',    # Brahui
        'bs' => 'bosanski',             # Bosnian
+       'bto' => 'Iriga Bicolano',      # Rinconada Bikol
        'bug' => 'ᨅᨔ ᨕᨘᨁᨗ', # Buginese
        'bxr' => 'буряад',        # Buryat (Russia)
        'ca' => 'català',      # Catalan
        'sdc' => 'Sassaresu',   # Sassarese
        'se' => 'sámegiella',  # Northern Sami
        'sei' => 'Cmique Itom', # Seri
+       'ses' => 'Koyraboro Senni',     # Koyraboro Senni
        'sg' => 'Sängö',              # Sango/Sangho
        'sgs' => 'žemaitėška', # Samogitian
        'sh' => 'srpskohrvatski / српскохрватски', # Serbocroatian
index 4e86dcc..8a3c5a3 100644 (file)
        "searchall": "الكل",
        "showingresults": "معروض بالأسفل {{PLURAL:$1|'''1''' نتيجة|'''$1''' نتيجة}} بدءا من رقم '''$2'''.",
        "showingresultsinrange": "بالأسفل {{PLURAL:$1|نتيجة واحدة|<strong>$1</strong> نتائج|<strong>$1</strong> نتيجة}} في النطاق من <strong>$2</strong> إلى <strong>$3</strong>.",
+       "search-showingresults": "{{PLURAL:$4|النتائج <strong>$1</strong> من <strong>$3</strong>|النتائج <strong>$1 - $2</strong> من أصل <strong>$3</strong>}}",
        "search-nonefound": "لا توجد نتائج تطابق الاستعلام.",
        "powersearch-legend": "بحث متقدم",
        "powersearch-ns": "بحث في النطاقات:",
        "wlheader-enotif": "الإخطار بالبريد الإلكتروني مُفعّل.",
        "wlheader-showupdated": "الصفحات التي تم تحريرها بعد مطالعتك إياها آخر مرة عناوينها بالخط '''الغليظ'''",
        "wlnote": "بالأسفل {{PLURAL:$1|لا توجد تغييرات|التغيير الأخير|آخر تغييرين|آخر '''$1''' تغييرات|آخر '''$1''' تغييرا|آخر '''$1''' تغيير}} في {{PLURAL:$2||'''الساعة''' الماضية|'''الساعتين''' الماضيتين|ال'''$2''' ساعات الماضية|ال'''$2''' ساعة الماضية}} وفقاً ل$3، $4.",
-       "wlshowlast": "عرض آخر $1 ساعات $2 أيام",
+       "wlshowlast": "عرض آخر $1 ساعات $2 يوما",
        "watchlist-options": "خيارات قائمة المراقبة",
        "watching": "يراقب...",
        "unwatching": "إزالة المراقبة...",
        "isimage": "وصلة ملف",
        "whatlinkshere-prev": "{{PLURAL:$1|السابق|ال$1 السابقة}}",
        "whatlinkshere-next": "{{PLURAL:$1|القادمة|ال$1 القادمة}}",
-       "whatlinkshere-links": "← وصلات",
+       "whatlinkshere-links": "وصلات",
        "whatlinkshere-hideredirs": "$1 التحويلات",
        "whatlinkshere-hidetrans": "$1 التضمينات",
        "whatlinkshere-hidelinks": "$1 الوصلات",
index ce2c3c2..a7dea89 100644 (file)
        "otherlanguages": "N'otres llingües",
        "redirectedfrom": "(Redirixío dende $1)",
        "redirectpagesub": "Páxina de redireición",
+       "redirectto": "Redirixe a:",
        "lastmodifiedat": "L'últimu cambiu d'esta páxina foi el $1, a les $2.",
        "viewcount": "Esta páxina visitóse {{PLURAL:$1|una vegada|$1 vegaes}}.",
        "protectedpage": "Páxina protexida",
        "createaccount-text": "Daquién creó una cuenta cola to direición de corréu electrónicu en {{SITENAME}} ($4) col nome «$2», y cola contraseña «$3».\nAgora tendríes d'aniciar sesión y camudar la contraseña.\n\nPues escaecer esti mensaxe si esta cuenta creóse por error.",
        "login-throttled": "Ficisti demasiaos intentos d'aniciu de sesión recientes.\nPor favor espera $1 enantes d'intentalo otra vuelta.",
        "login-abort-generic": "Falló la identificación - Encaboxao",
+       "login-migrated-generic": "La to cuenta migróse ya'l to nome d'usuariu yá nun esiste nesta wiki.",
        "loginlanguagelabel": "Llingua: $1",
        "suspicious-userlogout": "La to solicitú de zarrar sesión refugose porque paez qu'unvióla un restolador frañíu o un proxy de caché.",
        "createacct-another-realname-tip": "El nome real ye opcional.\nSi decide conseñalu, va usase p'atribuir el trabayu al usuariu.",
        "showpreview": "Amosar previsualización",
        "showdiff": "Amosar cambeos",
        "blankarticle": "<strong>Atención:</strong> La páxina que tas a piques de crear ta balera.\nSi vuelves a facer click en «{{int:savearticle}}», crearáse la páxina ensin conteníu dengún.",
-       "anoneditwarning": "<strong>Avisu:</strong> Nun anició sesión.\nLa direición IP quedará grabada nel historial d'edición d'esta páxina.",
+       "anoneditwarning": "<strong>Avisu:</strong> Nun aniciasti sesión. La direición IP sedrá visible en público si faes dalguna edición. Si <strong>[$1 anicies sesión]</strong> o <strong>[$2 crees una cuenta]</strong>, les ediciones atribuiránse al to nome d'usuariu, xunto con otros beneficios.",
        "anonpreviewwarning": "''Nun aniciasti sesión. Al guardar quedará rexistrada la to direición IP nel historial d'edición d'esta páxina.''",
        "missingsummary": "'''Recordatoriu:''' Nun conseñasti un resume d'edición.\nSi calques nuevamente \"{{int:savearticle}}\", la to edición guardaráse ensin nengún resume.",
        "missingcommenttext": "Por favor, escribi un comentariu abaxo.",
        "searchall": "toos",
        "showingresults": "Abaxo {{PLURAL:$1|amuésase '''un''' resultáu|amuésense '''$1''' resultaos}}, entamando col #'''$2'''.",
        "showingresultsinrange": "Más abaxo s'{{PLURAL:$1|amuesa|amuesen}} fasta {{PLURAL:$1|<strong>1</strong> resultáu|<strong>$1</strong> resultaos}} nel rangu ente #<strong>$2</strong> y #<strong>$3</strong>.",
+       "search-showingresults": "{{PLURAL:$4|Resultáu <strong>$1</strong> de <strong>$3</strong>|Resultaos <strong>$1 - $2</strong> de <strong>$3</strong>}}",
        "search-nonefound": "Nun hebo resultaos que casaren cola consulta.",
        "powersearch-legend": "Busca avanzada",
        "powersearch-ns": "Buscar nos espacios de nome:",
        "prefs-tokenwatchlist": "Pase",
        "prefs-diffs": "Diferencies",
        "prefs-help-prefershttps": "Esta preferencia aplicaráse nel siguiente aniciu de sesión.",
+       "prefswarning-warning": "Ficisti cambios nes tos preferencies qu'inda nun se guardaron.\nSi abandones esta páxina ensin calcar \"$1\" les preferencies nun s'anovarán.",
        "prefs-tabs-navigation-hint": "Gabitu: pue usar les tecles de flecha izquierda y drecha pa navegar peles llingüetes de la llista.",
        "email-address-validity-valid": "La direición de corréu paez válida",
        "email-address-validity-invalid": "Escribi una direición de corréu válida",
        "querypage-disabled": "Esta páxina especial ta desactivada por razones de rindimientu.",
        "booksources": "Fontes de llibros",
        "booksources-search-legend": "Busca de fontes de llibros",
+       "booksources-search": "Buscar",
        "booksources-text": "Esta ye una llista d'enllaces a otros sitios que vienden llibros nuevos y usaos, y que puen tener más información sobre los llibros que ta buscando:",
        "booksources-invalid-isbn": "El códigu ISBN que puxisti nun paez que valga; mira que te vien copiáu de la fonte orixinal.",
        "specialloguserlabel": "Fecho por:",
        "wlheader-enotif": "La notificación per corréu electrónicu ta activada.",
        "wlheader-showupdated": "Les páxines que camudaron dende que les visitasti anteriormente amuesense en '''negrina'''",
        "wlnote": "Abaxo {{PLURAL:$1|tá'l caberu cambiu|tan los caberos <strong>$1</strong> cambios}} {{PLURAL:$2|na cabera hora|nes caberes <strong>$2</strong> hores}}, a día $3, a les $4.",
-       "wlshowlast": "Amosar les últimes $1 hores $2 díes",
+       "wlshowlast": "Amosar les últimes $1 hores, los últimos $2 díes",
        "watchlist-options": "Opciones de la llista de siguimientu",
        "watching": "Vixilando...",
        "unwatching": "Dexando de vixilar...",
        "protect-othertime": "Otru periodu:",
        "protect-othertime-op": "otru periodu",
        "protect-existing-expiry": "Caducidá actual: $2, $3",
+       "protect-existing-expiry-infinity": "Tiempu de caducidá esistente: infinitu",
        "protect-otherreason": "Motivu distintu/adicional:",
        "protect-otherreason-op": "Otru motivu",
        "protect-dropdown": "*Motivos comunes de proteición\n** Vandalismu escomanáu\n** Spamming escesivu\n** Guerra d'ediciones contraproducente\n** Páxina de tráficu altu",
        "unblocked": "[[User:$1|$1]] desbloquióse.",
        "unblocked-range": "$1 se desbloquió",
        "unblocked-id": "Desaniciose'l bloquéu $1.",
+       "unblocked-ip": "Desbloquióse a [[Special:Contributions/$1|$1]].",
        "blocklist": "Usuarios bloquiaos",
        "ipblocklist": "Usuarios bloquiaos",
        "ipblocklist-legend": "Atopar un usuariu bloquiáu",
        "log-name-pagelang": "Rexistru de cambios de llingua",
        "log-description-pagelang": "Esti ye un rexistru de los cambios de llingua de les páxines.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambió}} la llingua de la páxina $3 del $4 al $5.",
-       "default-skin-not-found": "¡Coime! L'aspeutu predetermináu pa la to wiki (<code>$wgDefaultSkin</code>), <code>$1</code> nun ta disponible.\n\nLa to instalación paez qu'incluye los siguientes aspeutos. Llei [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pa más información sobro cómo activalos y escoyer el predetermináu.\n\n$2\n\n; Si acabes d'instalar MediaWiki:\n: Probablemente instalasti dende git, o'l códigu fonte direutamente usando algún otru métodu. Esto ye d'esperar. Intenta instalar dellos aspeutos dende'l [https://www.mediawiki.org/wiki/Category:All_skins direutoriu d'aspeutos de mediawiki.org's], asina:\n:* Descargando [https://www.mediawiki.org/wiki/Download l'instalador tarball], que vien con dellos aspeutos y estensiones. Pues copiar y apegar el direutoriu <code>skins/</code> d'ehí.\n:* Clonando unu de los direutorios <code>mediawiki/skins/*</code> via git nel direutoriu <code>skins/</code> de la to instalación de MediaWiki.\n: Facer esto nun tendría d'interferir col to repositoriu git si yes un desendolcador de MediaWiki.\n\n; Si acabes d'anovar MediaWiki:\n: MediaWiki 1.24 y más nuevu yá nun activa automáticamente los aspeutos instalaos (llei [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Pues apegar les llinies siguientes en <code>LocalSettings.php</code> p'activar tolos aspeutos instalaos actualmente:\n\n<pre>$3</pre>\n\n; Si acabes d'editar <code>LocalSettings.php</code>:\n: Vuelvi a comprobar los nomes de los aspeutos por si hai errores d'escritura.",
-       "default-skin-not-found-no-skins": "¡Coime! L'aspeutu predetermináu pa la to wiki (<code>$wgDefaultSkin</code>), <code>$1</code> nun ta disponible.\n\nNun tienes aspeutos instalaos.\n\n; Si acabes d'instalar MediaWiki:\n: Probablemente instalasti dende git, o'l códigu fonte direutamente usando algún otru métodu. Esto ye d'esperar. MediaWiki 1.24 y más nuevu nun incluye nengún aspeutu nel repositoriu principal. Intenta instalar dellos aspeutos dende'l [https://www.mediawiki.org/wiki/Category:All_skins direutoriu d'aspeutos de mediawiki.org], asina:\n:* Descargando [https://www.mediawiki.org/wiki/Download l'instalador tarball], que vien con dellos aspeutos y estensiones. Pues copiar y apegar el direutoriu <code>skins/</code> d'ehí.\n:* Clonando unu de los direutorios <code>mediawiki/skins/*</code> via git nel direutoriu <code>skins/</code> de la to instalación de MediaWiki.\n: Facer esto nun tendría d'interferir col to repositoriu git si yes un desendolcador de MediaWiki. Llei [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pa más información sobro cómo activar los aspeutos y escoyer el predetermináu.",
+       "default-skin-not-found": "L'aspeutu predetermináu pa la to wiki, definíu en <code dir=\"ltr\">$wgDefaultSkin</code> como <code>$1</code> nun ta disponible.\n\nLa to instalación paez qu'incluye los siguientes aspeutos. Llei [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pa más información sobro cómo activalos y escoyer el predetermináu.\n\n$2\n\n; Si acabes d'instalar MediaWiki:\n: Probablemente instalasti dende git, o'l códigu fonte direutamente usando algún otru métodu. Esto ye d'esperar. Intenta instalar dellos aspeutos dende'l [https://www.mediawiki.org/wiki/Category:All_skins direutoriu d'aspeutos de mediawiki.org's], asina:\n:* Descargando [https://www.mediawiki.org/wiki/Download l'instalador tarball], que vien con dellos aspeutos y estensiones. Pues copiar y apegar el direutoriu <code>skins/</code> d'ehí.\n:* Clonando unu de los direutorios <code>mediawiki/skins/*</code> via git nel direutoriu <code dir=\"ltr\">skins/</code> de la to instalación de MediaWiki.\n: Facer esto nun tendría d'interferir col to repositoriu git si yes un desendolcador de MediaWiki.\n\n; Si acabes d'anovar MediaWiki:\n: MediaWiki 1.24 y más nuevu yá nun activa automáticamente los aspeutos instalaos (llei [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Pues apegar les llinies siguientes en <code>LocalSettings.php</code> p'activar tolos aspeutos instalaos actualmente:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Si acabes d'editar <code>LocalSettings.php</code>:\n: Vuelvi a comprobar los nomes de los aspeutos por si hai errores d'escritura.",
+       "default-skin-not-found-no-skins": "L'aspeutu predetermináu pa la to wiki, definíu en <code>$wgDefaultSkin</code> como <code>$1</code> nun ta disponible.\n\nNun tienes aspeutos instalaos.\n\n; Si acabes d'instalar MediaWiki:\n: Probablemente instalasti dende git, o'l códigu fonte direutamente usando algún otru métodu. Esto ye d'esperar. MediaWiki 1.24 y más nuevu nun incluye nengún aspeutu nel repositoriu principal. Intenta instalar dellos aspeutos dende'l [https://www.mediawiki.org/wiki/Category:All_skins direutoriu d'aspeutos de mediawiki.org], asina:\n:* Descargando [https://www.mediawiki.org/wiki/Download l'instalador tarball], que vien con dellos aspeutos y estensiones. Pues copiar y apegar el direutoriu <code>skins/</code> d'ehí.\n:* Clonando unu de los direutorios <code>mediawiki/skins/*</code> via git nel direutoriu <code dir=\"ltr\">skins/</code> de la to instalación de MediaWiki.\n: Facer esto nun tendría d'interferir col to repositoriu git si yes un desendolcador de MediaWiki. Llei [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pa más información sobro cómo activar los aspeutos y escoyer el predetermináu.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activáu)",
-       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''desactiváu''')"
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''desactiváu''')",
+       "mediastatistics": "Estadístiques de multimedia",
+       "mediastatistics-summary": "Estadístiques sobro los tipos de ficheros xubíos. Esto sólo incluye la versión más nueva d'un ficheru. Escluyense les versiones antigües o desaniciaes de los ficheros.",
+       "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte|$1 bytes}} ($2; $3%)",
+       "mediastatistics-table-mimetype": "Tipu MIME",
+       "mediastatistics-table-extensions": "Estensiones posibles",
+       "mediastatistics-table-count": "Númberu de ficheros",
+       "mediastatistics-table-totalbytes": "Tamañu combináu",
+       "mediastatistics-header-unknown": "Desconocíu",
+       "mediastatistics-header-bitmap": "Imaxes de mapa de bits",
+       "mediastatistics-header-drawing": "Dibuxos (imaxes vectoriales)",
+       "mediastatistics-header-audio": "Soníu",
+       "mediastatistics-header-video": "Videos",
+       "mediastatistics-header-multimedia": "Multimedia enriquecida",
+       "mediastatistics-header-office": "Oficina",
+       "mediastatistics-header-text": "Testual",
+       "mediastatistics-header-executable": "Executables",
+       "mediastatistics-header-archive": "Formatos comprimíos",
+       "json-warn-trailing-comma": "$1 {{PLURAL:$1|coma al final desanicióse|comes al final desaniciáronse}} de JSON",
+       "json-error-unknown": "Hebo un problema col JSON. Error: $1",
+       "json-error-depth": "Pasóse de la fondura máxima de la pila",
+       "json-error-state-mismatch": "JSON inválidu o incorreutu",
+       "json-error-ctrl-char": "Error de caráuter de control, seique codificáu incorreutamente",
+       "json-error-syntax": "Error de sintaxis",
+       "json-error-utf8": "Carauteres UTF-8 con errores de formatu, seique codificaos incorreutamente",
+       "json-error-recursion": "Una o más referencies recursives nel valor a codificar",
+       "json-error-inf-or-nan": "Unu o más valores NAN (númberu nun conseñáu) o INF (infinitu) nel valor a codificar",
+       "json-error-unsupported-type": "Diose un valor d'un tipu que nun pue codificase"
 }
index 3d2573b..4b3b1b5 100644 (file)
@@ -27,6 +27,7 @@
        "tog-watchdefault": "منی اصلاح کتگین فایل و پیجانء چارگ لیستء توکا هوار کن",
        "tog-watchmoves": "منی سُرینتگین فایل و پیجانء چارگ لیستء توکا هوار کن",
        "tog-watchdeletion": "منی حذف کتگین فایل و پیجانء چارگ لیستء توکا هوار بکن",
+       "tog-watchrollback": "آ دیمانی آڈ کورتین که آوانا برگردان کورته اون په منی پیگیری لیستی هاتیرا",
        "tog-minordefault": "په طور پیش فرض کل اصلاحات آ په داب جزی مشخص کن",
        "tog-previewontop": "بازبین پیش دار پیش چه جعبه اصلاح",
        "tog-previewonfirst": "ته اولین اصلاح بازبینی پیش دار",
        "editfont-monospace": "فۆنت گۆن مالومێن پاسلگ",
        "editfont-sansserif": "بئ گۆشگێن فۆنت",
        "editfont-serif": "گۆشه دارێن فۆنت",
-       "sunday": "Û\8cÚ© Ø´Ù\86بÙ\87",
-       "monday": "دÙ\88Ø´Ù\86بÙ\87",
-       "tuesday": "سی شنبه",
-       "wednesday": "Ú\86ارشÙ\86بÙ\87",
-       "thursday": "Ù¾Ù\86Ú\86 Ø´Ù\86بÙ\87",
-       "friday": "آدینگ",
-       "saturday": "Ø´Ù\86بÙ\87",
-       "sun": "ی.شنبه",
-       "mon": "د.شنبه",
-       "tue": "س.شنبه",
-       "wed": "چ.شنبه",
-       "thu": "پ.شنبه",
-       "fri": "آدینگ",
-       "sat": "Ø´Ù\86بÙ\87",
-       "january": "ژانویه",
-       "february": "Ù\81Ù\88رÛ\8cÙ\87",
-       "march": "مارس",
+       "sunday": "Û\8cÚ© Ø´Ù\85بÛ\8c",
+       "monday": "دÙ\88Ø´Ù\85بÛ\8c",
+       "tuesday": "سئه شمبی",
+       "wednesday": "Ú\86ارشÙ\85بÛ\8c",
+       "thursday": "Ù¾Ù\86Ú\86 Ø´Ù\85بÛ\8c",
+       "friday": "آدینگ ٬جوما",
+       "saturday": "Ø´Ù\85بÛ\8c",
+       "sun": "یک شمی",
+       "mon": "دو شمبی",
+       "tue": "سئه شمبی",
+       "wed": "چار شمبی",
+       "thu": "پنچ شمبی",
+       "fri": "آدینگ٬ جوما",
+       "sat": "Ø´Ù\85بÛ\8c",
+       "january": "جنوری",
+       "february": "Ù¾Û\8cبرÙ\88رÛ\8c",
+       "march": "مارچ",
        "april": "آپریل",
        "may_long": "می",
        "june": "جون",
        "july": "جولای",
        "august": "آگوست",
-       "september": "سپتامبر",
-       "october": "اکتبر",
-       "november": "نومبر",
+       "september": "سپٹامبر",
+       "october": "اکتوبر",
+       "november": "نوامبر",
        "december": "دسمبر",
-       "january-gen": "ژانویه",
-       "february-gen": "Ù\81Ù\88رÛ\8cÙ\87",
-       "march-gen": "مارس",
+       "january-gen": "جنوری",
+       "february-gen": "Ù¾Û\8cبرÙ\88رÛ\8c",
+       "march-gen": "مارچ",
        "april-gen": "آپریل",
        "may-gen": "می",
        "june-gen": "جون",
        "july-gen": "جولای",
        "august-gen": "آگوست",
-       "september-gen": "سپتمبر",
-       "october-gen": "اکتبر",
-       "november-gen": "نومبر",
+       "september-gen": "سپٹامبر",
+       "october-gen": "اکتوبر",
+       "november-gen": "نوامبر",
        "december-gen": "دسمبر",
-       "jan": "جن",
-       "feb": "Ù\81ب",
-       "mar": "ما",
-       "apr": "آپر",
+       "jan": "جنوری",
+       "feb": "Ù¾Û\8cبرÙ\88رÛ\8c",
+       "mar": "مارچ",
+       "apr": "آپریل",
        "may": "می",
        "jun": "جون",
-       "jul": "جول",
-       "aug": "آگ",
-       "sep": "سپت",
-       "oct": "اکت",
-       "nov": "نو",
-       "dec": "دس",
-       "january-date": "جانری، بهارگاه $1",
-       "february-date": "Ù\81براری، اۆستپان $1",
+       "jul": "جولای",
+       "aug": "آگوست",
+       "sep": "سپٹ\tامبر",
+       "oct": "اکتوبر",
+       "nov": "نوامبر",
+       "dec": "دسمبر",
+       "january-date": "جنوری، بهارگاه $1",
+       "february-date": "Ù¾Û\8cبرÙ\88ری، اۆستپان $1",
        "march-date": "مارچ، مۆلمان $1",
        "april-date": "اپریل، کرا $1",
        "may-date": "مئ، سۆچکان $1",
        "june-date": "جون، جلکان $1",
-       "july-date": "جÙ\88Ù\84ئ، سهێل $1",
+       "july-date": "جÙ\88Ù\84اÛ\8c، سهێل $1",
        "august-date": "اگست، ساچان $1",
-       "september-date": "سپتمبر، تۆمشان $1",
+       "september-date": "سپٹامبر، تۆمشان $1",
        "october-date": "اکتۆبر، سارتان $1",
-       "november-date": "نومبر، گۆپشان $1",
+       "november-date": "نوامبر، گۆپشان $1",
        "december-date": "دسمبر، تاکشان $1",
        "pagecategories": "{{PLURAL:$1|دسته|دسته جات}}",
        "category_header": "صفحات ته دسته \"$1\"",
        "cancel": "کنسل",
        "moredotdotdot": "گیشتر...",
        "morenotlisted": "ائ لیست پکا نه انت",
-       "mypage": "تاک",
+       "mypage": "دÛ\8cÙ\85 Û\8cا ØªØ§Ú©",
        "mytalk": "گپ",
        "anontalk": "گپ کن گون ای آی پی",
        "navigation": "گردگ",
        "and": "&#32;و",
-       "qbfind": "درگیزگ",
+       "qbfind": "ودی کورتین",
        "qbbrowse": "بروز",
-       "qbedit": "اصلاح",
-       "qbpageoptions": "صÙ\81Ø­Ù\87",
-       "qbmyoptions": "Ù\85Ù\86Û\8c ØµÙ\81حات",
+       "qbedit": "ایڈیٹ",
+       "qbpageoptions": "اÛ\8c Ø¯Û\8cÙ\85",
+       "qbmyoptions": "Ù\85Ù\86Û\8c Ø¯Û\8cÙ\85اÙ\86",
        "faq": "ب.ج.س",
        "faqpage": "Project:ب.ج.س",
        "actions": "کاران",
        "help": "کمک",
        "search": "گردگ",
        "searchbutton": "گردگ",
-       "go": "برو",
-       "searcharticle": "برو",
-       "history": "تارÛ\8cØ­ ØµÙ\81Ø­Ù\87",
+       "go": "برا",
+       "searcharticle": "برا",
+       "history": "دÛ\8cÙ\85Û\8c ØªØ§Ø±Û\8cØ®",
        "history_short": "تاریح",
        "updatedmarker": "په روچ بیتگین چه منی اهری  اهری  چارگ",
        "printableversion": "نسخه چهاپی",
        "permalink": "دایمی لینک",
        "print": "چهاپ",
-       "view": "چارگ",
-       "view-foreign": "بÚ\86ار Ù\85اÙ\86 $1",
-       "edit": "اصلاح",
-       "edit-local": "لوکال دسکریپشنء اصلاح کن",
-       "create": "شرکتن",
-       "create-local": "لوکال دسکریپشنء هوار کن",
-       "editthispage": "اÛ\8c ØµÙ\81Ø­Ù\87 Ø§ØµÙ\84اح Ú©ن",
-       "create-this-page": "اÛ\8c ØµÙ\81Ø­Ù\87 Ø´Ø±Ú©ØªÙ\86 Ú©ن",
-       "delete": "حذف",
-       "deletethispage": "اÛ\8c ØµÙ\81Ø­Ù\87 Ø­Ø°Ù\81 Ú©ن",
-       "undeletethispage": "ائ تاکء دلیت مکن",
-       "undelete_short": "حذف مکن {{PLURAL:$1|one edit|$1 edits}}",
-       "viewdeleted_short": "چارگ {{باز،زیاتیگ:$1|یکین حذف بوتگین اصلاح|$1 اصلاح کتگانء حذف بکن}}",
-       "protect": "Ø­Ù\81اظت",
-       "protect_change": "عÙ\88ض Ú©ن",
-       "protectthispage": "اÛ\8c ØµÙ\81Ø­Ù\87 Ø­Ù\81اظت Ú©Ù\86",
+       "view": "دیستین",
+       "view-foreign": "بگÛ\8cÙ\86د Ø¨Û\8c $1",
+       "edit": "ایڈیٹ",
+       "edit-local": "لوکال دسکریپشنء ایڈیٹ کورتین",
+       "create": "جÙ\88Ú\91 Ú©Ù\88رتÛ\8cن",
+       "create-local": "لوکال دسکریپشنء اڈ کورتین",
+       "editthispage": "اÛ\8c Ø¯Û\8cÙ\85ا Ø§Û\8cÚ\88Û\8cÙ¹ Ú©Ù\88رتÛ\8cن",
+       "create-this-page": "اÛ\8c Ø¯Û\8cÙ\85Û\8c Ø¬Ù\88Ú\91 Ú©Ù\88رتÛ\8cن",
+       "delete": "پاک کورتین",
+       "deletethispage": "اÛ\8c Ø¯Û\8cÙ\85Û\8c Ù¾Ø§Ú© Ú©Ù\88رتÛ\8cن",
+       "undeletethispage": "ای دیما پاک مکن",
+       "undelete_short": "پاک مکن {{PLURAL:$1|one edit|$1 edits}}",
+       "viewdeleted_short": "نمایش داتین {{PLURAL:$1|یک پاک بوتینوکین ای\tڈیٹی |$1 پاک بوتینوکین ای\tڈیٹ}}",
+       "protect": "ساتÛ\8cتÛ\8cÙ\86",
+       "protect_change": "بدÙ\84 Ú©Ù\88رتÛ\8cن",
+       "protectthispage": "اÛ\8c Ø¯Û\8cÙ\85ا Ø¨Ø³Ø§Øª",
        "unprotect": "پروتکشنء ٹگل بدئ",
        "unprotectthispage": "ائ تاکء پروتکشنء ٹگل بدئ",
-       "newpage": "Ù\86Ù\88Ú©Û\8cÙ\86 ØµÙ\81Ø­Ù\87",
-       "talkpage": "اÛ\8c ØµÙ\81Ø­Ù\87 بحث کن",
+       "newpage": "Ù\86Ù\88Ú©Û\8cÙ\86 Ø¯Û\8cÙ\85",
+       "talkpage": "اÛ\8c Ø¯Û\8cÙ\85ا بحث کن",
        "talkpagelinktext": "گپ کن",
-       "specialpage": "حاصین صفحه",
+       "specialpage": "هاسین دیم",
        "personaltools": "شخصی وسایل",
        "articlepage": "محتوا صفحه به گند",
        "talk": "بحث",
        "toolbox": "ابزار",
        "userpage": "به گند صفحه کاربر",
        "projectpage": "به گند صفحه",
-       "imagepage": "به چار فایل صفحه ءَ",
-       "mediawikipage": "به گند صفحه کوله",
-       "templatepage": "به گند صفحه تمپلت آ",
-       "viewhelppage": "به گند صفحه کمک آ",
-       "categorypage": "به گند صفحه دسته آ",
+       "imagepage": "بگیند پایلی دیما",
+       "mediawikipage": "بگیند پیامی دیما",
+       "templatepage": "بگیند تیملیتی دیما",
+       "viewhelppage": "بگیند کومکی دیما",
+       "categorypage": "بگیند کتیگوریی دیما",
        "viewtalkpage": "به گند بحث آ",
-       "otherlanguages": "تÙ\87 Ø¯Ú¯Ø± Ø²Ø¨Ø§Ù\86",
+       "otherlanguages": "بÛ\8c Ø¯Ú¯Ù\87 Ø²Ø¨Ø§Ù\86اÙ\86Û\8c ØªØ§",
        "redirectedfrom": "(غیر مستقیم بوتگ چه $1)",
        "redirectpagesub": "صفحه غیر مستقیم",
+       "redirectto": "مسیری ٹگل داتین بی:",
        "lastmodifiedat": "  $2, $1.ای صفحه اهری تغییر دهگ بیته",
        "viewcount": "ای صفحه دسترسی بیتگ {{PLURAL:$1|بار|$1رند}}.",
        "protectedpage": "صفحه محافظتی",
        "disclaimers": "بی میاری گیان",
        "disclaimerpage": "Project:عمومی بی میاریگان",
        "edithelp": "کمک اصلاح",
-       "mainpage": "صÙ\81Ø­Ù\87 Ø§ØµÙ\84Û\8c",
-       "mainpage-description": "صÙ\81Ø­Ù\87 Ø§ØµÙ\84Û\8c",
+       "mainpage": "بÙ\8fÙ\86Û\8cادÛ\8c Ø¯Û\8cÙ\85",
+       "mainpage-description": "بÙ\8fÙ\86Û\8cادÛ\8c Ø¯Û\8cÙ\85",
        "policy-url": "Project:سیاست",
        "portal": "پرتال انجمن",
        "portal-url": "Project:پرتال انجمن",
        "newmessageslinkplural": "{{PLURAL:$1|نوکین کله|999=نوکین کله هان}}",
        "newmessagesdifflinkplural": "$1 {{PLURAL:$1|ٹگل داتن|پهکین ٹگل}}",
        "youhavenewmessagesmulti": "شما را نوکین کوله یان هست ته   $1",
-       "editsection": "اصلاح",
-       "editold": "اصلاح",
+       "editsection": "ایڈیٹ",
+       "editold": "ایڈیٹ",
        "viewsourceold": "به گند منبع ا",
-       "editlink": "اصلاح",
+       "editlink": "ایڈیٹ",
        "viewsourcelink": "چارگ منبع",
        "editsectionhint": ": $1اصلاح انتخاب",
        "toc": "محتوا",
        "page-atom-feed": "منبع \"$1\" Atom",
        "feed-atom": "اتم",
        "feed-rss": "ار اس اس",
-       "red-link-title": "$1 (هنگت  نیستن)",
+       "red-link-title": "$1 (ای دیم وجود نداریت)",
        "sort-descending": "نزولی نز آرتن",
        "sort-ascending": "صعودی نز آرتن",
-       "nstab-main": "صÙ\81Ø­Ù\87",
-       "nstab-user": "صفحه کاربر",
-       "nstab-media": "صفحه مدیا",
+       "nstab-main": "دÛ\8cÙ\85 Û\8cا ØªØ§Ú©",
+       "nstab-user": "کار زوروکی دیم",
+       "nstab-media": "میڈیای دیم",
        "nstab-special": "حاصین صفحات",
        "nstab-project": "صفحه پروژه",
-       "nstab-image": "Ù\81ایل",
+       "nstab-image": "Ù¾ایل",
        "nstab-mediawiki": "کوله",
        "nstab-template": "تمپلت",
        "nstab-help": "صفحه کمک",
        "invalidtitle-knownnamespace": "نامهتبرین عنوان گون نامء جاگاه «$2» ءُ تکست «$3»",
        "invalidtitle-unknownnamespace": "نامهتبرین نام گون ناشناسین نامء جاگاه نمبر $1 ءُ تکست «$2»",
        "exception-nologin": "مان نبیتگ ات",
-       "exception-nologin-text": "دزبندی انت سیستمء تها [[Special:Userlogin|مان بئیت]] تانکه بتوان ات ائ تاکء بگند ات.",
+       "exception-nologin-text": "مهربانی بکنیت بی سامانه یی [[Special:Userlogin|لوگین بیبیت]] تا که بتوانیت بی ای دیما دسترسی داشته به ئیت.",
        "exception-nologin-text-manual": "دزبندی انت  $1  تانکه شمارء پر ائ تاک یانکه اکشنء دزرس ببیت انت.",
        "virus-badscanner": "تنظیم بد: ناشناسین اسکنر ویروس: ''$1''",
        "virus-scanfailed": "اسکن پروش وارت(کد $1)",
        "nav-login-createaccount": "ورود/شرکتن حساب",
        "userlogin": "ورود/شرکتن حساب",
        "userloginnocreate": "لاگین",
-       "logout": "در بیگ",
-       "userlogout": "در بیگ",
+       "logout": "در بوتین",
+       "userlogout": "در بوتین",
        "notloggedin": "وارد نهت",
        "userlogin-noaccount": "شما رء اکانت نه انت؟",
        "userlogin-joinproject": "مان {{SITENAME}} ناملکی بکن ات!",
        "nologin": "حسابء  نیستن؟ '''$1'''.",
-       "nologinlink": "شرکتن یک حساب",
+       "nologinlink": "یک حسابی جوڑ کورتین",
        "createaccount": "حساب شرکن",
        "gotaccount": "یک حساب الان هست؟'''$1'''.",
        "gotaccountlink": "ورود",
        "createacct-another-email-ph": "ایمیلء ادرسء بلک ات",
        "createaccountmail": "کارمرز چه وتکارین موقتین پسورد ءُ رندا آئی دیم داتن پر مالومین ایمیل",
        "createacct-realname": "شمئی اصلیگین نام (ایهتیاری)",
+       "createaccountreason": "دلیل:",
+       "createacct-reason": "دلیل:",
        "createacct-reason-ph": "پرچا شما ادگر نوکین اکانتء اڈ کن ات",
        "createacct-captcha": "سکیوریتی چک",
        "createacct-imgcaptcha-ph": "برزین سیاهگء ادان بلک ات",
        "createaccount-text": "یکی یک حساب په شمی آدرس ایمیل ته  {{SITENAME}} گون نام ($4)  \"$2\"، گون کلمه رمز \"$3\" شرکتت.\nشما بایدن وارد بیت و وتی کلمه رمز الان عوض کنیت.\n\nشما شاید ای پیام شموشیت اگه ای ای حساب گون حطا شر بوتت.",
        "login-throttled": "شما انیگ پر لاگین کتنء چنت بار جهد کتگ ات. دزبندی انت پیسر چه پدایین جهدء $1 موه بداریت.",
        "login-abort-generic": "شمئی لاگینء پکا نبیت - Aborted",
+       "login-migrated-generic": "شمی کاربرین حساب منتکل بوته ، و شمی کاربری نام دیگه ای ویکی تا وجود نداریت .",
        "loginlanguagelabel": "زبان: $1",
        "suspicious-userlogout": "شمئی لوٹ پر در شتن چه سیستمء رد بوت پرچا که چوش که پیداگ انت ائ لوٹ چه هرابین بروزر یانکه پراکسیء راهیگ بیتگ انت.",
        "createacct-another-realname-tip": "اصلیگین نام ایهتیاری انت.\nاگان آئرا بلک ات رهشونء درگتء پر شمئی سیاهگان چه اصلیگین نام کارمرز بیت انت.",
        "preview": "بازبین",
        "showpreview": "بازبین پیش دار",
        "showdiff": "تغییرات پیش دار",
-       "anoneditwarning": "'''هوژاری:''' شما وارد نه بیتگیت.\nشمی آی پی ته تاریح اصلاح ای صفحه ثبت بیت.",
+       "blankarticle": "<strong>هشتار:</strong> شما بی یک هالی دیمی جوڑ\t کورتینا ئالاتا ویت.\nاگه \"{{int:savearticle}}\" ها پدا کلیک کنیت، بدون مئتواین دیمی جوڑ\tا بیت .",
+       "anoneditwarning": "<strong>هشتار:</strong> شما لوگین نه بوته ایت . شمی آی پی نشانی په موچان دیستینی وڑ\tا بیت اگه هر \tٹگلی جوڑ\t بداریت . اگه <strong>[$1 لوگین بئیت]</strong> یا <strong>[$2 یک کاربرین حسابی جوڑ بکنیت]</strong>، شمی ایڈیت بی شمی کاربرین نام نسبت داته آ بینت، لوڑ گون دیگرین مزایایان .",
        "anonpreviewwarning": "''شما مان سیستمء لاگین نکتگ. ذخیره کتنء حالت شمئی آی‌پیء نشانیگ مان ائ پیجء هاپزگ سبت بیت انت.''",
        "missingsummary": "'''یادآوری:''' شما یک خلاصه چه اصلاح وارد نه کرت.\nاگر دگه کلیک کنیت ذخیره آ، شمی اصلاح به بی آی ذخیره بنت.",
        "missingcommenttext": "لطفا یک نظری وارد کنیت جهل آ",
        "content-model-text": "سادگین سیاهگ",
        "content-model-javascript": "جاوا اسکریپٹ",
        "content-model-css": "سی اس اس",
+       "duplicate-args-category": "آ دیمان که گٹ زورته بوته انت گون تکرارین دلیلان بی تماس تیمپلیتی تا",
        "expensive-parserfunction-warning": "هوژاری: ای صفحه شامل بازگین توار عملگر تجریه کنوک سنگیننت.\nآیی بایدن کمتر چه  $2{{PLURAL:$2|توار|توار}}, داشته بیت ادان هنو  $1 هست.",
        "expensive-parserfunction-category": " صفحات گونبازگین توار عملگر تجریه کنوک",
        "post-expand-template-inclusion-warning": "هوژاری: اندازه شامل تمپلت باز مزننت.\nلهتی تمپلتان هور نه بینت.",
        "parser-template-recursion-depth-warning": "محدودیت عمق تررگ رد بوت ($1)",
        "language-converter-depth-warning": "چه محدودیت عمق زبانانی کارمرز گؤست ات ($1)",
        "node-count-exceeded-category": "پیج انی که گیش چه مکسیمم تعداد گره بیتگ انت",
-       "node-count-exceeded-category-desc": "کتگوری پر پیج انی که مان آهان ساب کنوگ برزتر شتگ انت.",
-       "node-count-exceeded-warning": "پیج چه مکسیمم تعداد گره گیش شُت",
+       "node-count-exceeded-category-desc": "ای دیم شه ئادین ئالا گیشتیر مشکل داریت .",
+       "node-count-exceeded-warning": "دیم شه مکسیمم اندازه ها گیشتیر گره  شُت",
        "expansion-depth-exceeded-category": "پیج انی که چه مکسیمم تچک کتنء امک (عمق) گیش شتگ انت",
-       "expansion-depth-exceeded-category-desc": "کتگری پر پیج انی که مان آهان تچک کتنء امک(عمق) گیش شتگ انت.",
+       "expansion-depth-exceeded-category-desc": "کتگوری په دیمان که آوانی تا پرش بوتینی  جولی  گیشتیر شُته گنت.",
        "expansion-depth-exceeded-warning": "پیج چه مکسیمم تچک کتنء امک(عمق) گیش شُت",
        "parser-unstrip-loop-warning": "حلقهء unstrip ودی بوت",
        "parser-unstrip-recursion-limit": "چه مکسیمم ارجاع مان دستور unstrip گیش شُت ات($1)",
        "rev-deleted-event": "(کار آمار زورگ بیتت)",
        "rev-deleted-user-contribs": "[یوزرنام یانکه یانکه آی پی ادرس هزپ بیتگ انت  - ویرایش چیرداتگین مان هواربیتگان]",
        "rev-deleted-text-permission": "ائ ویرایش چه ائ پیج '''هزپ بیتگ انت'''.\nبلکین اطلاعات گون آئی همگرنچء مان [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} هزپانی سیاهگ] موجوت بیت انت.",
+       "rev-suppressed-text-permission": "ای ایڈیٹ شه ای دیما '''ڈیلیٹ بوته '''.\nشما توانیت آیرا بگیندیت ؛ ممکن اینت که آیی مربوتین مئلومات بی [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ڈیلیٹی سیاه چالگی] تا موجود بیت.",
        "rev-deleted-text-unhide": "ائ ویرایش چه ائ پیج '''هزپ بیتگ انت'''.\nبلکین اطلاعات گون آئی همگرنچء مان [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} هزپانی سیاهگ] موجوت بیت انت.\nشما هنچوش اگان بلوٹ ات توان ات [$1 ائ نسخگء بچار ات].",
        "rev-suppressed-text-unhide": "ائ ویرایش چه ائ پیج '''دیم داشت''' بوت.\nبلکین اطلاعات گون آئی همگرنچء مان [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} دیم داشتانی سیاهگ]. موجوت بیت انت.\nشما هنچوش اگان بلوٹ ات توان ات [$1 ائ نسخگء بچار ات].",
        "rev-deleted-text-view": "ائ ویرایش چه ائ پیج '''هزپ بیتگ انت'''.\nبلکین اطلاعات گون آئی همگرنچء مان [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} هزپانی سیاهگ]. موجوت بیت انت.",
        "searchall": "کل",
        "showingresults": "جهل پیش دارگنت تا  {{PLURAL:$1|'''1'''نتیجه|'''$1''' نتایج}} شروع بنت گون #'''$2'''.",
        "showingresultsinrange": "پیش دارگ مان جهلء تان {{PLURAL:$1|<strong>1</strong> نتیجگ|<strong>$1</strong> نتیجگ}} in range #<strong>$2</strong> تان #<strong>$3</strong>.",
+       "search-showingresults": "{{PLURAL:$4|نتایج <strong>$1</strong> شه <strong>$3</strong>|نتایج <strong>$1 - $2</strong> شه <strong>$3</strong>}}",
        "search-nonefound": "نتیجه هم دپ په درخواست نیست",
        "powersearch-legend": "گردگ پیشرفته",
        "powersearch-ns": "گردگ ته نام فضا آن",
        "preferences": "ترجیحات",
        "mypreferences": "ترجیحات",
        "prefs-edits": "تعداد اصلاحات:",
-       "prefsnologintext2": "دزبندی انت  $1  پر ترجیحاتء تنظیم کتن.",
+       "prefsnologintext2": "منتوارون شمی که په ٹگل داتین تنزیماتانی هاتبرا لوگین بئیت .",
        "prefs-skin": "پوست",
        "skin-preview": "بازین",
        "datedefault": "هچ ترجیح",
        "prefs-tokenwatchlist": "نشانگ",
        "prefs-diffs": "پرک",
        "prefs-help-prefershttps": "ائ ترجیحء تاثیر رند چه شمئی رندی لاگینء کارمرز بیت انت.",
+       "prefswarning-warning": "شمی ٹگل داتینوکین ترجیئات تا انون زاپاس نه بوته انت .\nاگه ای دیم بدون شه کلیک کورتینا بی «$1» ایلا بیت شمی ترجیئات زاپاسا نه بیینت .",
        "prefs-tabs-navigation-hint": "بزان: شما توان ات چه چپی و راستی پیشداروکین بٹن ان  پر حرکت زبانگ انی توکا مان زبانگانی لیست کارمرز بکن ات.",
        "email-address-validity-valid": "شمئی ایمیل ادرس پر درستی پیداگ انت",
        "email-address-validity-invalid": "مهتبرین ایمیل ادرسء بلک ات",
        "right-browsearchive": "گردگ صفحات حذفی",
        "right-undelete": "حذف مکن یک صفحه ایء",
        "right-suppressrevision": "بازبینی و ترینگ بازبینی آن پناهین چه مدیران سیستم",
+       "right-viewsuppressed": "دیستین آ نسهه هانی که شه کار زوروکان چیهر داته بوته انت",
        "right-suppressionlog": "به گند خصوصی آماران",
        "right-block": "دگ کابران چه اصلاح محدود کن",
        "right-blockemail": "یک کاربری چه ایمیل دیم دهگ منع کن",
        "recentchanges-label-plusminus": "تاکء سایز همگرنچ گون ائ بایت انی انداجگ ٹگل وارتگ انت",
        "recentchanges-legend-heading": "'''اختصاران:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (هنچوش پر [[Special:NewPages|نوکین تاکانء فهرست]] بچار ات)",
-       "rcnotefrom": "جÙ\87Ù\84Û\8cگء ØªØºÛ\8cÛ\8cرات Ú\86Ù\87 <strong>$2</strong> (تاÙ\86 <strong>$1</strong> Ù¾Û\8cØ´ Ø¯Ø§Ø±Ú¯ Ø¨Û\8cتگ Ø§Ù\86ت).",
+       "rcnotefrom": "بÛ\8c Ø¬Ù\87Ù\84گا Ù¹Ú¯Ù\84اÙ\86 Ø´Ù\87 <strong>$3, $4</strong> (تا <strong>$1</strong> {{PLURAL:$5|Ù\86شاÙ\86 Ø¯Ø§ØªÙ\87 Ø¨Ù\88تÙ\87 Ø§Ù\86ت|Ù\86شاÙ\86 Ø¯Ø§ØªÙ\87 Ø¨Ù\88تÙ\87 Ø§Ù\86ت}}).",
        "rclistfrom": "پیش دار نوکین تغییراتآ چه $3 $2",
        "rcshowhideminor": "$1 هوردین تغییرات",
        "rcshowhideminor-show": "پیش دارگ",
        "reuploaddesc": "کنسل آپلودء و ترر په فرم آپلود",
        "upload-tryagain": "فایلء ٹگا وارتگین توضیحاتء راهیگ بکن ات",
        "uploadnologin": "وارد نهیت",
-       "uploadnologintext": "شما بایدن [[Special:UserLogin|واردبیت]] په آپلود کتن فایل.",
+       "uploadnologintext": "په اپلوڈ\t کورتین پایلی هاتیرا باید $1.",
        "upload_directory_missing": "مسیر آپلود ($1)  گارنت و گون وب سرور شر گنگ نه بیت.",
        "upload_directory_read_only": "مسیر آپلود ($1)  قابل نوشتن گون وب سرور نهنت.",
        "uploaderror": "حطا آپلود",
+       "upload-recreate-warning": "'''هشتار: پایلی بی ناما ڈ\tیلیت یا اینتیکال بوته .'''\n\nپه آسانی هاتیرا، ڈ\tیلیتی چالگ و انتیکالی دیم بی جهلگا آته :",
        "uploadtext": "چه جهلگین فرم په آپلود فایلان استفاده کنت.\nپه دیستن یا گشتن پیشگین آپلودی فایلان برو  [[Special:FileList|لیست فایلان آپلودی]], آپلودان و حذفیات هنچو هستن ته [[Special:Log/upload|آمار آپلود]].\n\nپه وارد کتن فایل ته یک صفحه ای، چه لینک ته فرم استفاده کن\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' په استفاده چه نسخه کامل فایل\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' په استفاده چه ۲۰۰ پیکسل پهنات ته یک جعبه ته چپ\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>'''  په مسیری لینک دهگ په فایل بی پیش دارگ فایل",
        "upload-permitted": "مجازین نوع فایل:  $1.",
        "upload-preferred": "ترجیحی نوع فایل:  $1.",
        "ignorewarnings": "هردابین هوژاری شموش",
        "minlength1": "نام فایل باید یک حرفی حداقل بیت",
        "illegalfilename": "نام فایل  \"$1\"  شامل کاراکترانی انت که مجاز نهنت ته ای عناوین صفحه.\nلطفا نام فایل بدل کنیت و دگه آپلود آزمایش کنیت.",
+       "filename-toolong": "پایلی نام نباید شه ۲۴۰ بایتا تچکتیر بیت .",
        "badfilename": "نام فایل عوض بوتت په \"$1\".",
+       "filetype-mime-mismatch": "پایلی پدوند «$1.‎» گون آیی  MIME رکما ($2) متابیکت نداریت.",
        "filetype-badmime": "فایلان نوع مایم  \"$1\" مجاز په آپلود بیگ نهنت.",
        "filetype-bad-ie-mime": "نه تونیت ای فایلءَ آپلود کنیت په چی که اینترنت ایکسپلورر آییءَ په دا ب \"$1\" جاه کاریت که شی غیرمجازین نوع فایلینت و حطرناک انت.",
        "filetype-unwanted-type": "'''\".$1\"' یک نه لوٹتگین نوع فایل انت. انواع فایل ترجیحی  $2 انت.\nنوع ترجیحی {{PLURAL:$3|نوع فایلنت|انواع فایلان انت}} $2.",
        "filetype-banned-type": "'''\".$1\"''' یک نوع مجازی ان فایلی نهنت. مجازین {{PLURAL:$3|نوع فایل|انواع فایلان}}  $2.",
        "filetype-missing": " (په داب \".jpg\").فایل هچ بندی نیست",
+       "empty-file": "پایلی که دیم داتیت هالی اینت.",
+       "file-too-large": "پایلی که دیم داته ایت باز ٹو اینت .",
+       "filename-tooshort": "پایلی نام بی شه اندازهگا گونڈ اینت.",
+       "filetype-banned": "ای رکمی پایل اجازه نداریت.",
+       "verification-error": "پایل شه تائید تستا در نه بوت.",
        "large-file": "توصیه بیت که فایلان مزنتر چه  $1 مبنت;\nای فایل $2 انت.",
        "largefileserver": "ای فایل مزنتر چه حدی انت که سرور تنظیم بوتت په اجازه دهگ.",
        "emptyfile": "فایلی که شما آپلود کتت هالیک انت. شاید شی په خاطر اشتباه نه نام فایل بیت.\nلطفا کتنرل کنیت که آیا واقعا شما لوٹیت ای فایلء آپلود کنیت.",
        "php-uploaddisabledtext": "آپلود کتن فایل ته پی‌اچ‌پی فعال نهنت. تنظیم file_uploads کنترل کنیت.",
        "uploadscripted": "ای فایل شامل کد HTML یا اسکریپت انت که شاید گون وب بروزر اشتباهی وانگ بیت.",
        "uploadvirus": "فایل یک ویروسی داریتن! جزییات: $1",
+       "upload-source": "پرونده منبع",
        "sourcefilename": "منبع نام فایل:",
+       "sourceurl": "نشانی منبع:",
        "destfilename": "مقصد نام فایل",
        "upload-maxfilesize": "آهرین هد اندازه فایل : $1",
+       "upload-description": "توضیحات پرونده",
+       "upload-options": "گزینه‌های بارگذاری",
        "watchthisupload": "ای فایل بچار",
        "filewasdeleted": "یک فایلی گو ای نام پیشتر آپلود بوتت و رندا حذف بوت.\nشما بایدن کنترل کنیت  $1 پیش چه شی که دگه آپلود کنیت.",
        "filename-bad-prefix": "نام  فایلی که آپلود بیت شروع بیت گون '''\"$1\"''', که یک نام بی توضیحی هنچکا اتوماتیکی گون دوربین دیجیتال دهگ بوتت.\nلطفا یک تشریحی ترین نامی په وتی فایل بزرویت.",
        "filename-prefix-blacklist": "#<!-- leave this line exactly as it is --> <pre>\n# Syntax is as follows:\n#   * Everything from a \"#\" character to the end of the line is a comment\n#   * Every non-blank line is a prefix for typical file names assigned automatically by digital cameras\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # some mobil phones\nIMG # generic\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- leave this line exactly as it is -->",
        "upload-success-subj": "آپلود موفق",
+       "upload-success-msg": "بارگذاری شما از [$2] موفق بود. این پرونده در اینجا قابل دسترسی است: [[:{{ns:file}}:$1]]",
+       "upload-failure-subj": "مشکل در بارگذاری",
+       "upload-failure-msg": "مشکلی در بارگذاری شما از [$2] وجود داشت:\n\n$1",
+       "upload-warning-subj": "هشدار بارگذاری",
+       "upload-warning-msg": "فرم بارگذاری مشکلی داشت [$2]. شما می‌توانید به [[Special:Upload/stash/$1|فرم بارگذاری]] بازگردید تا این اشکال را رفع کنید.",
        "upload-proto-error": "اشتباه پروتوکل",
        "upload-proto-error-text": "آپلود دراین نیاز په URL آنی داریت که شروع بیت گون  <code>http://</code> یا <code>ftp://</code>.",
        "upload-file-error": "حطا درونی",
        "upload-misc-error-text": "یک ناشناسین حطا وهد آپلود کتن پیش آتک.\nلطفا تایید کنیت که URL معتبرانت و دسترسی بیت و دگه سعی کنیت.\nاگر مشکل ادامه داشت، گون [[Special:ListUsers/sysop|مدیر]]ء تماس گریت.",
        "upload-too-many-redirects": "ای لینک بازگین غیرمستقیم ی هستن",
        "upload-http-error": "یک ارور اچ‌تی‌تی‌پی پیش آتک : $1",
+       "upload-copy-upload-invalid-domain": "بارگذاری کپی پرونده‌ها از این دامنه امکان‌پذیر نیست.",
+       "backend-fail-stream": "نمی‌توان پروندهٔ $1 را ارسال کرد.",
+       "uploadstash": "اپلوڈی سٹاش",
        "upload-curl-error6": "نه تونیت په URL برسیت",
        "upload-curl-error6-text": "داتگین URL دسترسی نه بیت.\nلطفا دگه کنترل کنیت که URL درستنت و سایت په راه انت.",
        "upload-curl-error28": "وهد آپلود هلت",
        "listfiles_size": "اندازه",
        "listfiles_description": "توضیح",
        "listfiles_count": "نسخ",
+       "listfiles-latestversion-yes": "هان",
+       "listfiles-latestversion-no": "نه",
        "file-anchor-link": "فایل",
        "filehist": "تاریح فایل",
        "filehist-help": "اور تاریح/زمان کلیک کنیت دان فایلا په داب هما تاریح بگندیت",
        "statistics-users-active": "فعالین کاربر",
        "statistics-users-active-desc": "کاربرانی که ته پیشگین {{PLURAL:$1|روچ|$1 روچان}} کاری اش کتت",
        "statistics-mostpopular": "باز چار تگین صفحات",
+       "pageswithprop-submit": "برا",
+       "pageswithprop-prophidden-long": "جزییات مخفی متن طولانی ($1)",
+       "pageswithprop-prophidden-binary": "جزییات مقدار مخفی باینری ($1)",
        "doubleredirects": "دوبل غیر مستقیم",
        "doubleredirectstext": "ای صفحه لیست کنت صفحاتی که غیر مستقیم رونت په دگه صفحات. هر ردیف شامل لینکانی انت به اولی و دومی غیر مستقیم، و هدف دومی غیر مستقیم، که معمولا استفاده بیت \"real\" صفحه هدف، که بایدن اولی غیر مستقیم پیش داریت.",
        "double-redirect-fixed-move": "[[$1]] انتقال دهگ بوتت، و الان تغییر مسیری په [[$2]] انت",
+       "double-redirect-fixed-maintenance": "رفع خودکار تغییرمسیر دوتایی از [[$1]] به [[$2]] در روند نگهداری.",
        "double-redirect-fixer": "تعمیرکنوک غیر مستقیم",
        "brokenredirects": "پروشتگین غیر مستقیمان",
        "brokenredirectstext": "جهلیگین غیر مستقیم لینک بوتگن په صفحات نیستن:",
        "fewestrevisions": "صفحات گون کمترین بازبینی",
        "nbytes": "$1 {{PLURAL:$1|بایت|بایت}}",
        "ncategories": "$1 {{PLURAL:$1|دسته|دسته جات}}",
+       "ninterwikis": "$1 {{PLURAL:$1|میان‌ویکی|میان‌ویکی}}",
        "nlinks": "$1 {{PLURAL:$1|link|لینک}}",
        "nmembers": "$1 {{PLURAL:$1|member|اعضا}}",
+       "nmemberschanged": "$1 → $2   {{PLURAL:$2| عضو|عضو}}",
        "nrevisions": "$1 {{PLURAL:$1|بازبینی|بازبینی ان}}",
        "nviews": "$1 {{PLURAL:$1|دیستن|دیستن}}",
+       "nimagelinks": "$1 × $2, $3 {{PLURAL:$3|صفحه|صفحات}}",
        "specialpage-empty": "په ای گزارش هچ نتیجه ای نیست ان.",
        "lonelypages": "صفحات یتیم",
        "lonelypagestext": "جهلیگین صفحات چه دگه صفحات لینک یا داهل نه بوتگنت ته {{SITENAME}}.",
        "protectedpages-indef": "فقط محافظت نامحدود",
        "protectedpages-cascade": "محافظتان آبشاری فقط",
        "protectedpagesempty": "هچ صفحه ای گون ای پارامترآن",
+       "protectedpages-page": "دیم یا تاک",
        "protectedtitles": "عناوین محافظتی",
        "protectedtitlesempty": "هچ عنوانی هنو گو ای پارامتران محافظت نهنت.",
        "listusers": "لیست کاربر",
        "seconds-abbrev": "$1س",
        "minutes-abbrev": "$1م",
        "hours-abbrev": "$1ه",
+       "monday-at": "دوشمبی $1",
+       "tuesday-at": "سئه شمبی $1",
+       "wednesday-at": "چارشمبی $1",
+       "friday-at": "جوما",
+       "saturday-at": "شمبی",
        "bad_image_list": "فرمت په داب جهلیگی انت:\n\nفقط ایتمان لیست چارگ بنت(خطانی که گون * شروع بنت).\nاولین لینک ته یک خط باید یک لینکی په یک بدین فایلی بیت.\nهر لینکی که کیت ته هما خط اسنثتا بینت.",
        "variantname-zh-hans": "هانس",
        "variantname-zh-hant": "هانت",
index 1449fa6..57f89be 100644 (file)
        "pagetitle": "$1 — {{SITENAME}}",
        "retrievedfrom": "Атрымана з «$1»",
        "youhavenewmessages": "Вы атрымалі $1 ($2).",
-       "youhavenewmessagesfromusers": "{{PLURAL:$4|Вы}} атрымалі $1 ад {{PLURAL:$3|1=іншага ўдзельніка|$3 удзельнікаў}} ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Вы}} атрымалі $1 ад $3 {{PLURAL:$3|удзельніка|удзельнікаў}} ($2).",
        "youhavenewmessagesmanyusers": "Вы атрымалі $1 ад некалькіх удзельнікаў ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|1=новае паведамленьне|999=новыя паведамленьні}}",
        "newmessagesdifflinkplural": "{{PLURAL:$1|1=апошняя зьмена|999=апошнія зьмены}}",
        "content-model-text": "просты тэкст",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Старонкі, на якіх у шаблёнах выкарыстоўваюцца парамэтры-дублікаты",
+       "duplicate-args-category-desc": "Старонкі, якія ўтрымліваюць шаблёны з парамэтрамі-дублікатамі, напрыклад, <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> або <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "Папярэджаньне: гэтая старонка ўтрымлівае зашмат працаёмістых зваротаў да функцыяў парсэра.\n\nПавінна быць ня болей за $2 {{PLURAL:$2|зварот|звароты|зваротаў}}, а цяпер ўтрымліваецца {{PLURAL:$1|$1 зварот|$1 звароты|$1 зваротаў}}.",
        "expensive-parserfunction-category": "Старонкі, якія ўтрымліваюць зашмат працаёмістых зваротаў да функцыяў парсэра",
        "post-expand-template-inclusion-warning": "Папярэджаньне: Памер уключаемых шаблёнаў занадта вялікі.\nНекаторыя шаблёны ня будуць уключаныя.",
        "gender-female": "Яна рэдагуе вікістаронкі",
        "prefs-help-gender": "Вызначаць гэта неабавязкова.\nАпраграмаваньне выкарыстоўвае гэтае значэньне толькі для граматычна карэктнага звароту да вас.\nГэтая інфармацыя будзе агульнадаступнай.",
        "email": "Электронная пошта",
-       "prefs-help-realname": "Сапраўднае імя паведамляць неабавязкова.\nКалі Вы яго пазначыце, яно будзе выкарыстоўвацца для пазначэньня Вашай працы.",
+       "prefs-help-realname": "Сапраўднае імя паведамляць неабавязковае.\nКалі Вы яго пазначыце, яно можа быць выкарыстанае для пазначэньня Вашай працы.",
        "prefs-help-email": "Адрас электроннай пошты неабавязковы, але ён дае магчымасьць даслаць Вам пароль, калі Вы забылі яго.",
        "prefs-help-email-others": "Вы можаце таксама дазволіць іншым удзельнікам кантактаваць з Вамі праз Вашую асабістую старонку гутарак безь неабходнасьці раскрыцьця адрасу электроннай пошты.",
        "prefs-help-email-required": "Патрабуецца адрас электроннай пошты.",
        "pager-older-n": "$1 {{PLURAL:$1|старэйшая|старэйшыя|старэйшых}}",
        "suppress": "Рэвізаваць",
        "querypage-disabled": "Гэта спэцыяльная старонка адключаная для падвышэньня прадукцыйнасьці",
+       "apihelp": "Даведка API",
+       "apihelp-no-such-module": "Модуль «$1» ня знойдзены.",
        "booksources": "Пошук кніг",
        "booksources-search-legend": "Пошук кніг",
        "booksources-isbn": "ISBN:",
        "tooltip-pt-mycontris": "Ваш унёсак",
        "tooltip-pt-login": "Вас запрашаюць увайсьці, хаця гэта і неабавязкова.",
        "tooltip-pt-logout": "Выйсьці",
+       "tooltip-pt-createaccount": "Мы прапануем вам стварыць рахунак і ўвайсьці, але гэта не абавязкова",
        "tooltip-ca-talk": "Абмеркаваньне зьместу старонкі",
        "tooltip-ca-edit": "Вы можаце рэдагаваць гэтую старонку. Калі ласка, ужывайце кнопку прагляду перад захаваньнем.",
        "tooltip-ca-addsection": "Пачаць новую сэкцыю",
        "tooltip-feed-atom": "Atom-стужка для гэтай старонкі",
        "tooltip-t-contributions": "Паказаць унёсак гэтага удзельніка/гэтай удзельніцы",
        "tooltip-t-emailuser": "Даслаць ліст гэтаму ўдзельніку/гэтай удзельніцы па электроннай пошце",
+       "tooltip-t-info": "Болей інфармацыі пра гэтую старонку",
        "tooltip-t-upload": "Загрузіць файл",
        "tooltip-t-specialpages": "Сьпіс усіх спэцыяльных старонак",
        "tooltip-t-print": "Вэрсія гэтай старонкі для друку",
        "unknown_extension_tag": "Невядомы тэг пашырэньня «$1»",
        "duplicate-defaultsort": "Папярэджаньне: Ключ сартыроўкі па змоўчваньні «$2» замяняе папярэдні ключ сартыроўкі па змоўчваньні «$1».",
        "duplicate-displaytitle": "<strong>Папярэджаньне:</strong> назва для адлюстраваньня «$2» перапісвае ранейшую назву для адлюстраваньня «$1».",
+       "invalid-indicator-name": "<strong>Памылка:</strong> атрыбут <code>name</code> індыкатараў статусу старонкі ня мусіць быць пустым.",
        "version": "Вэрсія",
        "version-extensions": "Усталяваныя пашырэньні",
        "version-skins": "Усталяваныя тэмы афармленьня",
        "json-error-state-mismatch": "Недазволены або няслушна сфармаваны JSON",
        "json-error-ctrl-char": "Памылка кантрольнага сымбалю, магчыма, няслушнае кадаваньне",
        "json-error-syntax": "Сынтаксычная памылка",
-       "json-error-utf8": "Некарэктныя сымбалі UTF-8, магчыма, няслушнае кадаваньне"
+       "json-error-utf8": "Некарэктныя сымбалі UTF-8, магчыма, няслушнае кадаваньне",
+       "json-error-recursion": "Значэньне, якое трэба закадаваць, утрымлівае адну ці некалькі рэкурсіўных спасылак",
+       "json-error-inf-or-nan": "У значэньні, якое трэба закадаваць, прысутнічаюць адно ці болей NAN- або INF-значэньняў",
+       "json-error-unsupported-type": "Было пададзенае значэньне тыпу, які ня можа быць закадаваны"
 }
index 6be037d..cade0c3 100644 (file)
        "wantedfiles": "আবশ্যিক ফাইলগুলো",
        "wantedfiletext-cat": "নিচের ফাইলগুলো ব্যবহৃত হচ্ছে কিন্তু এগুলো অপসারিত হয়েছে। অন্যান্য রিপোজিটরী থেকে ব্যবহৃত ফাইলগুলো এভাবে প্রদর্শিত হতে পারে। এই ধরনের কোন ফাইল খুজে পেলে <del>অপসারণ করুন</del>। এছাড়া অপসারিত হয়েছে এমন ছবির সংযোগ রয়েছে এমন পাতাসমূহের লিংক পাওয়া যাবে এখানে [[:$1]]।",
        "wantedfiletext-nocat": "নিচের ফাইলগুলো ব্যবহৃত হচ্ছে কিন্তু এগুলো অপসারিত হয়েছে। অন্যান্য রিপোজিটরী থেকে ব্যবহৃত ফাইলগুলো এভাবে প্রদর্শিত হতে পারে। এই ধরনের ভূলগুলো শিঘ্রই <del>অপসারিত হবে</del>।",
+       "wantedfiletext-nocat-noforeign": "নিম্নলিখিত ফাইলসমূহ ব্যবহৃত হয়েছে কিন্তু এর অস্তিত্ব নেই।",
        "wantedtemplates": "আবশ্যিক টেম্পলেটগুলো",
        "mostlinked": "যেসব পাতার প্রতি সবচেয়ে বেশি সংযোগ আছে",
        "mostlinkedcategories": "যেসব বিষয়শ্রেণীর প্রতি সবচেয়ে বেশি সংযোগ আছে",
        "mediastatistics-header-audio": "অডিও",
        "mediastatistics-header-video": "ভিডিও",
        "mediastatistics-header-office": "অফিস",
+       "json-error-unknown": "JSON-এ একটি সমস্যা রয়েছে। ত্রুটি: $1",
        "json-error-syntax": "সিনট্যাক্স ত্রুটি"
 }
index a2f9ecc..7cac1d5 100644 (file)
        "unblocked": "Distanket eo bet [[User:$1|$1]]",
        "unblocked-range": "Distanket eo bet $1",
        "unblocked-id": "Distanket eo bet $1",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] zo bet distanket.",
        "blocklist": "Implijerien stanket",
        "ipblocklist": "Implijerien stanket",
        "ipblocklist-legend": "Kavout un implijer stanket",
index a7bbd8e..849cc4c 100644 (file)
        "gender-female": "Femení",
        "prefs-help-gender": "Opcional: s'usa perquè el programari se us adreci amb missatges amb el gènere adient. Aquesta informació serà pública.",
        "email": "Correu electrònic",
-       "prefs-help-realname": "<nowiki>*</nowiki> Nom real (opcional): si escolliu donar aquesta informació es utilitzarà per a donar-vos l’atribució de la vostra feina.",
+       "prefs-help-realname": "El nom real és opcional.\nSi escolliu donar aquesta informació, s'utilitzarà per a donar-vos l'atribució del vostre treball.",
        "prefs-help-email": "L'adreça electrònica és opcional, però permet l'enviament d'una nova contrasenya en cas que oblideu l'actual.",
        "prefs-help-email-others": "També podeu optar per deixar que els altres contactin amb vós a través de la pàgina personal de discussió, sense necessitat de desvetllar la vostra identitat.",
        "prefs-help-email-required": "Cal una adreça de correu electrònic.",
        "prefs-tabs-navigation-hint": "Consell: Podeu utilitzar les tecles de cursor de dreta i esquerra per a navegar entre les pestanyes.",
        "email-address-validity-valid": "L'adreça de correu electrònic sembla vàlida",
        "email-address-validity-invalid": "Escriviu una adreça vàlida de correu electrònic",
-       "userrights": "Gestió dels permisos d'usuari",
+       "userrights": "Gestió dels permisos dusuari",
        "userrights-lookup-user": "Gestiona els grups d'usuari",
        "userrights-user-editname": "Introduïu un nom d'usuari:",
        "editusergroup": "Edita els grups d'usuaris",
        "pager-older-n": "{{PLURAL:$1|anterior|$1 anteriors}}",
        "suppress": "Oversight",
        "querypage-disabled": "Aquesta pàgina especial està desactivada per a no perjudicar el rendiment.",
+       "apihelp": "Ajuda de l'API",
+       "apihelp-no-such-module": "No s'ha trobat el mòdul \"$1\".",
        "booksources": "Obres de referència",
        "booksources-search-legend": "Cerca fonts de llibres",
        "booksources-search": "Cerca",
        "wlheader-enotif": "La notificació per correu electrònic està habilitada.",
        "wlheader-showupdated": "Les pàgines que s'han canviat des de la vostra darrera visita es mostren en '''negreta'''.",
        "wlnote": "A sota hi ha {{PLURAL:$1|el darrer canvi|els darrers <strong>$1</strong> canvis}} en {{PLURAL:$2|la darrera hora|les <strong>$2</strong> darreres hores}}, a $4 del $3.",
-       "wlshowlast": "<small>- Mostra les darreres $1 hores, els darrers $2 dies o </small>",
+       "wlshowlast": "Mostra les darreres $1 hores, els darrers $2 dies",
        "watchlist-options": "Opcions de la llista de seguiment",
        "watching": "S'està vigilant...",
        "unwatching": "S'està desatenent...",
        "protect-othertime": "Un altre termini:",
        "protect-othertime-op": "un altre termini",
        "protect-existing-expiry": "Data d'expiració existent: $2 a les $3",
+       "protect-existing-expiry-infinity": "Temps d'expiració existent: infinit",
        "protect-otherreason": "Motiu diferent o addicional:",
        "protect-otherreason-op": "Altres motius",
        "protect-dropdown": "*Motius comuns de protecció\n** Vandalisme excessiu\n** Spam excessiu\n** Guerra d'edicions improductiva\n** Pàgina amb alt trànsit",
        "mycontris": "Contribucions",
        "contribsub2": "Per a {{GENDER:$3|$1}} ($2)",
        "contributions-userdoesnotexist": "El compte d'usuari «$1» no està registrat.",
-       "nocontribs": "No s'ha trobat canvis que encaixessin amb aquests criteris.",
+       "nocontribs": "No s’ha trobat cap canvi que encaixessi amb aquests criteris.",
        "uctop": "(actual)",
        "month": "Mes (i anteriors):",
        "year": "Any (i anteriors):",
        "table_pager_limit": "Mostra $1 elements per pàgina",
        "table_pager_limit_label": "Ítems per pàgina:",
        "table_pager_limit_submit": "Vés-hi",
-       "table_pager_empty": "Sense resultats",
+       "table_pager_empty": "No hi ha resultats",
        "autosumm-blank": "Pàgina blanquejada",
        "autosumm-replace": "Contingut canviat per «$1».",
        "autoredircomment": "Redirecció a [[$1]]",
        "specialpages-group-changes": "Canvis recents i registres",
        "specialpages-group-media": "Informes multimèdia i càrregues",
        "specialpages-group-users": "Usuaris i drets",
-       "specialpages-group-highuse": "Pàgines d'alt ús",
+       "specialpages-group-highuse": "Pàgines d’ús elevat",
        "specialpages-group-pages": "Llistes de pàgines",
-       "specialpages-group-pagetools": "Pàgines d'eines",
+       "specialpages-group-pagetools": "Eines per a les pàgines",
        "specialpages-group-wiki": "Dades i eines",
        "specialpages-group-redirects": "Pàgines especials de redirecció",
        "specialpages-group-spam": "Eines de spam",
        "log-name-pagelang": "Canvia el registre de llengua",
        "log-description-pagelang": "Aquest és un registre dels canvis en les llengües de les pàgines.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ha canviat}} la llengua de la pàgina per a $3 de $4 a $5.",
+       "default-skin-not-found": "Òndia! L'aparença per defecte per al wiki, definit en <code dir=\"ltr\">$wgDefaultSkin</code> com <code>$1</code>, no està disponible.\n\nLa vostra instal·lació sembla que inclou les següents aparences. Consulteu [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Configuració d'aparences] per a la informació de com habilitar-les i triar-ne el valor per defecte.\n\n$2\n\n; Si heu acabat d'instal·lar MediaWiki:\n: Probablement l'instal·làveu des de git, o directament des del codi font utilitzant algun altre mètode. Això és l'esperat. Intenteu instal·lar algunes aparences des del [https://www.mediawiki.org/wiki/Category:All_skins directori d'aparences de mediawiki.org], per:\n: * Descarregar l'[https://www.mediawiki.org/wiki/Download instal·lador tarball], que ve amb diverses aparences i ampliacions. Podeu copiar i enganxar el directori <code>skins/</code> des d'aquí.\n: * Clonar un dels repositoris <code>mediawiki/skins/*</code> a través de git en el directori <code dir=\"ltr\">skins/</code> de la vostra instal·lació de MediaWiki.\n: Fent això no s'hauria d'interferir amb el vostre dipòsit git si sou un desenvolupador de MediaWiki.\n\n; Si només heu actualitzat MediaWiki:\n: Per MediaWiki 1.24 i posteriors ja no permet aparences instal·lades automàticament (consulteu [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Aparences autodiscovery]). Podeu enganxar les línies següents en <code>LocalSettings.php</code> per permetre totes les aparences instal·lades actualment:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Si només heu modificat <code>LocalSettings.php</code>:\n: Reviseu els noms de l'aparença per errors tipogràfics.",
+       "default-skin-not-found-no-skins": "Òndia! L'aparença per defecte per al wiki, definit en <code>$wgDefaultSkin</code> com <code>$1</code>, no està disponible.\n\nNo teniu cap aparença instal·lada.\n\n\n; Si heu acabat d'instal·lar o actualitzar MediaWiki:\n: Probablement l'heu instal·lat des de git, o directament des del codi font utilitzant algun altre mètode. Això és l'esperat. Per MediaWiki 1.24 i posteriors ja no s'inclouen aparences en el repositori principal. Proveu d'instal·lar algunes aparences des del [https://www.mediawiki.org/wiki/Category:All_skins directori d'aparences de mediawiki.org], per:\n: * Descarregar l'[https://www.mediawiki.org/wiki/Download instal·lador tarball], que ve amb diverses aparences i ampliacions. Podeu copiar i enganxar el directori <code>skins/</code> des d'aquí.\n: * Clonar un dels repositoris <code>mediawiki/skins/*</code> a través de git en el directori <code dir=\"ltr\">skins/</code> de la vostra instal·lació de MediaWiki.\n: Fent això no s'hauria d'interferir amb el vostre dipòsit git si sou un desenvolupador de MediaWiki. Consulteu [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: configuració de l'aparença] per informació de com permetre aparences i triar-ne per defecte.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (habilitat)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''inhabilitat''')",
+       "mediastatistics": "Estadístiques dels multimèdia",
+       "mediastatistics-summary": "Les estadístiques sobre els tipus de fitxers pujats. Això només inclou la versió més recent d'un fitxer. S'exclouen les versions antigues o eliminades dels fitxers.",
+       "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte|$1 bytes}} ($2; $3%)",
        "mediastatistics-table-mimetype": "Tipus MIME",
        "mediastatistics-table-extensions": "Extensions possibles",
        "mediastatistics-table-count": "Nombre de fitxers",
        "mediastatistics-table-totalbytes": "Mida combinada",
+       "mediastatistics-header-unknown": "Desconegut",
        "mediastatistics-header-bitmap": "Imatges de mapa de bits",
+       "mediastatistics-header-drawing": "Dibuixos (imatges vectorials)",
        "mediastatistics-header-audio": "Àudio",
        "mediastatistics-header-video": "Vídeos",
+       "mediastatistics-header-multimedia": "Multimèdia enriquida",
        "mediastatistics-header-office": "Oficina",
+       "mediastatistics-header-text": "Textual",
        "mediastatistics-header-executable": "Executables",
        "mediastatistics-header-archive": "Formats comprimits",
-       "json-error-syntax": "Error de sintaxi"
+       "json-warn-trailing-comma": "$1 al final {{PLURAL:$1|coma ha estat eliminada|comes han estat eliminades}} de JSON",
+       "json-error-unknown": "S'ha produït un error amb el JSON. Error: $1",
+       "json-error-depth": "S'ha superat la profunditat màxima de pila",
+       "json-error-state-mismatch": "JSON incorrecte o no vàlid",
+       "json-error-ctrl-char": "Error de caràcter de control, possiblement incorrectament codificat",
+       "json-error-syntax": "Error de sintaxi",
+       "json-error-utf8": "Caràcters UTF-8 amb errors de format, probablement mal codificats",
+       "json-error-recursion": "Una o més referències recursives en el valor per ser codificat",
+       "json-error-inf-or-nan": "Un o més valors NAN (número no assignat) o INF (infinit) en el valor per ser codificat",
+       "json-error-unsupported-type": "S'ha donat un valor d'un tipus que no pot ser codificat"
 }
index c366b2a..0ca7a62 100644 (file)
@@ -13,8 +13,8 @@
                ]
        },
        "tog-underline": "下劃綫鏈接",
-       "tog-hideminor": "藏起最近改變其過要修改",
-       "tog-hidepatrolled": "起最近改變其巡邏修改",
+       "tog-hideminor": "囥起最近改變其過幼修改",
+       "tog-hidepatrolled": "起最近改變其巡邏修改",
        "tog-extendwatchlist": "敆擴展監視單單臺中顯示所有其更改,伓啻最近其更改",
        "tog-numberheadings": "自動編號其標題",
        "tog-showtoolbar": "顯示編輯工具欄",
        "tog-watchdefault": "添加我編輯其頁面共文件遘我其監視單",
        "tog-watchmoves": "添加我移動其頁面共文件遘我其監視單",
        "tog-watchdeletion": "添加我刪掉其頁面共文件遘我其監視單",
-       "tog-minordefault": "默認共所有其編輯都當作過修改",
+       "tog-minordefault": "默認共所有其編輯都當作過修改",
        "tog-previewontop": "敆編輯框以前顯示預覽",
        "tog-previewonfirst": "敆頭蜀回編輯時候看預覽",
        "tog-enotifwatchlistpages": "我其監視單有變時候,發電子郵件乞我",
        "tog-enotifusertalkpages": "我其討論頁有變時候,發電子郵件乞我",
-       "tog-enotifminoredits": "å\8d³ä½¿æ\98¯é\81\8eè¦\81編輯ï¼\8cä¹\9fè\91\97發電子郵件乞我",
+       "tog-enotifminoredits": "å°±ã\91\9aè¬\9bæ\98¯é\81\8e幼編輯ï¼\8cä¹\9fç\9d\80發電子郵件乞我",
        "tog-shownumberswatching": "顯示監視用戶其數量",
        "tog-oldsig": "存在其簽名",
        "tog-fancysig": "共簽名當成維基文本(無自動鏈接)",
        "tog-uselivepreview": "使即時預覽(敆𡅏實驗)",
        "tog-forceeditsummary": "提醒我行遘蜀萆空白其編輯總結",
-       "tog-watchlisthideown": "趁監視單𡅏起我其修改",
-       "tog-watchlisthidebots": "起監視單其機器人其修改",
-       "tog-watchlisthideminor": "藏起監視單其過要修改",
-       "tog-watchlisthideliu": "共已經躒底其用戶其編輯趁監視單𡅏起咯",
-       "tog-watchlisthideanons": "共匿名其用戶其編輯趁監視單𡅏起咯",
-       "tog-watchlisthidepatrolled": "共巡查其編輯趁監視單𡅏起咯",
+       "tog-watchlisthideown": "趁監視單𡅏起我其修改",
+       "tog-watchlisthidebots": "起監視單其機器人其修改",
+       "tog-watchlisthideminor": "囥起監視單其過幼修改",
+       "tog-watchlisthideliu": "共已經躒底其用戶其編輯趁監視單𡅏起咯",
+       "tog-watchlisthideanons": "共匿名其用戶其編輯趁監視單𡅏起咯",
+       "tog-watchlisthidepatrolled": "共巡查其編輯趁監視單𡅏起咯",
        "tog-ccmeonemails": "共我發乞其他用戶其電子郵件其備份發乞我。",
        "tog-diffonly": "伓使敆下底其顯示𣍐蜀様其地方顯示頁面內容",
        "tog-showhiddencats": "㪗藏類別",
        "subcategories": "子類別",
        "category-media-header": "「$1」類別下底其媒體",
        "category-empty": "''茲類別下底現在無文章也無媒體。''",
-       "hidden-categories": "{{PLURAL:$1}}乞起其類別",
-       "hidden-category-category": "已經起其類別",
+       "hidden-categories": "{{PLURAL:$1}}乞起其類別",
+       "hidden-category-category": "已經起其類別",
        "category-subcat-count": "{{PLURAL:$2|茲萆分類僅包括下底蜀萆子分類|茲分類有 {{PLURAL:$1|子分類|$1 萆子分類}},總計 $2 萆。}}",
        "category-subcat-count-limited": "茲蜀萆類別下底有子類別{{PLURAL:$1}}",
        "category-article-count": "{{PLURAL:$2|茲蜀萆類別儷有下底蜀頁。|共總有$2頁,下底其茲$1頁敆茲蜀萆類別𡅏。}}",
        "talkpage": "討論茲頁",
        "talkpagelinktext": "討論",
        "specialpage": "特殊頁",
-       "personaltools": "å\80\8b人å\85¶å®¶ç§\81",
+       "personaltools": "å\80\8b人å\85¶å\82¢ç§\81è\8a±",
        "articlepage": "覷蜀覷內容頁面",
        "talk": "討論",
        "views": "覷蜀覷",
-       "toolbox": "家ç§\81",
+       "toolbox": "å\82¢ç§\81è\8a±",
        "userpage": "覷蜀覷用戶頁面",
        "projectpage": "看工程頁",
        "imagepage": "覷蜀覷文件頁面",
        "editsectionhint": "修改段:$1",
        "toc": "目錄",
        "showtoc": "顯示",
-       "hidetoc": "起",
+       "hidetoc": "起",
        "collapsible-collapse": "隱",
        "collapsible-expand": "現",
        "thisisdeleted": "卜看或者恢復$1?",
        "hr_tip": "水平線(廮𡅏保護使其)",
        "summary": "總結:",
        "subject": "主題/標題:",
-       "minoredit": "過修改",
+       "minoredit": "過修改",
        "watchthis": "監視茲頁",
        "savearticle": "保存茲頁",
        "preview": "預覽",
        "last": "前",
        "page_first": "頭",
        "page_last": "尾",
-       "histlegend": "差別揀選:選擇卜比並其版本,再擪「回車」('''Enter''')或者擪底底其'''比並揀選版本'''。<br />\n說明:(伶)=共第一新其版本比並,(前)=共前蜀版本比並,~=過修改。",
+       "histlegend": "差別揀選:選擇卜比並其版本,再擪「回車」('''Enter''')或者擪底底其'''比並揀選版本'''。<br />\n說明:(伶)=共第一新其版本比並,(前)=共前蜀版本比並,~=過修改。",
        "history-fieldset-title": "瀏覽歷史",
        "history-show-deleted": "囇刪掉去",
        "histfirst": "最旧",
        "recentchanges": "這般其改變",
        "recentchanges-summary": "敆維基茲頁跟蹤這般其改變。",
        "recentchanges-label-newpage": "茲蜀萆修改創建新其蜀頁",
-       "recentchanges-label-minor": "茲是蜀萆過修改",
+       "recentchanges-label-minor": "茲是蜀萆過修改",
        "recentchanges-label-bot": "茲蜀萆修改是機器人做其",
        "rclistfrom": "顯示由$3 $2開始其新其改變",
-       "rcshowhideminor": "$1過修改",
+       "rcshowhideminor": "$1過修改",
        "rcshowhidebots": "$1機器人",
        "rcshowhideliu": "$1躒底用戶",
        "rcshowhideanons": "$1無名用戶",
        "minoreditletter": "~",
        "newpageletter": "!",
        "boteditletter": "^",
-       "rc-enhanced-hide": "起細節",
+       "rc-enhanced-hide": "起細節",
        "recentchangeslinked": "相關其改變",
        "recentchangeslinked-feed": "相關其改變",
        "recentchangeslinked-toolbox": "相關其改變",
        "tooltip-ca-nstab-project": "看工程頁",
        "tooltip-ca-nstab-image": "看文件頁",
        "tooltip-ca-nstab-template": "覷蜀覷模板",
-       "tooltip-minoredit": "共茲標記成過修改",
+       "tooltip-minoredit": "共茲標記成過修改",
        "tooltip-save": "保存汝其改變 [alt-s]",
        "tooltip-preview": "預覽汝其改變,起動敆汝保存以前使茲。",
        "tooltip-watch": "共茲蜀頁加遘汝其監視單[alt-w]",
index 568b3e4..43fe809 100644 (file)
        "content-model-text": "čistý text",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Stránky s duplicitními argumenty ve voláních šablon",
+       "duplicate-args-category-desc": "Stránka obsahuje volání šablony, které používá duplicitní argumenty, např. <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> nebo <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "'''Varování:''' Tato stránka obsahuje příliš mnoho volání výkonnostně náročných funkcí syntaktického analyzátoru.\n\nPovolený limit je $2, v současné chvíli však {{PLURAL:$1|zde jedno volání je|zde jsou $1 volání|zde je $1 volání}}.",
        "expensive-parserfunction-category": "Stránky s příliš mnoho voláními náročných funkcí syntaktického analyzátoru",
        "post-expand-template-inclusion-warning": "Varování: Objem vkládaných šablon je příliš velký.\nNěkteré šablony nebudou vloženy.",
        "gender-female": "Ona upravila článek.",
        "prefs-help-gender": "Toto nastavení je nepovinné.\nSoftware ho používá pro volbu gramatického rodu, když vás oslovuje nebo vás zmiňuje.\nTato informace je veřejná.",
        "email": "E-mail",
-       "prefs-help-realname": "Skutečné jméno je nepovinné.\nPokud se ho rozhodnete uvést, bude použito pro označení autorství vaší práce.",
+       "prefs-help-realname": "Skutečné jméno je nepovinné.\nPokud ho uvedete, může být použito pro označení autorství vaší práce.",
        "prefs-help-email": "Uvedení e-mailu není povinné, ale umožní zaslání nového hesla v případě, že své heslo zapomenete.",
        "prefs-help-email-others": "Také můžete dovolit ostatním uživatelům vás prostřednictvím uživatelské stránky kontaktovat.\nVaše adresa v takovém případě není prozrazena.",
        "prefs-help-email-required": "Je vyžadována e-mailová adresa.",
        "pager-older-n": "{{PLURAL:$1|1 starší|$1 starší|$1 starších}}",
        "suppress": "Dozor",
        "querypage-disabled": "Tato speciální stránka je z výkonnostních důvodů vypnuta.",
+       "apihelp": "Nápověda k API",
+       "apihelp-no-such-module": "Modul „$1“ nebyl nalezen.",
        "booksources": "Zdroje knih",
        "booksources-search-legend": "Vyhledat knižní zdroje",
        "booksources-search": "Hledat",
        "noindex-category-desc": "Stránka není indexována roboty, protože obsahuje kouzelné slovo <code><nowiki>__NOINDEX__</nowiki></code> a je ve jmenném prostoru, ve kterém je tento příznak dovolen.",
        "index-category-desc": "Stránka obsahuje kouzelné slovo <code><nowiki>__INDEX__</nowiki></code> (a je ve jmenném prostoru, ve kterém je tento příznak dovolen), takže je indexována roboty, přestože by normálně nebyla.",
        "post-expand-template-inclusion-category-desc": "Stránka je po rozbalení všech šablon větší než <code>$wgMaxArticleSize</code>, takže některé šablony rozbaleny nebyly.",
-       "post-expand-template-argument-category-desc": "Stránka je po rozbalení argumentu šablony (něco v trojitých závorkách, např. <code>{{{Foo}}})</code> větší než <code>$wgMaxArticleSize</code>.",
+       "post-expand-template-argument-category-desc": "Stránka je po rozbalení argumentu šablony (něco v trojitých závorkách, např. <code>{{{Foo}}}</code>) větší než <code>$wgMaxArticleSize</code>.",
        "expensive-parserfunction-category-desc": "Stránka používá příliš mnoho náročných funkcí syntaktického analyzátoru (jako <code>#ifexist</code>). Vizte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
        "broken-file-category-desc": "Stránka obsahuje nefunkční odkaz na soubor (odkaz pro vložení souboru, který neexistuje).",
        "hidden-category-category-desc": "Kategorie ve svém textu obsahuje <code><nowiki>__HIDDENCAT__</nowiki></code>, což způsobuje, že se na stránkách implicitně nezobrazuje v rámečku odkazů na kategorie.",
        "tooltip-pt-mycontris": "Seznam vašich příspěvků",
        "tooltip-pt-login": "Doporučujeme vám přihlásit se, ovšem není to povinné.",
        "tooltip-pt-logout": "Odhlásit se",
+       "tooltip-pt-createaccount": "Doporučujeme vytvořit si účet a přihlásit se, není to však povinné",
        "tooltip-ca-talk": "Diskuse ke stránce",
        "tooltip-ca-edit": "Tuto stránku můžete editovat. Prosíme použijte tlačítko Ukázat náhled před uložením.",
        "tooltip-ca-addsection": "Začít novou sekci",
        "tooltip-feed-atom": "Atom kanál pro tuto stránku",
        "tooltip-t-contributions": "Prohlédnout si seznam příspěvků tohoto uživatele",
        "tooltip-t-emailuser": "Poslat e-mail tomuto uživateli",
+       "tooltip-t-info": "Více informací o této stránce",
        "tooltip-t-upload": "Nahrát obrázky či jiná multimédia",
        "tooltip-t-specialpages": "Seznam všech speciálních stránek",
        "tooltip-t-print": "Tato stránka v podobě vhodné k tisku",
        "log-name-pagelang": "Kniha změn jazyků",
        "log-description-pagelang": "Toto je protokol změn jazyků stránek.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|změnil|změnila}} jazyk stránky $3 z $4 na $5.",
-       "default-skin-not-found": "Jejda! Výchozí vzhled vaší wiki, definovaný ve <code dir=\"ltr\">$wgDefaultSkin</code> jako <code>$1</code>, není dostupný.\n\nVaše instalace zřejmě obsahuje následující vzhledy. Informace o tom, jak je povolit a vybrat výchozí, najdete na stránce [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_configuration Manual:Skin configuration].\n\n$2\n\n; Pokud jste právě nainstalovali MediaWiki:\n: Zřejmě jste instalovali z gitu nebo nějakým jiným způsobem přímo ze zdrojového kódu. Tak to má fungovat. Zkuste nainstalovat některé vzhledy ze [https://www.mediawiki.org/wiki/Category:All_skins seznamu vzhledů na mediawiki.org] buď:\n:* Můžete si stáhnout [https://www.mediawiki.org/wiki/Special:MyLanguage/Download instalace v tarballu], která zahrnuje několik vzhledů a rozšíření, a vykopírovat si z ní adresář <code dir=\"ltr\">skins/</code>, nebo\n:* Nebo si můžete gitem naklonovat jeden z repozitářů <code>mediawiki/skins/*</code> do adresáře <code>skins/</code> ve vaší instalaci MediaWiki.\n: Pokud jste vývojářem MediaWiki, nemělo by to nijak narušit váš gitový repozitář.\n\n; Pokud jste právě aktualizovali MediaWiki:\n: MediaWiki 1.24 a novější již automaticky nepovolují nainstalované vzhledy (vizte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_autodiscovery Manual:Skin autodiscovery]). Pro povolení všech právě nainstalovaných vzhledů vlepte následující řádky do <code>LocalSettings.php</code>:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Pokud jste právě upravili <code>LocalSettings.php</code>:\n: Překontrolujte případné překlepy v názvech vzhledů.",
+       "default-skin-not-found": "Jejda! Výchozí vzhled vaší wiki, definovaný ve <code dir=\"ltr\">$wgDefaultSkin</code> jako <code>$1</code>, není dostupný.\n\nVaše instalace zřejmě obsahuje následující vzhledy. Informace o tom, jak je povolit a vybrat výchozí, najdete na stránce [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_configuration/cs Manual:Skin configuration].\n\n$2\n\n; Pokud jste právě nainstalovali MediaWiki:\n: Zřejmě jste instalovali z gitu nebo nějakým jiným způsobem přímo ze zdrojového kódu. Tak to má fungovat. Zkuste nainstalovat některé vzhledy ze [https://www.mediawiki.org/wiki/Category:All_skins seznamu vzhledů na mediawiki.org] buď:\n:* Můžete si stáhnout [https://www.mediawiki.org/wiki/Download/cs instalace v tarballu], která zahrnuje několik vzhledů a rozšíření, a vykopírovat si z ní adresář <code dir=\"ltr\">skins/</code>, nebo\n:* Nebo si můžete gitem naklonovat jeden z repozitářů <code>mediawiki/skins/*</code> do adresáře <code>skins/</code> ve vaší instalaci MediaWiki.\n: Pokud jste vývojářem MediaWiki, nemělo by to nijak narušit váš gitový repozitář.\n\n; Pokud jste právě aktualizovali MediaWiki:\n: MediaWiki 1.24 a novější již automaticky nepovolují nainstalované vzhledy (vizte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_autodiscovery/cs Manual:Skin autodiscovery]). Pro povolení všech právě nainstalovaných vzhledů vlepte následující řádky do <code>LocalSettings.php</code>:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Pokud jste právě upravili <code>LocalSettings.php</code>:\n: Překontrolujte případné překlepy v názvech vzhledů.",
        "default-skin-not-found-no-skins": "Jejda! Výchozí vzhled vaší wiki, definovaný ve <code dir=\"ltr\">$wgDefaultSkin</code> jako <code>$1</code>, není dostupný.\n\nNemáte nainstalovány žádné vzhledy.\n\n; Pokud jste právě nainstalovali nebo aktualizovali MediaWiki:\n: Zřejmě jste instalovali z gitu nebo nějakým jiným způsobem přímo ze zdrojového kódu. Tak to má fungovat. MediaWiki 1.24 a novější již v hlavním repozitáři neobsahují žádné vzhledy. Zkuste nainstalovat některé vzhledy ze [https://www.mediawiki.org/wiki/Category:All_skins seznamu vzhledů na mediawiki.org] buď:\n:* Můžete si stáhnout [https://www.mediawiki.org/wiki/Download/cs instalace v tarballu], která zahrnuje několik vzhledů a rozšíření, a vykopírovat si z ní adresář <code>skins/</code>, nebo\n:* Nebo si můžete gitem naklonovat jeden z repozitářů <code>mediawiki/skins/*</code> do adresáře <code dir=\"ltr\">skins/</code> ve vaší instalaci MediaWiki.\n: Pokud jste vývojářem MediaWiki, nemělo by to nijak narušit váš gitový repozitář. Informace o tom, jak povolit vzhledy a vybrat výchozí, najdete na stránce [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_configuration/cs Manual:Skin configuration].",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (povolený)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''zakázaný''')",
index 223f7d1..483db83 100644 (file)
        "tooltip-feed-atom": "Porthiant atom ar gyfer y dudalen hon",
        "tooltip-t-contributions": "Gwelwch restr o gyfraniadau'r defnyddiwr hwn",
        "tooltip-t-emailuser": "Anfonwch e-bost at y defnyddiwr hwn",
+       "tooltip-t-info": "Mwy o wybodaeth am y dudalen hon",
        "tooltip-t-upload": "Uwchlwythwch ffeil delwedd, sain, fideo, ayb",
        "tooltip-t-specialpages": "Rhestr o'r holl dudalennau arbennig",
        "tooltip-t-print": "Cynhyrchwch fersiwn o'r dudalen yn barod at ei hargraffu",
index 481a64e..c3b4416 100644 (file)
        "resetpass-submit-loggedin": "Skift adgangskode",
        "resetpass-submit-cancel": "Annuller",
        "resetpass-wrong-oldpass": "Ugyldig midlertidig eller gældende adgangskode.\nDu har muligvis allerede skiftet din adgangskode eller anmodet om en ny midlertidig kode.",
-       "resetpass-recycled": "Vær venlig at ændre dit kodeord til et andet end dit nuværende kodeord.",
-       "resetpass-temp-emailed": "Du loggede på med en midlertidig kode tilsendt på e-mail.\nFor at afslutte indlogning, skal du oprette et nyt kodeord:",
+       "resetpass-recycled": "Vær venlig at ændre din adgangskode til noget andet end din nuværende adgangskode.",
+       "resetpass-temp-emailed": "Du loggede på med en midlertidig kode tilsendt på e-mail.\nFor at afslutte indlogning, skal du oprette en nyt adgangskode:",
        "resetpass-temp-password": "Midlertidig adgangskode",
        "resetpass-abort-generic": "Ændring af adgangskode er blevet afbrudt af en udvidelse",
-       "resetpass-expired": "Dit kodeord er udløbet. Vær venlig at ændre det til et nyt.",
+       "resetpass-expired": "Din adgangskode er udløbet. Angiv en ny adgangskode for at logge på.",
        "resetpass-expired-soft": "Din adgangskode er udløbet og skal ændres. Vær venlig at ændre den nu, eller tryk \"{{int:resetpass-submit-cancel}}\" for at ændre den senere.",
        "resetpass-validity-soft": "Din adgangskode er ikke gyldig:  $1 \n\nVær venlig at ændre den nu, eller tryk \"{{int:resetpass-submit-cancel}}\" for at ændre den senere.",
        "passwordreset": "Nulstil adgangskode",
index 54ba6b0..7a3bc21 100644 (file)
        "content-model-text": "Klartext",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Seiten, die doppelte Argumente in Vorlagenaufrufe verwenden",
+       "duplicate-args-category-desc": "Die Seite enthält Vorlagenaufrufe, die Duplikate von Argumenten verwenden, wie <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> oder <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "'''Achtung:''' Diese Seite enthält zu viele Aufrufe aufwändiger Parserfunktionen.\n\nSie darf nicht mehr als $2 {{PLURAL:$2|Aufruf|Aufrufe}} haben, es {{PLURAL:$1|ist aktuell $1 Aufruf|sind aktuell $1 Aufrufe}}.",
        "expensive-parserfunction-category": "Seiten, die aufwändige Parserfunktionen zu oft aufrufen",
        "post-expand-template-inclusion-warning": "Warnung: Die Größe eingebundener Vorlagen ist zu groß, einige Vorlagen können nicht eingebunden werden.",
        "gender-female": "Ich bin weiblich",
        "prefs-help-gender": "Dies ist eine freiwillige Angabe.\nDie Software nutzt sie, um dich anzureden sowie als Hinweis für andere durch Verwendung des zutreffenden grammatikalischen Geschlechts.\nDiese Information ist öffentlich.",
        "email": "E-Mail",
-       "prefs-help-realname": "Dies ist eine freiwillige Angabe. Damit kann dein bürgerlicher Name deinen Beiträgen zugeordnet werden.",
+       "prefs-help-realname": "Der bürgerliche Name ist optional.\nFalls angegeben, kann er verwendet werden, um dir eine Zuordnung für deine Beiträge zu geben.",
        "prefs-help-email": "Die Angabe einer E-Mail-Adresse ist optional, ermöglicht aber die Zusendung eines Ersatzpasswortes, sofern du dein Passwort vergessen hast.",
        "prefs-help-email-others": "Mit anderen Benutzern kannst du auch über die Benutzerdiskussionsseiten Kontakt aufnehmen, ohne dass du deine Identität offenlegen musst.",
        "prefs-help-email-required": "Es wird eine gültige E-Mail-Adresse benötigt.",
        "pager-older-n": "{{PLURAL:$1|vorheriger|vorherige $1}}",
        "suppress": "Oversight",
        "querypage-disabled": "Diese Spezialseite wurde aus Gründen der Leistungserhaltung deaktiviert.",
+       "apihelp": "API-Hilfe",
+       "apihelp-no-such-module": "Modul „$1“ nicht gefunden.",
        "booksources": "ISBN-Suche",
        "booksources-search-legend": "Suche nach Bezugsquellen für Bücher",
        "booksources-search": "Suchen",
        "tooltip-pt-mycontris": "Liste eigener Beiträge",
        "tooltip-pt-login": "Sich anzumelden wird zwar gerne gesehen, ist aber keine Pflicht.",
        "tooltip-pt-logout": "Abmelden",
+       "tooltip-pt-createaccount": "Du wirst ermuntert, ein Benutzerkonto zu erstellen und dich anzumelden. Es ist jedoch nicht verpflichtend.",
        "tooltip-ca-talk": "Diskussion zum Seiteninhalt",
        "tooltip-ca-edit": "Seite bearbeiten. Bitte vor dem Speichern die Vorschaufunktion benutzen.",
        "tooltip-ca-addsection": "Neuen Abschnitt beginnen",
        "tooltip-feed-atom": "Atom-Feed dieser Seite",
        "tooltip-t-contributions": "Liste der Beiträge von diesem Benutzer ansehen",
        "tooltip-t-emailuser": "Eine E-Mail an diesen Benutzer senden",
+       "tooltip-t-info": "Weitere Informationen über diese Seite",
        "tooltip-t-upload": "Dateien hochladen",
        "tooltip-t-specialpages": "Liste aller Spezialseiten",
        "tooltip-t-print": "Druckansicht dieser Seite",
        "others": "anderen",
        "siteusers": "{{SITENAME}}-{{PLURAL:$2|Benutzer}} $1",
        "anonusers": "{{PLURAL:$2|unangemeldetem|unangemeldeten}} {{SITENAME}}-{{PLURAL:$2|Benutzer|Benutzern}} $1",
-       "creditspage": "Seiteninformationen",
-       "nocredits": "Für diese Seite sind keine Informationen vorhanden.",
+       "creditspage": "Seitenzuschreibung",
+       "nocredits": "Für diese Seite sind keine Zuschreibungen vorhanden.",
        "spamprotectiontitle": "Spamschutzfilter",
        "spamprotectiontext": "Der Text, die du speichern willst, wurde vom Spamschutzfilter blockiert.\nDas liegt wahrscheinlich an einem Link auf eine externe Seite.",
        "spamprotectionmatch": "'''Der folgende Text wurde vom Spamfilter gefunden: ''$1'''''",
        "unknown_extension_tag": "Unbekanntes Parsertag „$1“",
        "duplicate-defaultsort": "Achtung: Der Sortierungsschlüssel „$2“ überschreibt den vorher verwendeten Schlüssel „$1“.",
        "duplicate-displaytitle": "<strong>Warnung:</strong> Der Anzeigetitel „$2“ überschreibt den früheren Anzeigetitel „$1“.",
+       "invalid-indicator-name": "<strong>Fehler:</strong> Das Attribut <code>name</code> des Seitenstatusindikators darf nicht leer sein.",
        "version": "Version",
        "version-extensions": "Installierte Erweiterungen",
        "version-skins": "Installierte Benutzeroberflächen",
index 250d9fb..ca5d41c 100644 (file)
        "qbfind": "Bıvêne",
        "qbbrowse": "Çım ra viyarne",
        "qbedit": "Bıvurne",
-       "qbpageoptions": "Ena pele",
+       "qbpageoptions": "Ena perer",
        "qbmyoptions": "Pelê mı",
        "faq": "PZP (Persê ke zehf persiyenê)",
        "faqpage": "Project: PZP",
        "edit-local": "Şınasnayışê lokali bıvurne",
        "create": "Vıraze",
        "create-local": "Şınasnayışê lokali cı ke",
-       "editthispage": "Ena pele bıvurne",
+       "editthispage": "Perer bıvurne",
        "create-this-page": "Na pele bınuse",
        "delete": "Bestere",
-       "deletethispage": "Ena pele bestere",
+       "deletethispage": "Perer bestere",
        "undeletethispage": "Na perer mebesterne",
        "undelete_short": "{{PLURAL:$1|Yew vurnayışi|$1 Vurnayışan}} mestere",
        "viewdeleted_short": "{{PLURAL:$1|Yew vurnayışo esterıte|$1 Vurnayışanê esterıtan}} bımocne",
        "protect": "Bışevekne",
        "protect_change": "bıvurne",
-       "protectthispage": "Ena pele bıpawe",
+       "protectthispage": "Perer bıpawe",
        "unprotect": "Starkerdışi bıvurne",
        "unprotectthispage": "Starkerdışe ena peler bıvurne",
        "newpage": "Pela newiye",
-       "talkpage": "Ena pele sero werêne",
+       "talkpage": "Perer sero werêne",
        "talkpagelinktext": "Vatenayış",
        "specialpage": "Pela xısusiye",
        "personaltools": "Hacetê şexsiy",
        "action-createtalk": "pelanê werênayışi bıvıraze",
        "action-createaccount": "hesabê nê karberi bıvıraze",
        "action-minoredit": "nê vurnayışi be qıckek işaret ke",
-       "action-move": "ena pele bere",
+       "action-move": "Perer bere",
        "action-move-subpages": "ena pele, u pelanê daê bınênan bere",
        "action-move-rootuserpages": "pelanê karberiyê bıngeyan bere",
        "action-movefile": "ena dosya bere",
        "action-reupload-shared": "dosyayê ki ho embarê medyayî de esto ser ay binusne",
        "action-upload_by_url": "Ena dosya yew URL ra bar bike",
        "action-writeapi": "ser nuşte API gure bike",
-       "action-delete": "ena pele bestere",
+       "action-delete": "Perer bestere",
        "action-deleterevision": "nê çımraviyarnayışi bestere",
        "action-deletedhistory": "tarixê ena pel ki estereyî biya, ey bivine",
        "action-browsearchive": "pelanê esterıteyan bıgeyre",
-       "action-undelete": "ena pele reyna biyere",
+       "action-undelete": "Perer reyna biyere",
        "action-suppressrevision": "revizyone ki nimnaye biye reyna bivîne u restore bike",
        "action-suppressionlog": "enê qeydê xısusi bıvêne",
        "action-block": "enê karberi vurnayışi ra bıreyne",
        "newpages-username": "Nameyê karberi:",
        "ancientpages": "Wesiqeyê ke vurnayışê ciyê peyeni tewr kehani",
        "move": "Bere",
-       "movethispage": "Ena pele bere",
+       "movethispage": "Perer bere",
        "unusedimagestext": "Enê dosyey estê, feqet zerrey yew pele de wedardey niyê.\nXo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gırê bê, u wına şenê verba gurênayışo feal de tiya hewna lista bê.",
        "unusedcategoriestext": "Kategoriyê ke cêr derê, nê bıbê zi, terefê qet madeyan ya zi kategoriyan ra nêgureniyenê.",
        "notargettitle": "Hedef çini yo",
        "special-categories-sort-count": "goreyê çendi rêz ker.",
        "special-categories-sort-abc": "alfabetik rêz ker",
        "deletedcontributions": "İştiraqê karberan de besternayına",
-       "deletedcontributions-title": "Îştirakê karberî wederna",
+       "deletedcontributions-title": "İştıraqé karberan de besterneyınan",
        "sp-deletedcontributions-contribs": "iştıraqi",
        "linksearch": "Gıreyê teberi cı geyrê",
        "linksearch-pat": "bıgêr motif:",
index ffec586..5578204 100644 (file)
@@ -23,7 +23,7 @@
        "tog-watchmoves": "Zûnta al pàgini e i file spustê int i tgnû 'd ôc specêl.",
        "tog-watchdeletion": "Zûnta al pàgini e i file scanşlê int i tgnû 'd ôc specêl.",
        "tog-watchrollback": "Zûta al pàgini in dóv' ó fât al ritōren a la pàgina 'd préma a i tgnû 'd ôc specêl",
-       "tog-minordefault": "Sògna ògni mudéfica cme céca (sōl cme pre-stabilî)",
+       "tog-minordefault": "Sègna ògni mudéfica cme céca (sōl cme pre-stabilî)",
        "tog-previewontop": "Fà vèder còl ch' ò fât sōver la caşèla ed mudéfica e mìa sòta.",
        "tog-previewonfirst": "Fà vèder còl ch' ò fât almēno 'na vôlta préma 'd salvêr",
        "tog-enotifwatchlistpages": "Mândon un avîş cun la pôsta eletrônica quând a vîn cambiê 'na pàgina o un file preşèint int i tgnû 'd ôc specêl",
        "tog-watchlisthideanons": "Lōga al mudéfichi 'd j utèint sèinsa nòm int i tgnû 'd ôc specêl",
        "tog-watchlisthidepatrolled": "Lōga al mudéfichi verifichêdi int i tgnû 'd ôc specêl",
        "tog-ccmeonemails": "Mândom 'na côpia di mesâg spidî a chiêter utèint",
-       "tog-diffonly": "An fê mia vèder còl che gh'é dèinter int la pàgina dôp al cunfrûnt tr'al versiòun",
+       "tog-diffonly": "An fêr mia vèder còl che gh'é dèinter int la pàgina dôp al cunfrûnt tr'al versiòun",
        "tog-showhiddencats": "Fà vèder al categoréi lughêdi",
-       "tog-norollbackdiff": "An fê mia vèder al cunfrûnt tr' al versiòun dôp avèir fât un \"rollback\"",
+       "tog-norollbackdiff": "An fêr mia vèder al cunfrûnt tr' al versiòun dôp avèir fât un \"rollback\"",
        "tog-useeditwarning": "Avîşom quând a vâgh fōra da 'na pàgina d' mudéfica e an n'ò mìa salvê al mudéfichi fâti",
-       "tog-prefershttps": "Drōva sèimper un colegamèint sicûr quând ét fê l'ingès",
+       "tog-prefershttps": "Drōva sèimper un colegamèint sicûr quând ét fê l'ingrès",
        "underline-always": "Sèimper",
        "underline-never": "Mài",
        "underline-default": "Mantî al j impustasiòun dal navigadōr o 'd la skin",
        "viewsourcelink": "guêrda la surzéia",
        "editsectionhint": "Mudéfica la sesiòn: $1",
        "toc": "Argumèint",
-       "showtoc": "Fà vèder",
+       "showtoc": "fà vèder",
        "hidetoc": "Lōga",
        "collapsible-collapse": "Stréca",
        "collapsible-expand": "Şlêrga",
        "no-null-revision": "An pōl èser fât 'na versiòun mìa vâlida per la pàgina \"$1\"",
        "badtitle": "Tétol mìa curèt.",
        "badtitletext": "Al tétol ed la pàgina serchêda l'é vōd, şbaliê opór al deşvîn da 'n erōr int i colegamèint di côdis o int i colegamèint druvê in wiki. In pió al pré avèir ûn o pió carâter ch'an pōlen mìa èser druvê int i tétol.",
-       "perfcached": "Al j infurmasiòun ché sòta vînen registrêdi int la \"cache\" dal databêş e an pōlen mìa èser arnuvê. Int la \"cache\" a gh'é  un mâsim ed {{PLURAL:$1|un rişultêt |$1 rişultêt}} ch' es pōl/en druvêr.",
-       "perfcachedts": "Al j infurmasiòun ché sòta vînen registrêdi int la \"cache\" dal databêş e l'ûltma vôlta l' è stê arnuvê al  $ 1. Int la \"cache\" a gh'é  un mâsim ed {{PLURAL:$4|un rişultêt |$4 rişultêt}} ch' es pōl/en druvêr.",
+       "perfcached": "Al j infurmasiòun ché sòta vînen registrêdi int la \"cache\" dal databêş e an pōlen mìa èser arnuvê. Int la \"cache\" a gh'é  un mâsim ed {{PLURAL:$1|un rişultêt |$1 rişultêt}} ch' es pōlen druvêr.",
+       "perfcachedts": "Al j infurmasiòun ché sòta vînen registrêdi int la cache dal databêş e l'ûltma vôlta l' è stê arnuvê al  $1. Int la cache a gh'é  un mâsim ed {{PLURAL:$4|un rişultêt |$4 rişultêt}} ch' es pōlen druvêr.",
        "querypage-no-updates": "J arnuvamèint ed la pàgina în p'r al mumèint fērom. Al j infurmasiòun dèinter a la pàgina a gnirân mia arnuvêdi.",
        "viewsource": "Guêrda la surzéia",
        "viewsource-title": "Guêrda la surzéia 'd $1",
        "searchrelated": "coleghê",
        "searchall": "tót",
        "showingresults": "Ed sègvit {{PLURAL:$1|a vîn preşentê al mâsim <strong>1</strong> rişultêt| a vînen preşentê al mâsim <strong>$1</strong> rişultêt}} a partîr dal nómer #<strong>$2</strong>.",
-       "showingresultsinrange": "{{PLURAL:$1|A vîn mustrê| a vînen mustrê}} sòta {{PLURAL:$1|<strong>1</strong> rişultêt|<strong>$1</strong> rişultêt}} dal #<strong>$2</strong> al #<strong>$3</strong>.",
+       "showingresultsinrange": "{{PLURAL:$1|Sòt a vîn mustrê| Sòt a vînen mustrê}}  {{PLURAL:$1|<strong>1</strong> rişultêt|<strong>$1</strong> rişultêt}} dal <strong>$2</strong> al <strong>$3</strong>.",
        "search-showingresults": "{{PLURAL:$4|Rişultêt <strong>$1</strong> ed <strong>$3</strong>|Rişultêt <strong>$1 - $2</strong> ed <strong>$3</strong>}}",
        "search-nonefound": "La sērca an n'à mìa dê di rişultê.",
        "powersearch-legend": "Sèirca specêla",
        "search-external": "Sèirca fâta fōra",
        "searchdisabled": "La sèirca intêrna ed {{SITENAME}} l'a funsiòuna mìa; int al mèinter a s' pōl pruvêr a druvêr un mutōr ed sèirca d'ed fōra cme Google. (A gh' è da nutêr però che còl che gh'é dèinter in {{SITENAME}} che es câten in chi mutōr a prém èser mìa arnuvê.)",
        "search-error": "É sucès un erōr mèinter a's fêva la sèirca:$1",
-       "preferences": "Preferèinsa",
+       "preferences": "Preferèinsi",
        "mypreferences": "Preferèinsi",
        "prefs-edits": "Mudéfichi fâti:",
        "prefsnologintext2": "Es prèiga ed l'ingres per impustêr al tō  preferèinsi 'd utèint.",
        "gender-female": "L'é registrêda in sém a {{SITENAME}}",
        "prefs-help-gender": "L'impustasiòun ed cla preferèinsa ché l'é a siēlta. Al progrâma al drōva cól valōr ché per parlêr cun tè e numinêret cun chiêter cun al druvêr al gèner ed gramâtica gióst. Cl'infurmasiòun ché la srà póblica.",
        "email": "E-mail",
-       "prefs-help-realname": "Druvêr al nòm vèira l'é 'na siēlta personêla; s' es pèinsa 'd druvêrel al gnirâ uşê per dêr la paternitê di lavōr spidî.",
+       "prefs-help-realname": "Al nòm vèira l'é da druvêr a piaşèir. Se druvê, al pōl èser uşê per dêr la paternitê al lavōr fât.",
        "prefs-help-email": "Mèter l'indéris ed la tó pôsta eletrônica an n'é mia necesâri, mó al permèt ed ricêver la cêva 'd ingrès se per chêş ét la scurdés.",
        "prefs-help-email-others": "Ét pō ânca sernîr ed lasêr che chiêter a 's mèten in cuntât  tēgh cun la pôsta eletrônica cun al colegamèint da la tó pàgina utèint o da còla 'd discusiòun.  Al tó indirés al vîn mìa fât savèir a quî ch'ét 's mèten in cuntât tēgh.",
        "prefs-help-email-required": "L'indirés ed pôsta eletrônica l'é ubligatôri.",
        "right-upload": "Cârga un file",
        "right-reupload": "Al scré in sém a 'n file ch' al gh'é bèle",
        "right-reupload-own": "Al scré in sém a 'n file ch' al gh'é bèle carghê da l'istès utèint",
+       "right-reupload-shared": "Al souvrascrév int al pôst file ch' în int l'archévi spartî",
        "right-upload_by_url": "Cârga un file da un indirés URL",
        "right-purge": "Al pulés la memôria pruvişôria dal sît sèinsa cunfērma.",
        "right-autoconfirmed": "An n'é mìa ublighê al lémit 'd asiòun per IP",
        "right-bigdelete": "Scanşèla pàgini cun la stòria 'd la pàgina lònghi",
        "right-deletelogentry": "Al scanşèla e al tōrna mèter vōş ed regéster bèin precîşi",
        "right-deleterevision": "Al lōga versiòun precîşi dal pàgini",
+       "right-deletedhistory": "Al fà vèder al versiòun ed la stòria scanşlêdi sèinsa al tèst che gh'é unî",
+       "right-deletedtext": "Al fà veder al tèst scanşlê e al mudéfichi tr'al versiòun scanşlêdi",
+       "right-browsearchive": "Al sêrca int al pàgini scanşlêdi",
+       "right-undelete": "Recópra 'na pàgina",
+       "right-suppressrevision": "Al vèd, al lōga e al tōra mèter versiòun precîşi dal pàgini a utèint bast' ech sìa",
+       "right-viewsuppressed": "Al vèd versiòun lughêdi a utèint bast' ech sìa",
+       "right-suppressionlog": "Al fà vèder i regéster privê",
+       "right-block": "Blôca al mudéfichi da pêrta 'd êter utèint",
+       "right-blockemail": "L'impidés a 'n utèint de spidîr la pôsta eletrônica",
+       "right-hideuser": "Blôca un nòm utèint, e 'l lōga al póblich",
+       "right-ipblock-exempt": "Al vèd mìa i blôch 'd IP, i blôch avtomâtich e i blôch ed range IP",
        "newuserlogpage": "Utèint nōv",
        "action-read": "lēzer cla pàgina ché",
        "action-edit": "Mudifichêr cla pàgina ché",
index b8ea455..7e6e250 100644 (file)
        "content-model-text": "plain text",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Pages using duplicate arguments in template calls",
+       "duplicate-args-category-desc": "The page contains template calls that use duplicates of arguments, such as <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> or <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "<strong>Warning:</strong> This page contains too many expensive parser function calls.\n\nIt should have less than $2 {{PLURAL:$2|call|calls}}, there {{PLURAL:$1|is now $1 call|are now $1 calls}}.",
        "expensive-parserfunction-category": "Pages with too many expensive parser function calls",
        "post-expand-template-inclusion-warning": "<strong>Warning:</strong> Template include size is too large.\nSome templates will not be included.",
        "gender-female": "She edits wiki pages",
        "prefs-help-gender": "Setting this preference is optional.\nThe software uses its value to address you and to mention you to others using the appropriate grammatical gender.\nThis information will be public.",
        "email": "Email",
-       "prefs-help-realname": "Real name is optional.\nIf you choose to provide it, this will be used for giving you attribution for your work.",
+       "prefs-help-realname": "Real name is optional.\nIf provided, it may be used to give you attribution for your work.",
        "prefs-help-email": "Email address is optional, but is needed for password resets, should you forget your password.",
        "prefs-help-email-others": "You can also choose to let others contact you by email through a link on your user or talk page.\nYour email address is not revealed when other users contact you.",
        "prefs-help-email-required": "Email address is required.",
        "pager-older-n": "{{PLURAL:$1|older 1|older $1}}",
        "suppress": "Oversight",
        "querypage-disabled": "This special page is disabled for performance reasons.",
+       "apihelp": "API help",
+       "apihelp-summary": "",
+       "apihelp-no-such-module": "Module \"$1\" not found.",
+       "apihelp-link": "[[Special:ApiHelp/$1|$2]]",
        "booksources": "Book sources",
        "booksources-summary": "",
        "booksources-search-legend": "Search for book sources",
        "accesskey-pt-mycontris": "y",
        "accesskey-pt-login": "o",
        "accesskey-pt-logout": "",
+       "accesskey-pt-createaccount": "",
        "accesskey-ca-talk": "t",
        "accesskey-ca-edit": "e",
        "accesskey-ca-addsection": "+",
        "accesskey-feed-atom": "",
        "accesskey-t-contributions": "",
        "accesskey-t-emailuser": "",
+       "accesskey-t-info": "",
        "accesskey-t-permalink": "",
        "accesskey-t-print": "p",
        "accesskey-t-upload": "u",
        "tooltip-pt-mycontris": "A list of your contributions",
        "tooltip-pt-login": "You are encouraged to log in; however, it is not mandatory",
        "tooltip-pt-logout": "Log out",
+       "tooltip-pt-createaccount": "You are encouraged to create an account and log in; however, it is not mandatory",
        "tooltip-ca-talk": "Discussion about the content page",
        "tooltip-ca-edit": "You can edit this page. Please use the preview button before saving",
        "tooltip-ca-addsection": "Start a new section",
        "tooltip-feed-atom": "Atom feed for this page",
        "tooltip-t-contributions": "A list of contributions of this user",
        "tooltip-t-emailuser": "Send an email to this user",
+       "tooltip-t-info": "More information about this page",
        "tooltip-t-upload": "Upload files",
        "tooltip-t-specialpages": "A list of all special pages",
        "tooltip-t-print": "Printable version of this page",
        "unknown_extension_tag": "Unknown extension tag \"$1\"",
        "duplicate-defaultsort": "<strong>Warning:</strong> Default sort key \"$2\" overrides earlier default sort key \"$1\".",
        "duplicate-displaytitle": "<strong>Warning:</strong> Display title \"$2\" overrides earlier display title \"$1\".",
+       "invalid-indicator-name": "<strong>Error:</strong> Page status indicators' <code>name</code> attribute must not be empty.",
        "version": "Version",
        "version-summary": "",
        "version-extensions": "Installed extensions",
index 8b1c980..9df939c 100644 (file)
        "logdelete-selected": "{{PLURAL:$1|Selektata protokola evento|Selektataj protokolaj eventoj}}:",
        "revdelete-text-text": "Forigitaj versioj ankoraŭ restas en la versia historio, sed partoj de ilia enhavo ne estas alireblaj por la publiko.",
        "revdelete-text-file": "Forigitaj dosieraj versioj ankoraŭ restas en la dosiera historio, sed partoj de ilia enhavo ne estas alireblaj por la publiko.",
-       "revdelete-text-others": "Aliaj administrantoj sur {{SITENAME}} ankoraŭ havas aliron al la kaŝita enhavo kaj povas malforigi ĝin denove per ĉi tiu sama interfaco, tiel longe kiel aldonaj restriktoj ne estas difinitaj.",
+       "revdelete-text-others": "Aliaj administrantoj ankoraŭ havas aliron al la kaŝita enhavo kaj povas malforigi ĝin, tiel longe kiel aldonaj restriktoj ne estas difinitaj.",
        "revdelete-confirm": "Bonvolu konfirmi ke vi intencias fari ĉi tion, ke vi komprenas la konsekvencojn kaj ke vi faras ĉi tion laŭ [[{{MediaWiki:Policy-url}}|la regularo]].",
        "revdelete-suppress-text": "Subpremo '''nur''' estu uzata por la jenaj kazoj:\n* Ebla kalumnia informo\n* Netaŭga persona informo\n*: ''hejmaj adresoj kaj telefonnumeroj, ŝtataj identnumeroj, ktp.''",
        "revdelete-legend": "Fari videblecajn limigojn",
        "search-result-category-size": "{{PLURAL:$1|1 membro|$1 membroj}} ({{PLURAL:$2|1 subkategorio|$2 subkategorioj}}, {{PLURAL:$3|1 dosiero|$3 dosieroj}})",
        "search-redirect": "(alidirektilo $1)",
        "search-section": "(sekcio $1)",
+       "search-file-match": "(kongruas kun dosiera enhavo)",
        "search-suggest": "Ĉu vi intenciis: $1",
        "search-interwiki-caption": "Kunprojektoj",
        "search-interwiki-default": "Rezultoj de $1:",
        "searchall": "ĉiuj",
        "showingresults": "Montras {{PLURAL:$1|'''1''' trovitan|'''$1''' trovitajn}} ekde la #'''$2'''-a.",
        "showingresultsinrange": "Malsupre montriĝas {{PLURAL:$1|<strong>1</strong> rezulto|<strong>$1</strong> rezultoj}} en la intervalo #<strong>$2</strong> ĝis #<strong>$3</strong>.",
+       "search-showingresults": "{{PLURAL:$4|Rezulto <strong>$1</strong> el <strong>$3</strong>|Rezultoj <strong>$1 - $2</strong> el <strong>$3</strong>}}",
        "search-nonefound": "La serĉomendo rezultis kun neniuj trafoj.",
        "powersearch-legend": "Progresa serĉo",
        "powersearch-ns": "Serĉi en nomspacoj:",
        "preferences": "Preferoj",
        "mypreferences": "Preferoj",
        "prefs-edits": "Nombro de redaktoj:",
-       "prefsnologintext2": "Bonvolu $1, por ŝanĝi viajn preferojn.",
+       "prefsnologintext2": "Bonvolu ensaluti, por ŝanĝi viajn preferojn.",
        "prefs-skin": "Etoso",
        "skin-preview": "Antaŭrigardo",
        "datedefault": "Nenia prefero",
        "querypage-disabled": "Tiu ĉi speciala paĝo estas malfunkciigita pro rendimentaj kialoj.",
        "booksources": "Libroservoj",
        "booksources-search-legend": "Serĉi librofontojn",
+       "booksources-search": "Serĉi",
        "booksources-text": "Jen ligilaro al aliaj TTT-ejoj, kiuj vendas librojn,\nkaj/aŭ informumos pri la libro ligita.\nLa {{SITENAME}} ne estas komerce ligita al tiuj vendejoj, kaj la listo ne estu\nkomprenata kiel rekomendo aŭ reklamo.",
        "booksources-invalid-isbn": "La donata ISBN verŝajne estas nevalida; kontrolu pri erara kopiado el la originala fonto.",
        "specialloguserlabel": "Faranto:",
        "mediastatistics-table-mimetype": "MIME-tipo",
        "mediastatistics-table-count": "Nombro de dosieroj",
        "mediastatistics-header-unknown": "Nekonata",
+       "mediastatistics-header-bitmap": "Rastrumaj bildoj",
+       "mediastatistics-header-drawing": "Desegnaĵoj (vektoraj bildoj)",
        "mediastatistics-header-audio": "Sonaj",
        "mediastatistics-header-video": "Videaj dosieroj",
        "mediastatistics-header-multimedia": "Multmediaj",
        "mediastatistics-header-office": "Oficejaj",
-       "mediastatistics-header-text": "Tekstaj"
+       "mediastatistics-header-text": "Tekstaj",
+       "json-error-syntax": "Sintaksa eraro"
 }
index 1a36046..e69205a 100644 (file)
        "log-name-pagelang": "Registro de cambios en idiomas",
        "log-description-pagelang": "Este es un registro de los cambios en los idiomas de las páginas.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambió}} el idioma de la página «$3» del $4 al $5.",
-       "default-skin-not-found": "¡Oops! La apariencia por defecto de la wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, no está disponible.\n\nLa instalación parece poseer las siguientes opciones de apariencia. Por favor revise [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] para mayor información sobre cómo configurarla y seleccionar la apariencia por defecto.\n\n$2\n\n; Si acaba de instalar MediaWiki:\n: Probablemente la haya instalado desde git, o directamente desde el código fuente usando algún otro método. Esto es lo esperado. Intente instalar algunos sets de apariencia desde [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory]:\n:* Descargando [https://www.mediawiki.org/wiki/Download el instalador tarball], el cual contiene varios sets de apariencia y extensiones. Puede copiar y pegar el directorio <code>skins/</code> desde ahi.\n:* Clonando uno de los repositorios en <code>mediawiki/skins/*</code> via git dentro del directorio <code>skins/</code> de su instaación de MediaWiki.\n: Haciendo esto no debería interferir con su repositorio git si usted es un desarrollador de MediaWiki.\n\n; Si acaba de actualizar MediaWiki:\n: MediaWiki 1.24 y versiones posteriores ya no tiene habilitada la actualización de apariencia (revise [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Puede pegar las siguientes lineas <code>LocalSettings.php</code> para habilitar todos los sets de apariencia que haya configurado:\n\n<pre>$3</pre>\n\n; Si acaba de modificar <code>LocalSettings.php</code>:\n: Compruebe detenidamente posibles errores tipográficos en los nombres de los sets de apariencias.",
-       "default-skin-not-found-no-skins": "¡Vaya! La apariencia predeterminada de tu wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, no está disponible.\n\nNo tienes apariencias instaladas.\n\n; Si has instalado o actualizado MediaWiki recientemente:\n: Probablemente has instalado desde git, o directamente desde el código fuente usando algún otro método. Esto es lo esperado. MediaWiki 1.24 y versiones posteriores no incluyen ninguna apariencia en el repositorio principal. Trata de instalar algunas apariencias desde el [https://www.mediawiki.org/wiki/Category:All_skins directorio de apariencias de mediawiki.org], siguiendo el siguiente procedimiento:\n:* Descarga el [https://www.mediawiki.org/wiki/Download instalador tarball], que viene con varias apariencias y extensiones. Puedes copiar y pegar el directorio <code>skins/</code> desde ahí.\n:* Clonando alguno de los repositorios en <code>mediawiki/skins/*</code> usando git en el directorio <code>skins/</code> de tu instalación de MediaWiki.\n: Hacer esto no debería interferir con tu repositorio de MediaWiki si eres un desarrollador de MediaWiki. Revisa [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] para información sobre cómo habilitar las apariencias y seleccionar la apariencia predeterminada.",
+       "default-skin-not-found": "¡Oops! La apariencia predeterminada de la wiki, definida en <code dir=\"ltr\">$wgDefaultSkin</code> como <code>$1</code>, no está disponible.\n\nLa instalación parece poseer las siguientes apariencias. Revisa [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Configuración de apariencias] para mayor información sobre cómo configurar y seleccionar la apariencia predeterminada.\n\n$2\n\n; Si acabas de instalar MediaWiki:\n: Probablemente la hayas instalado desde git, o directamente desde el código fuente usando algún otro método. Esto es lo esperado. Intenta instalar algunas apariencias desde [https://www.mediawiki.org/wiki/Category:All_skins el directorio de apariencias de mediawiki.org] ya sea:\n:* Descargando [https://www.mediawiki.org/wiki/Download el instalador tarball], el cual contiene varias apariencias y extensiones. Puedes copiar y pegar el directorio <code>skins/</code> desde ahí.\n:* Clonando uno de los repositorios en <code>mediawiki/skins/*</code> via git dentro del directorio <code dir=\"ltr\">skins/</code> de tu instalación de MediaWiki.\n: Hacer esto no debería interferir con tu repositorio git si eres un desarrollador de MediaWiki.\n\n; Si acabas de actualizar MediaWiki:\n: MediaWiki 1.24 y versiones posteriores ya no tiene habilitada la actualización de apariencia (revisa [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Puedes pegar las siguientes líneas en <code>LocalSettings.php</code> para habilitar todas las apariencias instaladas:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Si acabas de modificar <code>LocalSettings.php</code>:\n: Comprueba detenidamente posibles errores tipográficos en los nombres de las apariencias.",
+       "default-skin-not-found-no-skins": "¡Vaya! La apariencia predeterminada de tu wiki, definida en <code>$wgDefaultSkin</code> como <code>$1</code>, no está disponible.\n\nNo tienes apariencias instaladas.\n\n; Si has instalado o actualizado MediaWiki recientemente:\n: Probablemente has instalado desde git, o directamente desde el código fuente usando algún otro método. Esto es lo esperado. MediaWiki 1.24 y versiones posteriores no incluyen ninguna apariencia en el repositorio principal. Trata de instalar algunas apariencias desde el [https://www.mediawiki.org/wiki/Category:All_skins directorio de apariencias de mediawiki.org], siguiendo el siguiente procedimiento:\n:* Descarga el [https://www.mediawiki.org/wiki/Download instalador tarball], que viene con varias apariencias y extensiones. Puedes copiar y pegar el directorio <code>skins/</code> desde ahí.\n:* Clonando alguno de los repositorios en <code>mediawiki/skins/*</code> usando git en el directorio <code dir=\"ltr\">skins/</code> de tu instalación de MediaWiki.\n: Hacer esto no debería interferir con tu repositorio de MediaWiki si eres un desarrollador de MediaWiki. Revisa [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Configuración de apariencias] para información sobre cómo habilitar las apariencias y seleccionar la predeterminada.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activado)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''desactivado''')",
        "mediastatistics": "Estadísticas de multimedia",
        "json-error-ctrl-char": "Error de carácter de control, posiblemente codificada incorrectamente",
        "json-error-syntax": "Error de sintaxis",
        "json-error-utf8": "Los caracteres UTF-8 tienen errores de formato; probablemente la codificación es incorrecta.",
-       "json-error-inf-or-nan": "Uno o más valores NAN o INF en el valor a ser codificado",
-       "json-error-unsupported-type": "Fue dado un valor de un tipo que no puede ser codificado"
+       "json-error-inf-or-nan": "Hay uno o más valores «NAN» o «INF» en el valor que se codificará",
+       "json-error-unsupported-type": "Se proporcionó un valor en un tipo que no se puede codificar"
 }
index aca2b46..2775163 100644 (file)
        "gender-female": "Naine",
        "prefs-help-gender": "Selle eelistuse määramine on valikuline.\nTarkvara kasutab valitud väärtust mõnes keeles, et pöörduda sinu poole ja mainida sind teistele, kasutades soole vastavat sõna või sõnavormi.\nSee teave on avalik.",
        "email": "E-post",
-       "prefs-help-realname": "Vabatahtlik. Kui otsustad päris nime avaldada, kasutatakse seda sinu kaastöö seostamiseks sinuga.",
+       "prefs-help-realname": "Tegelik nimi on valikuline.\nKui avaldatud, võidakse seda kasutada sinu kaastöö seostamiseks sinuga.",
        "prefs-help-email": "E-posti aadressi sisestamine pole kohustuslik, kuid võimaldab sul tellida parooli meeldetuletuse, kui peaksid oma parooli unustama.",
        "prefs-help-email-others": "Võid ka paluda teistel sinu kasutaja- või aruteluleheküljel sinuga ühendust võtta, selle asemel, et peaksid oma isikuandmeid avaldama.",
        "prefs-help-email-required": "E-posti aadress on vajalik.",
        "pager-older-n": "{{PLURAL:$1|vanem 1|vanemad $1}}",
        "suppress": "Varjamine",
        "querypage-disabled": "See erilehekülg on keelatud, et jõudlust hoida.",
+       "apihelp": "API abi",
+       "apihelp-no-such-module": "Moodulit \"$1\" ei leitud.",
        "booksources": "Raamatuotsimine",
        "booksources-search-legend": "Raamatuotsimine",
        "booksources-search": "Otsi",
        "tooltip-pt-mycontris": "Sinu kaastööde loend",
        "tooltip-pt-login": "Me julgustame teid sisse logima, kuid see pole kohustuslik.",
        "tooltip-pt-logout": "Logi välja",
+       "tooltip-pt-createaccount": "See pole küll kohustuslik, aga sul tasub konto luua ja sisse logida.",
        "tooltip-ca-talk": "Selle artikli arutelu",
        "tooltip-ca-edit": "Sa saad seda lehekülge muuta. Palun kasuta enne salvestamist eelvaadet.",
        "tooltip-ca-addsection": "Lisa uus alaosa",
        "tooltip-feed-atom": "Selle lehekülje Atom-voog",
        "tooltip-t-contributions": "Kuva selle kasutaja kaastöö",
        "tooltip-t-emailuser": "Saada sellele kasutajale e-kiri",
+       "tooltip-t-info": "Lisateave selle lehekülje kohta",
        "tooltip-t-upload": "Laadi faile üles",
        "tooltip-t-specialpages": "Erilehekülgede loend",
        "tooltip-t-print": "Selle lehe trükiversioon",
        "mediastatistics-header-office": "Kontoritarkvara failid",
        "mediastatistics-header-text": "Tekstifailid",
        "mediastatistics-header-executable": "Täitmisfailid",
-       "mediastatistics-header-archive": "Tihendatud vormingud"
+       "mediastatistics-header-archive": "Tihendatud vormingud",
+       "json-warn-trailing-comma": "$1 lõpukoma eemaldati JSON-ist.",
+       "json-error-unknown": "JSON-iga oli probleem. Tõrge: $1",
+       "json-error-depth": "Suurim võimalik pinusügavus on ületatud.",
+       "json-error-state-mismatch": "Vigane või väärdunud JSON",
+       "json-error-ctrl-char": "Juhtmärgi tõrge; see võib olla valesti kodeeritud",
+       "json-error-syntax": "Süntaksitõrge",
+       "json-error-utf8": "Väärdunud UTF-8 märgid; need võivad olla valesti kodeeritud",
+       "json-error-recursion": "Vähemalt üks rekursiivne viide kodeeritavas väärtuses",
+       "json-error-inf-or-nan": "Vähemalt üks NAN- või INF-väärtus kodeeritavas väärtuses",
+       "json-error-unsupported-type": "Ette tuli tüüp, mille väärtust ei saa kodeerida"
 }
index 9fb339c..610001c 100644 (file)
        "edit-gone-missing": "Ezin da orria eguneratu. Ezabatu omen dute.",
        "edit-conflict": "Aldaketa gatazka.",
        "edit-no-change": "Zure edizioa baztertu da testua aldatu ez duzulako.",
+       "postedit-confirmation-created": "Orrialdea sortu da.",
+       "postedit-confirmation-restored": "Orrialdea leheneratua izan da.",
        "postedit-confirmation-saved": "Zure aldaketa gorde da.",
        "edit-already-exists": "Ezin izan da orri berria sortu.\nJada existitzen da.",
        "defaultmessagetext": "Testu lehenetsia",
        "rcnotefrom": "Jarraian azaltzen diren aldaketak data honetatik aurrerakoak dira: <b>$2</b> (gehienez <b>$1</b> erakusten dira).",
        "rclistfrom": "Erakutsi $3 $2 ondorengo aldaketa berriak",
        "rcshowhideminor": "$1 aldaketa txikiak",
+       "rcshowhideminor-show": "Erakutsi",
+       "rcshowhideminor-hide": "Ezkutatu",
        "rcshowhidebots": "$1 bot-ak",
-       "rcshowhideliu": "$1 erabiltzaile erregistratuak",
+       "rcshowhidebots-show": "Erakutsi",
+       "rcshowhidebots-hide": "Ezkutatu",
+       "rcshowhideliu": "$1 erregistratutako erabiltzaileak",
+       "rcshowhideliu-show": "Erakutsi",
+       "rcshowhideliu-hide": "Ezkutatu",
        "rcshowhideanons": "$1 erabiltzaile anonimoak",
+       "rcshowhideanons-show": "Erakutsi",
+       "rcshowhideanons-hide": "Ezkutatu",
        "rcshowhidepatr": "$1 patruilatutako aldaketak",
+       "rcshowhidepatr-show": "Erakutsi",
+       "rcshowhidepatr-hide": "Ezkutatu",
        "rcshowhidemine": "$1 nire ekarpenak",
+       "rcshowhidemine-show": "Erakutsi",
+       "rcshowhidemine-hide": "Ezkutatu",
        "rclinks": "Erakutsi azken $2 egunetako $1 aldaketak<br />$3",
        "diff": "ezb",
        "hist": "hist",
        "randomincategory": "Kategoriako ausazko orrialdea",
        "randomincategory-invalidcategory": "\"$1\" ez da kategoria izen baliagarri bat.",
        "randomincategory-nopages": "Ez dago orrialderik [[:Category:$1|$1]] kategorian.",
+       "randomincategory-category": "Kategoria:",
        "randomredirect": "Ausazko birbideratzea",
        "randomredirect-nopages": "Ez dago birzuzenketarik \"$1\" izen-tartean.",
        "statistics": "Estatistikak",
        "wlheader-enotif": "Posta bidezko ohartarazpena gaituta dago.",
        "wlheader-showupdated": "Bisitatu zenituen azken alditik aldaketak izan dituzten orrialdeak '''beltzez''' nabarmenduta daude.",
        "wlnote": "Jarraian {{PLURAL:$2|ikus daiteke azken orduko|ikus daitezke azken '''$2''' orduetako}} azken {{PLURAL:$1|aldaketa|'''$1''' aldaketak}}, $3, $4 gisa.",
-       "wlshowlast": "Erakutsi azken $1 orduak $2 egunak",
+       "wlshowlast": "Erakutsi azken $1 orduak, azken $2 egunak",
        "watchlist-options": "Jarraitze-zerrendaren aukerak",
        "watching": "Zerrendan gehitzen...",
        "unwatching": "Zerrendatik kentzen...",
        "version-hook-name": "Estentsioaren izena",
        "version-hook-subscribedby": "Hauen harpidetzarekin",
        "version-version": "(Bertsioa $1)",
+       "version-no-ext-name": "[izenik gabe]",
        "version-license": "MediaWiki Lizentzia",
        "version-ext-license": "Lizentzia",
        "version-ext-colheader-name": "Luzapena",
        "expand_templates_remove_comments": "Iruzkinak kendu",
        "expand_templates_remove_nowiki": "Ezabatu <nowiki> etiketen emaitzak",
        "expand_templates_generate_xml": "Erakutsi XML parse zuhaitza",
-       "expand_templates_preview": "Aurreikusi"
+       "expand_templates_preview": "Aurreikusi",
+       "pagelang-language": "Hizkuntza",
+       "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte|$1 byte}} ($2; %$3)",
+       "mediastatistics-table-count": "Fitxategi kopurua",
+       "mediastatistics-header-video": "Bideoak",
+       "json-error-syntax": "Sintaxi-errorea"
 }
index e2e5c2b..a56cd54 100644 (file)
                        "Oldstoneage",
                        "Omid.koli",
                        "Alirezaaa",
-                       "Mogoeilor"
+                       "Mogoeilor",
+                       "Hosseinblue"
                ]
        },
-       "tog-underline": "خطکشیدن زیر پیوندها:",
+       "tog-underline": "خط کشیدن زیر پیوندها:",
        "tog-hideminor": "تغییرات جزئی از فهرست تغییرات اخیر پنهان شوند",
        "tog-hidepatrolled": "ویرایش‌های گشت‌خورده از فهرست تغییرات اخیر پنهان شوند",
        "tog-newpageshidepatrolled": "صفحه‌های گشت‌خورده از فهرست صفحه‌های تازه پنهان شوند",
        "protectedpages-timestamp": "برچسب زمان",
        "protectedpages-page": "صفحه",
        "protectedpages-expiry": "انقضا",
-       "protectedpages-performer": "در حال حفاظت از کاربر",
+       "protectedpages-performer": "کاربر حفاظت‌کننده",
        "protectedpages-params": "پارامترهای حفاظت",
        "protectedpages-reason": "دلیل",
        "protectedpages-unknown-timestamp": "ناشناس",
        "contribslink": "مشارکت‌ها",
        "emaillink": "ارسال رایانامه",
        "autoblocker": "به طور خودکار بسته شد چون آی‌پی شما به تازگی توسط کاربر «[[User:$1|$1]]» استفاده شده‌است.\nدلیل قطع دسترسی $1 چنین است \"$2\"",
-       "blocklogpage": "سÛ\8cاÙ\87Ù\87Ù\94 Ø¨Ø³ØªÙ\87â\80\8cشدÙ\86â\80\8cÙ\87ا",
+       "blocklogpage": "سÛ\8cاÙ\87Ù\87Ù\94 Ø¨Ø³ØªÙ\86",
        "blocklog-showlog": "دسترسی این کاربر در گذشته بسته شده‌است.\nسیاههٔ قطع دسترسی در زیر نمایش یافته است:",
        "blocklog-showsuppresslog": "دسترسی این کاربر قبلاً بسته شده و این کاربر پنهان شده‌است.\nسیاههٔ قطع دسترسی در زیر نمایش یافته است:",
        "blocklogentry": "«[[$1]]» را تا $2 بست $3",
        "import-interwiki-templates": "تمام الگوها را شامل شود",
        "import-interwiki-submit": "درون‌ریزی شود",
        "import-interwiki-namespace": "فضای نام مقصد:",
-       "import-interwiki-rootpage": "مقصد صفحه ٔ مبنا (اختیاری):",
+       "import-interwiki-rootpage": "ریشهٔ صفحهٔ مقصد (اختیاری):",
        "import-upload-filename": "نام پرونده:",
        "import-comment": "توضیح:",
        "importtext": "لطفاً پرونده را از ویکی منبع با کمک [[Special:Export|ابزار برون‌بری]] دریافت کنید.\nسپس آن را روی دستگاه‌تان ذخیره کنید و اینجا بارگذاری نمایید.",
        "importuploaderrortemp": "در بارگذاری پروندهٔ درون‌ریزی، اشکال رخ داد.\nپوشهٔ موقت پیدا نشد.",
        "import-parse-failure": "خطا در تجزیهٔ اکس‌ام‌ال بارگذاری‌شده",
        "import-noarticle": "صفحه‌ای برای بارگذاری وجود ندارد!",
-       "import-nonewrevisions": "Ù\87Û\8cÚ\86 Ø¨Ø§Ø²Ø¨Û\8cÙ\86Û\8c Ù\88ارد Ù\86شدÙ\87 (همه یا در حال حاضر وجود دارند، یا به دلیل خطا‌ها نادیده گرفته شده‌اند).",
+       "import-nonewrevisions": "Ù\86سخÙ\87â\80\8cاÛ\8c Ø¯Ø±Ù\88Ù\86â\80\8cرÛ\8cزÛ\8c Ù\86شد (همه یا در حال حاضر وجود دارند، یا به دلیل خطا‌ها نادیده گرفته شده‌اند).",
        "xml-error-string": "$1 در سطر $2، ستون $3 (بایت $4): $5",
        "import-upload": "بارگذاری داده اکس‌ام‌ال",
        "import-token-mismatch": "از دست رفتن اطلاعات نشست کاربری. لطفاً دوباره امتحان کنید.",
index 1e6b4c8..6cf1027 100644 (file)
        "cannotdelete-title": "Sivua $1 ei voi poistaa",
        "delete-hook-aborted": "Laajennuskoodi esti poiston antamatta syytä.",
        "no-null-revision": "Nollamuokkausta sivulla \"$1\" ei voi tehdä",
-       "badtitle": "Virheellinen otsikko",
+       "badtitle": "Kelvoton sivun nimi",
        "badtitletext": "Pyytämäsi sivunimi oli virheellinen, tyhjä tai väärin linkitetty kieltenvälinen tai wikienvälinen nimi.\nSiinä saattaa olla yksi tai useampi sellainen merkki, jota ei voi käyttää sivujen nimissä.",
        "perfcached": "Nämä tiedot ovat välimuistista eivätkä välttämättä ole ajan tasalla. Välimuistissa on saatavilla enintään {{PLURAL:$1|yksi tulos|$1 tulosta}}.",
        "perfcachedts": "Nämä tiedot ovat välimuistista, ja ne on päivitetty viimeksi $1. Välimuistissa on saatavilla enintään {{PLURAL:$4|yksi tulos|$4 tulosta}}.",
        "content-model-text": "pelkkä teksti",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Sivut, jotka käyttävät kaksinkertaisia argumentteja mallinekutsuissa",
        "expensive-parserfunction-warning": "Tällä sivulla on liian monta hitaiden laajennusfunktioiden kutsua.\nKutsuja pitäisi olla alle $2 {{PLURAL:$2|kappale|kappaletta}}, mutta nyt niitä on $1 {{PLURAL:$1|kappale|kappaletta}}.",
        "expensive-parserfunction-category": "Sivut, joissa on liian monta vaativaa jäsenninfunktiota",
        "post-expand-template-inclusion-warning": "'''Varoitus:''' Sisällytettyjen mallineiden koko on liian suuri.\nJoitakin mallineita ei ole sisällytetty.",
        "searchall": "kaikki",
        "showingresults": "Alla on vain {{PLURAL:$1|<strong>1</strong> hakutulos|<strong>$1</strong> hakutulosta}} alkaen tuloksesta nro <strong>$2</strong>.",
        "showingresultsinrange": "Alla näytetään {{PLURAL:$1|<strong>1</strong> tulos|<strong>$1</strong> tulosta}} väliltä <strong>$2</strong> – <strong>$3</strong>.",
-       "search-showingresults": "{{PLURAL:$4|Tulos <strong>$1</strong> enimmäismäärästä <strong>$3</strong>|Tulokset <strong>$1 - $2</strong> enimmäismäärästä <strong>$3</strong>}}",
+       "search-showingresults": "{{PLURAL:$4|Tulos <strong>$1</strong> enimmäismäärästä <strong>$3</strong>|Tulokset <strong>$1  $2</strong> enimmäismäärästä <strong>$3</strong>}}",
        "search-nonefound": "Hakusi ei tuottanut tulosta.",
        "powersearch-legend": "Laajennettu haku",
        "powersearch-ns": "Hae nimiavaruuksista:",
        "gender-female": "Nainen",
        "prefs-help-gender": "Tämän asetuksen määrittäminen on vapaaehtoista.\nOhjelmisto käyttää annettua arvoa viitaten sinuun oikealla kieliopillisella suvulla.\nTämä tieto on julkinen.",
        "email": "Sähköpostitoiminnot",
-       "prefs-help-realname": "Vapaaehtoinen. Nimesi näytetään käyttäjätunnuksesi sijasta sivun tekijäluettelossa.",
+       "prefs-help-realname": "Oikean nimen ilmoittaminen on vapaaehtoista.\nJos ilmoitettu, sitä voidaan käyttää tekijän mainitsemiseen.",
        "prefs-help-email": "Vapaaehtoinen, mutta tarvitaan uuden salasanan pyytämiseen, jos unohdat salasanasi.",
        "prefs-help-email-others": "Voit myös antaa muiden käyttäjien ottaa yhteyttä sinuun sähköpostilla. Osoitteesi ei paljastu toisen käyttäjän ottaessa sinuun yhteyttä.",
        "prefs-help-email-required": "Sähköpostiosoite on pakollinen.",
        "pager-older-n": "{{PLURAL:$1|1 vanhempi|$1 vanhempaa}} →",
        "suppress": "Häivytys",
        "querypage-disabled": "Tämä toimintosivu on poistettu käytöstä suorituskykysyistä.",
+       "apihelp": "API-apu",
+       "apihelp-no-such-module": "Moduulia ”$1” ei löydy.",
        "booksources": "Kirjalähteet",
        "booksources-search-legend": "Etsi kirjalähteitä",
        "booksources-isbn": "ISBN",
        "deletionlog": "poistoloki",
        "reverted": "Palautettu aikaisempaan versioon",
        "deletecomment": "Syy:",
-       "deleteotherreason": "Muu syy tai tarkennus",
+       "deleteotherreason": "Muu syy tai tarkennus:",
        "deletereasonotherlist": "Muu syy",
        "deletereason-dropdown": "* Yleiset poistosyyt\n** Spam tai mainossivu\n** Vandalismi\n** Tekijänoikeusrikkomus\n** Sivun tekijän pyyntö\n** Virheellinen ohjaus",
        "delete-edit-reasonlist": "Muokkaa poistosyitä",
-       "delete-toobig": "Tällä sivulla on pitkä muutoshistoria – yli $1 {{PLURAL:$1|versio|versiota}}. Näin suurien muutoshistorioiden poistamista on rajoitettu suorituskykysyistä.",
+       "delete-toobig": "Tällä sivulla on pitkä muokkaushistoria, yli $1 {{PLURAL:$1|versio|versiota}}. \nTämänkaltaisten sivujen poistamista on rajoitettu. Tällä ehkäistään sivuston {{SITENAME}} vaurioitumista tahattomasti.",
        "delete-warning-toobig": "Tällä sivulla on pitkä muutoshistoria – yli $1 {{PLURAL:$1|versio|versiota}}. Näin suurien muutoshistorioiden poistaminen voi haitata sivuston suorituskykyä.",
        "deleteprotected": "Et voi poistaa tätä sivua, koska se on suojattu.",
        "deleting-backlinks-warning": "'''Varoitus:''' Sivulle, jota olet poistamassa, johtaa [[Special:WhatLinksHere/{{FULLPAGENAME}}|linkkejä muilta sivuilta]], tai sivu on sisällytetty muuhun sivuun.",
        "tooltip-pt-mycontris": "Lista omista muokkauksista",
        "tooltip-pt-login": "Kirjaudu sisään tai luo tunnus",
        "tooltip-pt-logout": "Kirjaudu ulos",
+       "tooltip-pt-createaccount": "On suositeltavaa luoda käyttäjätunnus ja kirjautua sisään. Se ei kuitenkaan ole pakollista.",
        "tooltip-ca-talk": "Keskustele sisällöstä",
        "tooltip-ca-edit": "Muokkaa tätä sivua",
        "tooltip-ca-addsection": "Aloita keskustelu uudesta aiheesta",
        "tooltip-feed-atom": "Atom-syöte tälle sivulle",
        "tooltip-t-contributions": "Näytä lista tämän käyttäjän muokkauksista",
        "tooltip-t-emailuser": "Lähetä sähköpostia tälle käyttäjälle",
+       "tooltip-t-info": "Enemmän tietoa tästä sivusta",
        "tooltip-t-upload": "Tallenna tiedostoja",
        "tooltip-t-specialpages": "Näytä toimintosivut",
        "tooltip-t-print": "Tulostettava versio",
index 4b54e40..3e47489 100644 (file)
        "pager-older-n": "{{PLURAL:$1|plus ancienne|$1 plus anciennes}}",
        "suppress": "Superviser",
        "querypage-disabled": "Cette page spéciale est désactivée pour des raisons de performances.",
+       "apihelp": "Aide de l’API",
+       "apihelp-no-such-module": "Le module « $1 » est introuvable.",
        "booksources": "Ouvrages de référence",
        "booksources-search-legend": "Rechercher parmi des ouvrages de référence",
        "booksources-isbn": "ISBN :",
        "tooltip-pt-mycontris": "La liste de vos contributions",
        "tooltip-pt-login": "Vous êtes encouragé{{GENDER:||e|(e)}} à vous identifier ; ce n'est cependant pas obligatoire.",
        "tooltip-pt-logout": "Se déconnecter",
+       "tooltip-pt-createaccount": "Il vous est conseillé de créer un compte et de vous connecter ; cependant, ce n’est pas obligatoire",
        "tooltip-ca-talk": "Discussion au sujet de cette page de contenu",
        "tooltip-ca-edit": "Vous pouvez modifier cette page.\nVeuillez utiliser le bouton de prévisualisation avant d'enregistrer.",
        "tooltip-ca-addsection": "Commencer une nouvelle section",
        "mediastatistics-table-totalbytes": "Taille combinée",
        "mediastatistics-header-unknown": "Inconnu",
        "mediastatistics-header-bitmap": "Images raster",
-       "mediastatistics-header-drawing": "Desseins (images vectorielles)",
+       "mediastatistics-header-drawing": "Dessins (images vectorielles)",
        "mediastatistics-header-audio": "Audio",
        "mediastatistics-header-video": "Vidéos",
        "mediastatistics-header-multimedia": "Média riche",
index e1b69f4..fb7f9dc 100644 (file)
        "wlheader-enotif": "A notificación por correo electrónico está activada.",
        "wlheader-showupdated": "As páxinas que cambiaron desde a súa última visita móstranse en '''negra'''.",
        "wlnote": "A continuación {{PLURAL:$1|está a última modificación|están as últimas <strong>$1</strong> modificacións}} {{PLURAL:$2|na última hora|nas últimas <strong>$2</strong> horas}} ata o $3 ás $4.",
-       "wlshowlast": "Mostrar as últimas $1 horas, os últimos $2 días ou",
+       "wlshowlast": "Mostrar as últimas $1 horas e os últimos $2 días",
        "watchlist-options": "Opcións de vixilancia",
        "watching": "Vixiando...",
        "unwatching": "Deixando de vixiar...",
index 720bd6f..5aaa843 100644 (file)
@@ -26,7 +26,8 @@
                        "פדיחה",
                        "שומבלע",
                        "תומר ט",
-                       "Matanya"
+                       "Matanya",
+                       "GilCahana"
                ]
        },
        "tog-underline": "סימון קישורים בקו תחתי:",
        "category-empty": "'''קטגוריה זו אינה כוללת דפים או קובצי מדיה.'''",
        "hidden-categories": "{{PLURAL:$1|קטגוריה מוסתרת|קטגוריות מוסתרות}}",
        "hidden-category-category": "קטגוריות מוסתרות",
-       "category-subcat-count": "{{PLURAL:$2|קטגוריה זו כוללת את קטגוריית המשנה הבאה בלבד.|קטגוריה זו כוללת את {{PLURAL:$1|קטגוריית המשנה המוצגת להלן|$1 קטגוריות המשנה המוצגות להלן}}, וכוללת בסך הכול $2 קטגוריות משנה.}}",
+       "category-subcat-count": "{{PLURAL:$2|קטגוריה זו כוללת את קטגוריית המשנה הבאה בלבד.|קטגוריה זו כוללת את {{PLURAL:$1|קטגוריית המשנה המוצגת להלן|$1 קטגוריות המשנה המוצגות להלן}}, וכוללת בסך־הכול $2 קטגוריות משנה.}}",
        "category-subcat-count-limited": "קטגוריה זו כוללת את {{PLURAL:$1|קטגוריית המשנה הבאה|$1 קטגוריות המשנה הבאות}}.",
-       "category-article-count": "{{PLURAL:$2|קטגוריה זו כוללת את הדף הבא בלבד.|קטגוריה זו כוללת את {{PLURAL:$1|הדף המוצג להלן|$1 הדפים המוצגים להלן}}, וכוללת בסך הכול $2 דפים.}}",
+       "category-article-count": "{{PLURAL:$2|קטגוריה זו כוללת את הדף הבא בלבד.|קטגוריה זו כוללת את {{PLURAL:$1|הדף המוצג להלן|$1 הדפים המוצגים להלן}}, וכוללת בסך־הכול $2 דפים.}}",
        "category-article-count-limited": "קטגוריה זו כוללת את {{PLURAL:$1|הדף הבא|$1 הדפים הבאים}}.",
-       "category-file-count": "{{PLURAL:$2|קטגוריה זו כוללת את הקובץ הבא בלבד.|קטגוריה זו כוללת את {{PLURAL:$1|הקובץ המוצג להלן|$1 הקבצים המוצגים להלן}}, וכוללת בסך הכול $2 קבצים.}}",
+       "category-file-count": "{{PLURAL:$2|קטגוריה זו כוללת את הקובץ הבא בלבד.|קטגוריה זו כוללת את {{PLURAL:$1|הקובץ המוצג להלן|$1 הקבצים המוצגים להלן}}, וכוללת בסך־הכול $2 קבצים.}}",
        "category-file-count-limited": "קטגוריה זו כוללת את {{PLURAL:$1|הקובץ הבא|$1 הקבצים הבאים}}.",
        "listingcontinuesabbrev": "(המשך)",
        "index-category": "דפים המופיעים במנועי חיפוש",
        "databaseerror-error": "שגיאה: $1",
        "laggedslavemode": "'''אזהרה:''' הדף עשוי שלא להכיל עדכונים אחרונים.",
        "readonly": "בסיס הנתונים נעול",
-       "enterlockreason": "× ×\90 להזין סיבה לנעילה, כולל הערכה למועד שחרור הנעילה",
+       "enterlockreason": "×\99ש להזין סיבה לנעילה, כולל הערכה למועד שחרור הנעילה",
        "readonlytext": "בסיס נתונים זה של האתר נעול ברגע זה לצורך הזנת נתונים ושינויים. ככל הנראה מדובר בתחזוקה שוטפת, שלאחריה יחזור האתר לפעולתו הרגילה.\n\nמנהל המערכת שנעל את בסיס הנתונים סיפק את ההסבר הבא: $1",
        "missing-article": "בסיס הנתונים לא מצא את הטקסט של הדף שהוא היה אמור למצוא, בשם \"$1\" $2.\n\nהדבר נגרם בדרך כלל על־ידי קישור ישן להשוואת גרסאות של דף שנמחק או לגרסה של דף כזה.\n\nאם זה אינו המקרה, זהו כנראה באג בתוכנה.\nאנא דווחו על כך ל[[Special:ListUsers/sysop|מפעיל מערכת]], תוך שמירת פרטי כתובת ה־URL.",
        "missingarticle-rev": "(מספר גרסה: $1)",
        "actionthrottledtext": "כאמצעי נגד ספאם, קיימת מגבלה על ביצוע פעולה זו פעמים רבות מדי בזמן קצר, וחרגת מהמגבלה הזו.\nנא לנסות שוב בעוד מספר דקות.",
        "protectedpagetext": "דף זה מוגן כדי למנוע עריכה ופעולות אחרות.",
        "viewsourcetext": "באפשרותך לצפות בטקסט המקור של הדף ולהעתיקו:",
-       "viewyourtext": "×\91×\90פשר×\95ת×\9b×\9d ×\9cצפ×\95ת ×\91×\98קס×\98 ×\94×\9eק×\95ר ×©×\9c '''×\94ער×\99×\9b×\95ת ×©×\9c×\9b×\9d''' ×©×\9c ×\94×\93×£ ולהעתיקו:",
+       "viewyourtext": "×\91×\90פשר×\95ת×\9a ×\9cצפ×\95ת ×\91×\98קס×\98 ×\94×\9eק×\95ר ×©×\9c <strong>×\94ער×\99×\9b×\95ת ×©×\9c×\9a</strong> ×\91×\93×£ ×\94×\96×\94 ולהעתיקו:",
        "protectedinterface": "דף זה הוא אחד מסדרת דפים המספקים הודעות מערכת לתוכנה באתר ויקי זה, ומוגן כדי למנוע השחתות.\nכדי להוסיף או לשנות תרגומים בכל אתרי הוויקי, אנא השתמשו ב־[//translatewiki.net/ translatewiki.net], פרויקט התרגום של מדיה־ויקי.",
        "editinginterface": "'''אזהרה:''' הדף שאתם עורכים הוא אחד הדפים המספקים הודעות מערכת לתוכנה.\nשינויים בדף זה ישפיעו על תצוגת ממשק המשתמש של משתמשים אחרים באתר ויקי זה.\nכדי להוסיף או לשנות תרגומים בכל אתרי הוויקי, אנא השתמשו ב־[//translatewiki.net/ translatewiki.net], פרויקט התרגום של מדיה־ויקי.",
        "cascadeprotected": "דף זה מוגן מעריכה כי הוא מוכלל {{PLURAL:$1|בדף הבא, שמופעלת עליו|בדפים הבאים, שמופעלת עליהם}} הגנה מדורגת:\n$2",
-       "namespaceprotected": "×\90×\99× ×\9b×\9d ×\9e×\95רש×\99×\9d ×\9cער×\95×\9a ×\93פ×\99×\9d ×\91×\9eר×\97×\91 ×\94ש×\9d '''$1'''.",
+       "namespaceprotected": "×\90×\99×\9f ×\9c×\9a ×\94רש×\90×\94 ×\9cער×\95×\9a ×\93פ×\99×\9d ×\91×\9eר×\97×\91 ×\94ש×\9d <strong>$1</strong>.",
        "customcssprotected": "אינך מורשה לערוך דף CSS זה כיוון שהוא כולל הגדרות אישיות של משתמש אחר.",
        "customjsprotected": "אינך מורשה לערוך דף JavaScript זה כיוון שהוא כולל הגדרות אישיות של משתמש אחר.",
-       "mycustomcssprotected": "×\90×\99× ×\9b×\9d ×\9e×\95רש×\99×\9d לערוך דף CSS זה.",
-       "mycustomjsprotected": "×\90×\99× ×\9b×\9d ×\9e×\95רש×\99×\9d לערוך דף JavaScript זה.",
+       "mycustomcssprotected": "×\90×\99×\9f ×\9c×\9a ×\94רש×\90×\94 לערוך דף CSS זה.",
+       "mycustomjsprotected": "×\90×\99×\9f ×\9c×\9a ×\94רש×\90×\94 לערוך דף JavaScript זה.",
        "myprivateinfoprotected": "אין לך הרשאה לערוך את המידע הפרטי שלך",
        "mypreferencesprotected": "אין לך הרשאה לערוך את ההעדפות שלך.",
        "ns-specialprotected": "לא ניתן לערוך דפים מיוחדים.",
-       "titleprotected": "לא ניתן ליצור דף זה, כיוון שהמשתמש [[User:$1|$1]] הגן עליו מפני יצירה.\nהסיבה שניתנה לכך היא \"$2\".",
+       "titleprotected": "[[User:$1|$1]] {{GENDER:$1|הפעיל|הפעילה}} הגנה על הדף הזה מפני יצירה.\nהסיבה שניתנה לכך היא \"<em>$2</em>\".",
        "filereadonlyerror": "לא ניתן לשנות את הקובץ \"$1\" כיוון שמאגר הקבצים \"$2\" במצב קריאה בלבד.\n\nמנהל המערכת שנעל את המאגר סיפק את ההסבר הבא: \"'''$3'''\".",
        "invalidtitle-knownnamespace": "כותרת בלתי־תקינה עם מרחב השם \"$2\" ושם דף \"$3\"",
        "invalidtitle-unknownnamespace": "כותרת בלתי־תקינה עם מרחב שם בלתי־ידוע מספר $1 ושם דף \"$2\"",
        "exception-nologin": "לא בחשבון",
        "exception-nologin-text": "אנא היכנסו לחשבון כדי לראות את הדף הזה או לבצע את הפעולה הזו.",
-       "exception-nologin-text-manual": "×\90× ×\90 $1 כדי לראות את הדף הזה או לבצע את הפעולה הזו.",
+       "exception-nologin-text-manual": "× ×\93רשת $1 כדי לראות את הדף הזה או לבצע את הפעולה הזו.",
        "virus-badscanner": "הגדרות שגויות: סורק הווירוסים אינו ידוע: ''$1''",
        "virus-scanfailed": "הסריקה נכשלה (קוד: $1)",
        "virus-unknownscanner": "אנטי־וירוס בלתי ידוע:",
        "emailnotauthenticated": "כתובת הדוא\"ל שלכם עדיין לא אומתה.\nלא יישלח אליכם דוא\"ל עבור אף אחת מהתכונות הבאות.",
        "noemailprefs": "יש לציין כתובת דוא\"ל בהעדפות שלך כדי שתכונות אלה יעבדו.",
        "emailconfirmlink": "אישור כתובת הדוא\"ל שלך",
-       "invalidemailaddress": "×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×\90×\99× ×\94 ×\9eתק×\91×\9cת ×\9b×\99×\95×\95×\9f ×©× ×¨×\90×\94 ×©×\94×\99×\90 ×\91פ×\95ר×\9e×\98 ×\9c×\90 ×\97×\95ק×\99.\n× ×\90 להזין כתובת תקינה או להשאיר את השדה ריק.",
+       "invalidemailaddress": "×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×\90×\99× ×\94 ×\9eתק×\91×\9cת ×\9b×\99×\95×\95×\9f ×©× ×¨×\90×\94 ×©×\94×\99×\90 ×\91פ×\95ר×\9e×\98 ×\9c×\90 ×\97×\95ק×\99.\n×\99ש להזין כתובת תקינה או להשאיר את השדה ריק.",
        "cannotchangeemail": "לא ניתן לשנות את כתובות הדוא\"ל של חשבונות באתר ויקי זה.",
        "emaildisabled": "אתר זה לא יכול לשלוח דואר אלקטרוני.",
        "accountcreated": "החשבון נוצר",
        "changepassword-success": "סיסמתך שונתה בהצלחה!",
        "changepassword-throttled": "ביצעתם לאחרונה ניסיונות רבים מדי להיכנס לחשבון זה.\nאנא המתינו $1 לפני שתנסו שוב.",
        "resetpass_forbidden": "לא ניתן לשנות סיסמאות.",
-       "resetpass-no-info": "×\99ש ×\9c×\94×\99×\9bנס לחשבון כדי לגשת לדף זה באופן ישיר.",
+       "resetpass-no-info": "× ×\93רשת ×\9b× ×\99ס×\94 לחשבון כדי לגשת לדף זה באופן ישיר.",
        "resetpass-submit-loggedin": "שינוי סיסמה",
        "resetpass-submit-cancel": "ביטול",
        "resetpass-wrong-oldpass": "הסיסמה הזמנית או הנוכחית אינה תקינה.\nייתכן שכבר שינית את סיסמתך או שכבר ביקשת סיסמה זמנית חדשה.",
        "passwordreset-emailerror-capture": "נוצר דואר אלקטרוני לאיפוס הסיסמה, והוא מוצג להלן, אך שליחתו ל{{GENDER:$2|משתמש|משתמשת}} נכשלה: $1",
        "changeemail": "שינוי כתובת דוא\"ל",
        "changeemail-text": "מלאו טופס זה כדי לשנות את כתובת הדואר האלקטרוני שלכם. יהיה עליכם למלא סיסמה כדי לאשר את השינוי.",
-       "changeemail-no-info": "×\99ש ×\9c×\94×\99×\9bנס לחשבון כדי לגשת לדף זה ישירות.",
+       "changeemail-no-info": "× ×\93רשת ×\9b× ×\99ס×\94 לחשבון כדי לגשת לדף זה ישירות.",
        "changeemail-oldemail": "כתובת דוא\"ל נוכחית:",
        "changeemail-newemail": "כתובת דוא\"ל חדשה:",
        "changeemail-none": "(אין)",
        "bold_sample": "טקסט מודגש",
        "bold_tip": "טקסט מודגש",
        "italic_sample": "טקסט נטוי",
-       "italic_tip": "טקסט נטוי (לא מומלץ בעברית)",
+       "italic_tip": "טקסט נטוי",
        "link_sample": "קישור",
        "link_tip": "קישור פנימי",
        "extlink_sample": "http://www.example.com כותרת הקישור לתצוגה",
        "anoneditwarning": "<strong>אזהרה:</strong> אינכם מחוברים לחשבון. כתובת ה־IP שלכם תוצג בפומבי אם תבצעו עריכות כלשהן. אם <strong>[$1 תיכנסו לחשבון]</strong> או <strong>[$2 תיצרו חשבון]</strong>, העריכות שלכם תיוחסנה לשם המשתמש שלכם ותקבלו גם יתרונות אחרים.",
        "anonpreviewwarning": "''אינכם מחוברים לחשבון. שמירה תגרום לכתובת ה־IP שלכם להירשם בהיסטוריית העריכות של הדף.''",
        "missingsummary": "<strong>תזכורת:</strong> לא הזנת תקציר עריכה.\nלחיצה חוזרת על הכפתור \"{{int:savearticle}}\" תגרום לעריכה שלך להישמר בלעדיו.",
-       "missingcommenttext": "× ×\90 להקליד את ההודעה למטה.",
+       "missingcommenttext": "×\99ש להקליד את ההודעה למטה.",
        "missingcommentheader": "<strong>תזכורת:</strong> לא הזנת נושא/כותרת להודעה זו.\nלחיצה חוזרת על הכפתור \"{{int:savearticle}}\" תגרום לעריכה שלך להישמר ללא נושא/כותרת.",
        "summary-preview": "תצוגה מקדימה של התקציר:",
        "subject-preview": "תצוגה מקדימה של הנושא/הכותרת:",
        "blockedtext": "'''שם המשתמש או כתובת ה־IP שלכם נחסמו.'''\n\nהחסימה בוצעה על ידי $1. הסיבה שניתנה לכך היא '''$2'''.\n\n* תחילת החסימה: $8\n* פקיעת החסימה: $6\n* החסימה שבוצעה: $7\n\nבאפשרותכם ליצור קשר עם $1 או עם כל אחד מ[[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] האחרים כדי לדון על החסימה.\nאינכם יכולים להשתמש בתכונת \"שליחת דואר אלקטרוני למשתמש זה\" אם לא ציינתם כתובת דוא\"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא\"ל.\nכתובת ה־IP שלכם היא $3, ומספר החסימה שלכם הוא #$5.\nאנא ציינו את כל הפרטים הללו בכל פנייה למפעילי המערכת.",
        "autoblockedtext": "כתובת ה־IP שלכם נחסמה באופן אוטומטי כיוון שמשתמש אחר, שנחסם על־ידי $1, השתמש בה.\nהסיבה שניתנה לחסימה היא:\n\n:<em>$2</em>\n\n* תחילת החסימה: $8\n* פקיעת החסימה: $6\n* החסימה שבוצעה: $7\n\nבאפשרותכם ליצור קשר עם $1 או עם כל אחד מ[[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] האחרים כדי לדון בחסימה.\n\nבאפשרותכם להשתמש בתכונת \"שליחת דואר אלקטרוני למשתמש זה\", אלא אם לא ציינתם כתובת דוא\"ל תקינה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא\"ל.\n\nכתובת ה־IP שלכם היא $3, ומספר החסימה שלכם הוא #$5.\nאנא ציינו את כל הפרטים הללו בכל פנייה למפעילי המערכת.",
        "blockednoreason": "לא ניתנה סיבה",
-       "whitelistedittext": "×¢×\9c×\99×\9b×\9d $1 כדי לערוך דפים.",
+       "whitelistedittext": "× ×\93רשת $1 כדי לערוך דפים.",
        "confirmedittext": "עליכם לאמת את כתובת הדוא\"ל שלכם לפני שתוכלו לערוך דפים. אנא הגדירו ואמתו את כתובת הדוא\"ל שלכם באמצעות [[Special:Preferences|העדפות המשתמש]] שלכם.",
        "nosuchsectiontitle": "הפסקה לא נמצאה",
        "nosuchsectiontext": "ניסית לערוך פסקה שאינה קיימת.\nייתכן שהיא הועברה או נמחקה בעת שצפית בדף.",
        "loginreqtitle": "נדרשת כניסה לחשבון",
-       "loginreqlink": "×\9c×\94×\99×\9bנס לחשבון",
-       "loginreqpagetext": "× ×\90 $1 כדי לצפות בדפים אחרים.",
+       "loginreqlink": "×\9b× ×\99ס×\94 לחשבון",
+       "loginreqpagetext": "× ×\93רשת $1 כדי לצפות בדפים אחרים.",
        "accmailtitle": "הסיסמה נשלחה",
        "accmailtext": "סיסמה אקראית עבור [[User talk:$1|$1]] נשלחה אל $2. ניתן לשנותה בדף '''[[Special:ChangePassword|שינוי הסיסמה]]''' לאחר הכניסה.",
        "newarticle": "(חדש)",
        "userpage-userdoesnotexist": "חשבון המשתמש \"$1\" אינו רשום.\nאנא בדקו אם ברצונכם ליצור/לערוך דף זה.",
        "userpage-userdoesnotexist-view": "חשבון המשתמש \"$1\" אינו רשום.",
        "blocked-notice-logextract": "{{GENDER:$1|המשתמש הזה חסום|המשתמשת הזו חסומה}} כרגע.\nהפעולה האחרונה ביומן החסימות מוצגת להלן:",
-       "clearyourcache": "'''הערה:''' לאחר השמירה, עליכם לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.\n* '''פיירפוקס / ספארי:''' לחצו על Shift בעת לחיצתכם על '''העלה מחדש''' (Reload), או הקישו על ''Ctrl-F5'' או על ''Ctrl-R'' (או על ''<span dir=\"ltr\">⌘-R</span>'' במחשב מק)\n* '''גוגל כרום:''' לחצו על ''Ctrl-Shift-R'' (או על ''<span dir=\"ltr\">⌘-Shift-R</span>'' במק)\n* '''אינטרנט אקספלורר:''' לחצו על Ctrl בעת לחיצתכם על '''רענן''' (Refresh), או הקישו על ''Ctrl-F5''\n* '''אופרה''': נקו את המטמון ב־''Tools‏ ← Preferences''",
+       "clearyourcache": "<strong>הערה:</strong> לאחר השמירה, ייתכן שתצטרכו לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.\n* <strong>פיירפוקס / ספארי:</strong> לחצו והחזיקו את המקש <em>Shift</em> בעת לחיצתכם על <strong>טעינה מחדש</strong> (Reload), או לחצו על צירוף המקשים <em>Ctrl-F5</em> או <em>Ctrl-R</em>&rlm; (<em><span dir=\"ltr\">⌘-R</span></em> במחשב מק)\n* <strong>גוגל כרום:</strong> לחצו על צירוף המקשים <em>Ctrl-Shift-R</em>&rlm; (<em><span dir=\"ltr\">⌘-Shift-R</span></em> במחשב מק)\n* <strong>אינטרנט אקספלורר:</strong> לחצו והחזיקו את המקש <em>Ctrl</em> בעת לחיצתכם על <strong>רענן</strong> (Refresh), או לחצו על צירוף המקשים <em>Ctrl-F5</em>\n* <strong>אופרה:</strong> נקו את המטמון ב־<em>Tools‏ ← Preferences</em>",
        "usercssyoucanpreview": "'''עצה:''' השתמשו בלחצן \"{{int:showpreview}}\" כדי לבחון את גיליון ה־CSS החדש שלכם לפני השמירה.",
        "userjsyoucanpreview": "'''עצה:''' השתמשו בלחצן \"{{int:showpreview}}\" כדי לבחון את סקריפט ה־JavaScript החדש שלכם לפני השמירה.",
        "usercsspreview": "'''זכרו שזו רק תצוגה מקדימה של גיליון ה־CSS שלכם.'''\n'''הוא טרם נשמר!'''",
        "template-semiprotected": "(מוגנת חלקית)",
        "hiddencategories": "דף זה כלול ב{{PLURAL:$1|קטגוריה מוסתרת אחת|־$1 קטגוריות מוסתרות}}:",
        "edittools": "<!-- הטקסט הנכתב כאן יוצג מתחת לטופסי עריכת דפים והעלאת קבצים, ולפיכך ניתן לכתוב להציג בו תווים קשים לכתיבה, קטעים מוכנים של טקסט ועוד. -->",
-       "nocreatetext": "ב{{grammar:תחילית|{{SITENAME}}}} קיימת הגבלה על יצירת דפים חדשים.\nבאפשרותך לחזור אחורה ולערוך דף קיים, או [[Special:UserLogin|להיכנס לחשבון]].",
+       "nocreatetext": "ב{{grammar:תחילית|{{SITENAME}}}} קיימת הגבלה על יצירת דפים חדשים.\nבאפשרותך לחזור אחורה ולערוך דף קיים, או [[Special:UserLogin|להיכנס לחשבון או ליצור חשבון]].",
        "nocreate-loggedin": "אינך מורשה ליצור דפים חדשים.",
        "sectioneditnotsupported-title": "עריכת פסקאות אינה נתמכת",
        "sectioneditnotsupported-text": "עריכת פסקאות אינה נתמכת בדף זה.",
        "content-model-text": "טקסט פשוט",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "דפים שמשתמשים בפרמטרים כפולים בקריאות לתבניות",
+       "duplicate-args-category-desc": "הדף מכיל קריאות לתבניות שמשתמשות בפרמטרים כפולים, כגון <code><nowiki>{{תאריך|יום=1|יום=2}}</nowiki></code> או <code><nowiki>{{שעה|חמש|1=שש}}</nowiki></code>.",
        "expensive-parserfunction-warning": "'''אזהרה:''' דף זה כולל יותר מדי קריאות לפונקציות מפענח שגוזלות משאבים.\n\nנדרש {{PLURAL:$2|שתהיה בו לכל היותר קריאה אחת|שתהיינה בו לכל היותר $2 קריאות}} לפונקציות כאלה, אך כרגע יש בו {{PLURAL:$1|קריאה אחת|$1 קריאות}}.",
        "expensive-parserfunction-category": "דפים עם יותר מדי קריאות למשתנים הגוזלים משאבים",
        "post-expand-template-inclusion-warning": "'''אזהרה:''' התבניות המוכללות בדף זה גדולות מדי.\nחלק מהתבניות לא יוכללו.",
        "suppressionlog": "יומן העלמות",
        "suppressionlogtext": "להלן רשימת המחיקות והחסימות הכוללות תוכן המוסתר ממפעילי המערכת.\nראו את [[Special:BlockList|רשימת החסומים]] לרשימת החסימות הפעילות כעת.",
        "mergehistory": "מיזוג גרסאות של דפים",
-       "mergehistory-header": "×\94×\93×£ ×\94×\96×\94 ×\9e×\90פשר ×\9c×\9a ×\9c×\9e×\96×\92 ×\92רס×\90×\95ת ×\9eת×\95×\9a ×\94×\99ס×\98×\95ר×\99×\99ת ×\92רס×\90×\95ת ×©×\9c ×\93×£ ×\90×\97×\93 ×\9cת×\95×\9a ×\93×£ ×\97×\93ש.\n× ×\90 לוודא שהמיזוג לא יפגע בהמשכיות השינויים בדף הישן.",
+       "mergehistory-header": "×\93×£ ×\96×\94 ×\9e×\90פשר ×\9c×\9a ×\9c×\9e×\96×\92 ×\92רס×\90×\95ת ×\9eת×\95×\9a ×\94×\99ס×\98×\95ר×\99×\99ת ×\92רס×\90×\95ת ×©×\9c ×\93×£ ×\90×\97×\93 (×\93×£ ×\94×\9eק×\95ר) ×\9cת×\95×\9a ×\93×£ ×\97×\93ש.\n×\99ש לוודא שהמיזוג לא יפגע בהמשכיות השינויים בדף הישן.",
        "mergehistory-box": "מיזוג גרסאות של שני דפים:",
        "mergehistory-from": "דף המקור:",
        "mergehistory-into": "דף היעד:",
        "mergehistory-list": "היסטוריית עריכות בת מיזוג",
-       "mergehistory-merge": "× ×\99ת×\9f ×\9c×\9e×\96×\92 ×\90ת ×\94×\92רס×\90×\95ת ×\94×\91×\90×\95ת ×©×\9c [[:$1]] ×\9cת×\95×\9a [[:$2]].\n× ×\90 ×\9c×\94שת×\9eש ×\91×\9c×\97צנ×\99 ×\94×\90פשר×\95ת ×\9b×\93×\99 ×\9c×\91×\97×\95ר ×\96×\9e×\9f ×©×¨×§ ×\92רס×\90×\95ת ×©× ×\95צר×\95 ×\91×\95 ×\95×\9cפנ×\99×\95 ×\99×\9e×\95×\96×\92×\95.\nש×\99×\9e×\95ש ×\91ק×\99ש×\95ר×\99 ×\94× ×\99×\95×\95×\98 ×\99יאפס עמודה זו.",
+       "mergehistory-merge": "× ×\99ת×\9f ×\9c×\9e×\96×\92 ×\90ת ×\94×\92רס×\90×\95ת ×\94×\91×\90×\95ת ×©×\9c [[:$1]] ×\9cת×\95×\9a [[:$2]].\n×\99ש ×\9c×\94שת×\9eש ×\91×\9c×\97צנ×\99 ×\94×\90פשר×\95ת ×\9b×\93×\99 ×\9c×\91×\97×\95ר ×\96×\9e×\9f ×©×¨×§ ×\92רס×\90×\95ת ×©× ×\95צר×\95 ×\91×\95 ×\95×\9cפנ×\99×\95 ×\99×\9e×\95×\96×\92×\95.\nש×\99×\9e×\95ש ×\91ק×\99ש×\95ר×\99 ×\94× ×\99×\95×\95×\98 יאפס עמודה זו.",
        "mergehistory-go": "הצגת עריכות בנות מיזוג",
        "mergehistory-submit": "מיזוג",
        "mergehistory-empty": "אין גרסאות למיזוג.",
        "mergehistory-success": "{{PLURAL:$3|גרסה אחת|$3 גרסאות}} של [[:$1]] מוזגו בהצלחה לתוך [[:$2]].",
-       "mergehistory-fail": "×\9c×\90 × ×\99ת×\9f ×\9c×\91צע ×\90ת ×\9e×\99×\96×\95×\92 ×\94×\92רס×\90×\95ת, × ×\90 לבדוק שנית את הגדרות הדף והזמן.",
+       "mergehistory-fail": "×\9c×\90 × ×\99ת×\9f ×\9c×\91צע ×\90ת ×\9e×\99×\96×\95×\92 ×\94×\92רס×\90×\95ת, ×\99ש לבדוק שנית את הגדרות הדף והזמן.",
        "mergehistory-fail-toobig": "לא ניתן לבצע את מיזוג הגרסאות כיוון שצריך להעביר יותר גרסאות מהמגבלה, שהיא {{PLURAL:$1|גרסה אחת|‏‏֫$1 גרסאות}}.",
        "mergehistory-no-source": "דף המקור $1 אינו קיים.",
        "mergehistory-no-destination": "דף היעד $1 אינו קיים.",
        "nextn-title": "{{PLURAL:$1|התוצאה הבאה|$1 התוצאות הבאות}}",
        "shown-title": "הצגת {{PLURAL:$1|תוצאה אחת|$1 תוצאות}} בדף",
        "viewprevnext": "צפייה ב: ($1 {{int:pipe-separator}} $2) ($3)",
-       "searchmenu-exists": "'''קיים דף בשם \"[[:$1]]\" באתר זה.'''",
-       "searchmenu-new": "<strong>'''יצירת הדף \"[[:$1]]\" באתר הוויקי הזה.'''</strong>\n{{PLURAL:$2|0=|ר' גם את הדף שנמצא בחיפוש.|ר' גם את תוצאות החיפוש.}}",
+       "searchmenu-exists": "<strong>קיים דף בשם \"[[:$1]]\" באתר הוויקי הזה.</strong> {{PLURAL:$2|0=|ר' גם את הדפים האחרים שנמצאו בחיפוש.}}",
+       "searchmenu-new": "<strong>ליצירת הדף \"[[:$1]]\" באתר הוויקי הזה.</strong> {{PLURAL:$2|0=|ר' גם את הדף שנמצא בחיפוש.|ר' גם את הדפים שנמצאו בחיפוש.}}",
        "searchprofile-articles": "דפי תוכן",
        "searchprofile-images": "מולטימדיה",
        "searchprofile-everything": "הכול",
        "preferences": "העדפות",
        "mypreferences": "העדפות",
        "prefs-edits": "מספר עריכות:",
-       "prefsnologintext2": "×\90× ×\90 ×\94×\99×\9bנס×\95 לחשבון כדי לשנות העדפות משתמש.",
+       "prefsnologintext2": "× ×\93רשת ×\9b× ×\99ס×\94 לחשבון כדי לשנות העדפות משתמש.",
        "prefs-skin": "עיצוב",
        "skin-preview": "תצוגה מקדימה",
        "datedefault": "ברירת המחדל",
        "gender-female": "היא עורכת דפים בוויקי",
        "prefs-help-gender": "אין חובה למלא העדפה זו.\nהמערכת משתמשת במידע זה כדי לפנות אליך/אלייך ולציין את שם המשתמש שלך במין הדקדוקי הנכון.\nהמידע יהיה ציבורי.",
        "email": "דוא\"ל",
-       "prefs-help-realname": "×\94ש×\9d ×\94×\90×\9e×\99ת×\99 ×\94×\95×\90 ×\90×\95פצ×\99×\95× ×\90×\9c×\99.\n×\90×\9d ×ª×\91×\97ר×\95 ×\9cספק×\95, ×\94×\95×\90 ×\99ש×\9eש ×\9c×\99×\99×\97×\95ס ×¢×\91×\95×\93ת×\9b×\9d ×\90×\9c×\99×\9b×\9d.",
+       "prefs-help-realname": "×\90×\99×\9f ×\97×\95×\91×\94 ×\9c×\9e×\9c×\90 ×\90ת ×\94ש×\9d ×\94×\90×\9e×\99ת×\99.\n×\94ש×\9d ×\94×\90×\9e×\99ת×\99 ×¢×©×\95×\99 ×\9cש×\9eש ×\9b×\93×\99 ×\9c×\99×\99×\97ס ×\9c×\9a ×\90ת ×¢×\91×\95×\93ת×\9a.",
        "prefs-help-email": "כתובת דואר אלקטרוני היא אופציונאלית, אבל היא חיונית לאיפוס הסיסמה במקרה שתשכחו אותה.",
        "prefs-help-email-others": "באפשרותך גם לבחור לאפשר לאחרים ליצור איתך קשר באמצעות דוא\"ל דרך קישור בדף המשתמש או בדף השיחה שלך.\nכתובת הדוא\"ל שלך לא תיחשף כשמשתמשים אחרים ייצרו קשר איתך.",
        "prefs-help-email-required": "כתובת דואר אלקטרוני נדרשת לכתיבה באתר.",
        "userrights-groupsmember-auto": "{{GENDER:$2|חבר|חברה}} אוטומטית ב{{PLURAL:$1|קבוצה|קבוצות}}:",
        "userrights-groups-help": "באפשרותכם לשנות את הקבוצות שמשתמש זה חבר בהן:\n* תיבה מסומנת פירושה שהמשתמש חבר בקבוצה.\n* תיבה בלתי מסומנת פירושה שהמשתמש אינו חבר בקבוצה.\n* סימון * פירושו שלא תוכלו להסיר משתמש מהקבוצה מרגע שהוספתם אותו אליה, או להפך.",
        "userrights-reason": "סיבה:",
-       "userrights-no-interwiki": "×\90×\99×\9f ×\9c×\9b×\9d הרשאה לערוך הרשאות משתמש באתרים אחרים.",
+       "userrights-no-interwiki": "×\90×\99×\9f ×\9c×\9a הרשאה לערוך הרשאות משתמש באתרים אחרים.",
        "userrights-nodatabase": "בסיס הנתונים $1 אינו קיים או אינו מקומי.",
        "userrights-nologin": "עליכם [[Special:UserLogin|להיכנס לחשבון]] עם הרשאות מתאימות כדי לשנות הרשאות של משתמשים.",
        "userrights-notallowed": "אין לך הרשאה להוסיף או להסיר הרשאות של משתמשים.",
        "uploadbtn": "העלאה",
        "reuploaddesc": "ביטול ההעלאה וחזרה לטופס העלאת קבצים לשרת",
        "upload-tryagain": "שליחת התיאור החדש של הקובץ",
-       "uploadnologin": "לא נכנסתם לחשבון",
-       "uploadnologintext": "×¢×\9c×\99×\9b×\9d $1 כדי להעלות קבצים.",
+       "uploadnologin": "לא נכנסת לחשבון",
+       "uploadnologintext": "× ×\93רשת $1 כדי להעלות קבצים.",
        "upload_directory_missing": "שרת האינטרנט אינו יכול ליצור את תיקיית ההעלאות ($1) החסרה.",
        "upload_directory_read_only": "שרת האינטרנט אינו יכול לכתוב בתיקיית ההעלאות ($1).",
        "uploaderror": "שגיאה בהעלאת הקובץ",
        "tmp-write-error": "שגיאה בכתיבה לקובץ הזמני",
        "large-file": "מומלץ שהקבצים לא יהיו גדולים יותר מ־$1 (גודל הקובץ שהעליתם הוא $2).",
        "largefileserver": "גודל הקובץ חורג ממגבלת השרת.",
-       "emptyfile": "נר×\90×\94 ×©×\94ק×\95×\91×¥ ×©×\94×¢×\9c×\99ת ×¨×\99ק.\n×\99×\99ת×\9b×\9f ×©×\94ס×\99×\91×\94 ×\9c×\9b×\9a ×\94×\99×\90 ×©×\92×\99×\90ת ×\94ק×\9c×\93×\94 ×\91ש×\9d ×\94ק×\95×\91×¥.\n× ×\90 לוודא שזה הקובץ שברצונך להעלות.",
+       "emptyfile": "נר×\90×\94 ×©×\94ק×\95×\91×¥ ×©×\94×¢×\9c×\99ת ×¨×\99ק.\n×\99×\99ת×\9b×\9f ×©×\94ס×\99×\91×\94 ×\9c×\9b×\9a ×\94×\99×\90 ×©×\92×\99×\90ת ×\94ק×\9c×\93×\94 ×\91ש×\9d ×\94ק×\95×\91×¥.\n×\99ש לוודא שזה הקובץ שברצונך להעלות.",
        "windows-nonascii-filename": "אתר ויקי זה אינו תומך בשמות קבצים עם תווים מיוחדים או תווים שאינם באנגלית.",
        "fileexists": "קובץ בשם הזה כבר קיים, אנא בדקו את <strong>[[:$1]]</strong> אם אינכם בטוחים שברצונכם להחליף אותו.\n[[$1|thumb]]",
        "filepageexists": "דף תיאור הקובץ עבור קובץ זה כבר נוצר ב<strong>[[:$1]]</strong>, אך לא קיים קובץ בשם זה.\nתיאור הקובץ שתכתבו לא יופיע בדף תיאור הקובץ.\nכדי לגרום לו להופיע שם, יהיה עליכם לערוך אותו ידנית. [[$1|thumb]]",
        "fileexists-extension": "קובץ עם שם דומה כבר קיים: [[$2|thumb]]\n* שם הקובץ המועלה: <strong>[[:$1]]</strong>\n* שם הקובץ הקיים: <strong>[[:$2]]</strong>\nאולי כדאי לתת לקובץ שם ספציפי יותר?",
-       "fileexists-thumbnail-yes": "נר×\90×\94 ×©×\94ק×\95×\91×¥ ×\94×\95×\90 ×ª×\9e×\95× ×\94 ×\9e×\95ק×\98נת (×\9e×\9e×\95×\96ערת).\n[[$1|thumb]]\n× ×\90 לבדוק את הקובץ <strong>[[:$1]]</strong>.\nאם הקובץ שבדקת הוא אותה התמונה בגודל מקורי, אין זה הכרחי להעלות גם תמונה ממוזערת.",
-       "file-thumbnail-no": "ש×\9d ×\94ק×\95×\91×¥ ×\9eת×\97×\99×\9c ×¢×\9d <strong>$1</strong>.\nנר×\90×\94 ×©×\96×\95×\94×\99 ×ª×\9e×\95× ×\94 ×\9e×\95ק×\98נת (×\9e×\9e×\95×\96ערת).\n×\90×\9d ×\94ת×\9e×\95× ×\94 ×\91×\92×\95×\93×\9c ×\9e×\9c×\90 ×\9eצ×\95×\99×\94 ×\91רש×\95ת×\9a, × ×\90 ×\9c×\94×¢×\9c×\95ת ×\90×\95ת×\94 ×\95×\9c×\90 ×\90ת ×\94ת×\9e×\95× ×\94 ×\94×\9e×\9e×\95×\96ערת; ×\90×\97רת, × ×\90 לשנות את שם הקובץ.",
+       "fileexists-thumbnail-yes": "נר×\90×\94 ×©×\94ק×\95×\91×¥ ×\94×\95×\90 ×ª×\9e×\95× ×\94 ×\9e×\95ק×\98נת (×\9e×\9e×\95×\96ערת).\n[[$1|thumb]]\n×\99ש לבדוק את הקובץ <strong>[[:$1]]</strong>.\nאם הקובץ שבדקת הוא אותה התמונה בגודל מקורי, אין זה הכרחי להעלות גם תמונה ממוזערת.",
+       "file-thumbnail-no": "ש×\9d ×\94ק×\95×\91×¥ ×\9eת×\97×\99×\9c ×\91Ö¾<strong>$1</strong>.\nנר×\90×\94 ×©×\96×\95×\94×\99 ×ª×\9e×\95× ×\94 ×\9e×\95ק×\98נת (×\9e×\9e×\95×\96ערת).\n×\90×\9d ×\94ת×\9e×\95× ×\94 ×\91×\92×\95×\93×\9c ×\9e×\9c×\90 ×\9eצ×\95×\99×\94 ×\91רש×\95ת×\9a, ×\99ש ×\9c×\94×¢×\9c×\95ת ×\90×\95ת×\94 ×\95×\9c×\90 ×\90ת ×\94ת×\9e×\95× ×\94 ×\94×\9e×\9e×\95×\96ערת; ×\90×\97רת, ×\99ש לשנות את שם הקובץ.",
        "fileexists-forbidden": "קובץ בשם זה כבר קיים, ואינכם יכולים להחליף אותו.\nאם אתם עדיין מעוניינים להעלות קובץ זה, אנא חזרו לדף הקודם והעלו את הקובץ תחת שם חדש.\n[[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "קובץ בשם זה כבר קיים כקובץ משותף.\nאם אתם עדיין מעוניינים להעלות קובץ זה, אנא חזרו לדף הקודם והעלו את הקובץ תחת שם חדש.\n[[File:$1|thumb|center|$1]]",
        "file-exists-duplicate": "קובץ זה זהה {{PLURAL:$1|לקובץ הבא|לקבצים הבאים}}:",
-       "file-deleted-duplicate": "ק×\95×\91×¥ ×\96×\94×\94 ×\9cק×\95×\91×¥ ×\96×\94 ([[:$1]]) × ×\9e×\97ק ×\91×¢×\91ר.\n× ×\90 לבדוק את היסטוריית המחיקה של הקובץ לפני העלאתו מחדש.",
-       "file-deleted-duplicate-notitle": "ק×\95×\91×¥ ×\96×\94×\94 ×\9cק×\95×\91×¥ ×\96×\94 × ×\9e×\97ק ×\91×¢×\91ר, ×\95×\94×\9b×\95תרת ×©×\9c×\95 ×\94×\95×¢×\9c×\9e×\94.\n× ×\90 לבקש ממשתמש שיכול לראות נתונים על קבצים שהועלמו לבדוק את המצב לפני העלאת הקובץ מחדש.",
+       "file-deleted-duplicate": "ק×\95×\91×¥ ×\96×\94×\94 ×\9cק×\95×\91×¥ ×\96×\94 ([[:$1]]) × ×\9e×\97ק ×\91×¢×\91ר.\n×\99ש לבדוק את היסטוריית המחיקה של הקובץ לפני העלאתו מחדש.",
+       "file-deleted-duplicate-notitle": "ק×\95×\91×¥ ×\96×\94×\94 ×\9cק×\95×\91×¥ ×\96×\94 × ×\9e×\97ק ×\91×¢×\91ר, ×\95×\94×\9b×\95תרת ×©×\9c×\95 ×\94×\95×¢×\9c×\9e×\94.\n×\99ש לבקש ממשתמש שיכול לראות נתונים על קבצים שהועלמו לבדוק את המצב לפני העלאת הקובץ מחדש.",
        "uploadwarning": "אזהרת העלאת קבצים",
        "uploadwarning-text": "אנא שנו את תיאור הקובץ שלמטה ונסו שוב.",
        "savefile": "שמירת קובץ",
        "copyuploaddisabled": "העלאת קבצים מכתובת URL מבוטלת.",
        "uploaddisabledtext": "אפשרות העלאת הקבצים מבוטלת.",
        "php-uploaddisabledtext": "אפשרות העלאת הקבצים מבוטלת ברמת PHP. אנא בדקו את ההגדרה file_uploads.",
-       "uploadscripted": "הקובץ כולל קוד סקריפט או HTML שעשוי להתפרש או להתבצע בטעות על ידי הדפדפן.",
+       "uploadscripted": "הקובץ כולל קוד סקריפט או HTML שעשוי להתפרש או להתבצע בטעות על־ידי הדפדפן.",
        "uploadscriptednamespace": "קובץ ה‏‏֫־SVG הזה כולל מרחב שם בלתי חוקי: '$1'",
        "uploadinvalidxml": "לא ניתן לפרש את ה־XML בקובץ שהועלה.",
        "uploadvirus": "הקובץ מכיל וירוס!\nפרטים:\n<div dir=\"ltr\">$1</div>",
        "upload-source": "קובץ המקור",
        "sourcefilename": "שם הקובץ:",
        "sourceurl": "כתובת URL של המקור:",
-       "destfilename": "ש×\9e×\95ר קובץ בשם:",
+       "destfilename": "ש×\9e×\99רת ×\94קובץ בשם:",
        "upload-maxfilesize": "גודל הקובץ המרבי: $1",
        "upload-description": "תיאור הקובץ",
        "upload-options": "אפשרויות העלאה",
        "watchthisupload": "מעקב אחרי קובץ זה",
        "filewasdeleted": "קובץ בשם זה כבר הועלה בעבר, ולאחר מכן נמחק. אנא בדקו את הדף $1 לפני שתמשיכו להעלותו שנית.",
-       "filename-bad-prefix": "ש×\9d ×\94ק×\95×\91×¥ ×©×\90ת×\9d ×\9e×¢×\9c×\99×\9d ×\9eת×\97×\99×\9c ×¢×\9d '''\"$1\"''', ×©×\94×\95×\90 ×©×\9d ×©×\90×\99× ×\95 ×\9eת×\90ר ×\90ת ×\94ק×\95×\91×¥ ×\95×\91×\93ר×\9a ×\9b×\9c×\9c ×\9e×\95×\9bנס ×\90×\95×\98×\95×\9e×\98×\99ת ×¢×\9cÖ¾×\99×\93×\99 ×\9eצ×\9c×\9e×\95ת ×\93×\99×\92×\99×\98×\9c×\99×\95ת.\n×\90× ×\90 ×\91×\97ר×\95 שם מתאים יותר לקובץ, שיתאר את תכניו.",
+       "filename-bad-prefix": "ש×\9d ×\94ק×\95×\91×¥ ×©×\90ת×\9d ×\9e×¢×\9c×\99×\9d ×\9eת×\97×\99×\9c ×\91Ö¾<strong>\"$1\"</strong>, ×©×\94×\95×\90 ×©×\9d ×©×\90×\99× ×\95 ×\9eת×\90ר ×\90ת ×\94ק×\95×\91×¥ ×\95×\91×\93ר×\9a ×\9b×\9c×\9c ×\9e×\95קצ×\94 ×\90×\95×\98×\95×\9e×\98×\99ת ×¢×\9cÖ¾×\99×\93×\99 ×\9eצ×\9c×\9e×\95ת ×\93×\99×\92×\99×\98×\9c×\99×\95ת.\n×\99ש ×\9c×\91×\97×\95ר שם מתאים יותר לקובץ, שיתאר את תכניו.",
        "filename-prefix-blacklist": " #<!-- נא להשאיר שורה זו בדיוק כפי שהיא --> <pre>\n# התחביר הוא כדלקמן:\n#   * כל דבר מתו \"#\" לסוף השורה הוא הערה\n#   * כל שורה לא ריקה היא קידומת לשמות קבצים טיפוסיים שמצלמות דיגיטליות נותנות אוטומטית\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # מספר טלפונים סלולריים\nIMG # כללי\nJD # Jenoptik\nMGP # Pentax\nPICT # שונות\n #</pre> <!-- נא להשאיר שורה זו בדיוק כפי שהיא -->",
        "upload-success-subj": "ההעלאה הושלמה בהצלחה",
        "upload-success-msg": "ההעלאה מהכתובת [$2] הושלמה בהצלחה. הקובץ שהעליתם זמין כאן: [[:{{ns:file}}:$1]]",
        "upload-failure-subj": "בעיה בהעלאה",
-       "upload-failure-msg": "הייתה בעיה עם הקובץ שהעליתם מהכתובת [$2]:\n\n$1",
+       "upload-failure-msg": "הייתה בעיה עם הקובץ שהעלית מהכתובת [$2]:\n\n$1",
        "upload-warning-subj": "אזהרה בהעלאה",
        "upload-warning-msg": "הייתה בעיה עם הקובץ שהעליתם מהכתובת [$2]. באפשרותכם לחזור ל[[Special:Upload/stash/$1|טופס ההעלאה]] כדי לתקן בעיה זו.",
        "upload-proto-error": "פרוטוקול שגוי",
        "shared-repo": "מקום איחסון משותף",
        "shared-repo-name-wikimediacommons": "ויקישיתוף",
        "filepage.css": "/* הסגנונות הנכתבים כאן יוכללו בדף תיאור הקובץ, כולל באתרי ויקי זרים */",
-       "upload-disallowed-here": "×\90×\99×\9f ×\91×\90פשר×\95ת×\9b×\9d לדרוס את הקובץ הזה.",
+       "upload-disallowed-here": "×\90×\99×\9f ×\91×\90פשר×\95ת×\9a לדרוס את הקובץ הזה.",
        "filerevert": "שחזור $1",
        "filerevert-legend": "שחזור קובץ",
        "filerevert-intro": "אתם עומדים לשחזר את הקובץ '''[[Media:$1|$1]]''' ל[$4 גרסה מ־$3, $2].",
        "filerevert-comment": "סיבה:",
        "filerevert-defaultcomment": "שוחזר לגרסה מ־$2, $1",
        "filerevert-submit": "שחזור",
-       "filerevert-success": "'''[[Media:$1|$1]]''' שוחזר ל[$4 גרסה מ־$3, $2].",
+       "filerevert-success": "<strong>[[Media:$1|$1]]</strong> שוחזר ל[$4 גרסה מ־$3, $2].",
        "filerevert-badversion": "אין גרסה מקומית קודמת של הקובץ שהועלתה בתאריך המבוקש.",
        "filedelete": "מחיקת $1",
        "filedelete-legend": "מחיקת קובץ",
        "pager-older-n": "{{PLURAL:$1|הקודמת|$1 הקודמות}}",
        "suppress": "הסתרה",
        "querypage-disabled": "דף מיוחד זה מבוטל עקב בעיות ביצועים.",
+       "apihelp": "עזרה עבור ה־API",
+       "apihelp-no-such-module": "המודול \"$1\" לא נמצא.",
        "booksources": "משאבי ספרות חיצוניים",
        "booksources-search-legend": "חיפוש משאבי ספרות חיצוניים",
        "booksources-isbn": "מסת\"ב (ISBN):",
        "noemailtext": "משתמש זה לא הזין כתובת דואר אלקטרוני תקינה.",
        "nowikiemailtext": "משתמש זה בחר שלא לקבל דואר אלקטרוני ממשתמשים אחרים.",
        "emailnotarget": "שם המשתמש של הנמען לא קיים או בלתי תקין.",
-       "emailtarget": "× ×\90 להזין את שם המשתמש של הנמען",
+       "emailtarget": "×\99ש להזין את שם המשתמש של הנמען",
        "emailusername": "שם משתמש:",
        "emailusernamesubmit": "שליחה",
        "email-legend": "שליחת דואר אלקטרוני למשתמש אחר של {{SITENAME}}",
        "mywatchlist": "רשימת מעקב",
        "watchlistfor2": "עבור $1 $2",
        "nowatchlist": "אין דפים ברשימת המעקב.",
-       "watchlistanontext": "×\90× ×\90 ×\94×\99×\9bנס×\95 לחשבון כדי לצפות או לערוך פריטים ברשימת המעקב.",
+       "watchlistanontext": "× ×\93רשת ×\9b× ×\99ס×\94 לחשבון כדי לצפות או לערוך פריטים ברשימת המעקב.",
        "watchnologin": "לא נכנסת לחשבון",
        "addwatch": "הוספה לרשימת המעקב",
        "addedwatchtext": "הדף \"[[:$1]]\" נוסף ל[[Special:Watchlist|רשימת המעקב]].\nשינויים שייערכו בעתיד בדף זה ובדף השיחה שלו, יוצגו ברשימת המעקב.",
        "protect-expiring-local": "פוקעת $1",
        "protect-expiry-indefinite": "בלתי מוגבלת בזמן",
        "protect-cascade": "הגנה על כל הדפים המוכללים בדף זה (הגנה מדורגת)",
-       "protect-cantedit": "×\90×\99× ×\9b×\9d ×\99×\9b×\95×\9c×\99×\9d ×\9cשנ×\95ת ×\90ת ×¨×\9eת ×\94×\94×\92× ×\94 ×¢×\9c ×\93×£ ×\96×\94, ×\9b×\99×\95×\95×\9f ×©×\90×\99×\9f ×\9c×\9b×\9d הרשאה לערוך אותו.",
+       "protect-cantedit": "×\90×\99×\9f ×\91×\90פשר×\95ת×\9a ×\9cשנ×\95ת ×\90ת ×¨×\9eת ×\94×\94×\92× ×\94 ×¢×\9c ×\93×£ ×\96×\94 ×\9b×\99×\95×\95×\9f ×©×\90×\99×\9f ×\9c×\9a הרשאה לערוך אותו.",
        "protect-othertime": "זמן אחר:",
        "protect-othertime-op": "זמן אחר",
        "protect-existing-expiry": "זמן פקיעה נוכחי: $3, $2",
        "locknoconfirm": "לא סימנת את תיבת האישור.",
        "lockdbsuccesssub": "נעילת בסיס הנתונים הושלמה בהצלחה",
        "unlockdbsuccesssub": "שוחררה הנעילה מבסיס הנתונים",
-       "lockdbsuccesstext": "×\91ס×\99ס ×\94נת×\95× ×\99×\9d × × ×¢×\9c.<br />\n× ×\90 לזכור [[Special:UnlockDB|לשחרר את הנעילה]] לאחר שפעולת התחזוקה תסתיים.",
+       "lockdbsuccesstext": "×\91ס×\99ס ×\94נת×\95× ×\99×\9d × × ×¢×\9c.<br />\n×\99ש לזכור [[Special:UnlockDB|לשחרר את הנעילה]] לאחר שפעולת התחזוקה תסתיים.",
        "unlockdbsuccesstext": "שוחררה הנעילה של בסיס הנתונים",
        "lockfilenotwritable": "קובץ נעילת בסיס הנתונים אינו ניתן לכתיבה. כדי שאפשר יהיה לנעול את בסיס הנתונים או לבטל את נעילתו, שרת האינטרנט צריך לקבל הרשאות לכתוב אליו.",
        "databasenotlocked": "בסיס הנתונים אינו נעול.",
        "movearticle": "העברת דף:",
        "moveuserpage-warning": "'''אזהרה:''' אתם עומדים להעביר דף משתמש. שימו לב שרק הדף יועבר וששם המשתמש '''לא''' ישתנה.",
        "movecategorypage-warning": "<strong>אזהרה:</strong> אתם עומדים להעביר דף קטגוריה. שימו לב שרק הדף יועבר ושכל הדפים בקטגוריה הישנה <strong>לא</strong> יסווגו לקטגוריה החדשה.",
-       "movenologintext": "עליכם [[Special:UserLogin|להיכנס לחשבון]] כדי להעביר דפים.",
+       "movenologintext": "עליכם להיות רשומים ו[[Special:UserLogin|להיכנס לחשבון]] כדי להעביר דפים.",
        "movenotallowed": "אין לך הרשאה להעביר דפים.",
        "movenotallowedfile": "אין לך הרשאה להעביר קבצים.",
        "cant-move-user-page": "אין לך הרשאה להעביר דפי משתמש (למעט דפי משנה).",
        "delete_and_move": "מחיקה והעברה",
        "delete_and_move_text": "== בקשת מחיקה ==\nדף היעד, \"[[:$1]]\", כבר קיים.\nהאם ברצונך למחוק אותו כדי לאפשר את ההעברה?",
        "delete_and_move_confirm": "אישור מחיקת הדף",
-       "delete_and_move_reason": "×\9e×\97×\99ק×\94 ×\9b×\93×\99 ×\9c×\90פשר ×\94×¢×\91ר×\94 ×\9e×\94×\9b×\95תרת \"[[$1]]\"",
+       "delete_and_move_reason": "×\9e×\97×\99ק×\94 ×\9b×\93×\99 ×\9c×\90פשר ×\94×¢×\91ר×\94 ×\9e×\94ש×\9d \"[[$1]]\"",
        "selfmove": "כותרות המקור והיעד זהות; לא ניתן להעביר דף לעצמו.",
        "immobile-source-namespace": "לא ניתן להעביר דפים במרחב השם \"$1\"",
        "immobile-target-namespace": "לא ניתן להעביר דפים למרחב השם \"$1\"",
        "protectedpagemovewarning": "'''אזהרה:''' דף זה מוגן כך שרק מפעילי מערכת יכולים להעביר אותו.\nפעולת היומן האחרונה מוצגת להלן:",
        "semiprotectedpagemovewarning": "'''הערה:''' דף זה מוגן כך שרק משתמשים רשומים יכולים להעביר אותו.\nפעולת היומן האחרונה מוצגת להלן:",
        "move-over-sharedrepo": "== הקובץ קיים ==\n[[:$1]] כבר קיים כקובץ משותף. העברת הקובץ לכותרת זו תדרוס את הקובץ המשותף.",
-       "file-exists-sharedrepo": "ק×\95×\91×¥ ×\91ש×\9d ×©× ×\91×\97ר ×\9b×\91ר ×§×\99×\99×\9d ×\9bק×\95×\91×¥ ×\9eש×\95תף.\n× ×\90 לבחור שם אחר.",
+       "file-exists-sharedrepo": "ק×\95×\91×¥ ×\91ש×\9d ×©× ×\91×\97ר ×\9b×\91ר ×§×\99×\99×\9d ×\9bק×\95×\91×¥ ×\9eש×\95תף.\n×\99ש לבחור שם אחר.",
        "export": "ייצוא דפים",
        "exporttext": "באפשרותכם לייצא את התוכן ואת היסטוריית העריכה של דף אחד או של מספר דפים, בתבנית של קובץ XML.\nניתן לייבא את הקובץ למיזם ויקי אחר המשתמש בתוכנת מדיה־ויקי באמצעות [[Special:Import|דף הייבוא]].\n\nכדי לייצא דפים, הקישו את שמותיהם בתיבת הטקסט שלהלן, כל שם בשורה נפרדת, ובחרו האם לייצא גם את הגרסה הנוכחית וגם את היסטוריית השינויים של הדפים, או רק את הגרסה הנוכחית עם מידע על העריכה האחרונה.\n\nבנוסף, ניתן להשתמש בקישור, כגון [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] לדף [[{{MediaWiki:Mainpage}}]] ללא היסטוריית השינויים שלו.",
        "exportall": "ייצוא כל הדפים",
        "tooltip-pt-mycontris": "רשימת התרומות שלך",
        "tooltip-pt-login": "מומלץ להירשם, אך אין חובה לעשות כן",
        "tooltip-pt-logout": "יציאה מהחשבון",
+       "tooltip-pt-createaccount": "מומלץ ליצור חשבון ולהיכנס אליו; עם זאת, זו אינה חובה",
        "tooltip-ca-talk": "שיחה על דף זה",
        "tooltip-ca-edit": "באפשרותכם לערוך דף זה. אנא השתמשו בלחצן \"תצוגה מקדימה\" לפני השמירה",
        "tooltip-ca-addsection": "הוספת פסקה חדשה",
        "tooltip-n-randompage": "צפייה בדף תוכן אקראי",
        "tooltip-n-help": "עזרה בשימוש באתר",
        "tooltip-t-whatlinkshere": "רשימת כל הדפים המקושרים לכאן",
-       "tooltip-t-recentchangeslinked": "×\94ש×\99× ×\95×\99×\99×\9d ×\94×\90×\97ר×\95× ×\99×\9d ×©×\91×\95צע×\95 ×\91×\93פ×\99×\9d ×\94×\9eק×\95שר×\99×\9d ×\9c×\9b×\90×\9f",
+       "tooltip-t-recentchangeslinked": "×\94ש×\99× ×\95×\99×\99×\9d ×\94×\90×\97ר×\95× ×\99×\9d ×©×\91×\95צע×\95 ×\91×\93פ×\99×\9d ×\94×\9eק×\95שר×\99×\9d ×\9e×\93×£ ×\96×\94",
        "tooltip-feed-rss": "הזנת RSS עבור דף זה",
        "tooltip-feed-atom": "הזנת Atom עבור דף זה",
        "tooltip-t-contributions": "תרומותיו של משתמש זה",
        "tooltip-t-emailuser": "שליחת דואר אלקטרוני למשתמש זה",
+       "tooltip-t-info": "מידע נוסף על דף זה",
        "tooltip-t-upload": "העלאת קבצים",
        "tooltip-t-specialpages": "רשימת כל הדפים המיוחדים",
        "tooltip-t-print": "גרסה להדפסה של דף זה",
        "exif-originalimageheight": "גובה התמונה לפני קיטוע",
        "exif-originalimagewidth": "רוחב התמונה לפני קיטוע",
        "exif-compression-1": "לא דחוס",
-       "exif-compression-2": "ק×\99×\93×\95×\93 ×\94×\95פ×\9e×\9f ×\9e×\95×\90תם חד־מימדי לאורך ריצה CCITT קבוצה 3",
+       "exif-compression-2": "ק×\99×\93×\95×\93 ×\94×\95פ×\9e×\9f ×\9e×\95ת×\90ם חד־מימדי לאורך ריצה CCITT קבוצה 3",
        "exif-compression-3": "קידוד פקס CCITT קבוצה 3",
        "exif-compression-4": "קידוד פקס CCITT קבוצה 4",
        "exif-compression-6": "JPEG (ישן)",
        "exif-lightsource-3": "טונגסטן (אור מתלהט)",
        "exif-lightsource-4": "מַבזק",
        "exif-lightsource-9": "מזג־אוויר נאה",
-       "exif-lightsource-10": "מזג אוויר מעונן",
+       "exif-lightsource-10": "מזג־אוויר מעונן",
        "exif-lightsource-11": "צל",
        "exif-lightsource-12": "אור יום פלואורסצנטי (D 5700 – 7100K)",
        "exif-lightsource-13": "אור יום לבן פלואורסצנטי (N 4600 – 5400K)",
        "confirmemail_oncreate": "קוד אימות דוא\"ל נשלח לכתובת הדוא\"ל שלכם. הקוד הזה אינו נדרש לכניסה, אך תצטרכו לספקו כדי להשתמש בכל תכונה מבוססת דוא\"ל באתר זה.",
        "confirmemail_sendfailed": "{{SITENAME}} לא הצליח לשלוח לכם הודעת דוא\"ל עם קוד האימות.\nאנא בדקו שאין תווים שגויים בכתובת הדוא\"ל.\n\nתוכנת שליחת הדוא\"ל החזירה את ההודעה הבאה: $1",
        "confirmemail_invalid": "קוד האימות שגוי. ייתכן שפג תוקפו.",
-       "confirmemail_needlogin": "×¢×\9c×\99×\9b×\9d $1 ×\9b×\93×\99 ×\9c×\90×\9eת ×\90ת ×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c×\9b×\9d.",
+       "confirmemail_needlogin": "× ×\93רשת $1 ×\9b×\93×\99 ×\9c×\90×\9eת ×\90ת ×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c×\9a.",
        "confirmemail_success": "כתובת הדוא\"ל שלך אושרה.\nכעת באפשרותך [[Special:UserLogin|להיכנס לחשבון שלך]] וליהנות מהאתר.",
        "confirmemail_loggedin": "כתובת הדוא\"ל שלך אושרה כעת.",
        "confirmemail_subject": "קוד אימות דוא\"ל מ{{grammar:תחילית|{{SITENAME}}}}",
        "scarytranscludefailed-httpstatus": "[אחזור התבנית נכשל עבור $1&rlm;: HTTP $2]",
        "scarytranscludetoolong": "[כתובת ה־URL ארוכה מדי]",
        "deletedwhileediting": "<strong>אזהרה:</strong> דף זה נמחק לאחר שהתחלת לערוך!",
-       "confirmrecreate": "×\94{{GENDER:$1|×\9eשת×\9eש|×\9eשת×\9eשת}} [[User:$1|$1]] ([[User talk:$1|ש×\99×\97×\94]]) {{GENDER:$1|×\9e×\97ק|×\9e×\97ק×\94}} ×\90ת ×\94×\93×£ ×\94×\96×\94 ×\9c×\90×\97ר ×©×\94ת×\97×\9cת ×\9cער×\95×\9a ×\90×\95ת×\95, ×\9e×\94ס×\99×\91×\94 ×\94×\91×\90×\94:\n: <em>$2</em>\n× ×\90 ×\9c×\90שר ×©ברצונך ליצור מחדש את הדף.",
-       "confirmrecreate-noreason": "×\94{{GENDER:$1|×\9eשת×\9eש|×\9eשת×\9eשת}} [[User:$1|$1]] ([[User talk:$1|ש×\99×\97×\94]]) {{GENDER:$1|×\9e×\97ק|×\9e×\97ק×\94}} ×\90ת ×\94×\93×£ ×\94×\96×\94 ×\9c×\90×\97ר ×©×\94ת×\97×\9cת ×\9cער×\95×\9a ×\90×\95ת×\95. × ×\90 ×\9c×\90שר ×©ברצונך ליצור מחדש את הדף.",
+       "confirmrecreate": "×\94{{GENDER:$1|×\9eשת×\9eש|×\9eשת×\9eשת}} [[User:$1|$1]] ([[User talk:$1|ש×\99×\97×\94]]) {{GENDER:$1|×\9e×\97ק|×\9e×\97ק×\94}} ×\90ת ×\94×\93×£ ×\94×\96×\94 ×\9c×\90×\97ר ×©×\94ת×\97×\9cת ×\9cער×\95×\9a ×\90×\95ת×\95, ×\9e×\94ס×\99×\91×\94 ×\94×\91×\90×\94:\n: <em>$2</em>\n×\99ש ×\9c×\90שר ×©×\90×\9b×\9f ברצונך ליצור מחדש את הדף.",
+       "confirmrecreate-noreason": "×\94{{GENDER:$1|×\9eשת×\9eש|×\9eשת×\9eשת}} [[User:$1|$1]] ([[User talk:$1|ש×\99×\97×\94]]) {{GENDER:$1|×\9e×\97ק|×\9e×\97ק×\94}} ×\90ת ×\94×\93×£ ×\94×\96×\94 ×\9c×\90×\97ר ×©×\94ת×\97×\9cת ×\9cער×\95×\9a ×\90×\95ת×\95. ×\99ש ×\9c×\90שר ×©×\90×\9b×\9f ברצונך ליצור מחדש את הדף.",
        "recreate": "יצירה מחדש",
        "confirm_purge_button": "אישור",
        "confirm-purge-top": "לנקות את המטמון של דף זה?",
        "lag-warn-high": "בגלל עיכוב בעדכון בסיס הנתונים, שינויים שבוצעו לפני פחות מ{{PLURAL:$1|שנייה אחת|־$1 שניות}} אינם מוצגים ברשימה זו.",
        "watchlistedit-normal-title": "עריכת רשימת המעקב",
        "watchlistedit-normal-legend": "הסרת דפים מרשימת המעקב",
-       "watchlistedit-normal-explain": "×\9b×\9c ×\94×\93פ×\99×\9d ×\91רש×\99×\9eת ×\94×\9eעק×\91 ×\9e×\95צ×\92×\99×\9d ×\9c×\94×\9c×\9f.\n×\9b×\93×\99 ×\9c×\94ס×\99ר ×\93×£, ×\99ש ×\9cס×\9e×\9f ×\90ת ×\94ת×\99×\91×\94 ×\9c×\99×\93×\95, ×\95×\9c×\9c×\97×\95×¥ ×¢×\9c \"{{int:Watchlistedit-normal-submit}}\".\n×\91×\90פשר×\95ת×\9b×\9d גם [[Special:EditWatchlist/raw|לערוך את הרשימה הגולמית]].",
+       "watchlistedit-normal-explain": "×\9b×\9c ×\94×\93פ×\99×\9d ×\91רש×\99×\9eת ×\94×\9eעק×\91 ×\9e×\95צ×\92×\99×\9d ×\9c×\94×\9c×\9f.\n×\9b×\93×\99 ×\9c×\94ס×\99ר ×\93×£, ×\99ש ×\9cס×\9e×\9f ×\90ת ×\94ת×\99×\91×\94 ×\9c×\99×\93×\95, ×\95×\9c×\9c×\97×\95×¥ ×¢×\9c \"{{int:Watchlistedit-normal-submit}}\".\n×\91×\90פשר×\95ת×\9a גם [[Special:EditWatchlist/raw|לערוך את הרשימה הגולמית]].",
        "watchlistedit-normal-submit": "הסרת הדפים",
        "watchlistedit-normal-done": "{{PLURAL:$1|כותרת אחת הוסרה|$1 כותרות הוסרו}} מרשימת המעקב:",
        "watchlistedit-raw-title": "עריכת הרשימה הגולמית",
        "unknown_extension_tag": "תגית בלתי ידועה: \"$1\"",
        "duplicate-defaultsort": "'''אזהרה:''' המיון הרגיל \"$2\" דורס את המיון הרגיל המוקדם ממנו \"$1\".",
        "duplicate-displaytitle": "<strong>אזהרה:</strong> כותרת התצוגה \"$2\" דורסת את כותרת התצוגה הקודמת \"$1\".",
+       "invalid-indicator-name": "<strong>שגיאה:</strong> התכונה <code>name</code> של מצייני מצב הדף אינה יכולה להיות ריקה.",
        "version": "גרסת התוכנה",
        "version-extensions": "הרחבות מותקנות",
        "version-skins": "עיצובים מותקנים",
index ab555e8..419b4b9 100644 (file)
        "showpreview": "Előnézet megtekintése",
        "showdiff": "Változtatások megtekintése",
        "blankarticle": "<strong>Figyelem:</strong> A létrehozandó szócikk üres.\nHa ismét a \"{{int:savearticle}}\" gombra kattintasz, a szócikket tartalom nélkül fogod létrehozni.",
-       "anoneditwarning": "'''Figyelem:''' Nem vagy bejelentkezve. Ha szerkesztesz, az IP-címed látható lesz a laptörténetben.",
+       "anoneditwarning": "<strong>Figyelem:</strong> Nem vagy bejelentkezve. Ha szerkesztesz, az IP-címed nyilvánosan látható lesz a laptörténetben. Ha <strong>[$1 bejelentkezel]</strong> vagy <strong>[$2 regisztrálsz]</strong>, a szerkesztéseid a felhasználónevedhez lesznek társítva, egyéb hasznos dolgok mellett.",
        "anonpreviewwarning": "''Nem vagy bejelentkezve. A mentéskor az IP-címed rögzítve lesz a laptörténetben.''",
        "missingsummary": "'''Emlékeztető:''' Nem adtál meg szerkesztési összefoglalót. Ha összefoglaló nélkül akarod elküldeni a szöveget, kattints újra a mentésre.",
        "missingcommenttext": "Kérjük, írj összefoglalót a szerkesztésedhez.",
        "parser-template-recursion-depth-warning": "A sablon rekurzív beillesztésének mélysége átlépte a határérékét ($1)",
        "language-converter-depth-warning": "A nyelvátalakító rekurzióinak száma túllépve ($1)",
        "node-count-exceeded-category": "Lapok, ahogy a csomópontszám túl nagy",
-       "node-count-exceeded-category-desc": "Azon oldalaknak a kategóriája, ahol a csomópontszám túl nagy.",
-       "node-count-exceeded-warning": "Az oldal meghaladta a csomópont számot",
+       "node-count-exceeded-category-desc": "A lap túllépi a maximális csomópontszámot.",
+       "node-count-exceeded-warning": "Az oldal meghaladta a csomópontszámot",
        "expansion-depth-exceeded-category": "Lapok, melyeken a sablonok kibontása meghaladja a megengedett szintet",
        "expansion-depth-exceeded-warning": "A lap meghaladta az engedélyezett kiterjesztési mélységet",
        "parser-unstrip-loop-warning": "Unstrip hurok észlelve",
        "search-result-category-size": "$1 oldal, $2 alkategória, $3 fájl",
        "search-redirect": "(átirányítva innen: $1)",
        "search-section": "($1 szakasz)",
+       "search-file-match": "(fájl tartalma egyezik)",
        "search-suggest": "Keresési javaslat: $1",
        "search-interwiki-caption": "Társlapok",
        "search-interwiki-default": "$1 találatok:",
        "prefs-advancedwatchlist": "Haladó beállítások",
        "prefs-displayrc": "Megjelenítési beállítások",
        "prefs-displaywatchlist": "Megjelenítési beállítások",
+       "prefs-tokenwatchlist": "Token",
        "prefs-diffs": "Eltérések (diffek)",
        "prefs-help-prefershttps": "A beállítás a legközelebbi belépés után lép érvénybe.",
        "email-address-validity-valid": "Az e-mail cím érvényesnek tűnik",
        "randompage-nopages": "A következő {{PLURAL:$2|névtérben|névterekben}} nincsenek lapok: $1.",
        "randomincategory": "Véletlen lap egy kategóriából",
        "randomincategory-invalidcategory": "\"$1\" nem egy érvényes kategória neve.",
+       "randomincategory-nopages": "Nincsenek lapok a [[:Category:$1|$1]] kategóriában.",
        "randomincategory-category": "Kategória:",
        "randomincategory-legend": "Véletlen lap a kategóriából",
        "randomredirect": "Átirányítás találomra",
        "statistics-users-active": "Aktív szerkesztők",
        "statistics-users-active-desc": "Szerkesztők, akik csináltak valamit az elmúlt {{PLURAL:$1|egy|$1}} napban",
        "statistics-mostpopular": "Legtöbbször megtekintett lapok",
+       "pageswithprop-prop": "Tulajdonságnév:",
        "pageswithprop-submit": "Ugrás",
        "doubleredirects": "Dupla átirányítások",
        "doubleredirectstext": "Ez a lap azokat a lapokat listázza, melyek átirányító lapokra irányítanak át.\nMinden sor tartalmaz egy hivatkozást az első, valamint a második átirányításra, valamint a második átirányítás céljára, ami általában a valódi céllap, erre kellene az első átirányításnak mutatnia.\nAz <del>áthúzott</del> sorok a lista elkészülése óta javítva lettek.",
        "pager-older-n": "{{PLURAL:$1|1 régebbi|$1 régebbi}}",
        "suppress": "adatvédelmi biztos",
        "querypage-disabled": "Ez a speciális lap a megfelelő teljesítmény fenntartása érdekében le van tiltva.",
+       "apihelp": "API segítség",
+       "apihelp-no-such-module": "A(z) „$1\" modul nem található.",
        "booksources": "Könyvforrások",
        "booksources-search-legend": "Könyvforrások keresése",
        "booksources-search": "Keresés",
        "listgrouprights-removegroup-self-all": "az összes csoporból eltávolíthatja a saját fiókját",
        "listgrouprights-namespaceprotection-header": "Névtér korlátozások",
        "listgrouprights-namespaceprotection-namespace": "Névtér",
+       "trackingcategories-name": "Üzenetnév",
        "trackingcategories-nodesc": "Nem található leírás.",
        "trackingcategories-disabled": "A kategória le van tiltva",
        "mailnologin": "Nincs feladó",
        "protect-locked-dblock": "A védelmi szinteket egy aktív adatbázis zárolás miatt nem változtathatod meg.\nItt vannak a(z) '''$1''' lap jelenlegi beállításai:",
        "protect-locked-access": "A fiókod számára nem engedélyezett a védelmi szintek megváltoztatása.\nItt vannak a(z) '''$1''' lap jelenlegi beállításai:",
        "protect-cascadeon": "A lap jelenleg le van védve, mert {{PLURAL:$1|tartalmazza az alábbi lap, amelyen|tartalmazzák az alábbi lapok, amelyeken}} be van kapcsolva a kaszkád védelem.\nEzen lap védelmi szintjének megváltoztatása nem lesz hatással a kaszkád védelemre.",
-       "protect-default": "Minden szerkesztő számára engedélyezett",
-       "protect-fallback": "\"$1\" engedély szükséges hozzá",
-       "protect-level-autoconfirmed": "Csak automatikusan megerősített szerkesztőknek engedélyezett (nem vagy frissen regisztráltaknak nem)",
+       "protect-default": "minden szerkesztő számára engedélyezett",
+       "protect-fallback": "„$1”-i engedély szükséges hozzá",
+       "protect-level-autoconfirmed": "automatikusan megerősített szerkesztők számára",
        "protect-level-sysop": "csak adminisztrátoroknak engedélyezett",
        "protect-summary-cascade": "kaszkád védelem",
        "protect-expiring": "lejár: $1 (UTC)",
        "watchlistedit-raw-done": "A figyelőlistád változtatásait elmentettem.",
        "watchlistedit-raw-added": "A {{PLURAL:$1|következő|következő $1}} cikket hozzáadtam a figyelőlistádhoz:",
        "watchlistedit-raw-removed": "A {{PLURAL:$1|következő|következő $1}} cikket eltávolítottam a figyelőlistádról:",
+       "watchlisttools-clear": "A figyelőlista kiürítése",
        "watchlisttools-view": "Kapcsolódó változtatások",
        "watchlisttools-edit": "A figyelőlista megtekintése és szerkesztése",
        "watchlisttools-raw": "A nyers figyelőlista szerkesztése",
        "version-entrypoints-header-entrypoint": "Belépési pont",
        "version-entrypoints-header-url": "URL",
        "redirect": "Átirányítás fájl, szerkesztő, oldal vagy oldalváltozat alapján",
+       "redirect-legend": "Átirányítás egy fájlra vagy lapra",
+       "redirect-submit": "Mehet",
        "redirect-lookup": "Keresés:",
        "redirect-value": "Érték:",
        "redirect-user": "Felhasználói azonosító",
        "mediastatistics-header-drawing": "Rajzok (vektoros képek)",
        "mediastatistics-header-audio": "Hang",
        "mediastatistics-header-video": "Videók",
+       "mediastatistics-header-multimedia": "Interaktív média",
        "mediastatistics-header-office": "Iroda",
        "mediastatistics-header-text": "Szöveges",
        "mediastatistics-header-executable": "Futtatható",
-       "mediastatistics-header-archive": "Tömörített formátumok"
+       "mediastatistics-header-archive": "Tömörített formátumok",
+       "json-error-unknown": "Hiba volt a JSON-ban. Hiba: $1",
+       "json-error-state-mismatch": "Érvénytelen vagy hibás JSON",
+       "json-error-syntax": "Szintaktikai hiba",
+       "json-error-utf8": "Hibás UTF-8 karakter, esetleg helytelenül kódolt"
 }
index 2062da1..16ca978 100644 (file)
@@ -57,6 +57,7 @@
        "tog-showhiddencats": "Ցուցադրել թաքնված կատեգորիաները",
        "tog-norollbackdiff": "Չցուցադրել տարբերությունները հետ գլորելուց հետո",
        "tog-useeditwarning": "Զգուշացնել ինձ, երբ ես լքում եմ խմբագրման էջը առանց կատարած փոփոխությունները հիշելու։",
+       "tog-prefershttps": "Մուտք գործելուց հետո, միշտ գործածել անվնտանգ միացումից (HTTPS)",
        "underline-always": "Միշտ",
        "underline-never": "Երբեք",
        "underline-default": "Դիտարկչի կամ թեմայի լռելյայն ոճով",
        "showpreview": "Նախադիտել",
        "showdiff": "Կատարված փոփոխությունները",
        "anoneditwarning": "'''Ուշադրություն.''' Դուք չեք մտել համակարգ։\nՁեր IP հասցեն կգրանցվի այս էջի խմբագրումների պատմության մեջ։",
-       "anonpreviewwarning": "Դուք չեք մտել համակարգ։\n''Հիշելով ձեր կատարած խմբագրումը, այն կգրանցվի Ձեր IP հասցեի ներքո այս էջի խմբագրումների պատմության մեջ։''",
+       "anonpreviewwarning": "<em>Դուք չեք մտել համակարգ։\nՀիշելով Ձեր կատարած խմբագրումը, այն կպահանվի Ձեր IP հասցեի հետ միասին այս էջի խմբագրումների պատմության մեջ։</em>",
        "missingsummary": "'''Հիշեցում.''' Դուք չեք տվել խմբագրման ամփոփում։ «Հիշել» կոճակի կրկնակի մատնահարման դեպքում փոփոխությունները կհիշվեն առանց ամփոփման։",
        "missingcommenttext": "Խնդրում ենք մեկնաբանություն ավելացնել ստորև։",
        "missingcommentheader": "'''Հիշեցում.''' Դուք չեք նշել մեկնաբանության վերնագիրը։ «Հիշել» կոճակի կրկնակի մատնահարման դեպքում ձեր մեկնաբանությունը կհիշվի առանց վերնագրի։",
        "recentchanges-label-minor": "Սա չնչին խմբագրում է",
        "recentchanges-label-bot": "Այս խմբագրումը կատարվել է բոտի կողմից",
        "recentchanges-label-unpatrolled": "Այս խմբագրումը դեռ չի պարեկվել",
-       "recentchanges-label-plusminus": "Ô·Õ»Õ« Õ¹Õ¡Ö\83Õ½Õ¶ Ö\83Õ¸Õ­Õ¸Õ­Õ¾Õ¥Ö\81 Õ¡ÕµÕ½Ö\84Õ¡Õ¶ Õ¢Õ¡ÕµÕ©Õ¸Õ¾Ö\89",
+       "recentchanges-label-plusminus": "Ô·Õ»Õ« Õ¹Õ¡Ö\83Õ½Õ¨ Ö\83Õ¸Ö\83Õ¸Õ­Õ¾Õ¥Ö\81 Õ¡ÕµÕ½Ö\84Õ¡Õ¶ Õ¢Õ¡ÕµÕ©Õ¸Õ¾",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (տես նաև՝  [[Special:NewPages|նոր էջերի ցանկ]])",
        "rcnotefrom": "Ստորև բերված են փոփոխությունները սկսած՝ '''$2''' (մինչև՝ '''$1''')։",
        "rclistfrom": "Ցույց տալ նոր փոփոխությունները սկսած $3 $2",
        "confirm-watch-button": "ԼԱՎ",
        "confirm-watch-top": "Ավելացնե՞լ ձեր հսկացանկին",
        "confirm-unwatch-button": "ԼԱՎ",
-       "confirm-unwatch-top": "Õ\80Õ¥Õ¼Õ¡Ö\81Õ¶Õ¥Õ\9eÕ¬ Õ±եր հսկացանկից։",
+       "confirm-unwatch-top": "Õ\80Õ¥Õ¼Õ¡Ö\81Õ¶Õ¥Õ\9eÕ¬ Õ\81եր հսկացանկից։",
        "imgmultipageprev": "← նախորդ էջ",
        "imgmultipagenext": "հաջորդ էջ →",
        "imgmultigo": "Անցնե՛լ",
index eb24cad..82c4ae2 100644 (file)
        "wlheader-enotif": "Le notification via e-mail es active.",
        "wlheader-showupdated": "Le paginas que ha essite modificate post tu ultime visita se monstra in litteras '''grasse'''.",
        "wlnote": "Ecce le ultime {{PLURAL:$1|modification|<strong>$1</strong> modificationes}} durante le ultime {{PLURAL:$2|hora|<strong>$2</strong> horas}}, a partir del $3 a $4.",
-       "wlshowlast": "Revelar ultime $1 horas $2 dies",
+       "wlshowlast": "Monstrar le ultime $1 horas $2 dies",
        "watchlist-options": "Optiones del observatorio",
        "watching": "Observation in curso...",
        "unwatching": "Disobservation in curso...",
        "log-name-pagelang": "Registro de cambios de lingua",
        "log-description-pagelang": "Isto es un registro de cambios de lingua in paginas.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambiava}} le lingua del pagina $3 de $4 a $5.",
+       "default-skin-not-found": "Attention! Le apparentia predefinite de tu wiki, definite in <code dir=\"ltr\">$wgDefaultSkin</code> como <code>$1</code>, non es disponibile.\n\nLe installation pare includer le sequente apparentias. Vide [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pro saper como activar los e seliger le predefinite.\n\n$2\n\n; Si tu ha justo installate MediaWiki:\n: Tu lo ha probabilemente installate a partir de git, o directemente del codice fonte con un altere methodo. Isto es normal. Essaya installar alcun apparentias desde [https://www.mediawiki.org/wiki/Category:All_skins le directorio de apparentias de mediawiki.org], per:\n:* Discargar le [https://www.mediawiki.org/wiki/Download archivo tar del installator], que include plure apparentias e extensiones. Tu pote copiar e collar le directorio <code>skins/</code> de illo.\n:* Clonar un del repositorios <code>mediawiki/skins/*</code> via git in le directorio <code dir=\"ltr\">skins/</code> de tu installation de MediaWiki.\n: Facer isto non deberea interferer con tu repositorio git si tu es un disveloppator de MediaWiki.\n\n; Si tu ha justo actualisate MediaWiki:\n: MediaWiki a partir del version 1.24 non plus activa automaticamente le apparentias installate (vide [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Tu pote collar le sequente lineas in <code>LocalSettings.php</code> pro activar tote le apparentias actualmente installate:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Si tu ha justo modificate <code>LocalSettings.php</code>:\n: Verifica meticulosemente que le nomines del apparentias non ha errores.",
+       "default-skin-not-found-no-skins": "Attention! Le apparentia predefinite de tu wiki, definite in <code>$wgDefaultSkin</code> como <code>$1</code>, non es disponibile.\n\nTu non ha apparentias installate.\n\n; Si tu ha justo installate o actualisate MediaWiki:\n: Tu lo ha probabilemente installate a partir de git, o directemente del codice fonte con un altere methodo. Isto es normal. Essaya installar alcun apparentias desde [https://www.mediawiki.org/wiki/Category:All_skins le directorio de apparentias de mediawiki.org], per:\n:* Discargar le [https://www.mediawiki.org/wiki/Download archivo tar del installator], que include plure apparentias e extensiones. Tu pote copiar e collar le directorio <code>skins/</code> de illo.\n:* Clonar un del repositorios <code>mediawiki/skins/*</code> via git in le directorio <code dir=\"ltr\">skins/</code> de tu installation de MediaWiki.\n: Facer isto non deberea interferer con tu repositorio git si tu es un disveloppator de MediaWiki. Vide [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pro saper como activar skins e seliger le predefinite.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activate)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''disactivate''')",
        "mediastatistics": "Statisticas de multimedia",
index 09bbaac..18aaf20 100644 (file)
        "wlheader-enotif": "Tilkynning með tölvupósti er virk.",
        "wlheader-showupdated": "Síðum sem hefur verið breytt síðan þú skoðaðir þær síðast eru '''feitletraðar'''.",
        "wlnote": "Hér fyrir neðan {{PLURAL:$1|er síðasta <strong>$1</strong> breyting|eru síðustu <strong>$1</strong> breytingar}} {{PLURAL:$2|síðustu <strong>$2</strong> klukkutímann|síðastliðna <strong>$2</strong> klukkutímana}}, frá $3, $4.",
-       "wlshowlast": "Sýna síðustu $1 klukkutíma, $2 daga,",
+       "wlshowlast": "Sýna síðustu $1 klukkutíma, $2 daga",
        "watchlist-options": "Vaktlistastillingar",
        "watching": "Vakta...",
        "unwatching": "Afvakta...",
index 95af635..11626a9 100644 (file)
        "content-model-text": "testo normale",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Pagine che usano argomenti duplicati in chiamate a template",
+       "duplicate-args-category-desc": "La pagina contiene chiamate a template che utilizzano argomenti duplicati, come ad esempio <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> o <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "'''Attenzione:''' Questa pagina contiene troppe chiamate alle parser functions.\n\nDovrebbe averne meno di $2, al momento ce {{PLURAL:$1|n'è $1|ne sono $1}}.",
        "expensive-parserfunction-category": "Pagine con troppe chiamate alle funzioni parser",
        "post-expand-template-inclusion-warning": "<strong>Attenzione:</strong> la dimensione dei template inclusi è troppo grande.\nAlcuni template non verranno inclusi.",
        "gender-female": "È registrata su {{SITENAME}}",
        "prefs-help-gender": "L'impostazione di questa preferenza è opzionale.\nIl software utilizza questo valore per rivolgersi a te e menzionarti agli altri usando il genere grammaticale appropriato.\nQuesta informazione sarà pubblica.",
        "email": "Indirizzo email",
-       "prefs-help-realname": "L'indicazione del proprio nome vero è opzionale; se si sceglie di inserirlo, verrà utilizzato per attribuire la paternità dei contenuti inviati.",
+       "prefs-help-realname": "Il vero nome è facoltativo.\nSe fornito, può essere usato per attribuirvi la paternità del vostro lavoro.",
        "prefs-help-email": "L'inserimento del proprio indirizzo email è facoltativo, ma permette di ricevere la propria password qualora venisse dimenticata.",
        "prefs-help-email-others": "Puoi anche scegliere di lasciare che gli altri ti contattino via posta elettronica con un collegamento dalla tua pagina utente o di discussione.\nIl tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.",
        "prefs-help-email-required": "L'indirizzo email è obbligatorio.",
        "pager-older-n": "{{PLURAL:$1|1 meno recente|$1 meno recenti}}",
        "suppress": "Oversight",
        "querypage-disabled": "Questa pagina speciale è disattivata per motivi di prestazioni.",
+       "apihelp": "Aiuto API",
+       "apihelp-no-such-module": "Modulo \"$1\" non trovato.",
        "booksources": "Fonti librarie",
        "booksources-search-legend": "Ricerca di fonti librarie",
        "booksources-isbn": "Codice ISBN:",
        "tooltip-pt-mycontris": "Elenco dei tuoi contributi",
        "tooltip-pt-login": "La registrazione è consigliata, anche se non obbligatoria",
        "tooltip-pt-logout": "Uscita (logout)",
+       "tooltip-pt-createaccount": "Siete incoraggiati a creare un'utenza ed accedere; tuttavia, non è obbligatorio",
        "tooltip-ca-talk": "Vedi le discussioni relative a questa pagina",
        "tooltip-ca-edit": "Puoi modificare questa pagina. Per favore usa il pulsante di anteprima prima di salvare",
        "tooltip-ca-addsection": "Inizia una nuova sezione",
        "tooltip-feed-atom": "Feed Atom per questa pagina",
        "tooltip-t-contributions": "Lista dei contributi di questo utente",
        "tooltip-t-emailuser": "Invia un messaggio email a questo utente",
+       "tooltip-t-info": "Ulteriori informazioni su questa pagina",
        "tooltip-t-upload": "Carica file multimediali",
        "tooltip-t-specialpages": "Lista di tutte le pagine speciali",
        "tooltip-t-print": "Versione stampabile di questa pagina",
index dcf6f7b..9b9d905 100644 (file)
        "createacct-benefit-body2": "{{PLURAL:$1|ページ}}",
        "createacct-benefit-body3": "最近の{{PLURAL:$1|投稿者数}}",
        "badretype": "入力したパスワードが一致しません。",
-       "userexists": "å\85¥å\8a\9bã\81\95ã\82\8cã\81\9få\88©ç\94¨è\80\85å\90\8dã\81¯æ\97¢ã\81«ä½¿ç\94¨ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ã\80\82\nä»\96ã\81®å\90\8då\89\8dã\82\92é\81¸ã\82\93ã\81§ください。",
+       "userexists": "å\85¥å\8a\9bã\81\97ã\81\9få\88©ç\94¨è\80\85å\90\8dã\81¯æ\97¢ã\81«ä½¿ç\94¨ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ã\80\82\nå\88¥ã\81®å\88©ç\94¨è\80\85å\90\8dã\82\92æ\8c\87å®\9aã\81\97ã\81¦ください。",
        "loginerror": "ログインのエラー",
        "createacct-error": "アカウント作成エラー",
        "createaccounterror": "アカウントを作成できませんでした: $1",
        "content-model-text": "プレーンテキスト",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "テンプレート呼び出しで引数が重複しているページ",
+       "duplicate-args-category-desc": "引数が重複したテンプレート呼び出しを含むページ。例: <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code>、<code><nowiki>{{foo|bar|1=baz}}</nowiki></code>",
        "expensive-parserfunction-warning": "<strong>警告:</strong> このページでは、高負荷なパーサー関数の呼び出し回数が多過ぎます。\n\n{{PLURAL:$2|呼び出しを $2 回}}未満にしてください ({{PLURAL:$1|現在は $1 回}})。",
        "expensive-parserfunction-category": "高負荷な構文解析関数の呼び出しが多過ぎるページ",
        "post-expand-template-inclusion-warning": "<strong>警告:</strong> テンプレートの読み込みサイズが大き過ぎます。\nいくつかのテンプレートは読み込まれません。",
        "searchprofile-images-tooltip": "ファイルを検索",
        "searchprofile-everything-tooltip": "全本文ページ (トークページを含む) 内を検索",
        "searchprofile-advanced-tooltip": "特定の名前空間内を検索",
-       "search-result-size": "$1 ({{PLURAL:$2|$2 語}})",
+       "search-result-size": "$1 ({{PLURAL:$2|$2 語}})",
        "search-result-category-size": "{{PLURAL:$1|$1 件}} ({{PLURAL:$2|$2 下位カテゴリ}}、{{PLURAL:$3|$3 ファイル}})",
        "search-redirect": "($1からのリダイレクト)",
        "search-section": "($1の節)",
        "prefs-watchlist": "ウォッチリスト",
        "prefs-watchlist-days": "ウォッチリストの表示日数:",
        "prefs-watchlist-days-max": "最大 $1 {{PLURAL:$1|日間}}",
-       "prefs-watchlist-edits": "拡張ウォッチリストの表示件数:",
+       "prefs-watchlist-edits": "ウォッチリストの展開時の最大表示件数:",
        "prefs-watchlist-edits-max": "最大数: 1000",
        "prefs-watchlist-token": "ウォッチリストのトークン:",
        "prefs-misc": "その他",
        "gender-female": "女",
        "prefs-help-gender": "この項目の設定は省略できます。\nソフトウェアが利用者向けの画面表示であなたに言及する際に、適切な文法的性を選択するために使用されます。\nこの情報は公開されます。",
        "email": "メール",
-       "prefs-help-realname": "本名は省略できます。\n入力すると、あなたの著作物の帰属表示に使れます。",
+       "prefs-help-realname": "本名は省略できます。\n入力すると、あなたの著作物の帰属表示に使用されます。",
        "prefs-help-email": "メールアドレスは省略できますが、パスワードを忘れた際にパスワードをリセットするのに必要です。",
        "prefs-help-email-others": "利用者ページやトークページ上のリンクを通じて、他の利用者があなたにメールで連絡を取れるようにすることもできます。\n他の利用者が連絡を取る際にあなたのメールアドレスが開示されることはありません。",
        "prefs-help-email-required": "メールアドレスが必要です。",
        "pager-older-n": "{{PLURAL:$1|以前の$1件}}",
        "suppress": "秘匿する",
        "querypage-disabled": "パフォーマンスに悪影響を与えるおそれがあるため、この特別ページは無効になっています。",
+       "apihelp": "API のヘルプ",
+       "apihelp-no-such-module": "モジュール「$1」が見つかりません。",
        "booksources": "書籍情報源",
        "booksources-search-legend": "書籍情報源を検索",
        "booksources-isbn": "ISBN:",
        "unblocked": "[[User:$1|$1]]のブロックを解除しました。",
        "unblocked-range": "$1のブロックを解除しました。",
        "unblocked-id": "ブロック$1を除去しました。",
-       "unblocked-ip": "[[Special:Contributions/$1|$1]]ã\81¯ã\83\96ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99。",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]]ã\81®ã\83\96ã\83­ã\83\83ã\82¯ã\82\92解é\99¤ã\81\97ã\81¾ã\81\97ã\81\9f。",
        "blocklist": "ブロックされている利用者",
        "ipblocklist": "ブロックされている利用者",
        "ipblocklist-legend": "ブロックされている利用者の検索",
        "tooltip-pt-mycontris": "自分の投稿の一覧",
        "tooltip-pt-login": "ログインすることを推奨します。ただし、必須ではありません。",
        "tooltip-pt-logout": "ログアウト",
+       "tooltip-pt-createaccount": "アカウントを作成してログインすることをお勧めしますが、必須ではありません",
        "tooltip-ca-talk": "本文ページについての議論",
        "tooltip-ca-edit": "このページを編集できます。保存前にプレビューボタンを使用してください。",
        "tooltip-ca-addsection": "新しい節を開始する",
        "tooltip-feed-atom": "このページのAtomフィード",
        "tooltip-t-contributions": "この利用者の投稿の一覧",
        "tooltip-t-emailuser": "この利用者にメールを送信する",
+       "tooltip-t-info": "このページについての詳細情報",
        "tooltip-t-upload": "ファイルをアップロードする",
        "tooltip-t-specialpages": "特別ページの一覧",
        "tooltip-t-print": "このページの印刷用ページ",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (有効)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''無効''')",
        "mediastatistics": "メディア統計",
-       "mediastatistics-summary": "アップロードされたファイルの種類に関する統計。これはファイルの最新バージョンのみを含みます。以前のまたは削除されたバージョンについては除外されています。",
+       "mediastatistics-summary": "ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81\95ã\82\8cã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\81®ç¨®é¡\9eã\81«é\96¢ã\81\99ã\82\8bçµ±è¨\88ã\81§ã\81\99ã\80\82ã\81\93ã\82\8cã\81¯ã\83\95ã\82¡ã\82¤ã\83«ã\81®æ\9c\80æ\96°ã\83\90ã\83¼ã\82¸ã\83§ã\83³ã\81®ã\81¿ã\82\92å\90«ã\81¿ã\81¾ã\81\99ã\80\82以å\89\8dã\81®ã\81¾ã\81\9fã\81¯å\89\8aé\99¤ã\81\95ã\82\8cã\81\9fã\83\90ã\83¼ã\82¸ã\83§ã\83³ã\81«ã\81¤ã\81\84ã\81¦ã\81¯é\99¤å¤\96ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ã\80\82",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 バイト}} ($2; $3%)",
        "mediastatistics-table-mimetype": "MIMEタイプ",
        "mediastatistics-table-extensions": "取りうる拡張子",
        "mediastatistics-table-totalbytes": "合計サイズ",
        "mediastatistics-header-unknown": "不明",
        "mediastatistics-header-bitmap": "ビットマップ画像",
-       "mediastatistics-header-drawing": "線画 (ベクタイメージ)",
+       "mediastatistics-header-drawing": "ç·\9aç\94» (ã\83\99ã\82¯ã\82¿ã\83¼ã\82¤ã\83¡ã\83¼ã\82¸)",
        "mediastatistics-header-audio": "オーディオ",
        "mediastatistics-header-video": "動画",
        "mediastatistics-header-multimedia": "リッチメディア",
        "mediastatistics-header-executable": "実行ファイル",
        "mediastatistics-header-archive": "圧縮フォーマット",
        "json-warn-trailing-comma": "JSON の末尾の{{PLURAL:$1|カンマ $1 個}}を除去しました",
-       "json-error-syntax": "構文エラー"
+       "json-error-unknown": "JSON に問題点がありました。エラー: $1",
+       "json-error-depth": "スタックの深さが上限を超えました",
+       "json-error-state-mismatch": "JSON が無効か、または破損しています",
+       "json-error-ctrl-char": "制御文字のエラーです。おそらく正しく符号化されていません",
+       "json-error-syntax": "構文エラー",
+       "json-error-utf8": "UTF-8 の文字が破損しています。エンコーディングが誤っているおそれがあります",
+       "json-error-recursion": "エンコードされる値に1つ以上の循環参照が含まれます",
+       "json-error-inf-or-nan": "エンコードされる値に1つ以上の NAN または INF が含まれます",
+       "json-error-unsupported-type": "エンコードできない種類の値が入力されました"
 }
index 32b5fd8..00a2b11 100644 (file)
        "recentchanges": "ბოლო ცვლილებები",
        "recentchanges-legend": "ბოლო ცვლილებების პარამეტრები",
        "recentchanges-summary": "უთვალთვალეთ ვიკის ბოლო ცვლილებებს ამ გვერდზე.",
+       "recentchanges-noresult": "მითითებულ პერიოდსა და სახელთა სივრცეში ცვლილებები არ არის.",
        "recentchanges-feed-description": "ვიკის უახლესი ცვლილებების მეთვალყურეობა ამ არხში.",
        "recentchanges-label-newpage": "ამ რედაქტირებით შეიქმნა ახალი გვერდი",
        "recentchanges-label-minor": "ეს არის მცირე შესწორება",
index fba9511..71e236d 100644 (file)
        "delete_and_move": "Жою және жылжыту",
        "delete_and_move_text": "== Жоюды қажет етеді ==\nТағайындалған «[[:$1]]» беті әлдеқашан бар.\nЖылжытуға жол беру үшін бұны жойғыңыз келе ме?",
        "delete_and_move_confirm": "Иә, бұл бетті жой",
-       "delete_and_move_reason": "\"[[$1]]\" дегеннен жылжытуға жол беру үшін жойылған",
+       "delete_and_move_reason": "«[[$1]]» дегеннен жылжытуға жол беру үшін жойылған",
        "selfmove": "Қайнар және нысана тақырып аттары бірдей;\nбет өзінің үстіне жылжытылмайды.",
        "immobile-source-namespace": "\"$1\" есім кеңістігіндегі беттер жылжытылмайды",
        "immobile-target-namespace": "\"$1\" есім кеңістігіне беттерді жылдытылмайды",
index 4cc872f..e621fbe 100644 (file)
@@ -85,7 +85,7 @@
        "underline-always": "항상",
        "underline-never": "항상 치지 않기",
        "underline-default": "스킨 또는 브라우저 기본값",
-       "editfont-style": "í\8e¸ì§\91 ì°½의 글꼴:",
+       "editfont-style": "í\8e¸ì§\91 ì\98\81ì\97­의 글꼴:",
        "editfont-default": "브라우저 기본값",
        "editfont-monospace": "고정폭 글꼴",
        "editfont-sansserif": "산세리프 글꼴",
        "hidden-categories": "{{PLURAL:$1|숨은 분류}}",
        "hidden-category-category": "숨은 분류",
        "category-subcat-count": "{{PLURAL:$2|이 분류에는 하위 분류 1개만이 속해 있습니다.|다음은 이 분류에 속하는 {{PLURAL:$1|하위 분류}} $2개 가운데 $1개입니다.}}",
-       "category-subcat-count-limited": "이 분류에 {{PLURAL:$1|하위 분류}} $1개가 있습니다.",
+       "category-subcat-count-limited": "이 분류에 {{PLURAL:$1|하위 분류가|하위 분류 $1개가}} 있습니다.",
        "category-article-count": "{{PLURAL:$2|이 분류에는 문서 1개만이 속해 있습니다.|다음은 이 분류에 속하는 {{PLURAL:$1|문서}} $2개 가운데 $1개입니다.}}",
-       "category-article-count-limited": "이 분류에 {{PLURAL:$1|문서}} $1개가 있습니다.",
+       "category-article-count-limited": "이 분류에 {{PLURAL:$1|문서가|문서 $1개가}} 있습니다.",
        "category-file-count": "{{PLURAL:$2|이 분류에는 파일 1개만이 속해 있습니다.|다음은 이 분류에 속하는 {{PLURAL:$1|파일}} $2개 가운데 $1개입니다.}}",
-       "category-file-count-limited": "이 분류에 {{PLURAL:$1|파일}} $1개가 있습니다.",
+       "category-file-count-limited": "이 분류에 {{PLURAL:$1|파일이|파일 $1개가}} 있습니다.",
        "listingcontinuesabbrev": "(계속)",
        "index-category": "색인된 문서",
        "noindex-category": "색인에서 제외되는 문서",
        "morenotlisted": "이 목록은 완성되지 않았습니다.",
        "mypage": "문서",
        "mytalk": "토론",
-       "anontalk": "ì\9dµëª\85 사용자와 토론",
+       "anontalk": "ì\9d´ IP ì£¼ì\86\8cì\9d\98 사용자와 토론",
        "navigation": "둘러보기",
        "and": ",",
        "qbfind": "찾기",
        "delete": "삭제",
        "deletethispage": "이 문서 삭제하기",
        "undeletethispage": "이 문서를 되살리기",
-       "undelete_short": "{{PLURAL:$1|편집}} $1개 되살리기",
-       "viewdeleted_short": "{{PLURAL:$1|삭제된 편집}} $1개 보기",
+       "undelete_short": "{{PLURAL:$1|편집 한 개|편집 $1개}} 되살리기",
+       "viewdeleted_short": "{{PLURAL:$1|삭제된 편집 한 개|삭제된 편집 $1개}} 보기",
        "protect": "보호",
        "protect_change": "보호 수준 바꾸기",
        "protectthispage": "이 문서 보호하기",
        "privacypage": "Project:개인 정보 정책",
        "badaccess": "권한 오류",
        "badaccess-group0": "요청한 명령을 실행할 권한이 없습니다.",
-       "badaccess-groups": "요청한 명령은 {{PLURAL:$2|다음|다음 중 하나의}} 권한을 가진 사용자에게만 가능합니다: $1",
+       "badaccess-groups": "요청한 명령은 {{PLURAL:$2|다음|다음 중 하나의}} 권한을 가진 사용자에게 제한됩니다: $1.",
        "versionrequired": "미디어위키 $1 버전 필요",
        "versionrequiredtext": "이 문서를 사용하려면 $1 버전 미디어위키가 필요합니다.\n[[Special:Version|설치된 미디어위키 버전]]을 참고하세요.",
        "ok": "확인",
        "retrievedfrom": "원본 주소 \"$1\"",
-       "youhavenewmessages": "다른 사용자가 $1를 {{PLURAL:$3|남겼습니다}}. ($2)",
-       "youhavenewmessagesfromusers": "{{PLURAL:$3|다른 사용자가|사용자 $3명이}} $1를 {{PLURAL:$4|남겼습니다}}. ($2)",
-       "youhavenewmessagesmanyusers": "여러 사용자가 $1를 남겼습니다. ($2)",
+       "youhavenewmessages": "다른 사용자로부터의 $1가 {{PLURAL:$3|있습니다}}. ($2)",
+       "youhavenewmessagesfromusers": "{{PLURAL:$3|다른 사용자로|사용자 $3명으로}}부터의 $1가 {{PLURAL:$4|있습니다}}. ($2)",
+       "youhavenewmessagesmanyusers": "여러 사용자로부터의 $1가 있습니다. ($2)",
        "newmessageslinkplural": "{{PLURAL:$1|새 메시지}}",
        "newmessagesdifflinkplural": "마지막으로 {{PLURAL:$1|바뀐 내용}}",
        "youhavenewmessagesmulti": "다른 사용자가 $1에 남긴 새 메시지가 있습니다",
        "confirmable-no": "아니오",
        "thisisdeleted": "$1 문서를 보거나 되살리겠습니까?",
        "viewdeleted": "$1 문서를 보겠습니까?",
-       "restorelink": "{{PLURAL:$1|삭제된 편집}} $1개",
+       "restorelink": "{{PLURAL:$1|삭제된 편집 한 개|삭제된 편집 $1개}}",
        "feedlinks": "피드:",
        "feed-invalid": "잘못된 구독 피드 방식입니다.",
-       "feed-unavailable": "피드 서비스를 사용할 수 없습니다",
+       "feed-unavailable": "피드 배달을 사용할 수 없습니다",
        "site-rss-feed": "$1 RSS 피드",
        "site-atom-feed": "$1 Atom 피드",
        "page-rss-feed": "\"$1\" RSS 피드",
        "nstab-template": "틀",
        "nstab-help": "도움말",
        "nstab-category": "분류",
-       "nosuchaction": "해당하는 명령이 없습니다.",
-       "nosuchactiontext": "URLì\9d´ ì§\80ì \95í\95\9c ëª\85ë ¹ì\9d´ ì\9e\98못ë\90\98ì\97\88ì\8aµë\8b\88ë\8b¤.\nURLì\9d\84 ì\9e\98못 ì\9e\85ë ¥í\95\98ì\98\80ê±°ë\82\98, ì\9e\98못ë\90\9c ë§\81í\81¬ë¥¼ ë\94°ë\9d¼ê°\94ì\9d\84 ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤.\n{{SITENAME}}ì\9d\98 ë²\84ê·¸ì\9d¼ ì\88\98ë\8f\84 있습니다.",
+       "nosuchaction": "이러한 명령이 없습니다",
+       "nosuchactiontext": "URLì\97\90 ì§\80ì \95í\95\9c ëª\85ë ¹ì\9d´ ì\98¬ë°\94르ì§\80 ì\95\8aì\8aµë\8b\88ë\8b¤.\nURLì\9d\84 ì\9e\98못 ì\9e\85ë ¥í\96\88ê±°ë\82\98, ì\98¬ë°\94르ì§\80 ì\95\8aì\9d\80 ë§\81í\81¬ë¥¼ ë\94°ë\9d¼ê°\94ì\9d\84 ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤.\n{{SITENAME}}ì\97\90 ì\82¬ì\9a©í\95\98ë\8a\94 ì\86\8cí\94\84í\8a¸ì\9b¨ì\96´ì\9d\98 ë²\84ê·¸ê°\80 ì\9e\88ì\9d\84 ì\88\98 있습니다.",
        "nosuchspecialpage": "해당하는 특수 문서가 없습니다.",
        "nospecialpagetext": "<strong>요청한 특수 문서가 존재하지 않습니다.</strong>\n\n특수 문서의 목록은 [[Special:SpecialPages|여기]]에서 볼 수 있습니다.",
        "error": "오류",
        "databaseerror-query": "쿼리: $1",
        "databaseerror-function": "함수: $1",
        "databaseerror-error": "오류: $1",
-       "laggedslavemode": "'''경고:''' 문서가 최근에 바뀐 내용을 포함하지 않을 수도 있습니다.",
+       "laggedslavemode": "<strong>경고:</strong> 문서가 최근에 바뀐 내용을 포함하지 않을 수도 있습니다.",
        "readonly": "데이터베이스 잠김",
        "enterlockreason": "데이터베이스를 잠그는 이유와 예상되는 기간을 적어 주세요.",
        "readonlytext": "데이터베이스가 잠겨 있어서 문서를 편집할 수 없습니다. 데이터베이스 관리가 끝난 후에는 정상으로 돌아올 것입니다.\n\n관리자가 데이터베이스를 잠글 때 남긴 메시지는 다음과 같습니다: $1",
        "filedeleteerror": "\"$1\" 파일을 삭제할 수 없습니다.",
        "directorycreateerror": "\"$1\" 디렉터리를 만들 수 없습니다.",
        "filenotfound": "\"$1\" 파일을 찾을 수 없습니다.",
-       "unexpected": "예기치 못한 값: \"$1\"=\"$2\"",
+       "unexpected": "예기치 않은 값: \"$1\"=\"$2\".",
        "formerror": "오류: 양식을 제출할 수 없습니다.",
-       "badarticleerror": "해당 명령은 이 문서에서 실행할 수 없습니다.",
+       "badarticleerror": "이 명령은 이 문서에서 수행할 수 없습니다.",
        "cannotdelete": "\"$1\" 문서나 파일을 삭제할 수 없습니다.\n이미 삭제되었을 수도 있습니다.",
        "cannotdelete-title": "\"$1\" 문서를 삭제할 수 없습니다.",
        "delete-hook-aborted": "훅이 삭제를 중단했습니다.\n아무런 설명도 주어지지 않았습니다.",
        "no-null-revision": "\"$1\" 문서에 대한 새 빈 판을 만들 수 없습니다",
        "badtitle": "잘못된 제목",
        "badtitletext": "요청한 문서 제목이 잘못되었거나, 비어있거나, 잘못된 인터위키 제목으로 링크했습니다.\n문서 제목에 사용할 수 없는 문자를 사용했을 수 있습니다.",
-       "perfcached": "ë\8b¤ì\9d\8c ì\9e\90ë£\8cë\8a\94 ìº\90ì\8b\9cë\90\9c ê²\83ì\9d´ë¯\80ë¡\9c ì\83\88ë¡\9c ë°\94ë\80\90 ë\82´ì\9a©ì\9d\84 ë°\98ì\98\81í\95\98ì§\80 ëª»í\95  ì\88\98ë\8f\84 ì\9e\88ì\8aµë\8b\88ë\8b¤. ìº\90ì\8b\9cì\97\90 ìµ\9cë\8c\80 {{PLURAL:$1|$1ê°\9cì\9d\98 ê²°ê³¼}}가 있습니다.",
-       "perfcachedts": "ë\8b¤ì\9d\8c ì\9e\90ë£\8cë\8a\94 ìº\90ì\8b\9cë\90\9c ê²\83ì\9c¼ë¡\9c, $1ì\97\90 ë§\88ì§\80ë§\89ì\9c¼ë¡\9c ì\83\88ë¡\9c ê³ ì³\90ì¡\8cì\8aµë\8b\88ë\8b¤. ìº\90ì\8b\9cì\97\90 ìµ\9cë\8c\80 {{PLURAL:$4|결과 $4개}}가 있습니다.",
-       "querypage-no-updates": "ì\9d´ ë¬¸ì\84\9cì\9d\98 ì\83\88ë¡\9c ê³ ì¹¨ì\9d´ í\98\84ì\9e¬ ë¹\84í\99\9cì\84±í\99\94ë\90\98ì\96´ ì\9e\88ì\8aµë\8b\88ë\8b¤.\nì\9d´ ë¬¸ì\84\9cì\9d\98 ì\9e\90ë£\8c를 ì\9e ì\8b\9c ë\8f\99ì\95\88 새로 고치지 않을 것입니다.",
+       "perfcached": "ë\8b¤ì\9d\8c ì\9e\90ë£\8cë\8a\94 ìº\90ì\8b\9cë\90\9c ê²\83ì\9d´ë©° ìµ\9cì\8b ì\9d´ ì\95\84ë\8b\90 ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤. ìº\90ì\8b\9cì\97\90 ìµ\9cë\8c\80 {{PLURAL:$1|ê²°ê³¼ í\95\9c ê°\9c|ê²°ê³¼ $1ê°\9c}}가 있습니다.",
+       "perfcachedts": "ë\8b¤ì\9d\8c ì\9e\90ë£\8cë\8a\94 ìº\90ì\8b\9cë\90\9c ê²\83ì\9c¼ë¡\9c, $1ì\97\90 ë§\88ì§\80ë§\89ì\9c¼ë¡\9c ì\97\85ë\8d°ì\9d´í\8a¸ë\90\98ì\97\88ì\8aµë\8b\88ë\8b¤. ìº\90ì\8b\9cì\97\90 ìµ\9cë\8c\80 {{PLURAL:$4|ê²°ê³¼ í\95\9c ê°\9c|결과 $4개}}가 있습니다.",
+       "querypage-no-updates": "ì\9d´ ë¬¸ì\84\9cì\9d\98 ì\83\88ë¡\9c ê³ ì¹¨ì\9d´ í\98\84ì\9e¬ ë¹\84í\99\9cì\84±í\99\94ë\90\98ì\96´ ì\9e\88ì\8aµë\8b\88ë\8b¤.\nì\9e\90ë£\8cê°\80 ì\9e ì\8b\9c 새로 고치지 않을 것입니다.",
        "viewsource": "원본 보기",
        "viewsource-title": "$1 문서 원본 보기",
        "actionthrottled": "동작 중지",
        "exception-nologin-text-manual": "이 문서에 접근하거나 이 명령을 수행하려면 $1하세요.",
        "virus-badscanner": "잘못된 설정: 알 수 없는 바이러스 검사기: '''$1'''",
        "virus-scanfailed": "검사 실패 (코드 $1)",
-       "virus-unknownscanner": "알 수 없는 백신 소프트웨어:",
-       "logouttext": "'''지금 로그아웃했습니다.'''\n\n브라우저 캐시를 지우지 않으면 일부 문서에서 로그인이 되어 있는 것처럼 보일 수 있습니다.",
+       "virus-unknownscanner": "알 수 없는 안티 바이러스:",
+       "logouttext": "<strong>지금 로그아웃했습니다.</strong>\n\n브라우저 캐시를 지우지 않으면 일부 문서에서 로그인이 되어 있는 것처럼 보일 수 있습니다.",
        "welcomeuser": "$1님, 환영합니다!",
        "welcomecreation-msg": "계정이 만들어졌습니다.\n[[Special:Preferences|{{SITENAME}} 사용자 환경 설정]]을 바꿀 수 있습니다.",
        "yourname": "사용자 이름:",
        "yourtext": "당신의 편집",
        "storedversion": "현재 문서",
        "nonunicodebrowser": "'''경고: 웹 브라우저가 유니코드를 완벽하게 지원하지 않습니다.'''\n아스키가 아닌 문자가 16진수 코드로 나타날 수 있습니다.",
-       "editingold": "'''경고: 지금 이전 버전의 문서를 고치고 있습니다.'''\n이것을 저장하면 최근에 편집된 부분이 사라질 수 있습니다.",
+       "editingold": "<strong>경고: 이 문서의 오래된 판을 편집하고 있습니다.</strong>\n이것을 저장하면, 이 판 이후로 바뀐 모든 편집이 사라집니다.",
        "yourdiff": "차이",
        "copyrightwarning": "{{SITENAME}}에서의 모든 기여는 $2 라이선스로 배포된다는 점을 유의해 주세요 (자세한 내용에 대해서는 $1 문서를 읽어주세요).\n만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.<br />\n또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.\n'''저작권이 있는 내용을 허가 없이 저장하지 마세요!'''",
        "copyrightwarning2": "{{SITENAME}}에서의 모든 기여는 다른 사용자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요.\n만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.<br />\n또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 내용에 대해서는 $1 문서를 읽어 주세요).\n'''저작권이 있는 내용을 허가 없이 저장하지 마세요!'''",
        "parser-template-recursion-depth-warning": "틀 반복 깊이 제한을 초과함 ($1)",
        "language-converter-depth-warning": "언어 변환기 실행 제한 초과($1)",
        "node-count-exceeded-category": "문서가 노드 횟수를 초과하였습니다.",
-       "node-count-exceeded-category-desc": "ë\85¸ë\93\9c í\9a\9fì\88\98를 ì´\88ê³¼í\95\98ë\8a\94 ë¬¸ì\84\9cì\9d\98 ë¶\84ë¥\98ì\9e\85니다.",
+       "node-count-exceeded-category-desc": "문ì\84\9cê°\80 ìµ\9cë\8c\80 ë\85¸ë\93\9c ì\88\98를 ì´\88ê³¼í\95©니다.",
        "node-count-exceeded-warning": "문서가 노드 수를 초과하였습니다.",
        "expansion-depth-exceeded-category": "문서가 확장 깊이를 초과하였습니다.",
        "expansion-depth-exceeded-category-desc": "최대 확장 깊이를 초과하는 문서입니다.",
        "rev-deleted-user": "(사용자 이름 삭제됨)",
        "rev-deleted-event": "(기록 동작이 제거됨)",
        "rev-deleted-user-contribs": "[사용자 이름 또는 IP 주소 삭제됨 -  기여 목록에서 편집이 숨겨짐]",
-       "rev-deleted-text-permission": "해당 편집이 문서 역사에서 '''삭제'''되었습니다.\n자세한 사항은 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 볼 수 있습니다.",
-       "rev-deleted-text-unhide": "해당 편집이 문서 역사에서 '''삭제'''되었습니다.\n자세한 사항은 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 볼 수 있습니다.\n이 편집을 보기를 원하신다면 [$1 해당 편집]을 볼 수 있습니다.",
-       "rev-suppressed-text-unhide": "해당 편집이 문서 역사에서 '''숨겨져''' 있습니다.\n자세한 사항은 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 숨김 기록]에서 볼 수 있습니다.\n이 편집을 보기를 원하신다면 [$1 해당 편집]을 볼 수 있습니다.",
-       "rev-deleted-text-view": "이 문서의 편집은 역사에서 '''삭제'''되었습니다.\n삭제된 편집을 볼 수 있으며 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 자세한 내용을 볼 수 있습니다.",
-       "rev-suppressed-text-view": "이 문서의 편집은 역사에서 '''숨겨져''' 있습니다.\n숨겨진 편집을 볼 수 있으며 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 숨김 기록]에서 자세한 내용을 볼 수 있습니다.",
+       "rev-deleted-text-permission": "이 문서의 판은 <strong>삭제되어</strong> 있습니다.\n자세한 내용은 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 찾을 수 있습니다.",
+       "rev-suppressed-text-permission": "이 문서의 판은 <strong>숨겨져</strong> 있습니다.\n자세한 내용은 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 숨김 기록]에서 찾을 수 있습니다.",
+       "rev-deleted-text-unhide": "이 문서의 판이 <strong>삭제되어</strong> 있습니다.\n자세한 내용은 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 찾을 수 있습니다.\n이 판을 보기를 원한다면 여전히 [$1 해당 판]을 볼 수 있습니다.",
+       "rev-suppressed-text-unhide": "이 문서의 판이 <strong>숨겨져</strong> 있습니다.\n자세한 내용은 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 숨김 기록]에서 찾을 수 있습니다.\n이 판을 보기를 원한다면 여전히 [$1 해당 판]을 볼 수 있습니다.",
+       "rev-deleted-text-view": "이 문서의 판은 <strong>삭제되어</strong> 있습니다.\n삭제된 판을 볼 수 있으며 자세한 내용은 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 찾을 수 있습니다.",
+       "rev-suppressed-text-view": "이 문서의 판은 <strong>숨겨져</strong> 있습니다.\n숨겨진 판을 볼 수 있으며 자세한 내용은 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 숨김 기록]에서 찾을 수 있습니다.",
        "rev-deleted-no-diff": "특정 판이 문서 역사에서 '''삭제'''되었기 때문에 비교할 수 없습니다.\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 자세한 내용을 볼 수 있습니다.",
        "rev-suppressed-no-diff": "두 판 중 일부가 '''삭제'''되었기 때문에 문서 편집 내용을 비교할 수 없습니다.",
        "rev-deleted-unhide-diff": "이 비교에 사용된 판 가운데 하나가 '''삭제'''되었습니다.\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에 자세한 내용을 찾아볼 수 있습니다.\n계속 작업하고 싶다면 여전히 [$1 비교 보기]를 계속할 수 있습니다.",
        "search-file-match": "(내용이 일치하는 파일 있음)",
        "search-suggest": "$1 문서를 찾고 있으신가요?",
        "search-interwiki-caption": "자매 프로젝트",
-       "search-interwiki-default": "$1 로부터의 결과:",
+       "search-interwiki-default": "$1로부터의 결과:",
        "search-interwiki-more": "(더 보기)",
        "search-relatedarticle": "관련",
        "searchrelated": "관련",
        "searchall": "모두",
        "showingresults": "'''$2'''번 부터의 {{PLURAL:$1|결과 '''1'''개|결과 '''$1'''개}}입니다.",
        "showingresultsinrange": "#<strong>$2</strong>부터 #<strong>$3</strong>까지의 범위에서 <strong>$1</strong>개의 {{PLURAL:$1|결과}}가 아래에 보입니다.",
+       "search-showingresults": "{{PLURAL:$4|결과 <strong>$3</strong>개 중 <strong>$1</strong>개|결과 <strong>$3</strong>개 중 <strong>$1 - $2</strong>개}}",
        "search-nonefound": "검색어와 일치하는 결과가 없습니다.",
        "powersearch-legend": "고급 검색",
        "powersearch-ns": "다음 이름공간에서 검색:",
        "powersearch-toggleall": "모두",
        "powersearch-togglenone": "모두 제외",
        "powersearch-remember": "향후 검색에 선택 기억하기",
-       "search-external": "바깥에서 검색",
+       "search-external": "바깥 검색",
        "searchdisabled": "{{SITENAME}} 검색이 비활성화되어 있습니다.\n검색이 작동하지 않는 동안에는 Google(구글)을 통해 검색할 수 있습니다.\n검색 엔진의 내용은 최신이 아닐 수 있다는 점을 참고하세요.",
        "search-error": "검색하는 동안 오류가 발생했습니다: $1",
        "preferences": "사용자 환경 설정",
        "mypreferences": "환경 설정",
        "prefs-edits": "편집 수:",
-       "prefsnologintext2": "ì\82¬ì\9a©ì\9e\90 í\99\98ê²½ ì\84¤ì \95ì\9d\84 ë³\80ê²½í\95\98려면 ë¡\9cê·¸ì\9d¸í\95\98ì\8b­ì\8b\9cì\98¤.",
+       "prefsnologintext2": "ì\82¬ì\9a©ì\9e\90 í\99\98ê²½ ì\84¤ì \95ì\9d\84 ë°\94꾸려면 ë¡\9cê·¸ì\9d¸í\95\98ì\84¸ì\9a\94.",
        "prefs-skin": "스킨",
        "skin-preview": "미리 보기",
        "datedefault": "설정하지 않음",
        "prefs-files": "파일",
        "prefs-custom-css": "사용자 CSS",
        "prefs-custom-js": "사용자 자바스크립트",
-       "prefs-common-css-js": "모든 스킨에 대한 공통 CSS/자바스크립트:",
+       "prefs-common-css-js": "모든 스킨에 공유된 CSS/자바스크립트:",
        "prefs-reset-intro": "이 페이지를 사용해 사이트 기본값으로 환경 설정을 재설정할 수 있습니다.\n이는 되돌릴 수 없습니다.",
        "prefs-emailconfirm-label": "이메일 인증:",
        "youremail": "이메일:",
        "gender-female": "위키 문서를 편집하는 여자입니다",
        "prefs-help-gender": "이 환경 설정은 선택 사항입니다.\n소프트웨어는 적절한 성별 문법을 사용하여 다른 사용자에게 당신을 언급하는 것을 해결하기 위해 사용됩니다.\n이 정보는 공개됩니다.",
        "email": "이메일",
-       "prefs-help-realname": "ì\8b¤ëª\85ì\9d\80 ì\84 í\83\9d ì\82¬í\95­ì\9e\85ë\8b\88ë\8b¤.\nì\8b¤ëª\85ì\9d\84 ì\9e\85ë ¥í\95\98ë©´ ë¬¸ì\84\9c ê¸°ì\97¬ì\97\90 ì\9e\90ì\8b ì\9d\98 ì\9d´ë¦\84ì\9d´ ë\93¤ì\96´ê°\80ê²\8c ë\90©니다.",
+       "prefs-help-realname": "ì\8b¤ëª\85ì\9d\80 ì\84 í\83\9d ì\82¬í\95­ì\9e\85ë\8b\88ë\8b¤.\nì\8b¤ëª\85ì\9d\84 ì\9e\85ë ¥í\95\98ë©´ ë\8b¹ì\8b ì\9d\98 ê¸°ì\97¬ì\97\90 ë\8c\80í\95\9c ì \80ì\9e\91ì\9e\90í\91\9cì\8b\9cì\97\90 ì\93°ì\9d´ê²\8c ë\90  ì\88\98 ì\9e\88ì\8aµ니다.",
        "prefs-help-email": "이메일 주소 입력은 선택 사항입니다. 다만 비밀번호를 잊었을 때 비밀번호를 재설정하기 위해 필요합니다.",
        "prefs-help-email-others": "자신의 문서나 토론 문서에 있는 이메일 보내기 링크로 다른 사용자가 연락할 수 있게 할 수도 있습니다.\n이 경우에도 이메일 주소는 다른 사용자가 연락할 때 공개되지 않습니다.",
        "prefs-help-email-required": "이메일 주소가 필요합니다.",
        "prefs-tokenwatchlist": "토큰",
        "prefs-diffs": "차이",
        "prefs-help-prefershttps": "이 사용자 환경 설정은 다음 로그인부터 적용됩니다.",
+       "prefswarning-warning": "사용자 환경 설정에서 바뀐 것이 아직 저장되어 있지 않습니다.\n사용자 환경 설정에서 \"$1\"을 클릭하지 않고 이 페이지를 떠나면 바뀌지 않습니다.",
        "prefs-tabs-navigation-hint": "팁: 탭 목록에서 탭 사이를 둘러보려면 왼쪽과 오른쪽 화살표 키를 사용할 수 있습니다.",
        "email-address-validity-valid": "이메일 주소가 올바른 것으로 보입니다",
        "email-address-validity-invalid": "올바른 이메일 주소를 입력하세요",
        "right-deletedtext": "삭제된 문서의 내용과 편집상의 차이를 보기",
        "right-browsearchive": "삭제된 문서 검색",
        "right-undelete": "삭제된 문서 되살리기",
-       "right-suppressrevision": "관리자가 보지 못하도록 숨겨진 판을 검토하고 되살리기",
+       "right-suppressrevision": "어떤 사용자도 보지 못하도록 숨겨진 판을 검토하고 되살리기",
        "right-viewsuppressed": "어떤 사용자가 숨긴 판 보기",
        "right-suppressionlog": "숨겨진 기록을 보기",
        "right-block": "다른 사용자가 편집을 못하도록 차단",
        "recentchanges-feed-description": "이 피드에 위키의 최근 바뀜을 추적합니다.",
        "recentchanges-label-newpage": "새로 만든 문서",
        "recentchanges-label-minor": "사소한 편집",
-       "recentchanges-label-bot": "ë´\87ì\9d\98 편집",
-       "recentchanges-label-unpatrolled": "ì\95\84ì§\81 ì\88\9cì°°하지 않은 편집",
+       "recentchanges-label-bot": "ë´\87ì\9d´ ì\88\98í\96\89í\95\9c 편집",
+       "recentchanges-label-unpatrolled": "ì\95\84ì§\81 ì \90ê²\80하지 않은 편집",
        "recentchanges-label-plusminus": "바이트로 표기된 바뀐 문서 크기",
        "recentchanges-legend-heading": "'''범례:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|새 문서 목록]]도 보세요)",
        "nolicense": "선택하지 않음",
        "licenses-edit": "라이선스 옵션 편집",
        "license-nopreview": "(미리 보기 불가능)",
-       "upload_source_url": "(올바르고, 공개적으로 접근할 수 있는 URL)",
+       "upload_source_url": "(올바르고, 공개적으로 접근할 수 있는 URL에서 선택한 파일)",
        "upload_source_file": "(당신의 컴퓨터에서 선택한 파일)",
        "listfiles-delete": "삭제",
        "listfiles-summary": "이 특수 문서는 모든 올려진 파일을 보여줍니다.",
        "filedelete-maintenance-title": "파일을 삭제할 수 없습니다",
        "mimesearch": "MIME 검색",
        "mimesearch-summary": "이 페이지는 MIME 유형에 해당하는 파일을 필터합니다.\n입력: 내용종류/하위종류나 내용종류/*, 예를 들어 <code>image/jpeg</code>",
-       "mimetype": "MIME 형식:",
+       "mimetype": "MIME 종류:",
        "download": "다운로드",
        "unwatchedpages": "주시되지 않는 문서 목록",
        "listredirects": "넘겨주기 문서 목록",
        "pager-older-n": "{{PLURAL:$1|이전 1개|이전 $1개}}",
        "suppress": "오버사이트",
        "querypage-disabled": "이 특수 문서는 성능상의 이유로 비활성화되었습니다.",
+       "apihelp": "API 도움말",
        "booksources": "책 찾기",
        "booksources-search-legend": "책 원본 검색",
        "booksources-isbn": "ISBN:",
+       "booksources-search": "검색",
        "booksources-text": "아래의 목록은 새 책이나 중고 책을 판매하는 바깥 사이트로, 원하는 책의 정보를 얻을 수 있습니다.",
        "booksources-invalid-isbn": "입력한 ISBN이 잘못된 것으로 보입니다. 원본과 대조해 보세요.",
        "specialloguserlabel": "작업 수행자:",
        "noindex-category-desc": "문서는 그것과 그 플래그가 허용된 곳에 있는 이름공간에서 <code><nowiki>__NOINDEX__</nowiki></code> 특수 명령이 있기 때문에 로봇이 색인하지 않습니다.",
        "index-category-desc": "문서는 그것(과 플래그가 허용된 곳에 있는 이름공간에 있는 것)에 <code><nowiki>__INDEX__</nowiki></code>가 있어서, 정상적이지 않을 곳에 로봇에 의해 색인됩니다.",
        "post-expand-template-inclusion-category-desc": "모든 틀을 전개하였을 때, 문서 크기가 <code>$wgMaxArticleSize</code>보다 커지므로, 어떤 틀은 전개하지 않았습니다.",
-       "post-expand-template-argument-category-desc": "틀 변수 (<code>{{{Foo}}}</code>와 같은, 중괄호가 세 개 있는 무언가)를 확장하고 나서, 문서는 <code>$wgMaxArticleSize</code>보다 커집니다.",
-       "expensive-parserfunction-category-desc": "(<code>#ifexist</code>와 같은) 느린 파서 함수가 너무 많이 문서에 포함되어 있습니다. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit]를 보세요.",
-       "broken-file-category-desc": "ë\84ë¥\98ê°\80 ê¹¨ì§\84 í\8c\8cì\9d¼ ë§\81í\81¬ (í\8c\8cì\9d¼ì\9d´ ì¡´ì\9e¬í\95\98ì§\80 ì\95\8aì\9d\84 ë\95\8c í\8f¬í\95¨ë\90\98ë\8a\94 ë§\81í\81¬)ê°\80 ì\9e\88ë\8a\94 ë¬¸ì\84\9cê°\80 ì\9e\88ë\8b¤ë©´ ì¶\94ê°\80ë\90©ë\8b\88ë\8b¤.",
-       "hidden-category-category-desc": "기본적으로 문서에 분류 링크 상자가 보여지는 것에서 막기 위한, <code><nowiki>__HIDDENCAT__</nowiki></code>가 있는 분류입니다.",
+       "post-expand-template-argument-category-desc": "틀 변수 (<code>{{{Foo}}}</code>와 같은, 중괄호가 세 개 있는 무언가)를 확장하고 나서 문서는 <code>$wgMaxArticleSize</code>보다 커집니다.",
+       "expensive-parserfunction-category-desc": "문서에 (<code>#ifexist</code>와 같은) 느린 파서 함수가 너무 많이 쓰이고 있습니다. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit]를 보세요.",
+       "broken-file-category-desc": "문ì\84\9cì\97\90 ê¹¨ì§\84 í\8c\8cì\9d¼ ë§\81í\81¬ (í\8c\8cì\9d¼ì\9d´ ì¡´ì\9e¬í\95\98ì§\80 ì\95\8aì\9d\84 ë\95\8c í\8f¬í\95¨ë\90\98ë\8a\94 ë§\81í\81¬)를 í\8f¬í\95¨í\95©ë\8b\88ë\8b¤.",
+       "hidden-category-category-desc": "기본적으로 문서에 분류 링크 상자가 보여지는 것에서 막기 위한, 분류의 문서 내용에 <code><nowiki>__HIDDENCAT__</nowiki></code>를 포함합니다.",
        "trackingcategories-nodesc": "사용할 수 있는 설명이 없습니다.",
        "trackingcategories-disabled": "분류가 비활성화되어 있습니다",
        "mailnologin": "보낼 이메일 주소가 없음",
        "mywatchlist": "주시문서 목록",
        "watchlistfor2": "사용자:$1 $2",
        "nowatchlist": "주시하는 문서가 아직 없습니다.",
-       "watchlistanontext": "주시문서 목록을 보거나 고치려면 $1 하세요.",
+       "watchlistanontext": "주시문서 목록을 보거나 고치려면 로그인하세요.",
        "watchnologin": "로그인하지 않음",
        "addwatch": "주시문서 목록에 추가",
        "addedwatchtext": "\"[[:$1]]\" 문서를 [[Special:Watchlist|주시문서 목록]]에 추가했습니다.\n앞으로 이 문서나 관련된 토론 문서가 바뀌면 보일 것입니다.",
        "watchlist-details": "별도의 토론 문서를 세지 않고, 주시문서 목록에 {{PLURAL:$1|문서 $1개}}가 있습니다.",
        "wlheader-enotif": "이메일 알림 기능이 활성화되었습니다.",
        "wlheader-showupdated": "마지막으로 방문한 이후에 바뀐 문서는 '''굵은 글씨'''로 보입니다.",
-       "wlnote": "다음은 최근 {{PLURAL:$2|'''$2'''시간}} 동안 {{PLURAL:$1|바뀐 문서 '''$1'''개 입니다}}. ($3 $4 기준)",
-       "wlshowlast": "ìµ\9cê·¼ $1ì\8b\9cê°\84 $2ì\9d¼ ë\98\90ë\8a\94  ë\8f\99ì\95\88ì\97\90 ë°\94ë\80\90 ë¬¸ì\84\9c ë³´ê¸°",
+       "wlnote": "$3 $4 기준으로, 아래에 최근 {{PLURAL:$2|한 시간|<strong>$2</strong>시간}} 동안 {{PLURAL:$1|마지막 바뀜이|마지막 바뀜 <strong>$1</strong>개가}} 있습니다.",
+       "wlshowlast": "ìµ\9cê·¼ $1ì\8b\9cê°\84 $2ì\9d¼ ë\8f\99ì\95\88ì\9d\98 ë°\94ë\80\9c ë³´ê¸°",
        "watchlist-options": "주시문서 목록 설정",
        "watching": "주시 추가 중…",
        "unwatching": "주시 해제 중…",
        "exbeforeblank": "비우기 전의 내용: \"$1\"",
        "delete-confirm": "\"$1\" 삭제",
        "delete-legend": "삭제",
-       "historywarning": "'''경고:''' 삭제하려는 문서에 이전 {{PLURAL:$1|편집 역사}} 약 $1개가 있습니다:",
+       "historywarning": "<strong>경고:</strong> 삭제하려고 하는 문서에 {{PLURAL:$1|판}} $1개의 역사가 있습니다:",
        "confirmdeletetext": "문서와 문서 역사를 삭제하려고 합니다.\n삭제하려는 문서가 맞는지, 이 문서를 삭제하는 것이 [[{{MediaWiki:Policy-url}}|정책]]에 맞는 행동인지를 확인해 주세요.",
        "actioncomplete": "동작 완료",
        "actionfailed": "명령 실패",
        "protect-othertime": "다른 기간:",
        "protect-othertime-op": "다른 기간",
        "protect-existing-expiry": "현재 만료 기간: $2 $3",
+       "protect-existing-expiry-infinity": "기존 만료 시간: 무기한",
        "protect-otherreason": "다른 이유/추가적인 이유:",
        "protect-otherreason-op": "다른 이유",
-       "protect-dropdown": "*ì\9d¼ë°\98ì \81ì\9d¸ ë³´í\98¸ ì\9d´ì\9c \n** ë¹\88ë²\88í\95\9c í\9b¼ì\86\90 í\96\89ì\9c\84\n** ë¹\88ë²\88í\95\9c ê´\91ê³  í\96\89ì\9c\84\n** 비생산적인 편집 분쟁\n** 방문이 많은 문서",
+       "protect-dropdown": "*ì\9d¼ë°\98ì \81ì\9d¸ ë³´í\98¸ ì\9d´ì\9c \n** ë¹\88ë²\88í\95\9c í\9b¼ì\86\90 í\96\89ì\9c\84\n** ë¹\88ë²\88í\9e\88 ê´\91고를 ë\84£ì\9d\8c\n** 비생산적인 편집 분쟁\n** 방문이 많은 문서",
        "protect-edit-reasonlist": "보호 이유 편집하기",
        "protect-expiry-options": "1시간:1 hour,1일:1 day,1주일:1 week,2주일:2 weeks,1개월:1 month,3개월:3 months,6개월:6 months,1년:1 year,무기한:infinite",
        "restriction-type": "권한:",
        "import-upload": "XML 데이터 올리기",
        "import-token-mismatch": "세션 데이터가 손실되었습니다.\n다시 시도하세요.",
        "import-invalid-interwiki": "해당 위키에서 문서를 가져올 수 없습니다.",
-       "import-error-edit": "현재 문서를 편집할 권한이 없기 때문에 \"$1\" 문서를 불러올 수 없습니다.",
-       "import-error-create": "현재 문서를 만들 권한이 없기 때문에 \"$1\" 문서를 불러올 수 없습니다.",
-       "import-error-interwiki": "\"$1\" 문서는 제목이 바깥 링크(인터위키)용으로 할당되어 있기 때문에 가져오지 않습니다.",
-       "import-error-special": "\"$1\" 문서는 특수 문서에 속해 있기 때문에 가져오지 않습니다.",
-       "import-error-invalid": "\"$1\" ë¬¸ì\84\9cë\8a\94 ì \9c목ì\9d´ ì\9e\98못ë\90\98ì\97\88기 ë\95\8c문ì\97\90 ê°\80ì ¸ì\98¤ì§\80 ì\95\8a습니다.",
+       "import-error-edit": "문서를 편집할 수 없기 때문에 \"$1\" 문서를 가져올 수 없었습니다.",
+       "import-error-create": "문서를 만들 수 없기 때문에 \"$1\" 문서를 가져올 수 없었습니다.",
+       "import-error-interwiki": "\"$1\" ë¬¸ì\84\9cë\8a\94 ì \9c목ì\9d´ ë°\94ê¹¥ ë§\81í\81¬(ì\9d¸í\84°ì\9c\84í\82¤)ì\9a©ì\9c¼ë¡\9c í\95 ë\8b¹ë\90\98ì\96´ ì\9e\88기 ë\95\8c문ì\97\90 ê°\80ì ¸ì\98¤ì§\80 ì\95\8aì\95\98ì\8aµë\8b\88ë\8b¤.",
+       "import-error-special": "\"$1\" 문서는 문서가 허용하지 않는 특수 이름공간에 속해 있기 때문에 가져오지 않았습니다.",
+       "import-error-invalid": "\"$1\" ë¬¸ì\84\9cë\8a\94 ì\9d´ ì\9c\84í\82¤ì\97\90ì\84\9c ê°\80ì ¸ì\98¤ë ¤ê³  í\95\98ë\8a\94 ë¬¸ì\84\9cì\9d\98 ì\9d´ë¦\84ì\9d´ ì\98¬ë°\94르ì§\80 ì\95\8a기 ë\95\8c문ì\97\90 ê°\80ì ¸ì\98¤ì§\80 ì\95\8aì\95\98습니다.",
        "import-error-unserialize": "\"$1\" 문서의 $2 판이 일렬적이지 않습니다. $3 내용 모델을 사용하여 $4 형식으로 일렬화되도록 판을 보고했습니다.",
        "import-error-bad-location": "$3 내용 모델을 사용하는 $2 판을 이 위키의 \"$1\"에 저장할 수 없습니다. 모델을 문서에서 지원하지 않습니다.",
        "import-options-wrong": "잘못된 {{PLURAL:$2|선택 사항}}: <nowiki>$1</nowiki>",
        "print.css": "/* 이 CSS 설정은 인쇄 출력 화면에 적용됩니다 */",
        "noscript.css": "/* 이 CSS 설정은 자바스크립트를 비활성화한 사용자에 적용됩니다 */",
        "group-autoconfirmed.css": "/* 이 CSS 설정은 자동 인증된 사용자에만 적용됩니다 */",
+       "group-user.css": "/* 이 CSS 설정은 등록된 사용자에만 적용됩니다 */",
        "group-bot.css": "/* 이 CSS 설정은 봇에만 적용됩니다 */",
        "group-sysop.css": "/* 이 CSS 설정은 관리자에만 적용됩니다 */",
        "group-bureaucrat.css": "/* 이 CSS 설정은 사무관에만 적용됩니다 */",
        "common.js": "/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */",
        "group-autoconfirmed.js": "/* 이 자바스크립트 설정은 자동 인증된 사용자에만 적용됩니다 */",
+       "group-user.js": "/* 이 자바스크립트 설정은 등록된 사용자에만 적용됩니다 */",
        "group-bot.js": "/* 이 자바스크립트 설정은 봇에만 적용됩니다 */",
        "group-sysop.js": "/* 이 자바스크립트 설정은 관리자에만 적용됩니다 */",
        "group-bureaucrat.js": "/* 이 자바스크립트 설정은 사무관에만 적용됩니다 */",
        "log-name-pagelang": "언어 바꾸기 기록",
        "log-description-pagelang": "문서 언어를 바꾼 기록입니다.",
        "logentry-pagelang-pagelang": "$1 사용자가 $3의 문서 언어를 $4에서 $5로 {{GENDER:$2|바꾸었습니다}}.",
+       "default-skin-not-found": "이런! 당신의 위키에 <code dir=\"ltr\">$wgDefaultSkin</code>에 <code>$1</code>(으)로 지정한 기본 스킨은 사용할 수 없습니다.\n\n설치에는 다음 스킨이 포함된 것으로 보입니다. 스킨을 활성화하고 기본값으로 선택하는 방법에 대한 정보에 대해서는 [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: 스킨 설정]을 보세요.\n\n$2\n\n; 미디어위키를 설치했다면:\n: 아마 git에서 설치했거나, 어떤 다른 방법을 사용하여 직접 설치했을 수 있을 것으로 봅니다. [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org의 스킨 디렉터리]에서 어떤 스킨을 설치해보세요:\n:* 여러 스킨과 확장 기능이 들어 있는 [https://www.mediawiki.org/wiki/Download tarball 설치 프로그램]을 다운로드하세요. 거기서 <code>skins/</code> 디렉터리를 복사하여 붙여 넣을 수 있습니다.\n:* 미디어위키 설치의 <code dir=\"ltr\">skins/</code> 디렉터리 안에 git를 통해 <code>mediawiki/skins/*</code> 저장소 중 하나를 복제하세요.\n: 당신이 미디어위키 개발자이면 당신의 git 저장소를 방해하면 안됩니다.\n\n; 미디어위키를 업그레이드했다면:\n: 미디어위키 1.24와 새 버전은 더 이상 설치된 스킨을 자동으로 활성화하지 않습니다 ([https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: 스킨 자동발견]을 보세요). 현재 설치된 스킨을 모두 활성화하려면 <code>LocalSettings.php</code> 안에 다음 줄을 붙여 넣을 수 있습니다:\n\n<pre dir=\"ltr\">$3</pre>\n\n; <code>LocalSettings.php</code>를 수정했다면:\n: 스킨 이름에 오타가 났는지 다시 확인하세요.",
+       "default-skin-not-found-no-skins": "이런! 당신의 위키에 <code dir=\"ltr\">$wgDefaultSkin</code>에 <code>$1</code>(으)로 지정한 기본 스킨은 사용할 수 없습니다.\n\n설치된 스킨은 없습니다.\n\n; 미디어위키를 설치했거나 업그레이드했다면:\n: 아마 git에서 설치했거나, 어떤 다른 방법을 사용하여 직접 설치했을 수 있을 것으로 봅니다. 미디어위키 1.24와 새 버전은 주 저장소에 어떠한 스킨도 포함되어 있지 않습니다. [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org의 스킨 디렉터리]에서 어떤 스킨을 설치해보세요:\n:* 여러 스킨과 확장 기능이 들어 있는 [https://www.mediawiki.org/wiki/Download tarball 설치 프로그램]을 다운로드하세요. 거기서 <code>skins/</code> 디렉터리를 복사하여 붙여 넣을 수 있습니다.\n:* 미디어위키 설치의 <code dir=\"ltr\">skins/</code> 디렉터리 안에 git를 통해 <code>mediawiki/skins/*</code> 저장소 중 하나를 복제하세요.\n: 당신이 미디어위키 개발자이면 당신의 git 저장소를 방해하면 안됩니다. 스킨을 활성화하고 기본값으로 선택하는 방법에 대한 정보에 대해서는 [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: 스킨 설정]을 보세요.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (활성화)",
-       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''비활성화''')"
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''비활성화''')",
+       "mediastatistics": "미디어 통계",
+       "mediastatistics-summary": "올려진 파일 유형에 대한 통계입니다. 이 통계는 파일의 가장 최신 판만을 포함합니다. 오래되거나 삭제된 파일의 판은 제외됩니다.",
+       "mediastatistics-nbytes": "{{PLURAL:$1|$1 바이트}} ($2; $3%)",
+       "mediastatistics-table-mimetype": "MIME 종류",
+       "mediastatistics-table-extensions": "가능한 확장 기능",
+       "mediastatistics-table-count": "파일 수",
+       "mediastatistics-table-totalbytes": "압축된 크기",
+       "mediastatistics-header-unknown": "알 수 없음",
+       "mediastatistics-header-bitmap": "비트맵 그림",
+       "mediastatistics-header-drawing": "드로잉 (벡터 그램)",
+       "mediastatistics-header-audio": "소리",
+       "mediastatistics-header-video": "동영상",
+       "mediastatistics-header-multimedia": "리치 미디어",
+       "mediastatistics-header-office": "오피스",
+       "mediastatistics-header-text": "텍스트",
+       "mediastatistics-header-executable": "실행 파일",
+       "mediastatistics-header-archive": "압축 파일",
+       "json-warn-trailing-comma": "뒤 {{PLURAL:$1|쉼표}} $1개가 JSON에서 제거되었습니다",
+       "json-error-unknown": "JSON에 문제가 있었습니다. 오류: $1",
+       "json-error-depth": "최대 스택 깊이를 초과했습니다",
+       "json-error-state-mismatch": "올바르지 않거나 잘못된 형식의 JSON",
+       "json-error-ctrl-char": "제어 문자 오류, 올바르지 않게 인코딩되어 있을 수 있습니다",
+       "json-error-syntax": "구문 오류",
+       "json-error-utf8": "잘못된 형식의 UTF-8 문자, 올바르지 않게 인코딩되어 있을 수 있습니다",
+       "json-error-recursion": "인코딩할 값에 하나 이상의 재귀 참조",
+       "json-error-inf-or-nan": "인코딩할 값에 하나 이상의 NAN이나 INF 값",
+       "json-error-unsupported-type": "인코딩할 수 없는 유형의 값을 받았습니다"
 }
index b33c180..93d2871 100644 (file)
        "page_last": "lescht",
        "histlegend": "Fir d'Ännerungen unzeweisen: Klickt déi zwou Versiounen un, déi solle verglach ginn.<br />\n*(aktuell) = Ënnerscheed mat der aktueller Versioun,\n*(lescht) = Ënnerscheed mat der aler Versioun,\n*k = Kleng Ännerung.",
        "history-fieldset-title": "An de Versioune sichen",
-       "history-show-deleted": "nëmmen déi geläschten",
+       "history-show-deleted": "nëmmen déi geläscht",
        "histfirst": "eelst",
        "histlast": "neist",
        "historysize": "({{PLURAL:$1|1 Byte|$1 Byten}})",
        "pager-older-n": "{{PLURAL:$1|vireg|vireg $1}}",
        "suppress": "Iwwersiicht",
        "querypage-disabled": "Dës Spezialsäit ass aus Performance-Grënn ausgeschalt.",
+       "apihelp": "API-Hëllef",
+       "apihelp-no-such-module": "Modul \"$1\" net fonnt.",
        "booksources": "Bicherreferenzen",
        "booksources-search-legend": "No Bicherreferenze sichen",
        "booksources-search": "Sichen",
        "tooltip-feed-atom": "Atom-Feed fir dës Säit",
        "tooltip-t-contributions": "Lëscht vun de Kontributioune vun dësem Benotzer",
        "tooltip-t-emailuser": "Dësem Benotzer eng E-Mail schécken",
+       "tooltip-t-info": "Méi Informatiounen iwwer dës Säit",
        "tooltip-t-upload": "Biller oder Mediefichieren eroplueden",
        "tooltip-t-specialpages": "Lëscht vun alle Spezialsäiten",
        "tooltip-t-print": "Versioun vun dëser Säit fir auszedrécken",
index d0f68cb..5d2969a 100644 (file)
        "pager-older-n": "{{جمی:$1|گپسالتر 1|گپسالتر $1}}",
        "suppress": "پائیئن",
        "querypage-disabled": "ای بلگه ویجه سی دلیلیا انجومکاری ناکشتگر بیه.",
+       "apihelp": "هومیاری آی پی آی",
+       "apihelp-no-such-module": "ماجول \"$1\" پیدا نبی.",
        "booksources": "سرچشمه يل كتاو",
        "booksources-search-legend": "پی جوری سی سرچشمه یا کتاو",
        "booksources-isbn": "آی اس بی ان:",
        "listgrouprights-namespaceprotection-namespace": "نوم جا",
        "listgrouprights-namespaceprotection-restrictedto": "دسرسیا مجاز کاریار سی ویرایشت",
        "trackingcategories": "دما گری دسه یا",
+       "trackingcategories-summary": "ای بلگه نومگه دسه یایی دماگری بیه ئه که وه شکل خودانجوم وه دس ویکی وارسگر پر بوئن . نومیا ونو نها آلشت کردن پیغومیا سامونه ای مرتوط د نومجا {{ns:8}} آلشت دئه با.",
        "trackingcategories-msg": "دماگری دسه",
        "trackingcategories-name": "نوم پیغوم",
        "trackingcategories-desc": "جادیارکنیا گنجایشت دسه",
+       "noindex-category-desc": "ای بلگه وا رباتیا نومگه کاری نبیه و سی یه کلیمه یا جادویی <code><nowiki>__NOINDEX__</nowiki></code> د وه یا د جاگه ای که بیرق مجازه دش هئ.",
+       "index-category-desc": "ای بلگه<code><nowiki>__INDEX__</nowiki></code> که ها دش(و د نومجایی یه که بیرق دش مجازه)،  سی یه وا رباط ما مشگلی ناره که وه شکل عادی نباید با.",
        "broken-file-category-desc": "بلگه مینونه دار یه گل هوم پیوند جانیا خراوه(هوم پیوندی سی جاسازی کردن یه گل جانیا سی گاتی که او جانیا نئئش).",
        "trackingcategories-nodesc": "هیچ شرحی د دسرس نئ.",
        "trackingcategories-disabled": "دسه ناکشتگر بیه",
        "movearticle": "جا وه جا کردن بلگه:",
        "movenotallowed": "شما وه جا وه جا کردن بلگه دسرسی ناریت",
        "movenotallowedfile": "شما وه جا وه جا کردن جانیایا دسرسی ناریت",
+       "cant-move-category-page": "شما صلا ینه که دسه یا نه ناریت.",
        "cant-move-to-category-page": "شما صلا ینه که یه بلگه نه بوریت وه بلگه دسه ناریت.",
        "newtitle": "سی سرون هنی:",
        "move-watch": "دیئن بلگه سرچشمه و بلگه حاستنی",
        "pagemovedsub": "د خوئی جا وه جا بیه",
        "movepage-moved": "<strong>\"$1\" جا وه جا بیه سی \"$2\"</strong>",
        "movepage-moved-redirect": "یه گل واگردونی دروس بیه.",
+       "movepage-moved-noredirect": "د دروس کردن واگردونی جلوگری بیه.",
        "movetalk": "بلگه چک چنه ئم جا وه جا بوئه",
        "move-subpages": "جا وه جایی بلگه یا(تا $1 بلگه)",
+       "move-talk-subpages": "جا وه جا کردن زیر بلگه یا بلگه چک چنه (تا $1 بلگه)",
+       "movepage-page-moved": "بلگه $1 د $2 جا وه جا بیه",
+       "movepage-page-unmoved": "نبوئه بلگه $1 د $2 جا وه جا بوئه",
        "movelogpage": "جاوه جا کردن",
        "movelogpagetext": "د هار یه گل نوم گه د جا وه جایی یا بلگه هئ",
+       "movesubpage": "{{جمی:$1|زیر بلگه|زیر بلگه یا}}",
        "movenosubpage": "ای بلگه زیر بلگه نئ.",
        "movereason": "دلیل:",
        "revertmove": "لرستن",
        "delete_and_move": "پاکسا و جا وه جا بوئه",
        "delete_and_move_confirm": "هری بلگه نه پاکسا کو",
+       "delete_and_move_reason": "پاکساکاری سی ممکن بیین جا وه جایی «[[$1]]»",
+       "immobile-source-namespace": "نبوئه بلگه یا نه وه نومجا \"$1\" جا وه جا با",
+       "immobile-target-namespace": "نبوئه بلگه یا نه وه نومجا \"$1\" جا وه جا با",
+       "immobile-target-namespace-iw": "هوم پیوند مینجاویکی حاستنی مجازی سی جا وه جا کردن بلگه نئ.",
        "immobile-source-page": "ای بلگه جا وه جا کردنی نئ.",
+       "immobile-target-page": "نبوئه وه ای مقصد چنی سرونی جا وه جا بوئه.",
+       "imagenocrossnamespace": "نبوئه جانیانه وه یه گل نومجا غیرجانیایی جا وه جا بکیت",
+       "nonfile-cannot-move-to-file": "نبوئه جانیانه وه یه گل نومجا غیرجانیایی جا وه جا بکیت",
+       "imagetypemismatch": "دماون جانیا تازه وا نوع وه سازگاری ناره",
+       "imageinvalidfilename": "نوم جانیا هدف معتور نئ",
+       "fix-double-redirects": "وه هنگوم سازی همه واگردونیایی که وه گوتار اصلی هشاره میکن",
        "move-leave-redirect": "وه جا نیائن یه گل واگردونی",
        "protectedpagemovewarning": "<strong>زئنار:ای بلگه سی یه پر و پیم بیه که کاریاریایی که دسرسی دیوونداری دارن فقط بتونن دش ویرایشت بکن.</strong>\nآخرین سیائه سی سرچشمه یا د هار اماییه کاری بیه:",
        "semiprotectedpagemovewarning": "<strong>د ویر داشتویت:</strong> ای بلگه سی یه که فقط کاریاریا ثوت نام کرده تونستون دش ویرایشت بکه ن پر و پیم بیه.\nآخرین پهرستنومه دئه بیه سی سرچشمه هار نها اماییه بیه:",
        "export": "وه صحرا ديئن بلگيا",
        "exportall": "وه صحرا ديئن همه بلگيا",
+       "exportcuronly": "فقط مینونه دار وانئری ایسنی با،نه همه ویرگار نه",
+       "exportlistauthors": "مینونه دار نومگه کامل هومیاریا سی هر بلگه",
        "export-submit": "وه در ديئن",
        "export-addcattext": "اضاف کردن بلگه یا د یه گل دسه:",
        "export-addcat": "اضاف کو",
        "export-addns": "اضاف كو",
        "export-download": "ذخیره کردن جانیا",
        "export-templates": "شامل چوئه یا",
+       "export-pagelinks": "مینونه دار بیین بلگه یا هوم پیوند تا ای پی یا:",
        "allmessages": "سامونه پیغومیا",
        "allmessagesname": "نوم",
        "allmessagesdefault": "سفارشت متنی پيش فرض",
        "allmessagescurrent": "نیسسه ایسنی پیغوم",
        "allmessages-filter-legend": "فیلتر",
+       "allmessages-filter": "فیلتر کردن د اساس شخصی کردن:",
        "allmessages-filter-unmodified": "آلشت نبیه",
        "allmessages-filter-all": "همه",
        "allmessages-filter-modified": "آلشت بیه",
        "thumbnail-more": "گپ كردن",
        "filemissing": "گم بیئن جانیا",
        "thumbnail_error": "خطا د راس بیئن بن کلئکی:$1",
+       "thumbnail_error_remote": "پیغوم خطا $1 :\n$2",
+       "djvu_page_error": "بلگه DjVu وه در د حد مجاز",
+       "djvu_no_xml": "امکان پیدا کردن جانیا XML سی وه کار گرتن DjVu وجود ناشت.",
+       "thumbnail-temp-create": "نبوئه جانیا موقت بن کلیکی نه راست بکیت",
+       "thumbnail-dest-create": "نبوئه بن کلیکی نه د مقصدش اماییه بکیت",
+       "thumbnail_invalid_params": "بن کلیکی وا پارامتریا نامعتور",
+       "thumbnail_dest_directory": "نبوئه دایرکتوری مقصد نه درست بکیت",
+       "thumbnail_image-type": "نوع عسگ حامیین داری نبوئه",
+       "thumbnail_image-missing": "وه ویر و باور میا که جانیا گم بیه:$1",
        "import": "وامین اوردن بلگه یا",
+       "importinterwiki": "وامین اوردن ترانس ویکی",
        "import-interwiki-sourcewiki": "سرچشمه ویکی:",
        "import-interwiki-sourcepage": "بلگه سرچشمه:",
+       "import-interwiki-history": "ؤرداشتن ویرگار همه وانئریا سی ای بلگه",
        "import-interwiki-templates": "همه چوئه یا",
        "import-interwiki-submit": "وامین اوردن",
        "import-interwiki-namespace": "نومجا مقصد:",
+       "import-interwiki-rootpage": "ریشه بلگه مقصد(دل به حایی):",
        "import-upload-filename": "نوم جانیا:",
        "import-comment": "ویر و باور:",
        "importstart": "د حال و بار وامین اوردن",
        "import-revision-count": "$1 {{جمی:$1|وانئری|وانئریا}}",
        "importnopages": "هیچ بلگه ای وامین نیومائه.",
+       "imported-log-entries": "$1 {{PLURAL:$1|داده وار پهرستنومه|داده وار پهرستنومه یا}} وامین اومائه.",
        "importfailed": "وامین اوردن شکست حرده: <nowiki>$1</nowiki>",
+       "importunknownsource": "نوع سرچشمه وامین اوردن نادیاره",
        "importcantopen": "نبوئه جانیا دئه بیه نه وا بکید",
        "importbadinterwiki": "هوم پیوند مینجاویکی گن",
        "importsuccess": "وامین اوردن تموم بی!",
        "importnofile": "هیچ جانیا دئه بیه ای سوار نبیه.",
+       "importuploaderrorpartial": "د سوارکرد وامین اوردن جانیا شکستی پیش اومائه.\nانازه جانیا د انازه بیشترونه مجاز گپتره.",
+       "importuploaderrortemp": "د سوارکرد جانیا وامین اوردن مشگلی پیش اومائه.\nتابنده موقت گم بیه.",
        "import-parse-failure": "خطا د وااشکافت یه گل وامین اوردن ایکس ام ال",
        "import-noarticle": "هیچ بلگه ای سی وامین اوردن نئ!",
+       "import-nonewrevisions": "وانئرییا وامین اورده نبیه(همه یا د ایسنی هئشو، یا سی پیش اومائن خطا ور نظر نبینه).",
        "xml-error-string": "$1 د خط$2, ستین $3 (byte $4): $5",
        "import-upload": "سوار کرد دونسمنیا ایکس ام ال",
        "import-token-mismatch": "کمبود د دونسمنیا نشینگه.\nلطفن هنی کوششت بکید.",
+       "import-invalid-interwiki": "نبوئه د ویکی دیارکرده چی یی وامین اورد.",
+       "import-error-edit": "بلگه «$1» وامین نیومائه، سی یه که شما نمی تونیت ونه ویرایشت بکیت.",
+       "import-error-create": "بلگه «$1» وامین نیومائه، سی یه که شما نمی تونیت ونه راست بکیت.",
+       "import-error-interwiki": "بلگه «$1» وامین نیومائه، سی یه که نوم وه سی یه گل هوم پیوندگری خارجی اماییه کاری بیه(مینجا ویکی).",
+       "import-error-special": "بلگه «$1» وامین نیومائه، سی یه که وه مال وه یه گل نومجا خاصه که او بلگه یا صلادار نئین.",
+       "import-error-invalid": "بلگه \"$1\"  سی یه که نامعتور بیین نومش ممکن بی د ویکی وامین اورده نبیه.",
+       "import-error-unserialize": "نبوئه وه دراوردن بلگه $2 د بلگه «$1» د شکل رازینه کاری بیه نه انجوم بییت.چؤ اومائه که نسقه ای د مدل مینونه $3 وه کار گرته که وه د شکل $4 رازینه کاری بیه.",
+       "import-options-wrong": "{{PLURAL:$2|جزئیات|جزئیات}} اشتوا: <nowiki>$1</nowiki>",
+       "import-rootpage-invalid": "ریشه دئه بیه د بلگه یه گل سرون نامعتوره.",
+       "import-rootpage-nosubpage": "نومجا \"$1\" بلگه پایه صلا زیر بلگه نه نمی یه.",
        "importlogpage": "پهرستنومه دئن",
+       "importlogpagetext": "وامین اوردن بلگه یا وا ویرگارچه ویرایشت ونو د ویکی یا هنی",
+       "import-logentry-upload": "[[$1]] نه د طریق سوارکرد جانیا وامین اورد",
+       "import-logentry-upload-detail": "$1 {{جمی:$1|وانئری|وانئریا}} وامین اومانه",
+       "import-logentry-interwiki": "$1 نه تراویکی کرد",
+       "import-logentry-interwiki-detail": "$1 {{جمی:$1|وانئری|وانئریا}} د $2 وامین اومائنه",
        "javascripttest": "ازمایشت کردن جاوا اسکریپت",
+       "javascripttest-title": "د حال انجوم دئن ازمایشتیا $1",
+       "javascripttest-pagetext-noframework": "ای بلگه سی انجوم دئن ازمایشتیا جاوا اسکریپت اماییه کاری بیه.",
+       "javascripttest-pagetext-unknownframework": "چوئه کار نادیار ازمایشت \"$1\"",
+       "javascripttest-pagetext-frameworks": "لطفن یه گل د چوئه یا ازمایشت هاری نه انتخاو بکیت :$1",
+       "javascripttest-pagetext-skins": "یه گل پوسه نه سی انجوم دئن ازمایشتا انتخاو بکیت:",
+       "javascripttest-qunit-intro": "[$1 مستندیا ازمایشت] نه د mediawiki.org سیل بکیت.",
+       "javascripttest-qunit-heading": "کومله ازمایشت QUnit جاوااسکریپت سی ویکی وارسگر",
        "tooltip-pt-userpage": "بلگه كارورتو",
+       "tooltip-pt-anonuserpage": "بلگه کاریاری تیرنشون آی پی ای که دش ویرایشت می کید",
        "tooltip-pt-mytalk": "بلگه قسه كردن شما",
+       "tooltip-pt-anontalk": "چک چنه دباره ویرایشتیا ای تیرنشون آی پی",
        "tooltip-pt-preferences": "اولويتيا شما",
        "tooltip-pt-watchlist": "نوم نوشت د بلگه يايی كه شما آلشتاشونه پيگئری  ميكيد",
        "tooltip-pt-mycontris": "يه گل د هومياريا شما",
        "tooltip-ca-viewsource": "ای بلگه حفاظت بيه.\nشما تونيت سرچمه ش بئوينيت",
        "tooltip-ca-history": "دوواره ديئن ای بلگه",
        "tooltip-ca-protect": "ای بلگه نه حفاظت بكيد",
+       "tooltip-ca-unprotect": "پر و پیم گیری د ای بلگه نه آلشت بکیت",
        "tooltip-ca-delete": "ای بلگه نه پاکسا کو",
+       "tooltip-ca-undelete": "د نو زنه کردن ویرایشتیا ری ای بلگه دما یه که پاکساگری بان",
        "tooltip-ca-move": "ای بگله نه جا وه جا كو",
        "tooltip-ca-watch": "اضاف کردن ای بلگه وه نوم نوشت پیگئریاتو",
        "tooltip-ca-unwatch": "ورداشتن ای بلگه وه نوم نوشت پیگئریاتو",
        "tooltip-feed-atom": "تغذيه كؤچك سی ای بلگه",
        "tooltip-t-contributions": "یه نوم گه د هومیاریا ای کارور",
        "tooltip-t-emailuser": "سی ای كارور ايميل كل كو",
+       "tooltip-t-info": "دونسمنیا بیشتر دباره ای بلگه",
        "tooltip-t-upload": "بلم گير كردن فايلا",
        "tooltip-t-specialpages": "سيائه تمؤم بلگيا خاص",
        "tooltip-t-print": "نسقه چاپ بيئنی سی ای بلگه",
        "tooltip-watch": "ای بلگه نه د سیل برگتو اضاف بکید",
        "tooltip-watchlistedit-normal-submit": "ؤرداشتن سرونیا",
        "tooltip-watchlistedit-raw-submit": "وه هنگوم سازی سیل برگ",
+       "tooltip-recreate": "د نو راس کردن بلگه بی یه که و پاکساگری دماتر وه سیل بکیم",
        "tooltip-upload": "شرو د سوار کرد",
        "tooltip-rollback": "\"ورگشتن\" لرستن د حالت اول  سی ای بلگه  که سی  يه كه هومياری  نيايی اصلاح بيه وا يه پورنسن",
        "tooltip-undo": "انجوم نگرتن ای ویرایشت ورگن و همه فرمیا ویرایشت تانه که حالت پیش سیل واکو.یه اجازه میئه سی اضاف کردن یه دلیل د چکسته.",
        "anonymous": "ناشناس {{جمی:$1|کارور|کاروریا}}  {{سیل جا}}",
        "siteuser": "{{نوم سیلجا}} کارور $1",
        "anonuser": "{{سیل جا}}  کارور ناشناس $1",
+       "lastmodifiedatby": "ای بلگه آخری بار د $1,$2 وه دس $2 آلشت دئه بیه.",
+       "othercontribs": "د اساس کار وا $1.",
        "others": "دیه رون",
        "siteusers": "{{نوم سیل جا}} {{جمی:$2|کارور|کاروریا}} $1",
+       "anonusers": "{{نوم سیل جا}} نادیار {{جمی:$2|کاریار|کاریاریا}} $1",
        "creditspage": "اعتوار بلگه",
+       "nocredits": "دونسمنیا راس کننه یا ای بلگه د دسرس نئ",
+       "spamprotectiontitle": "فیلتر پر و پیم گری د اسپم",
+       "spamprotectionmatch": "نیسسه هاری چی ای یه که فیلتر اسپم ایما نه ونه د کار: $1",
+       "spambot_username": "اسپم پاک کن ویکی وارسگر",
+       "spam_reverting": "واگردونی وه آخری نسقه ای که هوم پیوندی وه $1 ناره.",
+       "spam_blanking": "همه وانئریایی که مینونه دار هوم پیوند $1 هئن، دارن حالی بوئن",
+       "spam_deleting": "همه وانئریایی که مینونه دار هوم پیوند $1 هئن، دارن پاکساگری بوئن",
+       "simpleantispam-label": "وارسی ضد اسپم.\nای \"جاگه\" نه پر نکیت!",
        "pageinfo-title": "دونسمنیا سی \"$1\"",
+       "pageinfo-not-current": "د بدبختی،نبوئه که ای دونسمنیا نه سی وانئریا دماتری نهااماییه بکیت.",
        "pageinfo-header-basic": "دونسمنیا پایه",
        "pageinfo-header-edits": "ویرایشت ویرگار",
        "pageinfo-header-restrictions": "پر و پیم کردن بلگه",
        "pageinfo-header-properties": "چیا بلگه",
        "pageinfo-display-title": "نشو دئن سرون",
+       "pageinfo-default-sort": "کلیت سرجا یک کن پیش فرض",
        "pageinfo-length": "انازه بلگه(وه بایت)",
        "pageinfo-article-id": "نوم دیار کن بلگه",
        "pageinfo-language": "بلگه مینونه زون",
        "pageinfo-content-model": "شلگ مینونه بلگه",
+       "pageinfo-robot-policy": "نومگه کاری وا رباتیا",
        "pageinfo-robot-index": "صلادار",
        "pageinfo-robot-noindex": "بی صلا",
        "pageinfo-views": "شماره دیئن یا",
        "pageinfo-watchers": "شماره سیل کننه بلگه یا",
+       "pageinfo-few-watchers": "کمتر د $1 {{PLURAL:$1|سیل کننه|سیل کننه یا}}",
        "pageinfo-redirects-name": "شماره واگردونیا ای بلگه",
        "pageinfo-redirects-value": "$1",
+       "pageinfo-subpages-name": "انازه زیربلگه یا ای بلگه",
+       "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|واگردونی|واگردونیا}}; $3 {{PLURAL:$3|بی واگردونی|بی واگردونیا}})",
        "pageinfo-firstuser": "بلگه راس کن",
        "pageinfo-firsttime": "گات دروس بیین بلگه",
        "pageinfo-lastuser": "آخری ویرایشتگر",
        "pageinfo-lasttime": "گات آخری ویرایشت",
        "pageinfo-edits": "شماره همه ویرایشتیا",
+       "pageinfo-authors": "شماره کلی نویسنه یا یکونه",
+       "pageinfo-recent-edits": "شماره ویرایشتیا ایسنی (د $1 دماتر)",
+       "pageinfo-recent-authors": "شماره کلی نویسنه یا یکونه",
+       "pageinfo-magic-words": "جادویی{{PLURAL:$1|کلیمه|کلیمه یا}} ($1)",
+       "pageinfo-hidden-categories": "$1{{جمی:$1|دسه|دسه يا}} قام بیه",
+       "pageinfo-templates": "{{PLURAL:$1|چوئه|چوئه یا}} وه کار گرته بیه($1)",
+       "pageinfo-transclusions": "{{PLURAL:$1|بلگه|بلگه یا}} وه کار گرته بیه د ($1)",
        "pageinfo-toolboxlink": "دونسمنیا بلگه",
        "pageinfo-redirectsto": "واگردونی سی",
        "pageinfo-redirectsto-info": "دونسمنیا",
        "pageinfo-category-pages": "شماره بلگيا",
        "pageinfo-category-subcats": "شماره زیر دسه یا",
        "pageinfo-category-files": "شماره جانیایا",
+       "markaspatrolleddiff": "نشو دار کردن چی سردیاری بیه",
+       "markaspatrolledtext": "ای بلگه نه چی بلگه ای که سردیاری کرده با نشودار کو",
+       "markedaspatrolled": "نشو دار کردن چی سردیاری بیه",
+       "rcpatroldisabled": "سردیاری کردن سی آلشتیا ایسنی ناکنشتگر بیه",
+       "rcpatroldisabledtext": "خصوصیت سردیاری کردن د ری آلشتیا ایسنی تازه ای یا ناکشتگر بیه.",
+       "markedaspatrollederror": "نبوئه چی یه گل سردیاری کرده نشودار با",
+       "markedaspatrollederrortext": "شما واس سی نشودار کردن یه گل وانئری چی سردیاری کرده ونه تیار بکیت.",
+       "markedaspatrollederror-noautopatrol": "شما صلا یه نه که آلشتیا خوتونه چی یه که سردیاری کرده بان ناریت.",
+       "markedaspatrollednotify": "آلشتیایی که مال $1 چی یه گل چی سردیاری کرده نشودار بینه.",
+       "markedaspatrollederrornotify": "نشودار کردن چی نشودار بیه شکست حرده",
        "patrol-log-page": "پهرستنومه گشتن",
+       "patrol-log-header": "یه پهرستنومه وانئریا سردیاری کرده هئ.",
+       "log-show-hide-patrol": "$1 پهرستنومه سردیاری کردن",
+       "deletedrevision": "وانئری دماتری پاکسابیه د $1",
        "filedeleteerror-short": "خطا پاک نبیئن جانیا:$1",
+       "filedeleteerror-long": "د گات پاکسا کردن جانیا یه گل خطا پیش اوما:\n\n\n$1",
+       "filedelete-missing": "نبوئه جانیا \"$1\" نه پاکسا بکیت سی یه که وه وجود ناره.",
+       "filedelete-old-unregistered": "وانئری جانیا تیارکرده \"$1\" د رسینه جا وجود ناره.",
+       "filedelete-current-unregistered": "جانیا تیارکرده \"$1\" د رسینه جا نئیش.",
+       "filedelete-archive-read-only": "نشونگه مال دیارکردن ($1) د لا سرور قاول نیسنن نئ.",
        "previousdiff": "← ويرايشت كۈهنه تر",
        "nextdiff": "ويرايشت تازه تر",
+       "imagemaxsize": "انازه عسگ:<br /><em>(سی شرح جانیا بلگه یا)</em>",
        "thumbsize": "انازه بن کلکی:",
        "widthheight": "$1 × $2",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|بلگه|بلگه یا}}",
        "file-info-size-pages": "$1 × $2 pixels, انازه جانیا: $3, MIME type: $4, $5 {{PLURAL:$5|بلگه|بلگه یا}}",
        "file-nohires": "عسك ون بالاتري دش ني",
        "svg-long-desc": "اس وی جی فايل.نومنا $1 $2 پيكسل",
+       "svg-long-desc-animated": "جانیا جمشدار اس وی جی .نومنا $1 × $2 پيكسل،انازه جانیا:$3",
+       "svg-long-error": "جانیا اس وی جی نامعتور:$1",
        "show-big-image": "فایل اصلی",
+       "show-big-image-preview": "انازه ای پیش سیل:$1.",
+       "show-big-image-other": "هنی{{PLURAL:$2|گپ نما کردن|گپ نما کردنیا}}: $1.",
        "show-big-image-size": "$1 × $2 pixels",
        "file-info-gif-looped": "حلقه دار",
        "file-info-gif-frames": "$1 {{PLURAL:$1|فریم|فریمیا}}",
        "file-info-png-repeat": "$1 بازی کرده{{جمی:$1|وخت|وختیا}}",
        "file-info-png-frames": "$1 {{PLURAL:$1|فریم|فریمیا}}",
        "newimages": "عسگدونی جانیایا تازه",
+       "imagelisttext": "د هار نومگه <strong>$1</strong> {{PLURAL:$1|جانیا|جانیایا}} اماییه جا بیه$2.",
        "newimages-summary": "ای بلگه یا ویجه همه جانیایا سوار بیه نه نشو می ئین.",
        "newimages-legend": "فیلتر",
        "newimages-label": "نوم جانیا(یا بشقی د وه):",
+       "newimages-showbots": "سوارکردیا نه وا بوتیا نشو بیه",
        "noimages": "هیچی سی دیئن نئ",
        "ilsubmit": "پی جوری",
        "bydate": "وا گات",
        "bad_image_list": "دونسمنديانه وه ای شلگ وارد بكيت:\n\nفقط سرخط يایی که وا * شرو بوئن د وير گرته بوئن. اولی چسب ون مئن هر سرخط، باید چسب ونی وه یک عسگ گن با.\nچسب ونيا نيایی د همو سرخط، وه عنوان چيا استثنادار د وير گرته بوئن",
        "metadata": "داديا  فره گپ",
        "metadata-help": "ای فایل شومل دونسمنیا هنی یه.شایت د دیربین رقم ون یا اسکنری که سی راس کردنشو استفاده بیه،وه ایچه اضاف بیه",
+       "metadata-expand": "نشو دئن جزییات دمادیسگری",
+       "metadata-collapse": "قام کردن جزییات دمادیسگری",
        "metadata-fields": "رشته یا گپ دونسمنیا که د ای پیغوم نوم ون بینه شومل بلگه عسگ ن که وختی که جدول گپ دونسمنیا وا بوئه نشون دئیه بوئن.\nچی یا هنی سی یه که پیش فرضن قام بوئن.\n*راست کو\n*مدل\n*دم وخت اصل\n*وخت آشگار\n*اف ان شماره\n*ایزو نرخ من سرعت\n*فوکالنس\n*هنرمن\n*کپی رایت\n*حالت جی پی اس \n*جی پی اس گپ حالت\n*جی پی اس همه حالت",
        "metadata-langitem": "<strong>$2:</strong> $1",
        "metadata-langitem-default": "$1",
        "exif-imagewidth": "پئنا",
        "exif-imagelength": "بلنگی",
+       "exif-bitspersample": "نقطه یا سی هر اندوم",
+       "exif-compression": "شیوات جم و جور کردن",
+       "exif-photometricinterpretation": "ترکیو پیکسل",
        "exif-orientation": "سرچشمه",
+       "exif-samplesperpixel": "شماره اندومیا",
        "exif-planarconfiguration": "سرجایک کردن رسینه",
+       "exif-ycbcrsubsampling": "نسوت زیرنمونه Y وه C",
+       "exif-ycbcrpositioning": "جاگری کردن Y و C",
+       "exif-xresolution": "گپ نما کردن د آسو",
+       "exif-yresolution": "گپ نما کردن د وارو",
+       "exif-stripoffsets": "جاگه رسینه یا عسگ",
+       "exif-rowsperstrip": "انازه ردیفیا سی هر نوار",
+       "exif-stripbytecounts": "نقطه یا سی هر نوار جمع و جور بیه",
+       "exif-jpeginterchangeformat": "جا وه جایی نسوت وه JPEG SOI",
+       "exif-jpeginterchangeformatlength": "بایت رسینه JPEG",
+       "exif-whitepoint": "رئن دار بین جاگه اسبئ",
+       "exif-primarychromaticities": "رنگ گرتن چیا مهمتر",
+       "exif-ycbcrcoefficients": "ضریبا ماتریس جا وه جایی جاگه رئنی",
+       "exif-referenceblackwhite": "جفت انازه سرچشمه سیا و اسبئ",
        "exif-datetime": "آلشت دئن وخت و دمون جانیا",
        "exif-imagedescription": "نوم عسگ",
        "exif-make": "سازنه دیربین",
        "exif-model": "مدل دیربین",
        "exif-software": "نرم افزار به کار گرتنی",
        "exif-artist": "نیسنه",
+       "exif-copyright": "حق تکثیر دار",
+       "exif-exifversion": "نسقه Exif",
+       "exif-flashpixversion": "نسقه حامین داری Flashpix",
        "exif-colorspace": "رئن جا",
+       "exif-componentsconfiguration": "مئنی هر اندوم",
+       "exif-compressedbitsperpixel": "شکل جمع و جیل کردن عسگ",
        "exif-pixelydimension": "پئنا عسگ",
        "exif-pixelxdimension": "درازا عسگ",
        "exif-usercomment": "ویر و باوریا کارور",
        "exif-relatedsoundfile": "جانیا دنگ دار مرتوط",
        "exif-datetimeoriginal": "دمون و وخت راس بیئن دونسمنیا",
+       "exif-datetimedigitized": "گات و وخت دیجیتالی کردن",
+       "exif-subsectime": "کم کردن ثانیه گات و وخت",
+       "exif-subsectimeoriginal": "کم کردن ثانیه گات اصلی",
+       "exif-subsectimedigitized": "کم کردن ثانیه گات دیجیتالی",
+       "exif-exposuretime": "گات نیر دئن",
+       "exif-exposuretime-format": "$1 ثانیه ($2)",
+       "exif-fnumber": "ضریب اف",
+       "exif-exposureprogram": "برنامه نیر دئن",
+       "exif-spectralsensitivity": "حساسیت طیفی",
+       "exif-isospeedratings": "گرینج گری سرعت سی ایزو",
+       "exif-shutterspeedvalue": "سرعت اپکس شاتر",
+       "exif-aperturevalue": "انازه اپکس دیافراگم",
+       "exif-brightnessvalue": "انازه برچ زئن اپکس",
+       "exif-exposurebiasvalue": "خطا نیر دئن اپکس",
+       "exif-maxaperturevalue": "بیشرونه د یک رئتن زمین",
+       "exif-subjectdistance": "فاصله سوجه",
+       "exif-meteringmode": "شکل سنجشت نیر",
        "exif-lightsource": "سرچشمه نور",
        "exif-flash": "فلش",
+       "exif-focallength": "انازه کانونی عدسی",
+       "exif-subjectarea": "انازه اندومواره",
        "exif-flashenergy": "آز فلش",
+       "exif-focalplanexresolution": "گپ نما کردن X د بلگه کانونی",
+       "exif-focalplaneyresolution": "گپ نما کردن Y د بلگه کانونی",
+       "exif-focalplaneresolutionunit": "واحد",
+       "exif-subjectlocation": "جاگه موضوع",
+       "exif-exposureindex": "نشودیارکن نیردئن",
+       "exif-sensingmethod": "روشت حسگری کردن",
        "exif-filesource": "سرچشمه جانیا",
+       "exif-scenetype": "نوع حسگری کردن",
+       "exif-exposuremode": "شکل نیر دئن",
+       "exif-whitebalance": "موازنه نیر اسبئ",
+       "exif-digitalzoomratio": "نسوت گپ کردن دیجیتالی",
+       "exif-focallengthin35mmfilm": "انازه کانونی سی فیلم 35 میلیمتری",
+       "exif-scenecapturetype": "نوع ضفط کردن صئنه",
+       "exif-gaincontrol": "کنترل کردن صئنه",
+       "exif-contrast": "کنتراست",
+       "exif-saturation": "سیر بیین رئن",
        "exif-sharpness": "گرینج برچ زئن",
+       "exif-devicesettingdescription": "شرح میزوکاری اوزار",
+       "exif-subjectdistancerange": "محدوده دیر د دس بیین سوجه",
+       "exif-imageuniqueid": "نوم دیار کن یکونه عسگ",
+       "exif-gpsversionid": "نسقه سردیس جی پی اس",
+       "exif-gpslatituderef": "پئنا ولاتشناسی شمالی و هارگه",
+       "exif-gpslatitude": "پئنا ولاتشناسی",
+       "exif-gpslongituderef": "درازا ولاتشناسی افتوزنون و افتونشین",
+       "exif-gpslongitude": "درازا ولاتشناسی",
+       "exif-gpsaltituderef": "جاگه سرچشمه بلنگی",
+       "exif-gpsaltitude": "جاگه بلنگی",
        "exif-gpstimestamp": "وخت جی پی اس (ساعت اتمی)",
+       "exif-gpssatellites": "ماواره یا وه کار گرته بیه سی انازه گری",
+       "exif-gpsstatus": "حال و بال گیرنه",
+       "exif-gpsmeasuremode": "شکل انازه گری",
+       "exif-gpsdop": "دقیق بیین انازه گری",
        "exif-gpsspeedref": "واحد سرعت",
+       "exif-gpsspeed": "سرعت گیرنه جی پی اس",
+       "exif-gpstrackref": "سرچشمه سی لا جمشت",
+       "exif-gpstrack": "لا جمشت",
+       "exif-gpsimgdirectionref": "سرچشمه سی لا جمشت",
+       "exif-gpsimgdirection": "لا عسگ",
+       "exif-gpsmapdatum": "دونسمنیا وارسگری وه کار گرته بیه سی جئودزیک",
+       "exif-gpsdestlatituderef": "سرچشمه سی پئنا ولاتشناسی مقصد",
+       "exif-gpsdestlatitude": "پئنا ولاتشناسی مقصد",
+       "exif-gpsdestlongituderef": "سرچشمه سی پئنا ولاتشناسی مقصد",
+       "exif-gpsdestlongitude": "پئنا ولاتشناسی مقصد",
+       "exif-gpsdestbearingref": "سرچشمه سی لا مقصد",
+       "exif-gpsdestbearing": "لا مقصد",
+       "exif-gpsdestdistanceref": "سرچشمه سی دیری مقصد",
+       "exif-gpsdestdistance": "دیری د مقصد",
+       "exif-gpsprocessingmethod": "نوم روشت پردازشت جی پی اس",
+       "exif-gpsareainformation": "نوم راساگه جی پی اس",
        "exif-gpsdatestamp": "گات جی پی اس",
+       "exif-gpsdifferential": "راس کردن کم د جی پی اس",
        "exif-coordinate-format": "$1° $2′ $3″ $4",
        "exif-jpegfilecomment": "ویر و باور فایل پی ان جی",
        "exif-keywords": "کلیمه یا کلیتی",
+       "exif-worldregioncreated": "راساگه ای د دنیا که عسگ د اوچه گرته بیه",
+       "exif-countrycreated": "ولاتی که عسگ دش گرته بیه",
        "exif-countrycodecreated": "رازینه سی ولاتی که عسگ د وه گرته بیه",
+       "exif-provinceorstatecreated": "آستونی که عسگ دش گرته بیه",
        "exif-citycreated": "شهری که عسگ دش گرته بیه",
+       "exif-sublocationcreated": "جاگه ای د شهر که عسگ د وه گرته بیه",
+       "exif-worldregiondest": "راساگه نشو دئه بیه د دنیا",
+       "exif-countrydest": "ولات نشو دئه بیه",
        "exif-countrycodedest": "رازینه سی ولات نمائشت دئه بیه",
+       "exif-provinceorstatedest": "آستون یا ولاتچه نشو دئه",
        "exif-citydest": "شهر دیار بیه",
+       "exif-sublocationdest": "جاگه ای د شهر که نشو دئه بیه",
        "exif-objectname": "نوم کؤچک",
+       "exif-specialinstructions": "انجوم روشتیا ویجه",
+       "exif-headline": "سربلگه",
+       "exif-credit": "صاحاو/اماییه کار",
        "exif-source": "سرچشمه",
        "exif-urgency": "فوریت",
        "exif-fixtureidentifier": "نوم ثاوت",
        "exif-serialnumber": "نوم شماره دیربین",
        "exif-cameraownername": "مالک دیربین",
        "exif-label": "ری دیار",
+       "exif-nickname": "نوم نامرتوط سی عسگ",
+       "exif-copyrighted": "حال و بال کپی رایت",
+       "exif-copyrightowner": "مالک کپی رایت",
+       "exif-usageterms": "کلیمه یا وه کار گرتن",
        "exif-pngfilecomment": "ویر و باور فایل جی پی ان جی",
        "exif-giffilecomment": "ویر و باور فایل جی آی اف",
        "exif-contact-value": "$1\n\n$2\n<div class=\"adr\">\n$3\n\n$4, $5, $6 $7\n</div>\n$8",
        "exif-meteringmode-0": "نادیار",
        "exif-meteringmode-1": "میانگین",
        "exif-meteringmode-3": "نقطه جا",
+       "exif-meteringmode-4": "چن جاگه ای",
        "exif-meteringmode-5": "الگو",
        "exif-meteringmode-255": "هنی",
        "exif-lightsource-0": "نادیار",
        "exif-lightsource-1": "روشنایی روز",
        "exif-lightsource-2": "فلورسنت",
        "exif-lightsource-4": "فلش",
+       "exif-lightsource-9": "هوا خو",
+       "exif-lightsource-10": "هوا اوری",
        "exif-lightsource-11": "سایه",
        "exif-flash-mode-3": "مد خودانجوم",
        "exif-focalplaneresolutionunit-2": "ائنج",
+       "exif-customrendered-0": "پردازشت خو",
+       "exif-customrendered-1": "پردازشت همیشه ای",
+       "exif-scenecapturetype-0": "استاندارد",
+       "exif-scenecapturetype-2": "نیمری کشین",
        "exif-scenecapturetype-3": "چی شو",
        "exif-gaincontrol-0": "هیش کوم",
        "exif-contrast-0": "عادی",
        "exif-sharpness-2": "سفت",
        "exif-subjectdistancerange-0": "نادیار",
        "exif-subjectdistancerange-1": "گپ",
+       "exif-subjectdistancerange-2": "نما بسته",
+       "exif-subjectdistancerange-3": "نما د دیر",
        "exif-gpsaltitude-above-sealevel": "$1 {{جمی:$1|متر|متریا}} وارؤ د ریتراز دریا",
        "exif-gpsaltitude-below-sealevel": "$1 {{جمی:$1|متر|متریا}} وارؤ د ریتراز دریا",
        "exif-gpsspeed-k": "کلومتر سی هر ساعت",
        "exif-gpsdestdistance-k": "کلومتر",
        "exif-gpsdestdistance-m": "مایل",
        "exif-gpsdop-good": "خو ($1)",
+       "exif-dc-contributor": "هومیارا",
+       "exif-dc-publisher": "درتیجن",
+       "exif-dc-relation": "وارسگر مرتوط",
+       "exif-dc-rights": "حقوق",
        "exif-dc-source": "سرچشمه وارسگر",
        "exif-dc-type": "نوع وارسگر",
        "exif-rating-rejected": "رد بیه",
+       "exif-isospeedratings-overflow": "گپتر د 65535",
        "exif-iimcategory-ace": "هنریا، رهزیشت و زیستگه",
        "exif-iimcategory-clj": "جرم و قانون",
        "exif-iimcategory-fin": "اموری و کسم کار",
        "exif-iimcategory-evn": "زئشت گه",
        "exif-iimcategory-hth": "تن آزایی",
        "exif-iimcategory-lab": "کار",
+       "exif-iimcategory-pol": "سیاستا",
+       "exif-iimcategory-rel": "دین و ائتقات",
+       "exif-iimcategory-sci": "دونسمنی و سازیاری",
+       "exif-iimcategory-soi": "جریانیا اشتمائی",
+       "exif-iimcategory-spo": "ورزشتا",
+       "exif-iimcategory-war": "جئن، تضاد و لیزشیوسن",
+       "exif-iimcategory-wea": "هوا",
+       "exif-urgency-normal": "خو($1)",
+       "exif-urgency-low": "هار ($1)",
+       "exif-urgency-high": "بلنگ ($1)",
        "namespacesall": "همه شو",
        "monthsall": "همه",
+       "confirmemail": "پشت راس کردن تیرنشون انجومانامه",
        "confirmemail_send": "کل کردن رازینه پشت راس کاری",
+       "invalidateemail": "انجومشیو کردن پشت راس کردن انجومانامه",
+       "scarytranscludetoolong": "[یو آر ال فره گپه]",
        "recreate": "د نو راس کردن",
        "confirm_purge_button": "خوئه",
        "confirm-watch-button": "خوئه",
        "imgmultipageprev": "بلگه دمايی",
        "imgmultipagenext": "بلگه نهایی",
        "imgmultigo": "رؤ!",
+       "imgmultigoto": "رو د بلگه $1",
        "img-lang-opt": "$2 ($1)",
        "img-lang-default": "(زون پیش زمینه)",
        "img-lang-go": "رو",
        "table_pager_prev": "بلگه دمايی",
        "table_pager_first": "سرآسونه",
        "table_pager_last": "بلگه آخری",
+       "table_pager_limit_label": "آیتم سی هر بلگه:",
        "table_pager_limit_submit": "رو",
+       "table_pager_empty": "هیچ نتیجه ای نئ",
+       "autosumm-blank": "بلگه حالی",
        "autosumm-replace": "مینونه وا \"َ$1\" جاگزین بی",
        "autoredircomment": "بلگه واگردونی بیه سی[[$1]]",
+       "autosumm-new": "راست کردن بلگه وه دس \"$1\"",
+       "autosumm-newblank": "بلگه حالی دروس بیه",
        "watchlistedit-normal-title": "ویرایشت سیل برگ",
+       "watchlistedit-normal-legend": "ؤرداشتن سرونیا د سیل برگ",
+       "watchlistedit-normal-submit": "ؤرداشتن سرونیا",
+       "watchlistedit-raw-title": "سیل برگ نه ردیفی ویرایشت کو",
+       "watchlistedit-raw-legend": "سیل برگ نه ردیفی ویرایشت کو",
+       "watchlistedit-raw-titles": "داسون:",
+       "watchlistedit-raw-submit": "وه هنگوم سازی سیل برگ",
+       "watchlistedit-raw-done": "سیل برگتون وه هنگوم سازی بیه.",
+       "watchlistedit-clear-title": "سیل برگ دروس بیه",
+       "watchlistedit-clear-legend": "پاک کردن سیل برگ",
+       "watchlistedit-clear-titles": "داسون:",
+       "watchlistedit-clear-done": "سیل برگتون وه پاک بیه.",
        "watchlisttools-clear": "پاک کردن سیل برگ",
        "watchlisttools-view": "آلشتیا مرتوط نه بوینیت",
        "watchlisttools-edit": "سیل برگ بوینیتو و ویرایشت بکید",
        "version-ext-colheader-description": "شرح",
        "version-ext-colheader-credits": "نیسنه یا",
        "version-poweredby-others": "دیه رون",
+       "version-software-product": "نتجه",
        "version-software-version": "نسقه",
        "version-entrypoints-header-url": "يو آر ال",
        "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Article path]",
        "redirect-page": "نوم دیار کن بلگه",
        "redirect-revision": "وانئری بلگه",
        "redirect-file": "نوم جانیا",
+       "redirect-not-exists": "انازه که پیدا نبی",
        "fileduplicatesearch-filename": "نوم جانیا:",
        "fileduplicatesearch-submit": "پی جوری",
        "fileduplicatesearch-info": "$1 × $2 pixel<br />انازه جانیا: $3<br />MIME type: $4",
        "specialpages": "بلگيا ويجه",
+       "specialpages-group-other": "بلگه یا ویجه هنی",
+       "specialpages-group-login": " اومائن د سيستم/راس كردن حساو",
        "specialpages-group-changes": "آلشتیا تازه و پهرستنومه یا",
        "specialpages-group-media": "گزارشتیا رسانه و سوارکردیا",
        "specialpages-group-users": "کاروریا و حقوق",
        "specialpages-group-pagetools": "اوزاریا بلگه",
        "specialpages-group-wiki": "رسینه و اوزاریا",
        "specialpages-group-redirects": "بلگه ویجه واگردونی بیه",
+       "specialpages-group-spam": "اوزاریا اسپم",
        "blankpage": "بلگه حالی",
        "external_image_whitelist": "یه خط نه ول بکید چی وه<pre>",
+       "tags": "سردیسیا آلشت دئن خو",
        "tag-filter": "فيلتر [[Special:Tags|Tag]]:",
        "tag-filter-submit": "فيلتر",
        "tags-title": "سردیسیا",
        "feedback-cancel": "انجوم شیوسن",
        "feedback-submit": "کل کردن نهاهوال حون",
        "feedback-close": "انجوم بی",
+       "feedback-bugnew": "مه وارسیش کردمه. یه گل سیسرک تازه گزارشت بی",
        "searchsuggest-search": "پی جوری",
        "searchsuggest-containing": "د حال و بار مینونه دار...",
        "api-error-badaccess-groups": "شما سی سوار کرد جانیایا د ای ویکی اجازه ناریت.",
        "limitreport-expansiondepth-value": "$1/$2",
        "limitreport-expensivefunctioncount-value": "$1/$2",
        "expand_templates_output": "نتیجه",
+       "expand_templates_xml_output": "درده ایکس ام ال",
        "expand_templates_ok": "خوئه",
        "expand_templates_remove_comments": "جا وه جا بیئن ویر و باوریا",
        "expand_templates_preview": "پيش سيل",
index bfd8856..d478959 100644 (file)
        "print": "Spausdinti",
        "view": "Žiūrėti",
        "view-foreign": "Rodyti $1",
-       "edit": "Redaguoti",
+       "edit": "Keisti",
        "edit-local": "Redaguoti vietos aprašymą",
        "create": "Sukurti",
        "create-local": "Pridėti vietos aprašymą",
        "otherlanguages": "Kitomis kalbomis",
        "redirectedfrom": "(Nukreipta iš $1)",
        "redirectpagesub": "Nukreipimo puslapis",
+       "redirectto": "Nukreipti į:",
        "lastmodifiedat": "Šis puslapis paskutinį kartą keistas $1 $2.",
        "viewcount": "Šis puslapis buvo atvertas $1 {{PLURAL:$1|kartą|kartus|kartų}}.",
        "protectedpage": "Užrakintas puslapis",
        "newmessageslinkplural": "{{PLURAL:$1|nauja žinutė|999=naujos žinutės}}",
        "newmessagesdifflinkplural": "paskutinis {{PLURAL:$1|pakeitimas|999=pakeitimai}}",
        "youhavenewmessagesmulti": "Turite naujų žinučių $1",
-       "editsection": "redaguoti",
+       "editsection": "keisti",
        "editold": "taisyti",
        "viewsourceold": "žiūrėti šaltinį",
        "editlink": "keisti",
        "nstab-media": "Media puslapis",
        "nstab-special": "Specialusis puslapis",
        "nstab-project": "Projekto puslapis",
-       "nstab-image": "Failas",
+       "nstab-image": "Rinkmena",
        "nstab-mediawiki": "Pranešimas",
        "nstab-template": "Šablonas",
        "nstab-help": "Pagalbos puslapis",
        "nowiki_sample": "Čia įterpkite neformuotą tekstą",
        "nowiki_tip": "Ignoruoti wiki formatą",
        "image_sample": "Pavyzdys.jpg",
-       "image_tip": "Įdėti failą",
+       "image_tip": "Įterpta rinkmena",
        "media_sample": "Pavyzdys.ogg",
-       "media_tip": "Nuoroda į failą",
+       "media_tip": "Nuoroda į rinkmeną",
        "sig_tip": "Jūsų parašas bei laikas",
        "hr_tip": "Horizontali linija (naudokite taupiai)",
-       "summary": "Komentaras:",
+       "summary": "Paaiškinimas:",
        "subject": "Tema/antraštė:",
        "minoredit": "Tai smulkus pataisymas",
        "watchthis": "Stebėti šį puslapį",
        "editing": "Taisomas $1",
        "creating": "Kuriama $1",
        "editingsection": "Taisomas $1 (skyrelis)",
-       "editingcomment": "Taisomas $1 (komentaras)",
+       "editingcomment": "Taisomas $1 (naujas skyrius)",
        "editconflict": "Išpręskite konfliktą: $1",
        "explainconflict": "Kažkas kitas jau pakeitė puslapį nuo tada, kai jūs pradėjote jį redaguoti.\nViršutiniame tekstiniame lauke pateikta šiuo metu esanti puslapio versija.\nJūsų keitimai pateikti žemiau esančiame lauke.\nJums reikia sujungti jūsų pakeitimus su esančia versija.\nKai paspausite „{{int:savearticle}}“, bus įrašytas '''tik''' tekstas viršutiniame tekstiniame lauke.",
        "yourtext": "Jūsų tekstas",
        "edit-gone-missing": "Negalima atnaujinti puslapio.\nGreičiausiai jis yra ištrintas.",
        "edit-conflict": "Redagavimo konfliktas.",
        "edit-no-change": "Jūsų keitimas buvo ignoruotas kadangi nebuvo atlikta jokių teksto pakeitimų.",
+       "postedit-confirmation-created": "Puslapis sukurtas.",
        "postedit-confirmation-saved": "Jūsų pakeitimas išsaugotas.",
        "edit-already-exists": "Negalima sukurti naujo puslapio.\nJis jau egzistuoja.",
        "defaultmessagetext": "Numatytasis pranešimo tekstas",
        "searchrelated": "susiję",
        "searchall": "visi",
        "showingresults": "Žemiau rodoma iki '''$1''' {{PLURAL:$1|rezultato|rezultatų|rezultatų}} pradedant #'''$2'''.",
+       "search-showingresults": "{{PLURAL:$4|Davinys <strong>$1</strong> iš <strong>$3</strong>|Daviniai <strong>$1 - $2</strong> iš <strong>$3</strong>}}",
        "search-nonefound": "Nėra rezultatų, atitinkančių užklausą.",
        "powersearch-legend": "Išplėstinė paieška",
        "powersearch-ns": "Ieškoti vardų srityse:",
        "powersearch-togglelabel": "Pažymėti:",
        "powersearch-toggleall": "Viską",
        "powersearch-togglenone": "Nieko",
+       "powersearch-remember": "Atsiminti pasirinkimą būsimoms paieškoms",
        "search-external": "Išorinė paieška",
        "searchdisabled": "Projekto {{SITENAME}} paieška yra uždrausta. Galite pamėginti ieškoti Google paieškos sistemoje. Paieškos sistemoje projekto {{SITENAME}} duomenys gali būti pasenę.",
        "preferences": "Nustatymai",
        "prefs-displayrc": "Rodymo nustatymai",
        "prefs-displaywatchlist": "Rodymo nuostatos",
        "prefs-diffs": "Skirtumai",
+       "prefs-help-prefershttps": "Šis nustatymas suveiks kitą kartą prisijungiant.",
        "email-address-validity-valid": "Panašu, kad E-pašto adresas yra teisingas",
        "email-address-validity-invalid": "Įveskite korektišką e-pašto adresą",
        "userrights": "Naudotojų teisių valdymas",
        "right-unblockself": "Atblokuoti pačius",
        "right-protect": "Pakeisti apsaugos lygius ir redaguoti apsaugotus puslapius",
        "right-editprotected": "Redaguoti apsaugotus puslapius (be pakopinės apsaugos)",
-       "right-editinterface": "Redaguoti naudotojo aplinką",
+       "right-editinterface": "Keisti naudotojo aplinką",
        "right-editusercssjs": "Redaguoti kitų naudotojų CSS ir JS failus",
        "right-editusercss": "Redaguoti kitų naudotojų CSS failus",
        "right-edituserjs": "Redaguoti kitų naudotojų JS failus",
        "rightslog": "Naudotojų teisių pakeitimai",
        "rightslogtext": "Pateikiamas naudotojų teisių pakeitimų sąrašas.",
        "action-read": "skaityti šį puslapį",
-       "action-edit": "redaguoti šį puslapį",
+       "action-edit": "keisti šį puslapį",
        "action-createpage": "kurti puslapius",
        "action-createtalk": "kurti aptarimų puslapius",
        "action-createaccount": "kurti šią naudotojo paskyrą",
        "action-move-subpages": "pervadinti šį puslapį ir jo subpuslapius",
        "action-move-rootuserpages": "perkelti pagrindinius naudotojų puslapius",
        "action-movefile": "perkelti šį failą",
-       "action-upload": "įkelti šį failą",
+       "action-upload": "įkelti šią rinkmeną",
        "action-reupload": "perrašyti šį esamą failą",
        "action-reupload-shared": "perrašyti šį failą bendrojoje saugykloje",
-       "action-upload_by_url": "įkelti šį failą iš URL adreso",
+       "action-upload_by_url": "įkelti šią rinkmeną iš URL adreso",
        "action-writeapi": "naudotis rašymo API",
        "action-delete": "ištrinti šį puslapį",
        "action-deleterevision": "ištrinti šią reviziją",
        "recentchanges-label-bot": "Šį keitimą atliko automatinė programa",
        "recentchanges-label-unpatrolled": "Šis keitimas dar nebuvo patikrintas",
        "recentchanges-label-plusminus": "Šiuo baitų skaičiumi pakeista puslapio apimtis",
+       "recentchanges-legend-heading": "'''Paaiškinimai:'''",
        "recentchanges-legend-newpage": "$1 - naujas puslapis",
        "rcnotefrom": "Žemiau yra pakeitimai pradedant <strong>$2</strong> (rodoma iki <strong>$1</strong> pakeitimų).",
        "rclistfrom": "Rodyti naujus pakeitimus pradedant $3 $2",
        "recentchangeslinked-summary": "Tai paskutinių keitimų, atliktų puslapiuose, į kuriuos yra nuoroda iš nurodyto puslapio (arba į nurodytos kategorijos narius), sąrašas.\nPuslapiai iš jūsų [[Special:Watchlist|stebimųjų sąrašo]] yra '''paryškinti'''.",
        "recentchangeslinked-page": "Puslapio pavadinimas:",
        "recentchangeslinked-to": "Rodyti su duotuoju puslapiu susijusių puslapių pakeitimus",
-       "upload": "Įkelti failą",
-       "uploadbtn": "Įkelti failą",
+       "upload": "Įkelti rinkmeną",
+       "uploadbtn": "Įkelti rinkmeną",
        "reuploaddesc": "Atšaukti įkėlimą ir grįžti į įkėlimo formą.",
        "upload-tryagain": "Siųsti pakeistą failo aprašymą",
        "uploadnologin": "Neprisijungęs",
        "uploaderror": "Įkėlimo klaida",
        "upload-recreate-warning": "'''Dėmėsio: Failas šiuo pavadinimu buvo ištrintas arba pervadintas.'''\n\nJūsų patogumui pateiktas įrašas apie šio puslapio trynimą ar pervadinimą:",
        "uploadtext": "Kad įkeltumėte failą, naudokitės žemiau pateikta forma.\nNorėdami peržiūrėti ar ieškoti anksčiau įkeltų paveikslėlių, eikite į [[Special:FileList|įkeltų failų sąrašą]], įkėlimai yra registruojami [[Special:Log/upload|įkėlimų sąraše]], trynimai — [[Special:Log/delete|trynimų sąraše]].\n\nNorėdami panaudoti įkeltą failą puslapyje, naudokite tokias nuorodas:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Failas.jpg]]</nowiki></code>''' norėdami naudoti pilną failo versiją\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Failas.png|200px|thumb|left|alternatyvusis tekstas]]</nowiki></code>''' norėdami naudoti 200 pikselių pločio paveikslėlį rėmelyje puslapio kairėje; „alternatyvus tekstas“ bus naudojamas paveikslėlio aprašymui.\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Failas.ogg]]</nowiki></code>''' tiesioginei nuorodai į failą.",
-       "upload-permitted": "Leidžiami failų tipai: $1.",
+       "upload-permitted": "Leidžiami rinkmenų tipai: $1.",
        "upload-preferred": "Pageidautini failų tipai: $1.",
        "upload-prohibited": "Uždrausti failų tipai: $1.",
        "uploadlogpage": "Įkėlimų sąrašas",
        "uploadlogpagetext": "Žemiau pateikiamas paskutinių failų įkėlimų sąrašas.\nTaip pat galite peržvelgti [[Special:NewFiles|naujausių failų galeriją]].",
        "filename": "Failo vardas",
        "filedesc": "Aprašymas",
-       "fileuploadsummary": "Komentaras:",
+       "fileuploadsummary": "Aprašymas:",
        "filereuploadsummary": "Failo pakeitimai:",
        "filestatus": "Autorystės teisės:",
        "filesource": "Šaltinis:",
        "largefileserver": "Šis failas yra didesnis nei serveris yra sukonfigūruotas leisti.",
        "emptyfile": "Panašu, kad failas, kurį įkėlėte yra tuščias. Tai gali būti dėl klaidos failo pavadinime. Pasitikrinkite ar tikrai norite įkelti šitą failą.",
        "windows-nonascii-filename": "Ši viki neleidžia naudoti failų vardų su specialiais simboliais.",
-       "fileexists": "Failas tuo pačiu vardu jau egzistuoja, prašome pažiūrėti <strong>[[:$1]]</strong>, jei nesate tikras, ar norite perrašyti šį failą.\n[[$1|thumb]]",
+       "fileexists": "Rinkmena tokiu pačiu pavadinimu jau esti, prašome pažiūrėti <strong>[[:$1]]</strong>, jei nesate tikras, ar norite perrašyti šią rinkmeną.\n[[$1|thumb]]",
        "filepageexists": "Šio failo aprašymo puslapis jau buvo sukurtas <strong>[[:$1]]</strong>, bet šiuo metu nėra jokio failo šiuo pavadinimu.\nJūsų įvestas komentaras neatsiras aprašymo puslapyje.\nJei norite, kad jūsų komentaras ten atsirastų, jums reikia jį pakeisti pačiam.\n[[$1|thumb]]",
        "fileexists-extension": "Failas su panašiu pavadinimu jau yra: [[$2|thumb]]\n* Įkeliamo failo pavadinimas: <strong>[[:$1]]</strong>\n* Jau esančio failo pavadinimas: <strong>[[:$2]]</strong>\nPrašome pasirinkti kitą vardą.",
-       "fileexists-thumbnail-yes": "Failas turbūt yra sumažinto dydžio failas ''(miniatiūra)''. [[$1|thumb]]\nPrašome peržiūrėti failą <strong>[[:$1]]</strong>.\nJeigu tai yra toks pats pradinio dydžio paveikslėlis, tai įkelti papildomos miniatūros nereikia.",
+       "fileexists-thumbnail-yes": "Rinkmena turbūt yra sumažinto dydžio ''(miniatiūra)''. [[$1|thumb]]\nPrašome peržiūrėti rinkmeną <strong>[[:$1]]</strong>.\nJeigu tai yra toks pats pradinio dydžio paveikslėlis, tai įkelti papildomos miniatūros nereikia.",
        "file-thumbnail-no": "Failo pavadinimas prasideda  <strong>$1</strong>.\nAtrodo, kad yra sumažinto dydžio paveikslėlis ''(miniatiūra)''.\nJei jūs turite šį paveisklėlį pilna raiška, įkelkite šitą, priešingu atveju prašome pakeisti failo pavadinimą.",
        "fileexists-forbidden": "Failas tokiu pačiu vardu jau egzistuoja ir negali būti perrašytas;\nprašome eiti atgal ir įkelti šį failą kitu vardu. [[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "Failas tokiu vardu jau egzistuoja bendrojoje failų saugykloje;\nJei visvien norite įkelti savo failą, prašome eiti atgal ir įkelti šį failą kitu vardu. [[File:$1|thumb|center|$1]]",
        "file-deleted-duplicate": "Failas, identiškas šiam failui ([[:$1]]), seniau buvo ištrintas. Prieš įkeldami jį vėl patikrinkite šio failo ištrynimo istoriją.",
        "uploadwarning": "Dėmesio",
        "uploadwarning-text": "Prašome pakeisti failo aprašymą ir bandykite dar kartą.",
-       "savefile": "Išsaugoti failą",
+       "savefile": "Išsaugoti rinkmeną",
        "uploaddisabled": "Įkėlimai uždrausti",
        "copyuploaddisabled": "Įkėlimas pagal URL išjungtas.",
        "uploaddisabledtext": "Failų įkėlimai yra uždrausti.",
        "uploadscripted": "Šis failas turi HTML arba programinį kodą, kuris gali būti klaidingai suprastas interneto naršyklės.",
        "uploadscriptednamespace": "Šis SVG failas turi neteisėtą vietą vardui '$1'",
        "uploadvirus": "Šiame faile yra virusas! Smulkiau: $1",
-       "uploadjava": "Failas yra ZIP failas, kuriame yra Java .class failas.\nĮkelti Java failus neleidžiama, nes jie gali padėti apeiti saugumo apribojimus.",
-       "upload-source": "Failo šaltinis",
-       "sourcefilename": "Įkeliamas failas:",
+       "uploadjava": "Ši rinkmena tai ZIP rinkmena, kurioje yra Java .class rinkmena.\nĮkelti Java rinkmenų neleidžiama, nes jos gali padėti apeiti saugumo apribojimus.",
+       "upload-source": "Pradinė rinkmena",
+       "sourcefilename": "Įkeliama rinkmena:",
        "sourceurl": "Šaltinio adresas:",
        "destfilename": "Norimas failo vardas:",
-       "upload-maxfilesize": "Didžiausias failo dydis: $1",
-       "upload-description": "Failo aprašymas",
+       "upload-maxfilesize": "Didžiausias rinkmenos dydis: $1",
+       "upload-description": "Rinkmenos aprašymas",
        "upload-options": "Įkėlimo nustatymai",
-       "watchthisupload": "Stebėti šį failą",
+       "watchthisupload": "Stebėti šią rinkmeną",
        "filewasdeleted": "Failas šiuo vardu anksčiau buvo įkeltas, o paskui ištrintas. Jums reikėtų patikrinti $1 prieš bandant įkelti jį vėl.",
        "filename-bad-prefix": "Jūsų įkeliamas failas prasideda su '''„$1“''', bet tai yra neapibūdinantis pavadinimas, dažniausiai priskirtas skaitmeninių kamerų. Prašome suteikti labiau apibūdinantį pavadinimą savo failui.",
        "upload-success-subj": "Įkelta sėkmingai",
        "nolicense": "Nepasirinkta",
        "license-nopreview": "(Peržiūra negalima)",
        "upload_source_url": " (tikras, viešai prieinamas URL)",
-       "upload_source_file": " (failas jūsų kompiuteryje)",
+       "upload_source_file": "(pasirinkta rinkmena jūsų kompiuteryje)",
        "listfiles-summary": "Šiame specialiame puslapyje rodomi visi įkelti failai.\nKai sąrašas susiaurinamas pagal naudotoją, rodomi tik tie failai, kurių naujausią versiją jis yra įkėlęs.",
        "listfiles_search_for": "Ieškoti failo pavadinimo:",
        "imgfile": "failas",
        "listfiles-latestversion": "Dabartinė versija",
        "listfiles-latestversion-yes": "Taip",
        "listfiles-latestversion-no": "Ne",
-       "file-anchor-link": "Failas",
+       "file-anchor-link": "Rinkmena",
        "filehist": "Paveikslėlio istorija",
        "filehist-help": "Paspauskite ant datos/laiko, kad pamatytumėte failą tokį, koks jis buvo tuo metu.",
        "filehist-deleteall": "trinti visus",
        "filehist-nothumb": "Nėra miniatiūros",
        "filehist-user": "Naudotojas",
        "filehist-dimensions": "Matmenys",
-       "filehist-filesize": "Failo dydis",
-       "filehist-comment": "Komentaras",
-       "imagelinks": "Failų panaudojimas",
+       "filehist-filesize": "Rinkmenos dydis",
+       "filehist-comment": "Paaiškinimas",
+       "imagelinks": "Rinkmenos naudojimas",
        "linkstoimage": "{{PLURAL:$1|Šis puslapis|Šie puslapiai}} nurodo į šį failą:",
        "linkstoimage-more": "Daugiau nei $1 {{PLURAL:$1|puslapis|puslapiai|puslapių}} rodo į šį failą.\nŠis sąrašas rodo tik {{PLURAL:$1|puslapio|pirmų $1 puslapių}} nuorodas į šį failą.\nYra pasiekiamas ir [[Special:WhatLinksHere/$2|visas sąrašas]].",
-       "nolinkstoimage": "Į failą nenurodo joks puslapis.",
+       "nolinkstoimage": "Į rinkmeną nenurodo joks puslapis.",
        "morelinkstoimage": "Žiūrėti [[Special:WhatLinksHere/$1|daugiau nuorodų]] į šį failą.",
        "linkstoimage-redirect": "$1 (failo peradresavimas) $2",
        "duplicatesoffile": "Šis failas turi {{PLURAL:$1|$1 dublikatą|$1 dublikatus|$1 dublikatų}} ([[Special:FileDuplicateSearch/$2|daugiau informacijos]]):",
-       "sharedupload": "Šis failas yra iš $1 ir gali būti naudojamas kituose projektuose.",
+       "sharedupload": "Ši rinkmena yra iš $1 ir gali būti naudojama kitose wiki svetainėse.",
        "sharedupload-desc-there": "Šis failas yra iš $1 ir gali būti naudojamas kituose projektuose.\nNorėdami sužinoti daugiau, žiūrėkite [$2 failo aprašymą].",
        "sharedupload-desc-here": "Šis failas yra iš $1 ir gali būti naudojamas kituose projektuose.\nInformacija iš [$2 failo aprašymo puslapio] yra pateikiama žemiau.",
        "filepage-nofile": "Joks failas su duotu pavadinimu neegzistuoja.",
        "filepage-nofile-link": "Joks failas su duotu pavadinimu neegzistuoja, bet vis dar galite [$1 jį įkelti].",
-       "uploadnewversion-linktext": "Įkelti naują failo versiją",
+       "uploadnewversion-linktext": "Įkelti naują šios rinkmenos atmainą",
        "shared-repo-from": "iš $1",
        "shared-repo": "bendrosios failų saugyklos",
        "shared-repo-name-wikimediacommons": "Vikiteka",
        "filerevert-success": "<span class=\"plainlinks\">'''[[Media:$1|$1]]''' buvo sugrąžintas į versiją $4 ($2, $3).</span>",
        "filerevert-badversion": "Nėra jokių ankstesnių vietinių šio failo versijų su pateiktu laiku.",
        "filedelete": "Trinti $1",
-       "filedelete-legend": "Trinti failą",
+       "filedelete-legend": "Trinti rinkmeną",
        "filedelete-intro": "Jūs ketinate ištrinti failą '''[[Media:$1|$1]]''' su visa istorija.",
        "filedelete-intro-old": "<span class=\"plainlinks\">Jūs trinate '''[[Media:$1|$1]]''' [$4 $3, $2] versiją.</span>",
        "filedelete-comment": "Priežastis:",
        "wlheader-enotif": "El. pašto pranešimai yra įjungti.",
        "wlheader-showupdated": "Puslapiai pakeisti nuo tada, kai paskutinį kartą apsilankėte juose, yra pažymėti '''pastorintai'''",
        "wlnote": "{{PLURAL:$1|Rodomas '''$1''' paskutinis pakeitimas, atliktas|Rodomi '''$1''' paskutiniai pakeitimai, atlikti|Rodoma '''$1''' paskutinių pakeitimų, atliktų}} per '''$2''' {{PLURAL:$2|paskutinę valandą|paskutines valandas|paskutinių valandų}}, nuo $3 $4.",
-       "wlshowlast": "Rodyti paskutinių $1 valandų, $2 dienų ar  pakeitimus",
+       "wlshowlast": "Rodyti paskutinių $1 valandų, $2 dienų",
        "watchlist-options": "Stebimųjų sąrašo parinktys",
        "watching": "Įtraukiama į stebimųjų sąrašą...",
        "unwatching": "Šalinama iš stebimųjų sąrašo...",
        "rollbackfailed": "Atmetimas nepavyko",
        "cantrollback": "Negalima atmesti redagavimo; paskutinis keitęs naudotojas yra šio puslapio autorius.",
        "alreadyrolled": "Nepavyko atmesti paskutinio [[User:$2|$2]] ([[User talk:$2|Aptarimas]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) daryto puslapio [[:$1]] keitimo;\nkažkas jau pakeitė puslapį arba suspėjo pirmas atmesti keitimą.\n\nPaskutimas keitimas darytas naudotojo [[User:$3|$3]] ([[User talk:$3|Aptarimas]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
-       "editcomment": "Redagavimo komentaras: „''$1''“.",
+       "editcomment": "Pateiktas toks keitimo paaiškinimas: „''$1''“.",
        "revertpage": "Atmestas [[Special:Contributions/$2|$2]] ([[User talk:$2|Aptarimas]]) pakeitimas; sugrąžinta [[User:$1|$1]] versija",
        "revertpage-nouser": "Atversti pakeitimai paslėpto vartotojo, grąžino prieš tai buvusią versiją {{GENDER:$1|[[User:$1|$1]]}}",
        "rollback-success": "Atmesti $1 pakeitimai;\ngrąžinta prieš tai buvusi $2 versija.",
        "undelete-cleanup-error": "Klaida trinant nenaudotą archyvo failą „$1“.",
        "undelete-missing-filearchive": "Nepavyksta atkurti failo archyvo ID $1, nes jo nėra duomenų bazėje. Jis gali būti jau atkurtas.",
        "undelete-error": "Klaida panaikinant puslapį",
-       "undelete-error-short": "Klaida atkuriant failą: $1",
+       "undelete-error-short": "Klaida atkuriant rinkmeną: $1",
        "undelete-error-long": "Įvyko klaidų atkuriant failą:\n\n$1",
        "undelete-show-file-confirm": "Ar tikrai norite peržiūrėti ištrintą failo „<nowiki>$1</nowiki>“ $2 $3 versiją?",
        "undelete-show-file-submit": "Taip",
        "namespace_association": "Susijusi vardų sritis",
        "tooltip-namespace_association": "Įjunkite šią parinktį, kad taip pat įtrauktumėte aptarimų arba temos sritį, susijusią su pasirinkta sritimi",
        "blanknamespace": "(Pagrindinė)",
-       "contributions": "{{GENDER:$1|Naudotojo}} įndėlis",
+       "contributions": "{{GENDER:$1|Naudotojo}} indėlis",
        "contributions-title": "{{GENDER:$1|Naudotojo|Naudotojos}} $1 indėlis",
        "mycontris": "Įnašai",
        "contribsub2": "Dėl {{GENDER:$3|$1}} ($2)",
        "sp-contributions-search": "Ieškoti įnašo",
        "sp-contributions-username": "IP adresas arba naudotojo vardas:",
        "sp-contributions-toponly": "Rodyti tik paskutinius keitimus",
+       "sp-contributions-newonly": "Rodyti tik tuos keitimus, kuriais sukurti nauji straipsniai",
        "sp-contributions-submit": "Ieškoti",
        "whatlinkshere": "Susiję puslapiai",
        "whatlinkshere-title": "Puslapiai, kurie nurodo į „$1“",
        "move-leave-redirect": "Pervadinant palikti nukreipimą",
        "protectedpagemovewarning": "'''Dėmesio:''' Šis puslapis buvo užrakintas, kad tik naudotojai su administratoriaus teisėmis galėtų jį pervadinti.\nNaujausias įrašas žurnale yra pateiktas žemiau:",
        "semiprotectedpagemovewarning": "'''Pastaba''': Šis puslapis buvo užrakintas, kad tik registruoti naudotojai galėtų jį redaguoti.\nNaujausias įrašas žurnale yra pateiktas žemiau:",
-       "move-over-sharedrepo": "== Failas jau yra ==\n[[:$1]] egzistuoja bendrojoje saugykloje. Perkėlus failą į šį pavadinimą, jis pakeis bendrąjį failą.",
+       "move-over-sharedrepo": "== Rinkmena jau yra ==\n[[:$1]] esti bendrojoje saugykloje. Įkėlus rinkmeną šiuo pavadinimu, ji pakeis bendrąją rinkmeną.",
        "file-exists-sharedrepo": "Pasirinktas failo pavadinimas jau yra naudojamas bendrojoje saugykloje.\nPrašome pasirinkti kitą pavadinimą.",
        "export": "Eksportuoti puslapius",
        "exporttext": "Galite eksportuoti vieno puslapio tekstą ir istoriją ar kelių puslapių vienu metu tame pačiame XML atsakyme.\nŠie puslapiai galės būti importuojami į kitą projektą, veikiantį MediaWiki pagrindu, per [[Special:Import|importo puslapį]].\n\nNorėdami eksportuoti puslapius, įveskite pavadinimus žemiau esančiame tekstiniame lauke po vieną pavadinimą eilutėje, taip pat pasirinkite ar norite eksportuoti ir istoriją ar tik dabartinę versiją su paskutinio redagavimo informacija.\n\nPastaruoju atveju, jūs taip pat galite naudoti nuorodą, pvz. [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] puslapiui „[[{{MediaWiki:Mainpage}}]]“.",
        "allmessagestext": "Čia pateikiamas sisteminių pranešimų sąrašas, esančių MediaWiki vardų srityje.\nAplankykite [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation „MediaWiki“ lokaliziciją] ir [//translatewiki.net „translatewiki.net“], jei norite prisidėti prie bendrojo „MediaWiki“ lokalizavimo.",
        "allmessagesnotsupportedDB": "Šis puslapis nepalaikomas, nes nuostata '''$wgUseDatabaseMessages''' yra išjungtas.",
        "allmessages-filter-legend": "Filtras",
-       "allmessages-filter": "Filtruoti pagal būseną:",
+       "allmessages-filter": "Perkošti pagal būseną:",
        "allmessages-filter-unmodified": "Nepakeisti",
        "allmessages-filter-all": "Visi",
        "allmessages-filter-modified": "Pakeisti",
-       "allmessages-prefix": "Filtruoti pagal pradžią:",
+       "allmessages-prefix": "Perkošti pagal pradžią:",
        "allmessages-language": "Kalba:",
        "allmessages-filter-submit": "Rodyti",
        "thumbnail-more": "Padidinti",
        "import-interwiki-namespace": "Paskirties vardų sritis:",
        "import-interwiki-rootpage": "Paskirties namų puslapis (pasirinktinai):",
        "import-upload-filename": "Failo pavadinimas:",
-       "import-comment": "Komentaras:",
+       "import-comment": "Paaiškinimas:",
        "importtext": "Prašome eksportuoti iš projekto-šaltinio failo, naudojant [[Special:Export|eksportavimo pagalbininką.]]\nIšsaugokite jį savo kompiuteryje ir įkelkite jį čia.",
        "importstart": "Imporuojami puslapiai...",
        "import-revision-count": "$1 {{PLURAL:$1|versija|versijos|versijų}}",
        "patrol-log-header": "Tai patvirtintų versijų sąrašas.",
        "log-show-hide-patrol": "$1 patvirtinimų sąrašą",
        "deletedrevision": "Ištrinta sena versija $1",
-       "filedeleteerror-short": "Klaida trinant failą: $1",
+       "filedeleteerror-short": "Klaida trinant rinkmeną: $1",
        "filedeleteerror-long": "Įvyko klaidų trinant failą:\n\n$1",
        "filedelete-missing": "Failas „$1“ negali būti ištrintas, nes jo nėra.",
        "filedelete-old-unregistered": "Nurodytos failo versijos „$1“ nėra duomenų bazėje.",
        "imagemaxsize": "Riboti paveikslėlių dydį:<br />''(failų aprašymo puslapiuose)''",
        "thumbsize": "Sumažintų paveikslėlių dydis:",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|puslapis|puslapiai|puslapių}}",
-       "file-info": "failo dydis: $1, MIME tipas: $2",
+       "file-info": "rinkmenos dydis: $1, MIME tipas: $2",
        "file-info-size": "$1 × $2 taškų, failo dydis: $3, MIME tipas: $4",
-       "file-info-size-pages": "$1 × $2 taškų, failo dydis: $3, MIME tipas: $4, $5 {{PLURAL:$5|page|pages}}",
+       "file-info-size-pages": "$1 × $2 taškų, rinkmenos dydis: $3, MIME tipas: $4, $5 {{PLURAL:$5|puslapis|puslapiai|puslapių}}",
        "file-nohires": "Geresnė raiška negalima.",
        "svg-long-desc": "SVG failas, formaliai $1 × $2 taškų, failo dydis: $3",
        "svg-long-desc-animated": "Animuotas SVG failas, formaliai $1 × $2 pikselių, failo dydis: $3",
        "svg-long-error": "Neleistinas SVG failas: $1",
-       "show-big-image": "Originalus failas",
-       "show-big-image-preview": "Sumažintos iliustracijos dydis: $1 .",
+       "show-big-image": "Pradinė rinkmena",
+       "show-big-image-preview": "Šios peržiūros dydis: $1 .",
        "show-big-image-other": "{{PLURAL:$2|Kita rezoliucija|Kitos $2 rezoliucijos|Kitų $2 rezoliucijų}}: $1 .",
        "show-big-image-size": "$1 × $2 taškų",
        "file-info-gif-looped": "ciklinis",
        "exif-pngfilecomment": "JPEG failo komentaras",
        "exif-disclaimer": "Atsakomybės apribojimas",
        "exif-contentwarning": "Turinio įspėjimas",
-       "exif-giffilecomment": "GIF failo komentaras",
+       "exif-giffilecomment": "GIF rinkmenos paaiškinimas",
        "exif-intellectualgenre": "Elemento tipas",
        "exif-subjectnewscode": "Objektas kodas",
        "exif-scenecode": "IPTC scenos kodas",
        "watchlistedit-raw-done": "Jūsų stebimųjų sąrašas buvo atnaujintas.",
        "watchlistedit-raw-added": "$1 {{PLURAL:$1|puslapis buvo pridėtas|puslapiai buvo pridėti|puslapių buvo pridėta}}:",
        "watchlistedit-raw-removed": "$1 {{PLURAL:$1|puslapis buvo pašalintas|puslapiai buvo pašalinti|puslapių buvo pašalinta}}:",
+       "watchlisttools-clear": "Išvalyti stebimųjų sąrašą",
        "watchlisttools-view": "Rodyti susijusius keitimus",
        "watchlisttools-edit": "Rodyti ir redaguoti stebimųjų sąrašą",
        "watchlisttools-raw": "Redaguoti grynąjį sąrašą",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|pakeista}} narystė grupėje $3",
        "logentry-rights-autopromote": "$1 buvo automatiškai {{GENDER:$2|pervestas}} iš $4 į $5",
        "rightsnone": "(jokių)",
-       "revdelete-summary": "keitimo komentaras",
+       "revdelete-summary": "keitimo paaiškinimas",
        "feedback-bugornote": "Jei jūs esate pasirengę aprašyti techninę problemą išsamiau, [$1 praneškite apie programinę klaidą].\nKitu atveju, galite naudotis žemiau esančia paprastesne forma. Jūsų komentaras bus įtrauktas į puslapį „[$3 $2]“, kartu su jūsų naudotojo vardu ir jūsų naudojama naršykle.",
        "feedback-subject": "Tema:",
        "feedback-message": "Pranešimas:",
index 41fd2f3..3d590ec 100644 (file)
        "otherlanguages": "Citās valodās",
        "redirectedfrom": "(Pāradresēts no $1)",
        "redirectpagesub": "Pāradresācijas lapa",
+       "redirectto": "Pāradresēt uz:",
        "lastmodifiedat": "Šajā lapā pēdējās izmaiņas izdarītas $2, $1.",
        "viewcount": "Šī lapa ir tikusi apskatīta $1 {{PLURAL:$1|reizi|reizes}}.",
        "protectedpage": "Aizsargāta lapa",
        "hidetoc": "paslēpt",
        "collapsible-collapse": "paslēpt",
        "collapsible-expand": "rādīt",
+       "confirmable-confirm": "Vai esi {{GENDER:$1|pārliecināts|pārliecināta}}?",
        "confirmable-yes": "Jā",
        "confirmable-no": "Nē",
        "thisisdeleted": "Apskatīt vai atjaunot $1?",
        "rcnotefrom": "Šobrīd redzamas izmaiņas kopš '''$2''' (parādītas ne vairāk par '''$1''').",
        "rclistfrom": "Parādīt jaunas izmaiņas kopš $3 $2",
        "rcshowhideminor": "$1 maznozīmīgos",
+       "rcshowhideminor-show": "Rādīt",
+       "rcshowhideminor-hide": "Slēpt",
        "rcshowhidebots": "$1 botus",
+       "rcshowhidebots-show": "Rādīt",
+       "rcshowhidebots-hide": "Slēpt",
        "rcshowhideliu": "$1 reģistrētos lietotājus",
+       "rcshowhideliu-show": "Rādīt",
+       "rcshowhideliu-hide": "Slēpt",
        "rcshowhideanons": "$1 anonīmos",
+       "rcshowhideanons-show": "Rādīt",
+       "rcshowhideanons-hide": "Slēpt",
        "rcshowhidepatr": "$1 pārbaudītos labojumus",
+       "rcshowhidepatr-show": "Rādīt",
+       "rcshowhidepatr-hide": "Slēpt",
        "rcshowhidemine": "$1 manus",
+       "rcshowhidemine-show": "Rādīt",
+       "rcshowhidemine-hide": "Slēpt",
        "rclinks": "Parādīt pēdējās $1 izmaiņas pēdējās $2 dienās.<br />$3",
        "diff": "izmaiņas",
        "hist": "hronoloģija",
        "number_of_watching_users_pageview": "[šo lapu uzrauga $1 {{PLURAL:$1|lietotājs|lietotāji}}]",
        "rc_categories": "Ierobežot uz kategorijām (atdalīt ar \"|\")",
        "rc_categories_any": "Jebkas",
+       "rc-change-size-new": "$1 {{PLURAL:$1|baits|baiti}} pēc izmaiņām",
        "newsectionsummary": "/* $1 */ jauna sadaļa",
        "rc-enhanced-expand": "Skatīt detaļas",
        "rc-enhanced-hide": "Paslēpt detaļas",
        "reuploaddesc": "Atcelt augšupielādi un atgriezties pie augšupielādes veidnes.",
        "upload-tryagain": "Iesniegt izmainīto faila aprakstu",
        "uploadnologin": "Neesi iegājis",
-       "uploadnologintext": "Tev jābūt [[Special:UserLogin|iegājušam]], lai augšuplādētu failus.",
+       "uploadnologintext": "Lūdzu, $1, lai augšupielādētu failus.",
        "upload_directory_missing": "Augšupielādes direktorijs ($1) ir pazudis, un to tīmekļa serveris nevar izveidot.",
        "upload_directory_read_only": "Augšupielādes direktoriju ($1) tīmekļa serveris nevar labot.",
        "uploaderror": "Augšupielādes kļūda",
        "randompage": "Nejauša lapa",
        "randomincategory": "Nejauša lapa kategorijā",
        "randomincategory-invalidcategory": "\"$1\" nav derīgs kategorijas nosaukums.",
+       "randomincategory-category": "Kategorija:",
+       "randomincategory-legend": "Nejauša lapa kategorijā",
        "randomredirect": "Nejauša pāradresācijas lapa",
        "statistics": "Statistika",
        "statistics-header-pages": "Lapu statistika",
index bf01d49..073d1c1 100644 (file)
        "view": "Преглед",
        "view-foreign": "Погл. на $1",
        "edit": "Уреди",
-       "edit-local": "УÑ\80еди Ð»Ð¾ÐºÐ°Ð»ен опис",
+       "edit-local": "УÑ\80еди Ð¼ÐµÑ\81ен опис",
        "create": "Создај",
-       "create-local": "Ð\94одаÑ\98 Ð»Ð¾ÐºÐ°Ð»ен опис",
+       "create-local": "Ð\94одаÑ\98 Ð¼ÐµÑ\81ен опис",
        "editthispage": "Уреди ја страницава",
        "create-this-page": "Создај ја страницава",
        "delete": "Избриши",
        "content-model-text": "прост текст",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Страници што користат дуплирани аргументи во повикувања на шаблони",
+       "duplicate-args-category-desc": "Страницава содржи повикувања на шаблони кои се дупликати на аргументи, како што се <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> или <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "Предупредување: Оваа страница користи премногу повикувања на parser функции.\n\nТреба да има помалку од $2 {{PLURAL:$2|повикување|повикувања}} а сега има {{PLURAL:$1|$1 повикување|$1 повикувања}}.",
        "expensive-parserfunction-category": "Страници со премногу повикувања на парсер функции",
        "post-expand-template-inclusion-warning": "'''Предупредување:''' Големината на вклучените шаблони е преголема.\nНекои шаблони нема да бидат вклучени.",
        "prefs-help-watchlist-token2": "Ова е тајна шифра за вашиот канализиран список на набљудувања.\nСекој што ја знае ќе може да ја чита, па затоа ви препорачуваме да не ја кажувате никому.\n[[Special:ResetTokens|Стиснете тука ако треба да зададете нова]].",
        "savedprefs": "Вашите нагодувања се зачувани.",
        "timezonelegend": "Часовен појас:",
-       "localtime": "Ð\9bокално време:",
+       "localtime": "Ð\9cеÑ\81но време:",
        "timezoneuseserverdefault": "Од викито ($1)",
        "timezoneuseoffset": "Друго (посочете отстапување)",
        "servertime": "Време на опслужувачот:",
        "gender-female": "Таа уредува викистраници",
        "prefs-help-gender": "Оваа поставка е незадолжителна.\nПрограмот го користи посочениот род за да ве опишува согласно вашиот пол.\nИнформацијата ќе биде јавна.",
        "email": "Е-пошта",
-       "prefs-help-realname": "'''Вистинското име''' е незадолжително.\nДоколку изберете да го внесете, тоа може да се искористи за оддавање на заслуги за Вашата работа.",
+       "prefs-help-realname": "Вистинското име е незадолжително.\nДоколку изберете да го внесете, тоа може да се искористи за оддавање на заслуги за Вашата работа.",
        "prefs-help-email": "Е-поштата е незадолжителна, но ќе ви треба за добивање на нова лозинка ако си ја заборавите постоечката.",
        "prefs-help-email-others": "Можете да изберете другите да ве контактираат преку вашата корисничка страница без да го откриете вашиот идентитет.",
        "prefs-help-email-required": "Е-поштенска адреса е задолжително да се наведе.",
        "right-upload": "Подигни податотеки",
        "right-reupload": "Заменување на постоечки податотеки",
        "right-reupload-own": "Преснимување на постоечка податотека подигната од вас",
-       "right-reupload-shared": "Ð\9fÑ\80езапиÑ\81 Ð½Ð° ÐµÐ´Ð½Ð¸ Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еки Ð²Ñ\80з Ð´Ñ\80Ñ\83ги Ð½Ð° Ð·Ð°ÐµÐ´Ð½Ð¸Ñ\87коÑ\82о Ð¼Ñ\83лÑ\82имедиÑ\98ално Ñ\81кладиÑ\88Ñ\82е Ð»Ð¾ÐºÐ°Ð»но",
+       "right-reupload-shared": "Ð\9fÑ\80езапиÑ\81 Ð½Ð° ÐµÐ´Ð½Ð¸ Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еки Ð²Ñ\80з Ð´Ñ\80Ñ\83ги Ð½Ð° Ð·Ð°ÐµÐ´Ð½Ð¸Ñ\87коÑ\82о Ð¼Ñ\83лÑ\82имедиÑ\98ално Ñ\81кладиÑ\88Ñ\82е Ð¼ÐµÑ\81но",
        "right-upload_by_url": "Подигање на податотека од URL-адреса",
        "right-purge": "Бришење од опслужувачки меѓусклад на страницата без барање потврда за тоа",
        "right-autoconfirmed": "Без ограничувања на стапки за IP-адреса",
        "unwatchedpages": "Ненабљудувани страници",
        "listredirects": "Список на пренасочувања",
        "listduplicatedfiles": "Список на податотеки со дупликати",
-       "listduplicatedfiles-summary": "Ð\9eва Ðµ Ñ\81пиÑ\81ок Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еки Ñ\87иÑ\98а Ð½Ð°Ñ\98нова Ð²ÐµÑ\80зиÑ\98а Ðµ Ð´Ñ\83пликаÑ\82 Ð½Ð° Ð½Ð°Ñ\98нова Ð²ÐµÑ\80зиÑ\98а Ð½Ð° Ð½ÐµÐºÐ¾Ñ\98а Ð´Ñ\80Ñ\83га Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82ека. Ð¡Ðµ Ð·ÐµÐ¼Ð°Ð°Ñ\82 Ð¿Ñ\80едвид Ñ\81амо Ð»Ð¾ÐºÐ°Ð»ни податотеки.",
+       "listduplicatedfiles-summary": "Ð\9eва Ðµ Ñ\81пиÑ\81ок Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еки Ñ\87иÑ\98а Ð½Ð°Ñ\98нова Ð²ÐµÑ\80зиÑ\98а Ðµ Ð´Ñ\83пликаÑ\82 Ð½Ð° Ð½Ð°Ñ\98нова Ð²ÐµÑ\80зиÑ\98а Ð½Ð° Ð½ÐµÐºÐ¾Ñ\98а Ð´Ñ\80Ñ\83га Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82ека. Ð¡Ðµ Ð·ÐµÐ¼Ð°Ð°Ñ\82 Ð¿Ñ\80едвид Ñ\81амо Ð¼ÐµÑ\81ни податотеки.",
        "listduplicatedfiles-entry": "[[:File:$1|$1]] има [[$3|{{PLURAL:$2|дупликат|$2 дупликати}}]].",
        "unusedtemplates": "Неискористени шаблони",
        "unusedtemplatestext": "Оваа страница ги прикажува сите страници во именскиот простор {{ns:template}} кои не се вклучени во друга страница.\nНе заборавајте да ги проверите другите врски во шаблоните пред да ги избришете.",
        "pager-older-n": "{{PLURAL:$1|постара 1|постари $1}}",
        "suppress": "Скривање",
        "querypage-disabled": "Оваа службена страница е оневозможена за да не попречува на делотворноста.",
+       "apihelp": "Помош со прилогот",
+       "apihelp-no-such-module": "Модулот „$1“ не е пронајден.",
        "booksources": "Печатени извори",
        "booksources-search-legend": "Пребарување на извори за книга",
        "booksources-isbn": "ISBN:",
        "listgrouprights-namespaceprotection-header": "Ограничувања за именски простори",
        "listgrouprights-namespaceprotection-namespace": "Именски простор",
        "listgrouprights-namespaceprotection-restrictedto": "Права што им овозможуваат на корисниците да уредуваат",
-       "trackingcategories": "Следачки категории",
-       "trackingcategories-summary": "Ð\9dа Ñ\81Ñ\82Ñ\80аниÑ\86ава Ñ\81е Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¸ Ñ\81ледачки категории што автоматски се пополнуваат од програмот на МедијаВики. Нивните називи можат да се сменат со измена на соодветните системски пораки во именскиот простор {{ns:8}}.",
-       "trackingcategories-msg": "Следачка категорија",
+       "trackingcategories": "Следечки категории",
+       "trackingcategories-summary": "Ð\9dа Ñ\81Ñ\82Ñ\80аниÑ\86ава Ñ\81е Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¸ Ñ\81ледечки категории што автоматски се пополнуваат од програмот на МедијаВики. Нивните називи можат да се сменат со измена на соодветните системски пораки во именскиот простор {{ns:8}}.",
+       "trackingcategories-msg": "Следечка категорија",
        "trackingcategories-name": "Назив на пораката",
        "trackingcategories-desc": "Критериуми за вклучување",
        "noindex-category-desc": "Роботите не ја индексираат страницава бидејќи го содржи волшебниот збор <code><nowiki>__NOINDEX__</nowiki></code> и се наоѓа во именски простор кајшто е дозволен.",
        "blocklist-params": "Параметри на блокот",
        "blocklist-reason": "Причина",
        "ipblocklist-submit": "Пребарај",
-       "ipblocklist-localblock": "Ð\9bокален блок",
+       "ipblocklist-localblock": "Ð\9cеÑ\81ен блок",
        "ipblocklist-otherblocks": "{{PLURAL:$1|друг блок|други блокови}}",
        "infiniteblock": "бесконечно",
        "expiringblock": "истекува на $1 во $2 ч.",
        "tooltip-pt-mycontris": "Список на ваши придонеси",
        "tooltip-pt-login": "Ви препорачуваме да се најавите, иако тоа не е задолжително.",
        "tooltip-pt-logout": "Одјавување",
+       "tooltip-pt-createaccount": "Ви препорачуваме да направите сметка и да се најавите, иако тоа не е задолжително",
        "tooltip-ca-talk": "Разговор за страницата",
        "tooltip-ca-edit": "Можете да ја уредите оваа страница. Ве молиме користете го копчето за преглед пред зачувување.",
        "tooltip-ca-addsection": "Започни нов пасус",
        "tooltip-feed-atom": "Atom емитување за оваа страница",
        "tooltip-t-contributions": "Список на придонеси на овој корисник",
        "tooltip-t-emailuser": "Испрати е-пошта на овој корисник",
+       "tooltip-t-info": "Повеќе информаици за страницава",
        "tooltip-t-upload": "Подигни податотеки",
        "tooltip-t-specialpages": "Список на сите службени страници",
        "tooltip-t-print": "Верзија на страницава наменета за печатење",
        "unknown_extension_tag": "Непозната ознака на додатокот „$1“",
        "duplicate-defaultsort": "Предупредување: Основниот клуч за подредување „$2“ го поништува претходниот основен клуч за подредување „$1“.",
        "duplicate-displaytitle": "<strong>Предупредување:</strong> Приказниот наслов „$2“ го заменува претходнито приказен наслов „$1“.",
+       "invalid-indicator-name": "<strong>Грешка:</strong> Атрибутот <code>name</code> што го покажува статусот на страницата не може да биде празен.",
        "version": "Верзија",
        "version-extensions": "Воспоставени додатоци",
        "version-skins": "Воспоставени рува",
index 1f37f48..e25bafa 100644 (file)
        "content-model-text": "വെറും എഴുത്ത്",
        "content-model-javascript": "ജാവാസ്ക്രിപ്റ്റ്",
        "content-model-css": "സി.എസ്.എസ്.",
+       "duplicate-args-category": "ഫലകങ്ങൾ വിളിക്കുമ്പോൾ ചരങ്ങൾ ആവർത്തിച്ചുപയോഗിക്കുന്ന താളുകൾ",
+       "duplicate-args-category-desc": "താളിൽ ഫലകങ്ങൾ വിളിക്കുമ്പോൾ ചരങ്ങൾ അതായത് <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> അല്ലെങ്കിൽ <code><nowiki>{{foo|bar|1=baz}}</nowiki></code> എന്ന രീതിയിൽ.",
        "expensive-parserfunction-warning": "'''മുന്നറിയിപ്പ്:''' ഈ താളിൽ വളരെക്കൂടുതൽ പാഴ്സർ ഫങ്ഷനുകൾ വിളിച്ചിരിക്കുന്നു.\n\n{{PLURAL:$2|ഒരു വിളി|$2 വിളികൾ}} മാത്രമുണ്ടാകേണ്ടയിടത്ത്, ഇപ്പോൾ {{PLURAL:$1|ഒരു വിളി|$1 വിളികൾ}} ഉണ്ട്.",
        "expensive-parserfunction-category": "വളരെയധികം ചിലവേറിയ പാഴ്സർ ഫങ്ഷൻ വിളികൾ ഉൾക്കൊള്ളുന്ന താളുകൾ",
        "post-expand-template-inclusion-warning": "'''അറിയിപ്പ്:''' ഫലകം ഉൾപ്പെടുത്താവുന്ന വലിപ്പത്തിലും വളരെ കൂടുതൽ ആയിരിക്കുന്നു.\nചില ഫലകങ്ങൾ ഉൾപ്പെടുത്തുകയില്ല.",
        "gender-female": "സ്ത്രീ",
        "prefs-help-gender": "ഈ സജ്ജീകരണം നിർബന്ധമല്ല.\nസോഫ്റ്റ്‌വെയർ ഉപയോഗിച്ച് സ്ത്രീകളേയും പുരുഷന്മാരേയും ശരിയായി സംബോധന ചെയ്യാൻ ഉപയോഗിക്കുന്നു.\nഈ വിവരം പരസ്യമായി ലഭ്യമായിരിക്കുന്നതാണ്‌.",
        "email": "ഇമെയിൽ",
-       "prefs-help-realname": "താങ്കളുടെ യഥാർത്ഥ പേര്‌ നൽകണമെന്നു നിർബന്ധമില്ല. എങ്കിലും അങ്ങനെ ചെയ്താൽ താങ്കളുടെ സംഭാവനകൾ ആ പേരിൽ അംഗീകരിക്കപ്പെടും.",
+       "prefs-help-realname": "താങ്കളുടെ യഥാർത്ഥ പേര്‌ നൽകണമെന്നു നിർബന്ധമില്ല.\nഎന്നാൽ അങ്ങനെ ചെയ്താൽ താങ്കളുടെ സംഭാവനകൾ ആ പേരിൽ അംഗീകരിക്കപ്പെടുന്നതാണ്.",
        "prefs-help-email": "ഇമെയിൽ വിലാസം നൽകണമെന്ന് നിർബന്ധമില്ല, പക്ഷേ താങ്കൾ രഹസ്യവാക്ക് മറന്നാൽ പുതിയത് അയച്ചു തരാൻ വിലാസം ആവശ്യമാണ്.",
        "prefs-help-email-others": "താങ്കൾക്കായുള്ള താളിൽ നിന്നോ, താങ്കൾക്കുള്ള സന്ദേശങ്ങളുടെ താളിൽ നിന്നോ മറ്റുപയോക്താക്കൾക്ക് താങ്കളുടെ വ്യക്തിത്വം മനസ്സിലാക്കാതെ തന്നെ താങ്കൾക്ക് സന്ദേശങ്ങളയയ്ക്കാനും ഈ സം‌വിധാനം അവസരം നൽകുന്നു.",
        "prefs-help-email-required": "ഇമെയിൽ വിലാസം ആവശ്യമാണ്‌.",
        "pager-older-n": "{{PLURAL:$1|പഴയ 1|പഴയ $1}}",
        "suppress": "മേൽനോട്ടം",
        "querypage-disabled": "പ്രവർത്തനമികവിനെ ബാധിക്കുന്ന കാരണങ്ങളാൽ ഈ പ്രത്യേക താൾ പ്രവർത്തന രഹിതമാക്കിയിരിക്കുന്നു.",
+       "apihelp": "എ.പി.ഐ. സഹായം",
+       "apihelp-no-such-module": "ഘടകം \"$1\" കണ്ടെത്താനായില്ല.",
        "booksources": "പുസ്തക സ്രോതസ്സുകൾ",
        "booksources-search-legend": "പുസ്തകസ്രോതസ്സുകൾക്കായി തിരയുക",
        "booksources-isbn": "ഐ.എസ്.ബി.എൻ.:",
        "tooltip-pt-mycontris": "താങ്കളുടെ സേവനങ്ങളുടെ പട്ടിക",
        "tooltip-pt-login": "ലോഗിൻ ചെയ്യുവാൻ താല്പര്യപ്പെടുന്നു; പക്ഷേ നിർബന്ധമല്ല",
        "tooltip-pt-logout": "ലോഗൗട്ട് ചെയ്യാനുള്ള കണ്ണി",
+       "tooltip-pt-createaccount": "നിർബന്ധമില്ലെങ്കിലും, താങ്കൾ ഒരു അംഗത്വമെടുക്കണമെന്നും പ്രവേശിക്കണമെന്നും താത്പര്യപ്പെടുന്നു",
        "tooltip-ca-talk": "വിവരദായക താളിനെക്കുറിച്ചുള്ള ചർച്ച",
        "tooltip-ca-edit": "താങ്കൾക്ക് ഈ താൾ തിരുത്താവുന്നതാണ്. തിരുത്തിയ താൾ സേവ് ചെയ്യൂന്നതിനു മുൻപ് പ്രിവ്യൂ കാണുക.",
        "tooltip-ca-addsection": "പുതിയ വിഭാഗം തുടങ്ങുക",
        "tooltip-feed-atom": "ഈ താളിന്റെ ആറ്റം ഫീഡ്",
        "tooltip-t-contributions": "ഉപയോക്താവിന്റെ സംഭാവനകളുടെ പട്ടിക കാണുക",
        "tooltip-t-emailuser": "ഈ ഉപയോക്താവിനു ഇമെയിൽ അയക്കുക",
+       "tooltip-t-info": "ഈ താളിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾ",
        "tooltip-t-upload": "പ്രമാണങ്ങൾ അപ്‌ലോഡ് ചെയ്യുവാൻ",
        "tooltip-t-specialpages": "പ്രത്യേകതാളുകളുടെ പട്ടിക",
        "tooltip-t-print": "ഈ താളിന്റെ അച്ചടി രൂപം",
        "json-error-state-mismatch": "അസാധുവായ അല്ലെങ്കിൽ തെറ്റായവിധത്തിലുള്ള ജെസൺ",
        "json-error-ctrl-char": "കണ്ട്രോൾ കാരക്ടർ പിഴവ്, മിക്കവാറും തെറ്റായി എൻകോഡ് ചെയ്യപ്പെട്ടത്",
        "json-error-syntax": "എഴുത്തുരീതിയിൽ പിഴവ്",
-       "json-error-utf8": "തെറ്റായരൂപത്തിലുള്ള UTF-8 അക്ഷരങ്ങൾ, മിക്കവാറും തെറ്റായി എൻകോഡ് ചെയ്യപ്പെട്ടവ"
+       "json-error-utf8": "തെറ്റായരൂപത്തിലുള്ള UTF-8 അക്ഷരങ്ങൾ, മിക്കവാറും തെറ്റായി എൻകോഡ് ചെയ്യപ്പെട്ടവ",
+       "json-error-recursion": "എൻകോഡ് ചെയ്യേണ്ട വിലയിൽ ഒന്നോ അതിലധികമോ പുനരാവർത്തിത സൂചകങ്ങൾ",
+       "json-error-inf-or-nan": "എൻകോഡ് ചെയ്യേണ്ട വിലയിൽ ഒന്നോ അതിലധികമോ NAN അല്ലെങ്കിൽ INF വിലകൾ"
 }
index cf8ee1f..4b79c23 100644 (file)
        "exif-aperturevalue": "रन्ध्र",
        "exif-brightnessvalue": "झळाळी",
        "exif-exposurebiasvalue": "प्रभावन अभिनत (एक्सपोजर बायस)",
-       "exif-maxaperturevalue": "महतà¥\8dतम à¤\9cमिनà¥\80 à¤°à¤¨à¥\8dधà¥\8dर(लà¥\85à¤\82ड ऍपर्चर)",
+       "exif-maxaperturevalue": "महतà¥\8dतम à¤\9cमिनà¥\80 à¤°à¤¨à¥\8dधà¥\8dर(लà¤\81ड ऍपर्चर)",
        "exif-subjectdistance": "गोष्टीपासूनचे अंतर",
        "exif-meteringmode": "मीटरींग मोड",
        "exif-lightsource": "प्रकाश स्रोत",
        "exif-exposureprogram-5": "क्रियेटीव्ह कार्यक्रम(विषयाच्या खोलीस बायस्ड)",
        "exif-exposureprogram-6": "कृती कार्यक्रम(द्रूत आवर्तद्वार(शटर) वेग कडे बायस्ड)",
        "exif-exposureprogram-7": "व्यक्तिचित्र स्थिती(क्लोजप छायाचित्रांकरिता आऊट ऑफ फोकस बॅकग्राऊंड सहीत)",
-       "exif-exposureprogram-8": "लà¥\85à¤\82डसà¥\8dà¤\95à¥\87प à¤¸à¥\8dथितà¥\80 (लà¥\85à¤\82डस्केप छायाचित्रांकरिता बॅकग्राऊंड इन फोकस सहीत)",
+       "exif-exposureprogram-8": "लà¤\81डसà¥\8dà¤\95à¥\87प à¤¸à¥\8dथितà¥\80 (लà¤\81डस्केप छायाचित्रांकरिता बॅकग्राऊंड इन फोकस सहीत)",
        "exif-subjectdistance-value": "$1 मीटर",
        "exif-meteringmode-0": "अज्ञात",
        "exif-meteringmode-1": "सरासरी",
        "version-variables": "चल",
        "version-antispam": "उत्पात प्रतिबंधन",
        "version-other": "इतर",
-       "version-mediahandlers": "मिडिया à¤¹à¥\85à¤\82डलर",
+       "version-mediahandlers": "मिडिया à¤¹à¤\81डलर",
        "version-hooks": "अंकुश",
        "version-parser-extensiontags": "पृथकक विस्तारीत खूणा",
        "version-parser-function-hooks": "पृथकक कार्य अंकुश",
index 88f899c..74de4ee 100644 (file)
        "content-model-text": "teks biasa",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Laman yang menggunakan argumen pendua dalam panggilan templat",
+       "duplicate-args-category-desc": "Laman ini mengandungi panggilan templat yang menggunakan pendua argumen seperti <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> atau <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "Amaran: Laman ini mengandungi terlalu banyak panggilan fungsi penghurai yang intensif.\n\nHad panggilan ialah $2, sekarang terdapat $1 panggilan.",
        "expensive-parserfunction-category": "Laman yang mengandungi terlalu banyak panggilan fungsi penghurai yang intensif",
        "post-expand-template-inclusion-warning": "Amaran: Saiz penyertaan templat terlalu besar.\nSesetengah templat tidak akan disertakan.",
        "gender-female": "Perempuan",
        "prefs-help-gender": "Pilihan: Digunakan oleh perisian ini untuk merujuk jantina anda dengan betul. Maklumat ini akan didedahkan kepada awam.",
        "email": "E-mel",
-       "prefs-help-realname": "Nama sebenar adalah tidak wajib. Jika dinyatakan, ia akan digunakan untuk mengiktiraf karya anda.",
+       "prefs-help-realname": "Nama sebenar adalah tidak wajib.\n\nJika dinyatakan, ia akan digunakan untuk mengiktiraf karya anda.",
        "prefs-help-email": "Alamat e-mail adalah tidak wajib, tapi diperlukan untuk set semula kata laluan jika anda terlupa kata laluan anda.",
        "prefs-help-email-others": "Anda juga boleh memilih untuk membolehkan pengguna lain menghubungi anda melalui e-mel melalui sebuah pautan pada laman pengguna atau perbincangan anda.\nAlamat e-mel anda tidak didedahkan apabila pengguna lain menghubungi anda.",
        "prefs-help-email-required": "Alamat e-mel adalah wajib.",
        "pager-older-n": "{{PLURAL:$1|$1 sebelumnya}}",
        "suppress": "Kawalan",
        "querypage-disabled": "Laman khas ini dilumpuhkan atas sebab-sebab prestasi.",
+       "apihelp": "Bantuan API",
+       "apihelp-no-such-module": "Modul \"$1\" tidak dijumpai.",
        "booksources": "Sumber buku",
        "booksources-search-legend": "Cari sumber buku",
        "booksources-search": "Cari",
        "tooltip-pt-mycontris": "Senarai sumbangan anda",
        "tooltip-pt-login": "Walaupun tidak wajib, anda digalakkan supaya log masuk.",
        "tooltip-pt-logout": "Log keluar",
+       "tooltip-pt-createaccount": "Anda digalakkan untuk membuka akaun dan log masuk; namun begitu ianya tidak diwajibkan",
        "tooltip-ca-talk": "Perbincangan mengenai laman kandungan",
        "tooltip-ca-edit": "Anda boleh menyunting laman ini. Sila tekan butang 'pralihat' terlebih dahulu sebelum menyimpan.",
        "tooltip-ca-addsection": "Buka bahagian baru",
        "tooltip-feed-atom": "Suapan Atom bagi laman ini",
        "tooltip-t-contributions": "Lihat senarai sumbangan pengguna ini",
        "tooltip-t-emailuser": "Kirim e-mel kepada pengguna ini",
+       "tooltip-t-info": "Maklumat lanjut mengenai laman ini",
        "tooltip-t-upload": "Muat naik imej atau fail media",
        "tooltip-t-specialpages": "Senarai laman khas",
        "tooltip-t-print": "Versi boleh cetak bagi laman ini",
index 83efa6d..7d49436 100644 (file)
        "hidetoc": "aħbi",
        "collapsible-collapse": "Aħbi",
        "collapsible-expand": "Espandi",
+       "confirmable-confirm": "Inti{{GENDER:$1|żgur|żgura}}?",
+       "confirmable-yes": "Iva",
+       "confirmable-no": "Le",
        "thisisdeleted": "Uri jew ġib lura $1?",
        "viewdeleted": "Ara $1?",
        "restorelink": "{{PLURAL:$1|waħda mill-modifiki mħassra|$1 modifiki mħassra}}",
        "no-null-revision": "Ma setghitx tinħoloq reviżjoni nulla ġdida għall-paġna \"$1\"",
        "badtitle": "Titlu ħażin",
        "badtitletext": "It-titlu tal-paġna rikjesta huwa invalidu, vojt, jew ġej minn żball fil-ħolqa bejn siti wiki differenti jew verżjonijiet ta' lingwi differenti tal-istess sit. Jista' wkoll ikollu wieħed jew aktar karattri li ma jistgħux jintużaw għat-titli.",
-       "perfcached": "L-informazzjoni li jmiss huwa kopja ''cache'' u jista' ma jkunx aġġornat. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
-       "perfcachedts": "Id-dati segwenti huma estratt ta' kopja cache tad-database. L-aħħar aġġornament: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
+       "perfcached": "L-informazzjoni li jmiss ġejja minn kopja ''cache'' u tista' ma tkunx aġġornata. Massimu ta'  {{PLURAL:$1|riżultat wieħed hu|$1 riżultati huma}} disponibbli fil-\"cache\".",
+       "perfcachedts": "Id-dejta li jmiss ġejja minn kopja \"cache\" u l-aħħar aġġornament kien: $1. Mhux aktar minn {{PLURAL:$4|riżultat wieħed hu|$4 riżultati huma}} disponibbli fil-\"cache\".",
        "querypage-no-updates": "Aġġornamenti għal din il-paġna huma temporalment sospesi. L-Informazzjoni hawnhekk preżentament mhux qiegħed jiġi aġġornat.",
        "viewsource": "Ara s-sors",
        "viewsource-title": "Ara s-sors ta' $1",
        "actionthrottled": "Azzjoni miżmuma",
        "actionthrottledtext": "Bħala miżura għal kontra l-ispam, inti limitat li tagħmel din l-azzjoni għal ħafna drabi f'spazju ta' ħin żgħir, u inti qbiżt dan il-limitu.\nJekk jogħġbok erġa' prova fi ftit minuti oħra.",
-       "protectedpagetext": "Din il-paġna ġiet protetta sabiex twaqqaf kull tip ta' modifika.",
+       "protectedpagetext": "Din il-paġna ġiet protetta sabiex ma ssirx xi modifika jew xi azzjoni oħra.",
        "viewsourcetext": "Tista' tara u tikkopja s-sors ta' din il-paġna:",
        "viewyourtext": "Tista' tara u tikkopja s-sors tal-'''modifiki tiegħek''' fuq din il-paġna:",
-       "protectedinterface": "Din il-paġna għanda element li tagħmel parti mill-interfaċċa tal-utent tas-software, u għaldaqstant ġiet protetta sabiex ma jkunx hemm abbuż.",
+       "protectedinterface": "Din il-paġna tipprovdi test ta' interfaċċa għas-softwer fuq dan il-wiki, u għaldaqstant ġiet protetta sabiex ma jkunx hemm abbuż.\nBiex iżżid jew tibdel traduzzjonijiet għall-wikijiet kollha uża [//translatewiki.net/ translatewiki.net], il-proġett ta' lokalizzazzjoni ta' MediaWiki.",
        "editinginterface": "'''Avviż:''' Qiegħed tagħmel modifiki lejn paġna li qiegħda tintuża biex tipprovdi interfaċċa għall-messaġġi tas-software. Kull modifika f'din il-paġna se taffetwa l-apparenza tal-faċċata tal-utenti kollha. Għat-traduzzjonijiet, ikkunsidra l-possibilità li tuża  [//translatewiki.net/wiki/Main_Page?setlang=mt translatewiki.net], il-proġett MediaWiki għal-lokalizzazzjoni.",
        "cascadeprotected": "Din il-paġna ġiet protetta mill-modifiki, minħabba li tinkludi {{PLURAL:$1|paġni, li huwa|paġni, li huma}} protetti bil-preferenza tal-\"kaskata\" mixewla:\n$2",
        "namespaceprotected": "Inti m'għandhekx il-permess li timodifika paġni fin-''namespace'' '''$1''.",
        "specialpages-group-other": "Paġni speċjali oħrajn",
        "specialpages-group-login": "Idħol / oħloq kont",
        "specialpages-group-changes": "L-Aħħar modifiki u reġistri",
-       "specialpages-group-media": "Fajls multimedjali - rapporti u tellgħar",
+       "specialpages-group-media": "Fajls multimedjali - tlugħ u rapporti",
        "specialpages-group-users": "Utenti u drittijiet",
        "specialpages-group-highuse": "Paġni użati ħafna",
-       "specialpages-group-pages": "Elenki ta' paġni",
+       "specialpages-group-pages": "Listi ta' paġni",
        "specialpages-group-pagetools": "Għodda tal-paġna",
        "specialpages-group-wiki": "Għodda u informazzjoni fuq il-proġett",
        "specialpages-group-redirects": "Paġni speċjali ta' rindirizz",
index 4f84d23..c4e7e58 100644 (file)
@@ -9,7 +9,8 @@
                        "PiRSquared17",
                        "SabineCretella",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Candalua"
                ]
        },
        "tog-underline": "Sottolinia 'e jonte:",
        "gender-female": "È riggistrata ncopp' 'a {{SITENAME}}",
        "prefs-help-gender": "Mpizzà sta preferenza è ozzionale.\n'O software aúsa stu valore pe' se vutà a vuje e v'anummenà a l'ati utente ausanno 'o gennere grammatecale buono.\nCheste nfurmaziune sarranno pubbreche.",
        "email": "E-mail",
-       "prefs-help-realname": "'O nomme overo vuosto è ozzionale.\nSi sciglite 'e nzertà 'o nomme overo, chesto s'ausarrà pe' dà l'utente l'attribuzione d' 'a fatica fatta.",
+       "prefs-help-realname": "'O nomme overo vuosto è opzionale.\nSi 'o scrivete, se putesse ausà pe' ve dà l'attribuzione d' 'a fatica fatta.",
        "prefs-help-email": "L'e-mail vuosto è ozzionale, ma permettesse 'e ricevere 'a password propria quanno v' 'a scurdate.",
        "prefs-help-email-others": "Putite pure scegliere 'e lassà che l'at'utente ve mannassero mmasciate via e-mail cu nu cullegamiento â paggena d'utente o chiacchiera.\nLl'indirizzo e-mail vuosto nun è scummigliato quanno l'at'utente ve cuntattano.",
        "prefs-help-email-required": "L'indirizzo e-mail è obbligatorio.",
        "pager-older-n": "{{PLURAL:$1|1 cchiù viecchio|$1 cchiù viecchie}}",
        "suppress": "Supervisione",
        "querypage-disabled": "Sta paggena speciale è stutata pe' mutive 'e prestaziune.",
+       "apihelp": "Ajuto cu l'API",
+       "apihelp-no-such-module": "'O modulo \"$1\" nun se trova.",
        "booksources": "Funte libbrarie",
        "booksources-search-legend": "Ascìa 'e fonte ncopp' 'e libbre",
        "booksources-search": "Ascìa",
        "tooltip-pt-mycontris": "Elenco dde tuje contributte",
        "tooltip-pt-login": "A reggistrazione è cunsigliata",
        "tooltip-pt-logout": "Jésce (logout)",
+       "tooltip-pt-createaccount": "Pigliateve curaggio e criate n'utente e trasìte; ancora ca chisto nun s'avesse 'a ffà pe' fforza",
        "tooltip-ca-talk": "Vede e discussione rilative a chista paggena",
        "tooltip-ca-edit": "Puo modifica chista paggena. Ppe favore usa 'o pulsante 'e anteprimma primma 'e salva",
        "tooltip-ca-addsection": "Cummincia 'na nova sezzione",
        "tooltip-feed-atom": "Atom feed pe sta pàggena",
        "tooltip-t-contributions": "Lista dde contributte 'e chisto utente",
        "tooltip-t-emailuser": "Manna 'nu email a chisto utente",
+       "tooltip-t-info": "Cchiù nfurmaziune ncopp'a sta paggena",
        "tooltip-t-upload": "Careca file",
        "tooltip-t-specialpages": "Lista 'e tutte e paggene speciale",
        "tooltip-t-print": "Vversione pe' stampa 'e chista paggena",
        "version-poweredby-others": "ati",
        "version-poweredby-translators": "tradutture 'e translatewiki.net",
        "version-credits-summary": "Nuje vulessemo tené a mmente 'e perzune ccà abbascio pe' purtà rispetto a 'e cuntribbute 'e lloro ncopp'a [[Special:Version|MediaWiki]].",
+       "version-license-info": "MediaWiki è nu software libbero; vuje 'o putite redestribbuì e/o cagnà sott' 'e termine d' 'a licienza GNU GPL ('a Licienza Pubbreca Generale) comme pubbrecata d' 'a Free Software Foundation; o pure 'a verziona 2 d' 'a Licienza, o pure (comme vulite vuje) 'a n'ata verziona cchiù nnova.\n\nMediaWiki è destribbuita c' 'a speranza d'essere utile, ma SENZA NISCIUNA GARANZIA; senza manco 'a garanzia p' 'a CUMMERCIABBELETÀ O IDONIETÀ PE' NU SCOPO PARTICOLARE. Iate a vedé 'a GNU GPL pe' n'avé cchiù nfurmaziune.\n\nAvísseve 'a ricevere [{{SERVER}}{{SCRIPTPATH}}/COPYING na copia d' 'a Licienza GNU GPL] cu stu prugramma; si nò, scrivete â Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o [//www.gnu.org/licenses/old-licenses/gpl-2.0.html liggete sta paggena ncopp' 'a l'Internet].",
+       "version-software": "Software installato",
+       "version-software-product": "Prodotto",
+       "version-software-version": "Verziona",
+       "version-entrypoints": "Punte 'e trasuta 'e l'URL",
+       "version-entrypoints-header-entrypoint": "Punto 'e trasuta",
+       "version-entrypoints-header-url": "URL",
+       "redirect": "Rediretto 'a nu file, n'utente, na paggena o n'ID 'e na verziona",
+       "redirect-legend": "Rediretto ca spuntasse a nu file o na paggena",
+       "redirect-summary": "Sta pàggena speciale redireziona a nu file (dato 'o nomme d' 'o file), na pàggene (dato n'ID 'e verziona), o 'na pàggene utente (dato n'ID nummereca 'e l'utende). Ause: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
+       "redirect-submit": "Vaje",
+       "redirect-lookup": "Ascìa:",
+       "redirect-value": "Valore:",
+       "redirect-user": "ID utenza",
+       "redirect-page": "ID d' 'a paggena",
+       "redirect-revision": "Sarva revisione",
+       "redirect-file": "Nomme d\"o file",
+       "redirect-not-exists": "Valore nun accucchiato",
+       "fileduplicatesearch": "Ascìa 'e file duprecate",
+       "fileduplicatesearch-summary": "Circa pe' file duprecate cu bbase 'o valore hash.",
+       "fileduplicatesearch-legend": "Circa pe' nu duprecato",
+       "fileduplicatesearch-filename": "Nomme d' 'o file",
+       "fileduplicatesearch-submit": "Truova",
+       "fileduplicatesearch-info": "$1 × $2 pixel, dimenzione d' 'o file: $3<br />tipo MIME: $4",
+       "fileduplicatesearch-result-1": "'O file \"$1\" non ce tene nu duprecato eguale eguale.",
+       "fileduplicatesearch-result-n": "'O file \"$1\" tène {{PLURAL:$2|1 dupricazione|$2 dupricaziune}} eguale eguale.",
+       "fileduplicatesearch-noresults": "Nisciuno file chiamato \"$1\" è stato accucchiato.",
        "specialpages": "Paggene speciale",
+       "specialpages-note-top": "Liggenda",
+       "specialpages-note": "* Paggene speciale normale.\n* <span class=\"mw-specialpagerestricted\">Paggene speciale ch' 'e restriziune.</span>",
+       "specialpages-group-maintenance": "Report 'e manutenzione",
+       "specialpages-group-other": "Ati paggene speciale",
+       "specialpages-group-login": "Tràse o cria n'acciesso novo",
+       "specialpages-group-changes": "Cagnamiente 'e mò mò e riggistre",
+       "specialpages-group-media": "Riepileghe 'e media e carreche",
+       "specialpages-group-users": "Utente e deritte",
+       "specialpages-group-highuse": "Pàggene ausate assaje proprio",
+       "specialpages-group-pages": "Lista d' 'e paggene",
+       "specialpages-group-pagetools": "Strumiente p' 'e paggene",
+       "specialpages-group-wiki": "Data e strumiente",
+       "specialpages-group-redirects": "Redirezionamiente d' 'e paggene speciale",
+       "specialpages-group-spam": "Strumiente p' 'o spam",
+       "blankpage": "Paggene abbacante",
+       "intentionallyblankpage": "Sta paggena s'è lassata abbacante apposta",
+       "external_image_whitelist": "  #Lassate sta linea accussì accussì comme sta<pre>\n#Mettete piezze 'espressione regolare (chilla parta nfra 'e //) sotto\n#Chille s'azzeccano ch' 'e ndirizze URL 'e l'immaggine 'e fore (collegamiente cavere)\n#Chille cu nu cunfronto positivo sarranno mmustate comme immaggene, o pure comme a nu link a l'immaggine ca mmustano\n#Linee c'accumenciano pe' # songo trattate comme commente\n#Chist'è insenzitivo p' 'e maiuscole e minuscole\n\n#Mettete tutt' 'e piezze regex ncopp' 'a stalinea. Lassate sta linea eguale eguale comme 'a verite</pre>",
+       "tags": "Tag 'e cagnamiento valide",
        "tag-filter": "Filtra ppe [[Special:Tags|etichetta]]:",
+       "tag-filter-submit": "Filtra",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tags}}]]: $2)",
+       "tags-title": "Etichette",
+       "tags-intro": "Sta paggena elenca l'etichette ca 'o software putesse ffà suoccie a nu cagnamiento e 'o significato lloro.",
+       "tags-tag": "Nomme 'e ll'etichetta",
+       "tags-display-header": "Comme cumpàreno ncopp' 'a lista 'e cagnamiente",
+       "tags-description-header": "Descrizione sana d' 'o significato",
+       "tags-active-header": "Attivo?",
+       "tags-hitcount-header": "Cagnamiente etichettate",
+       "tags-active-yes": "Sì",
+       "tags-active-no": "No",
+       "tags-edit": "càgna",
+       "tags-hitcount": "$1 {{PLURAL:$1|cagnamiento|cagnamiente}}",
+       "comparepages": "Miette a cunfronto 'e paggene",
+       "compare-page1": "Paggena 1",
+       "compare-page2": "Paggena 2",
+       "compare-rev1": "Vversione 1",
+       "compare-rev2": "Vversione 2",
+       "compare-submit": "Miette a cunfronto",
+       "compare-invalid-title": "'O titolo c'avite miso nun è bbuono.",
+       "compare-title-not-exists": "'O file c'avite specificato nun esiste.",
+       "compare-revision-not-exists": "'A verziona c'avite specificato nun esiste.",
+       "dberr-problems": "Scusatece! Stu sito sta passanno nu mumento tecnico malamente.",
+       "dberr-again": "Aspettate cocche minuto e po' recarrecate.",
+       "dberr-info": "(Nun se può cuntattà 'o server d' 'o database: $1)",
+       "dberr-info-hidden": "(Nun se può cuntattà 'o server d' 'o database)",
+       "dberr-usegoogle": "Pe' tramente putite pruvà 'ascianno ncoppa Google.",
+       "dberr-outofdate": "Vedite ca l'indice lloro d' 'e cuntenute nuoste ponno nun essere agghiurnate mò mò.",
+       "dberr-cachederror": "Chest'è na copia \"cache\" d' 'a paggena c'avite asciato, e putesse nun essere agghiurnata.",
+       "htmlform-invalid-input": "Ce sta cocche probblema cu l'input c'avite miso.",
+       "htmlform-select-badoption": "'O valore c'avite specificato nun è n'opziona bbuona.",
+       "htmlform-int-invalid": "'O valore c'avite specificato nun è nu nummero ntero.",
+       "htmlform-float-invalid": "'O valore c'avite specificato nun è nu nummero.",
+       "htmlform-int-toolow": "'O valore c'avite specificato sta pe' sott' 'o minimo 'e $1.",
+       "htmlform-int-toohigh": "'O valore c'avite specificato sta pe' copp' 'o massimo 'e $1.",
+       "htmlform-required": "Stu valore ce vuò.",
+       "htmlform-submit": "Manna",
+       "htmlform-reset": "Annulla 'e cagnamiente",
+       "htmlform-selectorother-other": "Ato",
+       "htmlform-no": "No",
+       "htmlform-yes": "Sì",
+       "htmlform-chosen-placeholder": "Scigliete n'opzione",
+       "htmlform-cloner-create": "Azzecca 'e cchiù",
+       "htmlform-cloner-delete": "Rimuove",
+       "htmlform-cloner-required": "Servesse al minimo nu valore.",
+       "sqlite-has-fts": "$1 cu supporto 'e ricerche full-text",
+       "sqlite-no-fts": "$1 senza supporto 'e ricerche full-text",
+       "logentry-delete-delete": "$1 {{GENDER:$2|scancellaje}} 'a paggena $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|arrepigliaje}} 'a paggena $3",
+       "logentry-delete-event": "$1 {{GENDER:$2|cagnaie}} 'a vesibbiletà 'e {{PLURAL:$5|n'azione d' 'o riggistro|$5 aziune d' 'o riggistro}} ncopp' 'a 'a $3: $4",
        "rightsnone": "(nisciuno)",
+       "feedback-message": "Mmasciata:",
+       "feedback-cancel": "Canciella",
+       "feedback-close": "Fatto",
+       "searchsuggest-search": "Truova",
+       "api-error-filename-tooshort": "'O nomme d' 'o file è troppo curto.",
+       "api-error-filetype-banned": "Stu tipo 'e file nun è permesso.",
+       "duration-seconds": "$1 {{PLURAL:$1|secondo|seconde}}",
+       "duration-minutes": "$1 {{PLURAL:$1|minuto|minute}}",
+       "duration-hours": "$1 {{PLURAL:$1|ora|ore}}",
+       "duration-days": "$1 {{PLURAL:$1|juorno|juorne}}",
+       "limitreport-cputime-value": "$1 {{PLURAL:$1|secondo|seconde}}",
+       "limitreport-walltime-value": "$1 {{PLURAL:$1|secondo|seconde}}",
+       "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|byte|byte}}",
+       "expand_templates_ok": "OK",
+       "expand_templates_preview": "Anteprimma",
+       "pagelang-name": "Paggena",
+       "pagelang-language": "Lengua",
+       "pagelang-select-lang": "Selezziona lengua",
+       "mediastatistics-header-unknown": "Scanusciuto",
+       "mediastatistics-header-audio": "Audio",
+       "mediastatistics-header-video": "Video",
+       "mediastatistics-header-office": "Ufficio",
+       "mediastatistics-header-text": "Testuale",
        "json-error-unknown": "Ce sta nu probblema c' 'o JSON. Errore: $1",
        "json-error-state-mismatch": "Valore malamente furmato o nun buono p' 'o JSON",
        "json-error-syntax": "Errore 'e sintasse",
index 5cecc03..8b72bad 100644 (file)
        "otherlanguages": "På andre språk",
        "redirectedfrom": "(Omdirigert fra $1)",
        "redirectpagesub": "Omdirigeringsside",
+       "redirectto": "Omdirigering til:",
        "lastmodifiedat": "Denne siden ble sist endret $1 kl. $2.",
        "viewcount": "Denne siden er vist {{PLURAL:$1|én gang|$1 ganger}}.",
        "protectedpage": "Låst side",
        "createaccount-text": "Noen opprettet en konto for din e-postadresse på {{SITENAME}} ($4) med navnet «$2», med «$3» som passord. Du burde logge inn og endre passordet nå.\n\nDu kan ignorere denne beskjeden dersom kontoen ble opprettet ved en feil.",
        "login-throttled": "Du har prøvd å logge inn for mange ganger.\nVent $1 før du prøver på nytt.",
        "login-abort-generic": "Innleggingen ble avbrutt.",
+       "login-migrated-generic": "Kontoen din har blitt globalisert, og brukernavnet ditt finnes ikke lenger på denne wikien.",
        "loginlanguagelabel": "Språk: $1",
        "suspicious-userlogout": "Din forespørsel om å logge ut ble nektet fordi den så ut til å ha bli sendt av en ødelagt nettleser eller en mellomtjener.",
        "createacct-another-realname-tip": "Det er frivillig å oppgi ditt egentlige navn.\nHvis du velger å oppgi det, vil det blir anvendt for å gi deg som bruker anerkjennelse",
        "showpreview": "Forhåndsvisning",
        "showdiff": "Vis endringer",
        "blankarticle": "<strong>Advarsel:</strong> Siden du er i ferd med å opprette er tom.\nHvis du trykker \"{{int:savearticle}}\" en gang til, vil siden opprettes uten innhold.",
-       "anoneditwarning": "'''Advarsel:''' Du er ikke logget inn.\nIP-adressen din blir bevart i sidens redigeringshistorikk.",
+       "anoneditwarning": "<strong>Advarsel:</strong> Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du <strong>[$1 logger inn]</strong> eller <strong>[$2 oppretter en konto]</strong> vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.",
        "anonpreviewwarning": "<em>Du er ikke logget inn. Ved lagring vil IP-adressen din lagres i sidens redigeringshistorikk.</em>",
        "missingsummary": "'''Påminnelse:''' Du har ikke lagt inn en redigeringsforklaring.\nVelger du ''Lagre siden'' en gang til blir endringene lagret uten forklaring.",
        "missingcommenttext": "Vennligst legg inn en kommentar under.",
        "searchrelated": "relatert",
        "searchall": "alle",
        "showingresults": "Nedenfor vises opptil {{PLURAL:$1|'''ett''' resultat|'''$1''' resultater}} fra og med nummer <b>$2</b>.",
-       "showingresultsinrange": "Nedenfor vises opptil {{PLURAL:$1|<strong>1</strong> resultat|<strong>$1</strong> resulter}} i området #<strong>$2</strong> til #<strong>$3</strong>.",
+       "showingresultsinrange": "Nedenfor vises opptil {{PLURAL:$1|<strong>1</strong> resultat|<strong>$1</strong> resulter}} i mellom nummer <strong>$2</strong> og nummer <strong>$3</strong>.",
+       "search-showingresults": "Resultat <strong>{{PLURAL:$4|$1|$1–$2}}</strong> av <strong>$3</strong>",
        "search-nonefound": "Ingen resultater passet til søket.",
        "powersearch-legend": "Avansert søk",
        "powersearch-ns": "Søk i navnerom:",
        "youremail": "E-post:",
        "username": "{{GENDER:$1|Brukernavn}}:",
        "prefs-memberingroups": "{{GENDER:$2|Medlem}} i følgende {{PLURAL:$1|gruppe|grupper}}:",
-       "prefs-registration": "Registreringstid:",
+       "prefs-registration": "Registreringstidspunkt:",
        "yourrealname": "Virkelig navn:",
        "yourlanguage": "Språk:",
        "yourvariant": "Språkvariant for innhold:",
        "querypage-disabled": "Denne spesialsiden er deaktivert av ytelsesårsaker.",
        "booksources": "Bokkilder",
        "booksources-search-legend": "Søk etter bokkilder",
+       "booksources-search": "Søk",
        "booksources-text": "Under er en liste over lenker til andre sider som selger nye og brukte bøker, og kan også ha videre informasjon om bøker du leter etter:",
        "booksources-invalid-isbn": "Det gitte ISBN-nummeret er ugyldig; sjekk om du har angitt det riktig.",
        "specialloguserlabel": "Utøver:",
        "unblocked": "[[User:$1|$1]] ble avblokkert",
        "unblocked-range": "$1 har fått løftet blokkeringen",
        "unblocked-id": "Blokkering $1 ble fjernet",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] har blitt avblokkert.",
        "blocklist": "Blokkerte brukere",
        "ipblocklist": "Blokkerte IP-adresser og brukernavn",
        "ipblocklist-legend": "Finn en blokkert bruker",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|endret}} sidespråk for $3 fra $4 til $5.",
        "default-skin-not-found": "Ops! Standarddrakten for wikien din (<code>$wgDefaultSkin</code>), <code>$1</code>, er ikke tilgjengelig.\n\nInstallasjonen din ser ut til å inneholde følgende drakter. Se [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for informasjon om hvordan du kan slå disse på eller heller velge en standarddrakt.\n\n$2\n\n; Om du nettopp har installert MediaWiki:\n: Du har trolig installert fra git, eller direkte fra kildekoden med en annen metode. Dette er forventet. Prøv å installere noen drakter fra [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org sin draktbase] ved å\n:* laste ned [https://www.mediawiki.org/wiki/Download tarball-installereren], som kommer med flere drakter og utvidelser. Du kan kopiere og lime inn <code>skins/</code>-mappen fra denne.\n:* klone en av <code>mediawiki/skins/*</code>-lagrene via git inn i <code>skins/</code> -mappen av din MediaWiki-installasjon.\n: Å gjøre dette skal ikke forstyrre git-mappen din om du er en MediaWiki-utvikler.\n\n; Om du nettopp har oppgradert MediaWiki:\n: MediaWiki 1.24 og nyere slår ikke lenger på automatisk installerte drakter (se [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Du kan lime inn følgende linjer i <code>LocalSettings.php</code> for å slå på alle installerte drakter:\n\n<pre>$3</pre>\n\n; Om du nettopp har endret <code>LocalSettings.php</code>:\n: Dobbelsjekk draktnavnene for skrivefeil.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (slått på)",
-       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''slått av''')"
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''slått av''')",
+       "mediastatistics": "Mediestatistikk",
+       "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte}} ($2; $3 %)",
+       "mediastatistics-table-mimetype": "MIME-type",
+       "mediastatistics-table-extensions": "Mulige filtyper",
+       "mediastatistics-table-count": "Antall filer",
+       "mediastatistics-table-totalbytes": "Kombinert størrelse",
+       "mediastatistics-header-unknown": "Ukjent",
+       "mediastatistics-header-bitmap": "Bitmap-bilder",
+       "mediastatistics-header-drawing": "Tegninger (vektor-bilder)",
+       "mediastatistics-header-audio": "Lyd",
+       "mediastatistics-header-video": "Videoer",
+       "mediastatistics-header-executable": "Kjørbare filer",
+       "mediastatistics-header-archive": "Komprimerte formater",
+       "json-warn-trailing-comma": "$1 etterfølgende {{PLURAL:$1|komma|kommaer}} ble fjernet fra JSON",
+       "json-error-state-mismatch": "Ugyldig JSON",
+       "json-error-syntax": "Syntaksfeil"
 }
index affc51a..fa1687c 100644 (file)
        "pager-older-n": "{{PLURAL:$1|1 oudere|$1 oudere}}",
        "suppress": "Toezicht",
        "querypage-disabled": "Deze speciale pagina is uitgeschakeld om performanceredenen.",
+       "apihelp": "API-hulp",
        "booksources": "Boekinformatie",
        "booksources-search-legend": "Bronnen en gegevens over een boek zoeken",
        "booksources-search": "Zoeken",
index 1d464d2..9bcd584 100644 (file)
        "nospecialpagetext": "Du har bede om ei spesialside som ikkje finst. Lista over spesialsider finn du [[Special:SpecialPages|her]].",
        "error": "Feil",
        "databaseerror": "Databasefeil",
-       "databaseerror-text": "Ein spørjefeil mot databasa har oppstått.\nDette kan indikere ein feil i programvara.",
+       "databaseerror-text": "Ein spørjefeil mot databasen har oppstått.\nDette kan indikere ein feil i programvara.",
        "databaseerror-error": "Feil: $1",
        "laggedslavemode": "Åtvaring: Det er mogleg at sida ikkje er heilt oppdatert.",
        "readonly": "Databasen er skriveverna",
index 194096d..c3eaea2 100644 (file)
        "site-atom-feed": "$1 ଆଟମ ଫିଡ଼",
        "page-rss-feed": "$1 ଟି ଆରେସେସ ଫିଡ଼",
        "page-atom-feed": "$1 ଟି ଆଟମ ଫିଡ଼",
-       "red-link-title": " $1 (ପୃଷ୍ଠାଟି ନାହିଁ)",
+       "red-link-title": "$1 (ପୃଷ୍ଠାଟି ନାହିଁ)",
        "sort-descending": "ବଡ଼ରୁ ସାନ କ୍ରମେ ସଜାନ୍ତୁ",
        "sort-ascending": "ସାନରୁ ବଡ଼ କ୍ରମେ ସଜାନ୍ତୁ",
        "nstab-main": "ପୃଷ୍ଠା",
        "searchprofile-images-tooltip": "ଫାଇଲ ସବୁ ପାଇଁ ଖୋଜିବେ",
        "searchprofile-everything-tooltip": "ପ୍ରସଙ୍ଗ ସବୁକୁ ଖୋଜିବେ (ଆଲୋଚନା ସହ)",
        "searchprofile-advanced-tooltip": "ନିଜେ ତିଆରିକରିହେବା ଭଳି ନେମସ୍ପେସରେ ଖୋଜିବେ",
-       "search-result-size": "$1 ({{PLURAL:$2|1 ଶବ୍ଦ|$2 ଶବ୍ଦ}})",
+       "search-result-size": "$1 ({{PLURAL:$2|ଗୋଟେ ଶବ୍ଦ|$2 ଟି ଶବ୍ଦ}})",
        "search-result-category-size": "{{PLURAL:$1|ଜଣେ ସଭ୍ୟ|$1 ଜଣ ସଭ୍ୟ}} ({{PLURAL:$2|ଗୋଟିଏ ଶ୍ରେଣୀy|$2ଟି ଶ୍ରେଣୀ ସମୂହ}}, {{PLURAL:$3|ଗୋଟିଏ ଫାଇଲ|$3ଟି ଫାଇଲ}})",
        "search-redirect": "($1 କୁ ଆଗକୁ ବଢେଇନିଅ )",
        "search-section": "(ଭାଗ $1)",
        "proxyblockreason": "ଏକ ଖୋଲା ପ୍ରକ୍ସି ହୋଇଥିବାରୁ ଆପଣଙ୍କ IP ଠିକଣାଟିକୁ ଅଟକାଇଦିଆଗଲା ।\nଦୟାକରି ଆପଣଙ୍କ ଇଣ୍ଟରନେଟ ସେବାପ୍ରଦାନକାରୀ, କାରିଗରି ସହଯୋଗ କିମ୍ବା ସଙ୍ଗଠନ ସହିତ କଥା ହୋଇ ଏହି ବିରାଟ ଅସୁବିଧା ବାବଦରେ ବତାଇଦିଅନ୍ତୁ ।",
        "sorbsreason": "{{SITENAME}} ଦେଇ ଆପଣଙ୍କ IP ଠିକଣାଟି DNSBL ଭିତରେ ଏକ ଖୋଲା ପ୍ରକ୍ସି ଭାବରେ ନଥିଭୁକ୍ତ ହୋଇଅଛି ।",
        "sorbs_create_account_reason": "{{SITENAME}} ଦେଇ ଆପଣଙ୍କ IP ଠିକଣାଟି DNSBL ଭିତରେ ଏକ ଖୋଲା ପ୍ରକ୍ସି ଭାବରେ ନଥିଭୁକ୍ତ ହୋଇଅଛି ।\nଆପଣ ନୂଆ ଖାତାଟିଏ ଖୋଲି ପାରିବେ ନାହିଁ",
+       "xffblockreason": "ଆପଣଙ୍କର କିମ୍ବା ଆପଣ ବ୍ୟବହାର କରୁଥିବା ପ୍ରକ୍ସି ସର୍ଭରର X-Forwarded-For ହେଡ଼ରରେ ଥିବାଏକ IP ଠିକଣାକୁ ଅଟକାଯାଇଛି । ଅଟକାଇବାର କାରଣ ହେଲା: $1",
        "cant-see-hidden-user": "ଆପଣ ଅଟକାଇବାକୁ ଚାହୁଁଥିବା ସଭ୍ୟଜଣକ ଆଗରୁ ଅଟକାଯାଇଛନ୍ତି ଓ ଲୁଚାଯାଇଛନ୍ତି ।\nଯେହେତୁ ଆପଣଙ୍କ ପାଖରେ ସଭ୍ୟଙ୍କୁ ଲୁଚାଇବା ଅଧିକାର ନାହୀଁ, ଆପଣ ସଭ୍ୟଙ୍କର ଅଟକକୁ ଦେଖିପାରିବେ ବା ବଦଳାଇପାରିବେ ନାହିଁ ।",
        "ipbblocked": "ଯେହେତୁ ଆପଣଙ୍କୁ ଅଟକାଯାଇଛି ଆପଣ ବାକି ସଭ୍ୟମାନଙ୍କୁ ଅଟକାଇ ବା ଅଟକରୁ ଛାଡ଼ କରିପାରିବେ ନାହିଁ ।",
        "ipbnounblockself": "ଆପଣ ନିଜକୁ ଅଟକାଇପାରିବେ ନାହିଁ",
        "movepagetalktext": "ଯଦି:\n*ଗୋଟିଏ ଖାଲି ଆଲୋଚନା ପୃଷ୍ଠା ସେହି ନାଆଁରେ ଥାଏ\n*ଆପଣ ତଳ ବାକ୍ସକୁ ନ ବାଛନ୍ତି\nତେବେ ଏହି ପ୍ରୁଷ୍ଠା ସହ ଯୋଡାଯାଇଥିବା ଆଲୋଚନା ପ୍ରୁଷ୍ଠାକୁ ଆପେ ଆପେ ଘୁଞ୍ଚାଇଦିଆଯିବ ।\nସେହି ଯାଗାରେ, ଆପଣଙ୍କୁ ପ୍ରୁଷ୍ଠାଟିକୁ ଘୁଞ୍ଚାଇବାକୁ/ମିଶାଇବାକୁ ପଡ଼ିବ ।",
        "movearticle": "ପୃଷ୍ଠା ଘୁଞ୍ଚେଇବା:",
        "moveuserpage-warning": "'''ସୂଚନା:''' ଆପଣ ଏକ ବ୍ୟବହାରକାରୀ ପୃଷ୍ଠାକୁ ଘୁଞ୍ଚାଇବାକୁ ଯାଉଛନ୍ତି । ଦୟାକରି ଜାଣିରଖନ୍ତୁ ଯେ ପୃଷ୍ଠାଟି କେବଳ ଘୁଞ୍ଚିଯିବ ଓ ବ୍ୟବହାରକାରୀ ''ଘୁଞ୍ଚିବେ ନାହିଁ'' ।",
+       "movecategorypage-warning": "<strong>ଚେତାବନୀ:</strong> ଆପଣ ଏକ ଶ୍ରେଣୀ ପୃଷ୍ଠାକୁ ଘୁଞ୍ଚାଇବାକୁ ଯାଉଛନ୍ତି । କେବଳ ପୃଷ୍ଠାଟି ଘୁଞ୍ଚିଯିବ ଏବଂ ପୁରୁଣା ଶ୍ରେଣୀର କୌଣସି ପୃଷ୍ଠା ନୂଆ ଶ୍ରେଣୀଭୁକ୍ତ ହେବନାହିଁ <em>ଜାଣିରଖନ୍ତୁ</em> ।",
        "movenologintext": "ଏହି ପୃଷ୍ଠାଟିକୁ ଘୁଞ୍ଚାଇବା ପାଇଁ ଆପଣ ନିହାତି ଜଣେ ପଞ୍ଜୀକୃତ ସଭ୍ୟ ହୋଇଥିବେ ଏବଂ [[Special:UserLogin|logged in]]",
        "movenotallowed": "ଆପଣଙ୍କର ପୃଷ୍ଠାଗୁଡିକୁ ଘୁଞ୍ଚାଇବା ଅଧିକାର ନହିଁ ।",
        "movenotallowedfile": "ଆପଣଙ୍କର ଫାଇଲ ଘୁଞ୍ଚାଇବାର ଅଧିକାର ନହିଁ ।",
        "cant-move-user-page": "ଆପଣଙ୍କୁ ଏହି ସଭ୍ୟ ପୃଷ୍ଠାଟିକୁ ଘୁଞ୍ଚାଇବା ଲାଗି ଅନୁମତି ମିଳିନାହିଁ, କିନ୍ତୁ ନିଜର ଉପପୃଷ୍ଠା ସବୁ ଘୁଞ୍ଚାଇ ପାରିବେ ।",
        "cant-move-to-user-page": "ଆପଣଙ୍କର ଗୋଟିଏ ପୃଷ୍ଠାକୁ ବ୍ୟବହାରକାରୀ ପୃଷ୍ଠାକୁ ଘୁଞ୍ଚାଇବାର ଅଧିକାର ନହିଁ ।",
+       "cant-move-category-page": "ଆପଣଙ୍କୁ ଶ୍ରେଣୀ ପୃଷ୍ଠାଟିଏ ଘୁଞ୍ଚାଇବା ନିମନ୍ତେ ଅନୁମତି ମିଳିନାହିଁ ।",
+       "cant-move-to-category-page": "ପୃଷ୍ଠାଟିଏକୁ ଶ୍ରେଣୀ ପୃଷ୍ଠାକୁ ଘୁଞ୍ଚାଇବା ଲାଗି ଆପଣଙ୍କୁ ଅନୁମତି ମିଳିନାହିଁ ।",
        "newtitle": "ନୂଆ ନାଆଁକୁ:",
        "move-watch": "ମୂଳ ପୃଷ୍ଠା ଓ ବଦଳାଇବାକୁ ଚାହୁଁଥିବା ପୃଷ୍ଠା ଦେଖାଇବେ",
        "movepagebtn": "ପୃଷ୍ଠା ଘୁଞ୍ଚେଇବେ",
        "thumbnail-more": "ବିସ୍ତାର",
        "filemissing": "ଫାଇଲ ମିଳୁନାହିଁ",
        "thumbnail_error": "ନଖଦେଖଣା ତିଆରିବାରେ ଅସୁବିଧା: $1",
+       "thumbnail_error_remote": "$1ରୁ ତ୍ରୁଟି ମେସେଜ:\n$2",
        "djvu_page_error": "DjVu ପୃଷ୍ଠା ସୀମା ବାହାରେ ରହିଅଛି",
        "djvu_no_xml": "DjVu ଫାଇଲ ନିମନ୍ତେ XML ଆଣିବାରେ ବିଫଳ ହେଲୁଁ",
        "thumbnail-temp-create": "ଏକ ଅସ୍ଥାୟୀ ଛୋଟଦେଖଣା ଫାଇଲ ତିଆରି କରିବାରେ ବିଫଳ ହେଲୁ",
        "thumbnail_image-type": "ଛବିର ପ୍ରକାର ଅନୁମୋଦିତ ନୁହେଁ",
        "thumbnail_gd-library": "ଅଧାଗଢ଼ା GD ପାଠାଗାର ସଜାଣି: $1 ମିଳୁନାହିଁ",
        "thumbnail_image-missing": "ଫାଇଲଟି ନଥିଲା ଭଳି ଲାଗୁଛି : $1",
+       "thumbnail_image-failure-limit": "ଏହି ଥମ୍ବନେଲ ରେଣ୍ଡର କରିବା ପାଇଁ ନିକଟରେ ଅନେକ ($1 କିମ୍ବା ଅଧିକ) ବିଫଳ ଚେଷ୍ଟା କରାଯାଇଛି । ଆଉଥରେ ଚେଷ୍ଟା କରନ୍ତୁ ।",
        "import": "ପୃଷ୍ଠା ଆମଦାନି କରିବେ",
        "importinterwiki": "ଟ୍ରାନ୍ସଉଇକି ଈମ୍ପୋର୍ଟ",
        "import-interwiki-text": "ଏକ ଉଇକି ଓ ପୃଷ୍ଠା ନାମ ଆମଦାନି କରିବା ନିମନ୍ତେ ଦିଅନ୍ତୁ ।\nସଂସ୍କରଣ ତାରିଖ ଓ ସମ୍ପାଦକଙ୍କ ନାମ ସାଇତା ହୋଇ ରହିବ ।\nଅନ୍ତଉଇକି ଆମଦାନି କାମସବୁ [[Special:Log/import|ଆମଦାନି ଇତିହାସ]]ରେ ସାଇଟ ହୋଇ ରହିଛି ।",
+       "import-interwiki-sourcewiki": "ମୂଳ ଉଇକି:",
+       "import-interwiki-sourcepage": "ମୂଳ ପୃଷ୍ଠା:",
        "import-interwiki-history": "ଏହି ପୃଷ୍ଠା ନିମନ୍ତେ ସବୁଯାକ ସଂସ୍କରଣ ଇତିହାସ ନକଲ କରିନିଅନ୍ତୁ",
        "import-interwiki-templates": "ସବୁଯାକ ଛାଞ୍ଚ ଏହା ଭିତରେ ରଖିବେ",
        "import-interwiki-submit": "ଆମଦାନୀ",
        "import-token-mismatch": "ଅବଧି ତଥ୍ୟ ଲୋପପାଇଗଲାଣି ।\nଦୟାକରି ଆଉଥରେ ଚେଷ୍ଟା କରନ୍ତୁ ।",
        "import-invalid-interwiki": "ଦିଆଯାଇଥିବା ଉଇକିରୁ ଆହରଣ କରାଯାଇପାରିବ ନାହିଁ ।",
        "import-error-edit": "ଆପଣଙ୍କର ଏହାକୁ ବଦଳାଇବା ଅଧିକାର ନ ଥିବାରୁ \"$1\" ପୃଷ୍ଠାଟି ଆଣିହେଲା ନାହିଁ ।",
-       "import-error-create": "\"$1\" ପୃଷ୍ଠାଟି ଅଣାଯାଇନାହିଁ କାରଣ ଆପଣଙ୍କର ଏହାକୁ ତିଆରିକରିବା ଅଧିକାର ନାହିଁ ।",
-       "import-error-interwiki": "\"$1\"ପୃଷ୍ଠାକୁ ଆମଦାନୀ କରିହେଲାନି କାରଣ ଏହାର ନାମ ବାହାରଲିଙ୍କରେ ଆଗରୁ ଅଛି(ଉଇକିଗୁଡିକ ମଧ୍ୟରେ) ।",
-       "import-error-special": "\"$1\"ପୃଷ୍ଠାକୁ ଆମଦାନୀ କରିହେଲାନି କାରଣ ଏହା ଏକ ବିଶେଷ ନେମସ୍ପେସରେ ଅଛି ଯାହା ପୃଷ୍ଠାଗୁଡିକୁ ଅନୁମତି ଦିଏ ନାହିଁ ।",
-       "import-error-invalid": "\"$1\"ପୃଷ୍ଠାକୁ ଆମଦାନୀ କରିହେଲାନି କାରଣ ଏହାର ନାମଟି ଅବୈଧ ।",
+       "import-error-create": "ଆପଣଙ୍କର ଏହାକୁ ଗଢ଼ିବା ଅଧିକାର ନ ଥିବାରୁ \"$1\" ପୃଷ୍ଠାଟି ଅଣାଯାଇନାହିଁ ।",
+       "import-error-interwiki": "ଏହାର ନାମ ବାହାର ଲିଙ୍କ ପାଇଁ ସାଇତାଯାଇ ଥିବାରୁ \"$1\"ପୃଷ୍ଠାଟିକୁ ଆଣିହେଲା ନାହିଁ (ଇଣ୍ଟର ଉଇକି)",
+       "import-error-special": "ଅନୁମତି ନ ଥିବା ଏକ ବିଶେଷ ନେମସ୍ପେସରେ ଥିବାରୁ \"$1\"ପୃଷ୍ଠାକୁ ଆଣି ହେଲାନାହିଁ ।",
+       "import-error-invalid": "ଏହି ଉଇକିରେ ଅଣାଯିବା ନୂଆ ନାମଟି ଅବୈଧ ଥିବାରୁ \"$1\" ପୃଷ୍ଠାଟିକୁ ଆଣିହେଲା ନାହିଁ ।",
        "import-error-unserialize": "\"$1\"ପୃଷ୍ଠାର $2 ପୁନରାବୃତିଟି ଅଣତାଲିକାଭୁକ୍ତ କରାଯାଇପାରିବ ନାହିଁ । ପୁନରାବୃତିଟି $3 ପ୍ରକାର ବ୍ୟବାହର କରିବା ପାଇଁ $4ରେ ତାଲିକାଭୁକ୍ତ ହୋଇଛି ।",
+       "import-error-bad-location": "ଏହି ମଡ଼େଲଟି ପୃଷ୍ଠାରେ $3 କଣ୍ଟେଣ୍ଟ ମଡ଼େଲ ବ୍ୟବହାର କରି $2 ସଂସ୍କରଣଟି ଏହି ଉଇକିରେ ସାଇତାଯାଇପାରିବ ନାହିଁ ।",
        "import-options-wrong": "ଭୁଲ {{PLURAL:$2|option|options}}: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "ଦିଆଯାଇଥିବା ମୂଳ ପୃଷ୍ଠାର ଶୀର୍ଷକଟି ଅବୈଧ ଅଟେ ।",
        "import-rootpage-nosubpage": "ମୂଳ ପୃଷ୍ଠାର \"$1\" ନେମସ୍ପେସ ଉପପୃଷ୍ଠାର ଅନୁମତି ଦିଏନାହିଁ ।",
        "importlogpage": "ଇତିହାସ ଆହରଣ",
        "importlogpagetext": "ଅନ୍ୟ ଉଇକିରୁ ପରିଛାଙ୍କ ଦେଇ ସମ୍ପାଦନା ଇତିହାସ ସହ କରାହୋଇଥିବା ପୃଷ୍ଠା ଆମଦାନି ।",
        "import-logentry-upload": "ଫାଇଲ ଅପଲୋଡ଼ ଦେଇ [[$1]] ଆମଦାନି କରାଯାଇଛି",
-       "import-logentry-upload-detail": "$1 ଗୋଟି {{PLURAL:$1|ସଂସ୍କରଣ|ସଂସ୍କରଣ}}",
+       "import-logentry-upload-detail": "$1 {{PLURAL:$1|ଗୋଟି ସଂସ୍କରଣ|ଗୋଟି ସଂସ୍କରଣ}} ଅଣାଗଲା",
        "import-logentry-interwiki": "$1 କୁ ଟ୍ରାନ୍ସଉଇକି କରାଗଲା",
-       "import-logentry-interwiki-detail": "$2 ଭିତରୁ $1 ଗୋଟି {{PLURAL:$1|ସଂସ୍କରଣ|ସଂସ୍କରଣ}}",
+       "import-logentry-interwiki-detail": "$2ରୁ $1 {{PLURAL:$1|ଗୋଟି ସଂସ୍କରଣ|ଗୋଟି ସଂସ୍କରଣ}} ଅଣାଗଲା",
        "javascripttest": "ଜାଭାସ୍କ୍ରିପ୍ଟ ପରଖ",
        "javascripttest-title": "ଚାଲୁଥିବା $1 ପରଖଗୁଡିକ",
        "javascripttest-pagetext-noframework": "ଏହି ପୃଷ୍ଠାଟି ଜାଭାସ୍କ୍ରିପ୍ଟ ପରଖ ପାଇଁ ସଂରକ୍ଷଣ କରି ରଖାଯାଇଛି ।",
        "spam_reverting": "$1 ସହ ଯୋଡ଼ା ନଥିବା ଶେଷ ସଂସ୍କରଣକୁ ଲେଉଟାଇ ଦେଉଅଛୁଁ",
        "spam_blanking": "$1 ସହ ଯୋଡ଼ାଥିବା ସବୁଯାକ ସଂସ୍କରଣ ଖାଲି କରିଦିଆଗଲା",
        "spam_deleting": "$1 ସହ ଯୋଡ଼ାଥିବା ସବୁଯାକ ସଂସ୍କରଣ ଖାଲି କରିଦିଆଗଲା",
-       "simpleantispam-label": "ସà­\8dପାମ-ବିରà­\8bଧି à¬ªà¬°à¬\96 à¥¤\nà¬\8fହାà¬\95à­\81 à¬­à¬°à¬¨à­\8dତà­\81 '''ନାହିà¬\81''' !",
+       "simpleantispam-label": "à¬\86ଣà­\8dà¬\9fି-ସà­\8dପାମ à¬ªà¬°à¬\96 à¥¤\nà¬\8fହାà¬\95à­\81 à¬­à¬°à¬¨à­\8dତà­\81 <strong>ନାହିà¬\81</strong>!",
        "pageinfo-title": "\"$1\"ର ବିବରଣୀ",
        "pageinfo-not-current": "ଦୁଖିତଃ, ପୁରୁଣା ସଂସ୍କରଣଗୁଡିକର ଏହି ତଥ୍ୟ ଦେବା ସମ୍ଭବ ନୁହେଁ ।",
        "pageinfo-header-basic": "ସାଧାରଣ ଜାଣିବା କଥା",
        "confirmemail_subject": "{{SITENAME}} ଇମେଲ ଠିକଣା ନିଶ୍ଚିତ କରିବା",
        "confirmemail_body": "କେହିଜଣେ, ବୋଧହୁଏ ଆପଣ ହିଁ $1 ଆଇ.ପି. ଠିକଣାରୁ,\nଏହି ଇ-ମେଲ ଆଇ.ଡି.ରେ \"$2\" ନାଆଁରେ {{SITENAME}} ଠାରେ ଖାତାଟିଏ ଖୋଲିଛନ୍ତି ।\n\nଏହି ଖାତାଟି ସତରେ ଆପଣଙ୍କର ବୋଲି ଥୟ କରିବା ପାଇଁ ଓ {{SITENAME}}ରେ ଇ-ମେଲ ସୁବିଧାସବୁ ସଚଳ କରିବାପାଇଁ, ଏହି ଲିଙ୍କ୍ଟିକୁ ଆପଣଙ୍କ ବ୍ରାଉଜରରେ ଖୋଲନ୍ତୁ:\n\n$3\n\nଯଦି ଆପଣ ଖାତାଟିଏ ଆଗରୁ ଖୋଲି *ନାହାନ୍ତି* ତେବେ ଏହି ଲିଙ୍କକୁ ଯାଇ ଇ-ମେଲ ଆ.ଡି. ଥୟ କରିବାକୁ ନାକଚ କରିଦିଅନ୍ତୁ:\n\n$5\n\nଏହି କନଫର୍ମେସନ କୋଡ଼ $4 ବେଳେ ଅଚଳ ହୋଇଯିବ ।",
        "confirmemail_body_changed": "କେହିଜଣେ, ବୋଧହୁଏ ଆପଣ ହିଁ $1 ଆଇ.ପି. ଠିକଣାରୁ,\nଏହି ଇ-ମେଲ ଆଇ.ଡି.ରେ \"$2\" ନାଆଁରେ {{SITENAME}} ଠାରେ ଖାତାଟିଏ ଖୋଲିଛନ୍ତି ।\n\nଏହି ଖାତାଟି ସତରେ ଆପଣଙ୍କର ବୋଲି ଥୟ କରିବା ପାଇଁ ଓ {{SITENAME}}ରେ ଇ-ମେଲ ସୁବିଧାସବୁ ସଚଳ କରିବାପାଇଁ, ଏହି ଲିଙ୍କ୍ଟିକୁ ଆପଣଙ୍କ ବ୍ରାଉଜରରେ ଖୋଲନ୍ତୁ:\n\n$3\n\nଯଦି ଆପଣ ଖାତାଟିଏ ଆଗରୁ ଖୋଲି *ନାହାନ୍ତି* ତେବେ ଏହି ଲିଙ୍କକୁ ଯାଇ ଇ-ମେଲ ଆ.ଡି. ଥୟ କରିବାକୁ ନାକଚ କରିଦିଅନ୍ତୁ:\n\n$5\n\nଏହି କନଫର୍ମେସନ କୋଡ଼ $4 ବେଳେ ଅଚଳ ହୋଇଯିବ ।",
-       "confirmemail_body_set": "କେହିଜଣେ, ବୋଧହୁଏ ଆପଣ ହିଁ $1 ଆଇ.ପି. ଠିକଣାରୁ,\nଏହି ଇ-ମେଲ ଆଇ.ଡି.ରେ \"$2\" ନାଆଁରେ {{SITENAME}} ଠାରେ ଖାତାଟିଏ ଖୋଲିଛନ୍ତି ।\n\nଏହି ଖାତାଟି ସତରେ ଆପଣଙ୍କର ବୋଲି ଥୟ କରିବା ପାଇଁ ଓ {{SITENAME}}ରେ ଇ-ମେଲ ସୁବିଧାସବୁ ସଚଳ କରିବାପାଇଁ, ଏହି ଲିଙ୍କ୍ଟିକୁ ଆପଣଙ୍କ ବ୍ରାଉଜରରେ ଖୋଲନ୍ତୁ:\n\n$3\n\nଯଦି ଆପଣ ଖାତାଟିଏ ଆଗରୁ ଖୋଲି *ନାହାନ୍ତି* ତେବେ ଏହି ଲିଙ୍କକୁ ଯାଇ ଇ-ମେଲ ଆ.ଡି. ଥୟ କରିବାକୁ ନାକଚ କରିଦିଅନ୍ତୁ:\n\n$5\n\nଏହି କନଫର୍ମେସନ କୋଡ଼ $4 ବେଳେ ଅଚଳ ହୋଇଯିବ ।",
+       "confirmemail_body_set": "କେହିଜଣେ, ବୋଧହୁଏ ଆପଣ ହିଁ $1 IP ଠିକଣାରୁ,\n\"$2\" ଖାତା ପାଇଁ {{SITENAME}}ରେ ଇମେଲ ଦେଇଛନ୍ତି ।\n\nଏହି ଖାତାଟି ଆପଣଙ୍କର ବୋଲି ଥୟ କରି {{SITENAME}}ରେ ଇମେଲ ସୁବିଧାସବୁ ସକ୍ରିୟ କରିବାପାଇଁ, ଏହି ଲିଙ୍କଟି ଆପଣଙ୍କ ବ୍ରାଉଜରରେ ଖୋଲନ୍ତୁ:\n\n$3\n\nଯଦି ଖାତାଟିଏ ଆପଣଙ୍କର ନୁହେଁ ତେବେ ଏହି ଲିଙ୍କକୁ ଯାଇ ଇମେଲ ଥୟ କରିବା ନାକଚ କରିଦିଅନ୍ତୁ:\n\n$5\n\nକନଫର୍ମେସନ କୋଡ଼ଟି $4ରେ ଅକାମୀ ହୋଇଯିବ ।",
        "confirmemail_invalidated": "ଇମେଲ ଠିକଣା ଥୟ କରିବା ନାକଚ କରିଦଗଲା",
        "invalidateemail": "ଇ-ମେଲ ଠିକଣା ଥୟ କରିବା",
        "scarytranscludedisabled": "[ଉଇକି-ଉଇକି ଭିତରେ ଟ୍ରାନ୍ସକ୍ଲୁଡ଼ିଙ୍ଗ ଅଚଳ କରାଯାଇଛି]",
        "confirm-watch-top": "ଏହି ପୃଷ୍ଠାଟିକୁ ଆପଣଙ୍କ ଦେଖିଥିବା ତାଲିକାରେ ଯୋଡନ୍ତୁ ?",
        "confirm-unwatch-button": "ଠିକ ଅଛି",
        "confirm-unwatch-top": "ନିଜ ଦେଖଣାତାଲିକାରୁ ଏହି ପୃଷ୍ଠାଟି ବାହାର କରିଦେବେ କି?",
+       "quotation-marks": "\"$1\"",
        "imgmultipageprev": "ଆଗ ପୃଷ୍ଠା",
        "imgmultipagenext": "ପର ପୃଷ୍ଠା →",
        "imgmultigo": "ଯିବା!",
        "imgmultigoto": "$1 ପୃଷ୍ଠାକୁ ଯିବେ",
        "img-lang-default": "(ଡିଫଲ୍ଟ ଭାଷା)",
+       "img-lang-info": "$1ରେ ଏହି ଛବିଟି ରେଣ୍ଡର କରନ୍ତୁ । $2",
+       "img-lang-go": "ଯାଆନ୍ତୁ",
        "ascending_abbrev": "ସାନରୁ ବଡ କ୍ରମରେ",
        "descending_abbrev": "ବଖାଣ",
        "table_pager_next": "ପର ପୃଷ୍ଠା",
        "autosumm-replace": "ବିଷୟବସ୍ତୁକୁ \"$1\" ଦେଇ ପ୍ରତିବଦଳ କଲେ",
        "autoredircomment": "[[$1]]କୁ ପୃଷ୍ଠାଟି ଘୁଞ୍ଚାଇଦିଆଗଲା",
        "autosumm-new": "\"$1\" ନାଆଁରେ ପୃଷ୍ଠାଟିଏ ତିଆରିକଲେ",
+       "autosumm-newblank": "ଫାଙ୍କା ପୃଷ୍ଠାଟିଏ ତିଆରି କରାଗଲା",
        "lag-warn-normal": "$1 {{PLURAL:$1|ସେକେଣ୍ଡ|ସେକେଣ୍ଡ}}ରୁ ନୂଆ ବଦଳ ଏହି ତାଲିକାରେ ଦେଖାଯାଉ ନାହିଁ ।",
        "lag-warn-high": "ଅଧିକ ଡାଟାବେସ ସର୍ଭର ପଛୁଆ ଅବସ୍ଥା ହେତୁ $1 {{PLURAL:$1|ସେକେଣ୍ଡ|ସେକେଣ୍ଡ}}ରୁ ନୂଆ ବଦଳସବୁ ଏହି ତାଲିକାରେ ଦେଖାଯିବ ନାହିଁ ।",
        "watchlistedit-normal-title": "ଦେଖଣାତାଲିକା ସମ୍ପାଦନା କରିବେ",
        "watchlistedit-raw-done": "ଆପଣଙ୍କ ଦେଖଣା ତାଲିକାଟି ଅପଡେଟ ହେଇଯାଇଛି ।",
        "watchlistedit-raw-added": "{{PLURAL:$1|ନାମଟିଏ|$1 ଗୋଟି ନାମ}} ଯୋଗ କରାଗଲା:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|ନାମଟିଏ|$1 ଗୋଟି ନାମ}} କାଢ଼ିଦିଆଗଲା:",
+       "watchlistedit-clear-title": "ଦେଖଣାତାଲିକାଟିଏ ତିଆରି କରାଗଲା",
+       "watchlistedit-clear-legend": "ଦେଖଣାତାଲିକା ସଫାକରନ୍ତୁ",
+       "watchlistedit-clear-explain": "ଆପଣଙ୍କ ଦେଖଣାତାଲିକାରୁ ସବୁ ନାମ ହଟାଇଦିଆଯିବ",
        "watchlistedit-clear-titles": "ନାମ:",
+       "watchlistedit-clear-submit": "ନିଜର ଦେଖଣାତାଲିକା ସଫାକରିବେ (ଏହା ଚିରସ୍ଥାୟୀ!)",
+       "watchlistedit-clear-done": "ଆପଣଙ୍କର ଦେଖଣାତାଲିକା ସଫାକରାଗଲା ।",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|1 ନାମଟି|$1 ନାମସବୁ}} ହଟାଇ ଦିଆଗଲା:",
+       "watchlistedit-too-many": "ଏଠାରେ ଦେଖାଇବା ପାଇଁ ଅନେକ ଗୁଡ଼ିଏ ପୃଷ୍ଠା ରହିଛି ।",
+       "watchlisttools-clear": "ଦେଖଣାତାଲିକା ସଫାକରନ୍ତୁ",
        "watchlisttools-view": "ଦରକାରୀ ବଦଳଗୁଡ଼ିକ ଦେଖାଇବେ",
        "watchlisttools-edit": "ଦେଖିବା ତାଲିକାଟିକୁ ଦେଖିବେ ଓ ବଦଳାଇବେ",
        "watchlisttools-raw": "ଫାଙ୍କା ଦେଖଣା ତାଲିକାଟିର ସମ୍ପାଦନା କରିବେ",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ମୋ ଆଲୋଚନା]])",
        "unknown_extension_tag": "ଅଜଣା ଏକ୍ସଟେନସନ ଚିହ୍ନ \"$1\"",
        "duplicate-defaultsort": "'''ସୂଚନା:''' ଆପେଆପେ କାମକରୁଥିବା \"$2\" ଆଗରୁ ଆପେ ଆପେ ସଜାଡୁଥିବା \"$1\"କୁ ବନ୍ଦ କରିଦେଇଛି ।",
+       "duplicate-displaytitle": "<strong>ଚେତାବନୀ:</strong> \"$2\" ନାମଟି \"$1\" ନାମ ଉପରେ ଚଢ଼ାଇ ଦେଖାନ୍ତୁ ।",
        "version": "ସଂସ୍କରଣ",
        "version-extensions": "ଇନଷ୍ଟଲ କରାହୋଇଥିବା ଏକ୍ସଟେନସନସବୁ",
-       "version-skins": "ବହିରାବରଣ",
+       "version-skins": "à¬\87ନଷà­\8dà¬\9fଲ à¬¹à­\8bà¬\87ଥିବା à¬¸à­\8dà¬\95ିନ",
        "version-specialpages": "ବିଶେଷ ପୃଷ୍ଠା",
        "version-parserhooks": "ପାର୍ସର ହୁକ",
        "version-variables": "ଚଳ",
        "version-hook-name": "ହୁକ ନାମ",
        "version-hook-subscribedby": "କାହା ଦେଇ ମଗାଯାଇଛି",
        "version-version": "(ଭାଗ $1)",
+       "version-no-ext-name": "[କୌଣସି ନାମ ନାହିଁ]",
        "version-license": "ମିଡ଼ିଆଉଇକି ସ୍ୱତ୍ୱ",
        "version-ext-license": "ଲାଇସେନ୍ସ",
        "version-ext-colheader-name": "ଏକ୍ସଟେନସନ",
+       "version-skin-colheader-name": "ସ୍କିନ",
        "version-ext-colheader-version": "ସଂସ୍କରଣ",
        "version-ext-colheader-license": "ଲାଇସେନ୍ସ",
        "version-ext-colheader-description": "ବର୍ଣନା",
        "version-ext-colheader-credits": "ଲେଖକମାନେ",
+       "version-license-title": "$1 ପାଇଁ ଲାଇସେନ୍ସ",
+       "version-license-not-found": "ଏହି ଏକ୍ସଟେନସନରେ କୌଣସି ସବିଶେଷ ସୂଚନା ନାହିଁ ।",
+       "version-credits-title": "$1 ପାଇଁ ଶ୍ରେୟ",
+       "version-credits-not-found": "ଏହି ଏକ୍ସଟେନସନରୁ କୌଣସି କ୍ରେଡ଼ିଟ ସୂଚନା ମିଳିଲା ନାହିଁ ।",
        "version-poweredby-credits": "ଏହି ଉଇକିଟି '''[https://www.mediawiki.org/ ମିଡ଼ିଆଉଇକି]''' ଦେଇ ପରିଚାଳିତ, ସତ୍ଵାଧିକାର © ୨୦୦୧-$1 $2 ।",
        "version-poweredby-others": "ବାକିସବୁ",
+       "version-poweredby-translators": "translatewiki.net ଅନୁବାଦକଗଣ",
        "version-credits-summary": "ଆମେ ଏହି ଲୋକମାନଙ୍କୁ [[Special:Version|MediaWiki]]ରେ ସେମାନକର ଅବଦାନ ପାଇଁ ଚିହ୍ନିବାକୁ ଚାହୁଁଛୁ ।",
        "version-license-info": "MediaWiki ଏକ ମାଗଣା ସଫ୍ଟୱାର; ଆପଣ ଏହାକୁ ପୁନବଣ୍ଟନ କରିପାରିବେ ବା GNU ଜେନେରାଲ ପବ୍ଲିକ ଲାଇସେନ୍ସ ଅଧିନରେ ବଦଳାଇପାରିବେ ଯାହା ଫ୍ରି ସଫ୍ଟୱାର ଫାଉଣ୍ଡେସନ ଦେଇ ପ୍ରକାଶିତ ହୋଇଥିବ।\n\nMediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯାଇଥାଏ, କିନ୍ତୁ ଏହା କୌଣସି ଲିଖିତ ପଟା ସହ ଆସିନଥାଏ; ଏହା ବିକ୍ରୟଯୋଗ୍ୟତା ବା ଏକ ନିର୍ଦିଷ୍ଟ କାମପାଇଁ ବାଧ୍ୟତାମୂଳକ ପଟା ସହ ଆସିନଥାଏ । ଅଧିକ ଜାଣିବା ନିମନ୍ତେ ଦୟାକରି GNU ଜେନେରାଲ ପବ୍ଲିକ ଲାଇସେନ୍ସ ଦେଖନ୍ତୁ ।\n\nଆପଣ [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU ଜେନେରାଲ ପବ୍ଲିକ ଲାଇସେନ୍ସର ନକଲଟିଏ] ଏହି ସଫ୍ଟୱାର ସହିତ ପାଇଥିବା ଜରୁରି; ଯଦି ପାଇନଥିବେ, ଫ୍ରି ସଫ୍ଟୱାର ଫାଉଣ୍ଡେସନ, Inc., ୫୧ ଫ୍ରାଙ୍କଲୀନ ଷ୍ଟ୍ରିଟ, ୫ମ ମହଲା, ବଷ୍ଟନ, ମାସାଚୁସେଟସ ୦୨୧୧୦-୧୩୦୧, ଯୁକ୍ତରାଷ୍ଟ୍ର ଆମେରିକା କିମ୍ବା [//www.gnu.org/licenses/old-licenses/gpl-2.0.html ଅନଲାଇନ] ପଢ଼ିନିଅନ୍ତୁ ।",
        "version-software": "ଇନଷ୍ଟଲ ହୋଇଥିବା ସଫ୍ଟୱାର",
        "version-entrypoints": "ନିବେଶ ହେଉଥିବା ସ୍ଥାନର URLଗୁଡିକ",
        "version-entrypoints-header-entrypoint": "ପ୍ରବେଶ ବିନ୍ଦୁ",
        "version-entrypoints-header-url": "ଇଉଆରଏଲ",
+       "redirect": "ଫାଇଲ, ସଭ୍ୟ, ପୃଷ୍ଠା କିମ୍ବା ସଂସ୍କରଣ ID ଅନୁସାରେ ପୁନପ୍ରେରଣ",
+       "redirect-legend": "ଏକ ଫାଇଲ କିମ୍ବା ପୃଷ୍ଠାକୁ ପୁନପ୍ରେରଣ କରନ୍ତୁ",
+       "redirect-summary": "(ଫାଇଲ ନାମ ଥିଲେ), (ଏକ ସଂସ୍କରଣ ID କିମ୍ବା ପୃଷ୍ଠା ID ଥିଲେ) କିମ୍ବା ଏକ ସଭ୍ୟ ଖାତା ଥିଲେ (ଏକ ସାଂଖିକ ସଭ୍ୟ ID)ଏହି ବିଶେଷ ପୃଷ୍ଠାଟି ଏକ ଫାଇଲକୁ ଲେଉଟାଇ ଦେଇଥାଏ । ବ୍ୟବହାର: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], କିମ୍ବା [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "ଯାଆନ୍ତୁ",
        "redirect-lookup": "ଖୋଜନ୍ତୁ:",
        "redirect-value": "ମୂଲ୍ୟ:",
        "tags": "ବୈଧ ସମ୍ପାଦନା ଚିହ୍ନ",
        "tag-filter": "[[Special:Tags|ଟାଗ]] ଛଣା:",
        "tag-filter-submit": "ଛାଣିବା",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ଗୋଟି ଟ୍ୟାଗ|ଗୋଟି ଟ୍ୟାଗ}}]]: $2)",
        "tags-title": "ସୂଚକ",
        "tags-intro": "ଏହି ପୃଷ୍ଠା ସଫ୍ଟୱାର ଏକ ବଦଳ ଭାବେ ଚିହ୍ନିତ କରୁଥିବା ଚିହ୍ନସବୁର ମାନେ ସହ ତାଲିକା ତିଆରି କରିଥାଏ ।",
        "tags-tag": "ଚିହ୍ନ ନାମ",
        "sqlite-no-fts": "ପୁରା ଟେକ୍ସ୍ଟ ଖୋଜା ସହଯୋଗ ବିନା $1",
        "logentry-delete-delete": "$1, $3 ପୃଷ୍ଠାଟି {{GENDER:$2|ଲିଭାଇଦେଲେ}}",
        "logentry-delete-restore": "$1, $3 ପୃଷ୍ଠାଟି {{GENDER:$2|ପୁନସ୍ଥାପନ କଲେ}}",
-       "logentry-delete-event": "$1 $3 ବେଳେ {{PLURAL:$5|ଏକ ଇତିହାସର ଘଟଣାର|$5 ଇତିହାସର ଘଟଣାମାନଙ୍କର}} ଦେଖଣା ବଦଳାଇ ଦେଲେ: $4",
-       "logentry-delete-revision": "$1 $3 ପୃଷ୍ଠାରେ {{PLURAL:$5|ସଙ୍କଳନଟିଏର|$5 ସଙ୍କଳନମାନଙ୍କର}} ଦେଖଣା ବଦଳାଇ ଦେଲେ: $4",
-       "logentry-delete-event-legacy": "$1 $3 à¬°à­\87 à¬\87ତିହାସର à¬\98à¬\9fଣାସବà­\81ର à¬¦à­\87à¬\96ଣା à¬¬à¬¦à¬³à¬¾à¬\87ଦà­\87ଲà­\87",
-       "logentry-delete-revision-legacy": "$1 $3 à¬ªà­\83ଷà­\8dଠାରà­\87 à¬\87ତିହାସର à¬\98à¬\9fଣାସବà­\81ର à¬¦à­\87à¬\96ଣା à¬¬à¬¦à¬³à¬¾à¬\87ଦà­\87ଲà­\87",
-       "logentry-suppress-delete": "$1 $3 ପୃଷ୍ଠାଟିକୁ ଚପାଇଦେଲେ",
-       "logentry-suppress-event": "$3 ବେଳେ $1 ଗୋପନ ଭାବରେ {{PLURAL:$5|ଇତିହାସର ଘଟଣାଟିଏର|$5 ଇତିହାସର ଘଟଣାବଳୀର}} ଦେଖଣା ବଦଳାଇଦେଲେ: $4",
-       "logentry-suppress-revision": "$1 à¬\97à­\8bପନ à¬­à¬¾à¬¬à¬°à­\87 $3 à¬ªà­\83ଷà­\8dଠାରà­\87 {{PLURAL:$5|à¬\87ତିହାସର à¬\98à¬\9fଣାà¬\9fିà¬\8fର|$5 à¬\87ତିହାସର à¬\98à¬\9fଣାବଳà­\80ର}} à¬¦à­\87à¬\96ଣା à¬¬à¬¦à¬³à¬¾à¬\87ଦà­\87ଲà­\87: $4",
-       "logentry-suppress-event-legacy": "$1 à¬\97à­\8bପନ à¬­à¬¾à¬¬à¬°à­\87 à¬¬à¬¦à¬³à¬¾à¬\87ଦà­\87ଲà­\87 $3ରà­\87 à¬¥à¬¿à¬¬à¬¾ à¬\87ତିହାସ à¬\98à¬\9fଣାମାନà¬\99à­\8dà¬\95ର à¬¦à­\87à¬\96ଣା à¬¬à¬¦à¬³à¬¾à¬\87ଦà­\87ଲà­\87",
-       "logentry-suppress-revision-legacy": "$1 à¬\97à­\8bପନ à¬­à¬¾à¬¬à¬°à­\87 à¬¬à¬¦à¬³à¬¾à¬\87ଦà­\87ଲà­\87 $3 à¬ªà­\83ଷà­\8dଠାରà­\87 à¬¥à¬¿à¬¬à¬¾ à¬\87ତିହାସ à¬\98à¬\9fଣାମାନà¬\99à­\8dà¬\95ର à¬¦à­\87à¬\96ଣା à¬¬à¬¦à¬³à¬¾à¬\87ଦà­\87ଲà­\87",
+       "logentry-delete-event": "$1 {{PLURAL:$5|ଲଗ ଘଟଣାଟିଏ|$5 ଗୋଟି ଲଗ ଘଟଣା}}ର ଦେଖଣା $3 ପୃଷ୍ଠାରେ {{GENDER:$2|ବଦଳାଇଲେ}}: $4",
+       "logentry-delete-revision": "$1 {{PLURAL:$5|ସଂସ୍କରଣଟିଏ|$5 ଗୋଟି ସଂସ୍କରଣ}}ର ଦେଖଣା $3 ପୃଷ୍ଠାରେ {{GENDER:$2|ବଦଲାଇଲେ}}: $4",
+       "logentry-delete-event-legacy": "$1 $3 à¬ªà­\83ଷà­\8dଠାର à¬²à¬\97 à¬\98à¬\9fଣାà¬\97à­\81ଡ଼ିà¬\95ର à¬¦à­\87à¬\96ଣା {{GENDER:$2|ବଦଳାà¬\87ଲà­\87}}",
+       "logentry-delete-revision-legacy": "$1 $3 à¬ªà­\83ଷà­\8dଠାରà­\87 à¬¥à¬¿à¬¬à¬¾ à¬²à¬\97 à¬\98à¬\9fଣାà¬\97à­\81ଡ଼ିà¬\95ର à¬¦à­\87à¬\96ଣା à¬¸à¬\82ସà­\8dà¬\95ରଣମାନ {{GENDER:$2|ବଦଳାà¬\87ଲà­\87}}",
+       "logentry-suppress-delete": "$1 $3 ପୃଷ୍ଠାଟିକୁ {{GENDER:$2|ଦବାଇଦେଲେ}}",
+       "logentry-suppress-event": "$1 $3 ପୃଷ୍ଠାରେ ଗୋପନୀୟ ଭାବରେ {{PLURAL:$5|ଲଗ ଇଭେଣ୍ଟଟିଏର|$5 ଗୋଟି ଲଗ ଇଭେଣ୍ଟର}} ଦେଖଣା {{GENDER:$2|ବଦଳାଇଦେଲେ}}: $4",
+       "logentry-suppress-revision": "$1 à¬\97à­\8bପନ à¬­à¬¾à¬¬à­\87 $3 à¬ªà­\83ଷà­\8dଠାରà­\87 {{PLURAL:$5|ସà¬\82ସà­\8dà¬\95ରଣà¬\9fିà¬\8fର|$5 à¬\97à­\8bà¬\9fି à¬¸à¬\82ସà­\8dà¬\95ରଣର}} à¬¦à­\87à¬\96ଣା {{GENDER:$2|ବଦଳାà¬\87ଦà­\87ଲà­\87}}: $4",
+       "logentry-suppress-event-legacy": "$1 à¬\97à­\8bପନ à¬­à¬¾à¬¬à­\87 $3ରà­\87 à¬¥à¬¿à¬¬à¬¾ à¬²à¬\97 à¬\87ଭà­\87ଣà­\8dà¬\9fମାନà¬\99à­\8dà¬\95ର à¬¦à­\87à¬\96ଣା  {{GENDER:$2|ବଦଳାà¬\87ଦà­\87ଲà­\87}}",
+       "logentry-suppress-revision-legacy": "$1 à¬\97à­\8bପନ à¬­à¬¾à¬¬à­\87 $3 à¬ªà­\83ଷà­\8dଠାରà­\87 à¬¥à¬¿à¬¬à¬¾ à¬¸à¬\82ସà­\8dà¬\95ରଣମାନà¬\99à­\8dà¬\95ର à¬¦à­\87à¬\96ଣା {{GENDER:$2|ବଦଳାà¬\87ଦà­\87ଲà­\87}}",
        "revdelete-content-hid": "ଭିତର ଭାଗ ଲୁଚାଯାଇଅଛି",
        "revdelete-summary-hid": "ସମ୍ପାଦନା ସାରକଥା ଲୁଚାଯାଇଅଛି",
        "revdelete-uname-hid": "ଇଉଜର ନାମ ଲୁଚାଯାଇଅଛି",
        "revdelete-uname-unhid": "ଲୁଚାଯାଇଥିବା ଇଉଜର ନାମ ଦେଖାଇବେ",
        "revdelete-restricted": "ପରିଛାମାନଙ୍କ ନିମନ୍ତେ ଥିବା ବାରଣ",
        "revdelete-unrestricted": "ପରିଛାମାନଙ୍କ ନିମନ୍ତେ ଥିବା ବାରଣ ବାହାର କରିଦିଆଗଲା",
-       "logentry-move-move": "$1 $3 ପୃଷ୍ଠାଟି $4କୁ ଘୁଞ୍ଚାଇଲେ",
-       "logentry-move-move-noredirect": "$1 $3 ପୃଷ୍ଠାଟି $4କୁ ପୁନପ୍ରେରଣ ବିନା ଘୁଞ୍ଚାଇଲେ",
-       "logentry-move-move_redir": "$1 $3 ପୃଷ୍ଠାଟି $4କୁ ପୁନପ୍ରେରଣ ଛାଡ଼ି ଘୁଞ୍ଚାଇଲେ",
-       "logentry-move-move_redir-noredirect": "$1 $3 ପୃଷ୍ଠାଟି $4କୁ ପୁନପ୍ରେରଣକୁ ଛାଡ଼ି ପୁନପ୍ରେରଣ ବିନା ଘୁଞ୍ଚାଇଲେ",
-       "logentry-patrol-patrol": "$1 $3 à¬ªà­\83ଷà­\8dଠାର $4 à¬¤à¬® à¬¸à¬\99à­\8dà¬\95ଳନà¬\95à­\81 à¬\9cà¬\97ାଯାà¬\87à¬\85à¬\9bି à¬¬à­\8bଲି à¬\9aିହà­\8dନିତ à¬\95ଲà­\87",
-       "logentry-patrol-patrol-auto": "$1 à¬\86ପà­\87à¬\86ପà­\87 $3 à¬ªà­\83ଷà­\8dଠାର $4 à¬¤à¬® à¬¸à¬\99à­\8dà¬\95ଳନà¬\95à­\81 à¬\9cà¬\97ାଯାà¬\87à¬\85à¬\9bି à¬¬à­\8bଲି à¬\9aିହà­\8dନିତ à¬\95ଲà­\87",
+       "logentry-move-move": "$1 ପୃଷ୍ଠାଟିକୁ $3ରୁ $4କୁ {{GENDER:$2|ଘୁଞ୍ଚାଇଲେ}}",
+       "logentry-move-move-noredirect": "$1 $3 ପୃଷ୍ଠାଟି $4କୁ ପୁନପ୍ରେରଣ ବିନା {{GENDER:$2|ଘୁଞ୍ଚାଇଲେ}}",
+       "logentry-move-move_redir": "$1 $3 ପୃଷ୍ଠାଟି $4କୁ {{GENDER:$2|ଲେଉଟାଇଲେ}}",
+       "logentry-move-move_redir-noredirect": "$1 ପୁନପ୍ରେରଣ ବିନା $3 ପୃଷ୍ଠାଟି $4କୁ {{GENDER:$2|ଘୁଞ୍ଚାଇଲେ}}",
+       "logentry-patrol-patrol": "$1 $3 à¬ªà­\83ଷà­\8dଠାର $4 à¬¤à¬® à¬¸à¬\82ସà­\8dà¬\95ରଣ à¬\9cà¬\97ାଯାà¬\87à¬\85à¬\9bି à¬¬à­\8bଲି {{GENDER:$2|à¬\9aିହà­\8dନିତ à¬\95ଲà­\87}}",
+       "logentry-patrol-patrol-auto": "$1 à¬\86ପà­\87à¬\86ପà­\87 $3 à¬ªà­\83ଷà­\8dଠାର $4 à¬¤à¬® à¬¸à¬\82ସà­\8dà¬\95ରଣ à¬\9cà¬\97ାଯାà¬\87à¬\85à¬\9bି à¬¬à­\8bଲି {{GENDER:$2|à¬\9aିହà­\8dନିତ à¬\95ଲà­\87}}",
        "logentry-newusers-newusers": "ସଭ୍ୟ ଖାତା $1 {{GENDER:$2|ତିଆରି}} କରାଗଲା",
        "logentry-newusers-create": "ସଭ୍ୟ ଖାତା $1 {{GENDER:$2|ତିଆରି}} କରାଗଲା",
-       "logentry-newusers-create2": "ସଭ୍ୟ ଖାତା $3ଟି $1 ଦ୍ଵାରା ତିଆରି କରାଗଲା",
-       "logentry-newusers-byemail": "$1ଙ୍କ ଦ୍ଵାରା $3 ବ୍ୟବହାରକାରୀ ଖାତାଟି ଖୋଳାଗଲା ଏବଂ ପାସୱାର୍ଡଟି ଇ-ମେଲ ଦ୍ଵାରା ପଠାଗଲା",
+       "logentry-newusers-create2": "$3 ସଭ୍ୟ ଖାତାଟି $1ଙ୍କ ଦ୍ଵାରା {{GENDER:$2|ଗଢ଼ାଗଲା}}",
+       "logentry-newusers-byemail": "ସଭ୍ୟ ଖାତା $3, $1ଙ୍କ ଦ୍ଵାରା {{GENDER:$2|ଖୋଲାଗଲା}} ଏବଂ ପାସୱାର୍ଡଟି ଇମେଲ ଦ୍ଵାରା ପଠାଗଲା",
        "logentry-newusers-autocreate": "ବ୍ୟବହାରକାରୀ ଖାତା $1 ଆପେଆପେ {{GENDER:$2|ତିଆରିହେଲା}}",
-       "logentry-rights-rights": "$1, $3 à¬ªà¬¾à¬\87à¬\81 $4ରà­\81 $5à¬\95à­\81 à¬¸à¬­à­\8dà­\9fପଦ à¬¬à¬¦à¬³à¬¾à¬\87ଲà­\87",
+       "logentry-rights-rights": "$1, $3 à¬ªà¬¾à¬\87à¬\81 $4ରà­\81 $5à¬\95à­\81 à¬\95à­\8bଠ à¬¸à¬­à­\8dà­\9fପଦ {{GENDER:$2|ବଦଳାà¬\87ଲà­\87}}",
        "logentry-rights-rights-legacy": "$1 ଗୋଷ୍ଠୀ ସଭ୍ୟପଦ $3 ପାଇଁ {{GENDER:$2|ବଦଳିଗଲା}}",
-       "logentry-rights-autopromote": "$1 ଆପେ ଆପେ $4ରୁ $5କୁ ଗଲେ",
+       "logentry-rights-autopromote": "$1 ଆପେ ଆପେ $4ରୁ $5କୁ {{GENDER:$2|ପଦୋନ୍ନତ କରାଗଲା}}",
+       "logentry-upload-upload": "$1, $3 {{GENDER:$2|ଅପଲୋଡ଼ କଲେ}}",
+       "logentry-upload-overwrite": "$1, $3ର ଏକ ନୂଆ ସଂସ୍କରଣ {{GENDER:$2|ଅପଲୋଡ଼ କଲେ}}",
+       "logentry-upload-revert": "$1, $3 {{GENDER:$2|ଅପଲୋଡ଼ କଲେ}}",
        "rightsnone": "(କିଛି ନାହିଁ)",
        "revdelete-summary": "ସାରକଥା ସମ୍ପାଦନା",
        "feedback-bugornote": "ଦୟାକରି ଆପଣ ଏକ କାରିଗରି ଅସୁବିଧାଟିଏ ଜଣାଇବା ପାଇଁ ଚାହୁଁଥିଲେ ଦୟାକରି [$1 ଏଠାରେ ଅସୁବିଧାଟି ଜଣାନ୍ତୁ] । \nଅଥବା, ଆପଣ ତଳେ ଠିଆ ସହଜ ଆବେଦନ ପତ୍ରଟି ପୁରଣ କରିପାରିବେ ।  ଆପଣଙ୍କ ବ୍ୟବହାରକାରୀ ନାମ ଓ ଆପଣ ବ୍ୟବହାର କରୁଥିବା ବ୍ରାଉଜର ଅନୁସାରେ ଆପଣଙ୍କ ମତାମତ \"[$3 $2]\"ରେ ଯୋଡ଼ାଯିବ ।",
        "api-error-overwrite": "ଆଗରୁଥିବା ଏକ ଫାଇଲ ଉପରେ ମଡ଼ାଇବା ଅନୁମୋଦିତ ନୁହେଁ ।",
        "api-error-stashfailed": "ଭିତର ଅସୁବିଧା: ସର୍ଭର ଅସ୍ଥାୟୀ ଫାଇଲକୁ ସାଇତି ପାରିଲା ନାହିଁ ।",
        "api-error-publishfailed": "ଭିତର ଅସୁବିଧା: ସର୍ଭର ଅସ୍ଥାୟୀ ଫାଇଲକୁ ପ୍ରକାଶ କରିପାରିଲା ନାହିଁ ।",
+       "api-error-stasherror": "ଫାଇଲଟିକୁ ଷ୍ଟାସରେ ଅପଲୋଡ଼ କଲାବେଳେ ତ୍ରୁଟିଟିଏ ପରିଲକ୍ଷିତ ହେଲା ।",
        "api-error-timeout": "ସର୍ଭର ଏକ ସୀମିତ କାଳ ଭିତରେ ଉତ୍ତର ଦେଲାନାହିଁ ।",
        "api-error-unclassified": "ଏକ ଅଜଣା ଅସୁବିଧା ଘଟିଲା ।",
        "api-error-unknown-code": "ଅଜଣା ତୃଟି: \"$1\"",
        "duration-decades": "$1 {{PLURAL:$1|decade|decades}}",
        "duration-centuries": "$1 {{PLURAL:$1|century|centuries}}",
        "duration-millennia": "$1 {{PLURAL:$1|millennium|millennia}}",
+       "rotate-comment": "$1ଙ୍କ ଦ୍ୱାରା ଛବିଟିକୁ ଘଣ୍ଟା କଣ୍ଟାର ସମାନ ଦିଗରେ {{PLURAL:$1|ଡିଗ୍ରି|ଡିଗ୍ରି}} ବୁଲାଇଦିଆଗଲା",
+       "limitreport-title": "ପାର୍ସର ପ୍ରୋଫାଇଲିଙ୍ଗ ଡାଟା:",
+       "limitreport-cputime": "CPU ସମୟ ବ୍ୟବହାର",
+       "limitreport-cputime-value": "$1 {{PLURAL:$1|ସେକେଣ୍ଡ|ସେକେଣ୍ଡ}}",
+       "limitreport-walltime": "ରିଏଲ ଟାଇମ ବ୍ୟବହାର",
+       "limitreport-walltime-value": "$1 {{PLURAL:$1|ସେକେଣ୍ଡ|ସେକେଣ୍ଡ}}",
+       "limitreport-ppvisitednodes": "ପ୍ରିପୋସେସର ନୋଡ଼ କାଉଣ୍ଟ ଦେଖିଲେ",
+       "limitreport-ppgeneratednodes": "ପ୍ରିପୋସେସର ନୋଡ଼ କାଉଣ୍ଟ ତିଆରି କଲେ",
+       "limitreport-postexpandincludesize": "ବଢ଼ାଇବା ପରେ ଆକାର ରଖନ୍ତୁ",
+       "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|ବାଇଟ|ବାଇଟ}}",
+       "limitreport-templateargumentsize": "ଛାଞ୍ଚ ଆର୍ଗୁମେଣ୍ଟ ଆକାର",
+       "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|ବାଇଟ|ବାଇଟ}}",
+       "limitreport-expansiondepth": "ସର୍ବୋଚ୍ଚ ବଢ଼ାଇବା ଗଭୀରତା",
+       "limitreport-expensivefunctioncount": "ଭାରୀ ପାର୍ସର ଫଙ୍କସନ ଆକଳନ",
+       "expandtemplates": "ଛାଞ୍ଚ ବଢ଼ାଇବା",
+       "expand_templates_intro": "ଏହି ବିଶେଷ ପୃଷ୍ଠାଟି ସବୁ ଲେଖା ନେଇ ଛାଞ୍ଚକୁ ବାରମ୍ବାର ବଢ଼ାଇଦିଏ ।\nଏହା <code><nowiki>{{</nowiki>#language:…}}</code> ଭଳି ପାର୍ସର ଫଙ୍କସନମାନଙ୍କୁ\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code> ଭଳି ଭେରିଏବଲମାନଙ୍କୁ ବଢ଼ାଏ ।\nଅଧିକନ୍ତୁ, ଏହା <code><nowiki>{{ }} }}</code>ରେ ଥିବା ସବୁ କିଛି ବଢ଼ାଇଥାଏ ।",
+       "expand_templates_title": "{{FULLPAGENAME}} ଆଦି ପାଇଁ ପ୍ରସଙ୍ଗ ନାମ:",
        "expand_templates_input": "ଇନପୁଟ ବିଷୟ:",
        "expand_templates_output": "ପରିଣାମ",
+       "expand_templates_xml_output": "XML ଫଳାଫଳ",
+       "expand_templates_html_output": "ଖାଲି HTML ଫଳାଫଳ",
        "expand_templates_ok": "ଠିକ ଅଛି",
        "expand_templates_remove_comments": "ମତାମତ ହଟାନ୍ତୁ",
-       "expand_templates_preview": "ଦେଖଣା"
+       "expand_templates_remove_nowiki": "ଫଳାଫଳରେ <nowiki> ଟ୍ୟାଗମାନଙ୍କୁ ଦବାଇଦିଅନ୍ତୁ",
+       "expand_templates_generate_xml": "XML ପାର୍ସ ସଂରଚନା ଦେଖାନ୍ତୁ",
+       "expand_templates_generate_rawhtml": "କେବଳ HTML କୋଡ଼ ଦେଖାନ୍ତୁ",
+       "expand_templates_preview": "ଦେଖଣା",
+       "pagelanguage": "ପୃଷ୍ଠା ଭାଷା ବଛା",
+       "pagelang-name": "ପୃଷ୍ଠା",
+       "pagelang-language": "ଭାଷା",
+       "pagelang-use-default": "ଡିଫଲ୍ଟ ଭାଷା ବ୍ୟବହାର କରନ୍ତୁ",
+       "pagelang-select-lang": "ଭାଷା ବାଛନ୍ତୁ",
+       "right-pagelang": "ପୃଷ୍ଠାର ଭାଷା ବାଛନ୍ତୁ",
+       "action-pagelang": "ପୃଷ୍ଠାର ଭାଷା ବଦଳାନ୍ତୁ",
+       "log-name-pagelang": "ଭାଷା ଇତିହାସ ବଦଳାନ୍ତୁ",
+       "log-description-pagelang": "ପୃଷ୍ଠା ଭାଷା ବଦଳର ଏ ଏକ ଇତିହାସ",
+       "logentry-pagelang-pagelang": "$1 $3 ପୃଷ୍ଠାର ଭାଷା $4 ରୁ $5କୁ {{GENDER:$2|ବଦଳାଇଦେଲେ}} ।",
+       "default-skin-not-found": "<code dir=\"ltr\">$wgDefaultSkin</code>ରେ ଦିଆଯାଇଥିବା <code>$1</code>ଏହି ଉଇକିର ଡିଫଲ୍ଟ ସ୍କିନ ମିଳିଲାନାହିଁ ।\n\nଆପଣଙ୍କ ଇନଷ୍ଟଲେସନରେ ତଳଲିଖିତ ସ୍କିନ ରହିଛି । ସେମାନଙ୍କୁ କିପରି ସକ୍ରିୟ କରିବେ ଓ ଡିଫଲ୍ଟ ଭାବେ ବାଛିବେ ଜାଣିବା ପାଇଁ [https://www.mediawiki.org/wiki/Manual:Skin_configuration ମାନୁଆଲ: ସ୍କିନ ସଂରଚନା] ଦେଖନ୍ତୁ ।\n\n$2\n\n; ଯଦି ଆପଣ ଏହି ଏବେ MediaWiki ଇନଷ୍ଟଲ କରିଥାନ୍ତି:\n: ଆପଣ ବୋଧେ git ରୁ ସିଧା, କିମ୍ବା ସୋର୍ସ କୋଡ଼ରୁ କିମ୍ବା ଆଉ କେଉଁଠାରୁ ଇନଷ୍ଟଲ କରିଛନ୍ତି । ଏହା ଆଶାନୁରୂପ । [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.orgର ]ରୁ ଆଉ କିଛି ସ୍କିନ ଇନଷ୍ଟଲ କରିପାରିବେ:\n:* ବିଭିନ୍ନ ସ୍କିନ ଓ ଏକ୍ସଟେନସନ ସହିତ ଆସୁଥିବା [https://www.mediawiki.org/wiki/Download ଟାରବଲ ଇନଷ୍ଟଲର] ଡାଉନଲୋଡ଼ କରାଯାଉଛି । ଆପଣ  <code>skins/</code> ଡାଇରେକ୍ଟରି ଏଠାରୁ କପି କରି ପେଷ୍ଟ କରିପାରିବେ । \n:* git ଦେଇ <code>mediawiki/skins/*</code> ରେପୋଜିଟରିରୁ ଗୋଟେ ସ୍କିନ ଆପଣଙ୍କର MediaWiki ଇନଷ୍ଟଲେସନର <code dir=\"ltr\">skins/</code> ଡାଇରେକ୍ଟରିକୁ କପି କରାଯାଉଛି ।\n: ଆପଣ ଯଦି ଜଣେ MediaWiki ଡେଭେଲପର ହୋଇଥାନ୍ତି ତାହେଲେ ଏହା କରିବା ଦ୍ୱାରା ଆପଣଙ୍କର git ରେପୋଜିଟୋରିରେ କିଛି ବାଧା ଉପୁଜିବା ଅନୁଚିତ ।\n\n; ଆପଣ ଯଦି ଏହି ମାତ୍ର MediaWiki ଅପଗ୍ରେଡ଼ କରିଥାନ୍ତି ତେବେ:\n: MediaWiki 1.24 ଏବଂ ନୂଆ ସଂସ୍କରଣମାନ ଆପେଆପେ ଇନଷ୍ଟଲ ହୋଇଥିବା ସ୍କିନ ସକ୍ରିୟ କରି ନଥାନ୍ତି ([https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]) ଦେଖନ୍ତୁ । ଏବେ ଇନଷ୍ଟଲ ହୋଇଥିବା ସମସ୍ତ ସ୍କିନ ପାଇଁ ଆପଣ ଏହି ଧାଡ଼ିଟି <code>LocalSettings.php</code>ରେ ପେଷ୍ଟ କରିପାରିବେ:\n\n<pre dir=\"ltr\">$3</pre>\n\n; ଯଦି ଆପଣ ଏହି ମାତ୍ର <code>LocalSettings.php</code> ବଦଳାଇ ଦେଇଥାନ୍ତି:\n: ବନାନ ପରଖିବା ପାଇଁ ସ୍କିନର ନାମ ଆଉଥରେ ପରଖିନିଅନ୍ତୁ ।",
+       "default-skin-not-found-no-skins": "<code>$wgDefaultSkin</code>ରେ ସୂଚିତ ହେବା ଅନୁସାରେ ଆପଣଙ୍କ ଉଇକି ପାଇଁ ଡିଫଲ୍ଟ ସ୍କିନ <code>$1</code> ଉପଲବ୍ଧ ନାହିଁ ।\n\nକୌଣସି ସ୍କିନ ଇନଷ୍ଟଲ ହୋଇନାହିଁ ।\n\n; ଯଦି ଆପଣ ଏହି ଏବେ MediaWiki ଇନଷ୍ଟଲ କରିଥାନ୍ତି:\n: ଆପଣ ବୋଧେ git ରୁ ସିଧା, କିମ୍ବା ସୋର୍ସ କୋଡ଼ରୁ କିମ୍ବା ଆଉ କେଉଁଠାରୁ ଇନଷ୍ଟଲ କରିଛନ୍ତି । ଏହା ଆଶାନୁରୂପ । MediaWiki 1.24 ଓ ତା'ପରର ସଂସ୍କରଣମାନଙ୍କ ମୂଳ ରେପୋଜିଟରିରେ କୌଣସି ସ୍କିନ ରହିନଥାଏ । [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.orgର ]ରୁ ଆଉ କିଛି ସ୍କିନ ଇନଷ୍ଟଲ କରିପାରିବେ । କିପରି:\n:* ବିଭିନ୍ନ ସ୍କିନ ଓ ଏକ୍ସଟେନସନ ସହିତ ଆସୁଥିବା [https://www.mediawiki.org/wiki/Download ଟାରବଲ ଇନଷ୍ଟଲର] ଡାଉନଲୋଡ଼ କରାଯାଉଛି । ଆପଣ  <code>skins/</code> ଡାଇରେକ୍ଟରି ଏଠାରୁ କପି କରି ପେଷ୍ଟ କରି । \n:* git ଦେଇ <code>mediawiki/skins/*</code> ରେପୋଜିଟରିରୁ ଗୋଟେ ସ୍କିନ ଆପଣଙ୍କର MediaWiki ଇନଷ୍ଟଲେସନର <code dir=\"ltr\">skins/</code> ଡାଇରେକ୍ଟରିକୁ କପି କରି ।\n: ଆପଣ ଯଦି ଜଣେ MediaWiki ଡେଭେଲପର ହୋଇଥାନ୍ତି ତାହେଲେ ଏହା କରିବା ଦ୍ୱାରା ଆପଣଙ୍କର git ରେପୋଜିଟୋରିରେ କିଛି ବାଧା ଉପୁଜିବା ଅନୁଚିତ । ସ୍କିନ ସକ୍ରିୟ କରିବା ଓ ଡିଫଲ୍ଟ ଭାବେ ବାଛିବା ବାବଦରେ ଅଧିକ ସୂଚନା ପାଇଁ [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] ଦେଖନ୍ତୁ ।",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (ସକ୍ରିୟ କରାଗଲା)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''ନିକ୍ରିୟ କରାଗଲା''')",
+       "mediastatistics": "ମିଡ଼ିଆ ଆକଳନ",
+       "mediastatistics-summary": "ଅପଲୋଡ଼ ହୋଇଥିବା ଫାଇଲର ପ୍ରକାର ବାବଦରେ ଆକଳନ । ଏଥିରେ ଏକ ଫାଇଲର ନିକଟତମ ସଂସ୍କରଣ ରହିଛି । ପୁରୁଣା କିମ୍ବା ଅପସାରିତ ସଂସ୍କରଣ ଏଥିରେ ରଖାଯାଇନାହିଁ ।",
+       "mediastatistics-nbytes": "{{PLURAL:$1|$1 ବାଇଟ|$1 ବାଇଟ}} ($2; $3%)",
+       "mediastatistics-table-mimetype": "MIME ପ୍ରକାର",
+       "mediastatistics-table-extensions": "ସମ୍ଭାବିତ ଏକ୍ସଟେନସନ",
+       "mediastatistics-table-count": "ଫାଇଲ ସଂଖ୍ୟା",
+       "mediastatistics-table-totalbytes": "ସମ୍ମିଳିତ ଆକାର",
+       "mediastatistics-header-unknown": "ଅଜଣା",
+       "mediastatistics-header-bitmap": "ବିଟମ୍ୟାପ ଛବି",
+       "mediastatistics-header-drawing": "ଅଙ୍କନ (ଭେକ୍ଟର ଛବି)",
+       "mediastatistics-header-audio": "ଅଡ଼ିଓ",
+       "mediastatistics-header-video": "ଭିଡ଼ିଓ",
+       "mediastatistics-header-multimedia": "ରିଚ ମିଡ଼ିଆ",
+       "mediastatistics-header-office": "ଅଫିସ",
+       "mediastatistics-header-text": "ଲେଖା",
+       "mediastatistics-header-executable": "ଏକ୍ସକିଉଟ କରିହେବା ଭଳି",
+       "mediastatistics-header-archive": "କମ୍ପ୍ରେସ ହୋଇଥିବା ଫର୍ମାଟ",
+       "json-warn-trailing-comma": "$1 ପରର {{PLURAL:$1|କମାଟି|କମା ସବୁ}} JSONରୁ ହଟାଇ ଦିଆଯାଇଛି",
+       "json-error-unknown": "JSONରେ କିଛି ତ୍ରୁଟି ଥିଲା । ତ୍ରୁଟି: $1",
+       "json-error-depth": "ସର୍ବାଧିକ ଷ୍ଟାକ ଗଭୀରତା ଟପିଯାଇଛି",
+       "json-error-state-mismatch": "ଅବୈଧ କିମ୍ବା ଅସୁବିଧାଜନକ JSON",
+       "json-error-ctrl-char": "କଣ୍ଟ୍ରୋଲ କ୍ୟାରେକ୍ଟର ତ୍ରୁଟି, ଭୁଲ ଭାବେ ଏନକୋଡ଼ କରାଯାଇଥିବା ହେତୁ ହୋଇପାରେ",
+       "json-error-syntax": "ସିଣ୍ଟାକ୍ସ ଭୁଲ",
+       "json-error-utf8": "UTF-8 କ୍ୟାରେକ୍ଟର ଅସଜଡ଼ା, ଭୁଲ ଭାବେ ଏନକୋଡ଼ କରାଯାଇଥିବା ହେତୁ ହୋଇପାରେ",
+       "json-error-recursion": "ଏନକୋଡ଼ ହେବାକୁ ଥିବା ଭାଲ୍ୟୁରେ ଏକରୁ ଅଧିକ ରିକର୍ସିଭ ଆଧାର",
+       "json-error-inf-or-nan": "ଭାଲ୍ୟୁରେ ଏକରୁ ଅଧିକ NAN କିମ୍ବା INF ମୂଲ୍ୟ ଏନକୋଡ଼ କରିବାକୁ ହେବ",
+       "json-error-unsupported-type": "ଏନକୋଡ଼ ହୋଇନପାରିବା ଭଳି ଏକ ପ୍ରକାରର ମୂଲ୍ୟ ଦିଆଗଲା"
 }
index f2a09e3..d5ad6ee 100644 (file)
@@ -60,6 +60,7 @@
        "tog-showhiddencats": "ਲੁਕਵੀਆਂ ਸ਼੍ਰੇਣੀਆਂ ਵਖਾਓ",
        "tog-norollbackdiff": "\"ਵਾਪਸ ਮੋੜੋ\" ਅਮਲ ਵਿਚ ਲਿਆਣ ਮਗਰੋਂ ਫ਼ਰਕ ਨਾ ਵਖਾਓ",
        "tog-useeditwarning": "ਜਦੋਂ ਮੈਂ ਅਣ-ਸਾਂਭੀਆਂ ਸੋਧਾਂ ਵਾਲਾ ਸਫ਼ਾ ਛੱਡਾਂ ਤਾਂ ਮੈਨੂੰ ਖ਼ਬਰ ਦਿਉ",
+       "tog-prefershttps": "ਦਾਖ਼ਲ ਹੋਣ 'ਤੇ ਹਮੇਸ਼ਾਂ ਸੁਰੱਖਿਅਤ ਜੋੜ ਵਰਤੋ",
        "underline-always": "ਹਮੇਸ਼ਾਂ",
        "underline-never": "ਕਦੇ ਨਹੀਂ",
        "underline-default": "ਸਕਿਨ ਜਾਂ ਬਰਾਊਜ਼ਰ ਮੂਲ",
        "changepassword": "ਪਛਾਣ-ਸ਼ਬਦ ਬਦਲੋ",
        "resetpass_announce": "ਲਾਗਇਨ ਪੂਰਾ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ ਨਵਾਂ ਪਾਸਵਰਡ ਬਣਾਉਣਾ ਪਵੇਗਾ।",
        "resetpass_header": "ਖਾਤੇ ਦਾ ਪਛਾਣ-ਸ਼ਬਦ ਬਦਲੋ",
-       "oldpassword": "ਪà©\81ਰਾਣਾ à¨ªà¨¾à¨¸à¨µà¨°à¨¡:",
+       "oldpassword": "ਪà©\81ਰਾਣਾ à¨ªà¨\9bਾਣ-ਸ਼ਬਦ:",
        "newpassword": "ਨਵਾਂ ਪਾਸਵਰਡ:",
        "retypenew": "ਨਵਾਂ ਪਾਸਵਰਡ ਮੁੜ-ਲਿਖੋ:",
        "resetpass_submit": "ਪਾਸਵਰਡ ਸੈੱਟ ਕਰੋ ਅਤੇ ਲਾਗਇਨ ਕਰੋ",
        "semiprotectedpagewarning": "'''ਨੋਟ:''' ਇਹ ਸਫ਼ਾ ਸੁਰੱਖਿਅਤ ਹੈ ਤਾਂ ਕਿ ਸਿਰਫ਼ ਰਜਿਸਟਰ ਹੋਏ ਮੈਂਬਰ ਹੀ ਇਸ ਨੂੰ ਸੋਧ ਸਕਣ।\nਚਿੱਠੇ ਵਿਚਲਾ ਨਵਾਂ ਦਾਖ਼ਲਾ ਹਵਾਲੇ ਲਈ ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਹੈ:",
        "titleprotectedwarning": "'''ਖ਼ਬਰਦਾਰ: ਇਹ ਸਫ਼ਾ ਸੁਰੱਖਿਅਤ ਹੈ ਸੋ ਇਸਨੂੰ ਬਣਾਉਣ ਲਈ [[Special:ListGroupRights|ਖ਼ਾਸ ਹੱਕਾਂ]] ਦੀ ਲੋੜ ਹੈ।'''\nਚਿੱਠੇ ਦਾ ਨਵਾਂ ਦਾਖ਼ਲਾ ਹਵਾਲੇ ਲਈ ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਹੈ:",
        "templatesused": "ਇਸ ਪੰਨੇ ’ਤੇ {{PLURAL:$1|ਵਰਤਿਆ ਸਾਂਚਾ|ਵਰਤੇ ਸਾਂਚੇ}}:",
-       "templatesusedpreview": "{{PLURAL:$1|ਟੈਪਲੇਟ|ਟੈਪਲੇਟ}} ਇਹ ਝਲਕ 'ਚ ਵਰਤੇ ਜਾਂਦੇ ਹਨ:",
+       "templatesusedpreview": "ਏਸ ਝਾਤ 'ਚ {{PLURAL:$1|ਵਰਤਿਆ ਗਿਆ ਫਰਮਾ|ਵਰਤੇ ਗਏ ਫਰਮੇ}}:",
        "templatesusedsection": "ਇਹ ਭਾਗ ਵਿੱਚ {{PLURAL:$1|ਸਾਂਚਾ|ਸਾਂਚੇ}} ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ:",
        "template-protected": "(ਸੁਰੱਖਿਅਤ)",
        "template-semiprotected": "(ਨੀਮ-ਸੁਰੱਖਿਅਤ)",
        "backend-fail-closetemp": "ਆਰਜ਼ੀ ਫ਼ਾਈਲ ਬੰਦ ਨਹੀਂ ਹੋਈ।",
        "backend-fail-read": "\"$1\" ਫ਼ਾਈਲ ਪੜ੍ਹੀ ਨਾ ਜਾ ਸਕੀ।",
        "backend-fail-create": "\"$1\" ਫ਼ਾਈਲ ਲਿਖੀ ਨਾ ਜਾ ਸਕੀ।",
+       "zip-wrong-format": "ਦੱਸੀ ਗਈ ਫ਼ਾਈਲ ਜ਼ਿੱਪ ਫ਼ਾਈਲ ਨਹੀਂ ਸੀ।",
        "uploadstash-refresh": "ਫ਼ਾਈਲਾਂ ਦੀ ਲਿਸਟ ਨੂੰ ਤਾਜ਼ਾ ਕਰੋ",
        "img-auth-accessdenied": "ਪਹੁੰਚ ਨਕਾਰੀ ਗਈ",
        "img-auth-nofile": "ਫ਼ਾਈਲ \"$1\" ਮੌਜੂਦ ਨਹੀਂ ਹੈ।",
        "listgrouprights-removegroup-all": "ਸਾਰੇ ਸਮੂਹ ਹਟਾਓ",
        "listgrouprights-addgroup-self-all": "ਆਪਣੇ ਖਾਤੇ ਵਿਚ ਸਾਰੇ ਸਮੂਹ ਜੋੜੋ",
        "listgrouprights-removegroup-self-all": "ਆਪਣੇ ਖਾਤੇ ਤੋਂ ਸਾਰੇ ਸਮੂਹ ਹਟਾਓ",
+       "listgrouprights-namespaceprotection-header": "ਨਾਂ-ਥਾਂ ਦੀਆਂ ਬੰਧੇਜਾਂ",
        "listgrouprights-namespaceprotection-namespace": "ਨਾਂ-ਥਾਂ",
        "trackingcategories": "ਵਰਗਾਂ ਦੀ ਪੈੜ",
        "trackingcategories-msg": "ਵਰਗ ਦੀ ਪੈੜ",
        "mywatchlist": "ਨਿਗਰਾਨੀ-ਲਿਸਟ",
        "watchlistfor2": "$1 $2 ਲਈ",
        "nowatchlist": "ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚ ਕੋਈ ਚੀਜ਼ ਨਹੀਂ ਹੈ।",
-       "watchlistanontext": "ਆਪਣੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚਲੀਆਂ ਚੀਜ਼ਾਂ ਵੇਖਣ ਜਾਂ ਸੋਧਣ ਲਈ ਮਿਹਰਬਾਨੀ ਕਰਕੇ $1।",
+       "watchlistanontext": "ਆਪਣੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚਲੀਆਂ ਚੀਜ਼ਾਂ ਵੇਖਣ ਜਾਂ ਸੋਧਣ ਲਈ ਮਿਹਰਬਾਨੀ ਕਰਕੇ ਦਾਖ਼ਲ ਹੋਵੋ।",
        "watchnologin": "ਲਾਗਇਨ ਨਹੀਂ",
        "addwatch": "ਨਿਗਰਾਨੀ-ਲਿਸਟ ’ਚ ਜੋੜੋ",
        "addedwatchtext": "ਪੰਨਾ \"[[:$1]]\" ਤੁਹਾਡੀ [[Special:Watchlist|ਧਿਆਨਸੂਚੀ]] ’ਚ ਜੁੜ ਚੁੱਕਾ ਹੈ।\nਇਸ ਅਤੇ ਇਸਦੇ ਚਰਚਾ ਪੰਨੇ ’ਚ ਹੋਈਆਂ ਬਦਲੀਆਂ ਓਥੇ ਵਖਾਈ ਦੇਣਗੀਆਂ ਅਤੇ ਵੇਖਣ ਦੀ ਸੌਖ ਲਈ [[Special:RecentChanges|ਹਾਲ ਹੀ ’ਚ ਹੋਈਆਂ ਬਦਲੀਆਂ]] ਵਿੱਚ ਇਹ ਪੰਨਾ '''ਗੂੜ੍ਹਾ''' ਦਿਖਾਈ ਦੇਵੇਗਾ।",
        "mediastatistics-header-audio": "ਆਡੀਓ",
        "mediastatistics-header-video": "ਵੀਡੀਓਆਂ",
        "mediastatistics-header-office": "ਦਫ਼ਤਰ",
-       "mediastatistics-header-text": "ਲਿਖਤੀ"
+       "mediastatistics-header-text": "ਲਿਖਤੀ",
+       "json-error-syntax": "ਵਾਕ-ਵਿਉਂਤ 'ਚ ਦੋਸ਼"
 }
index 99b1600..3920e40 100644 (file)
                        "아라",
                        "Matik7",
                        "Vengir",
-                       "Darellur"
+                       "Darellur",
+                       "Michał Sobkowski",
+                       "Py64"
                ]
        },
        "tog-underline": "Podkreślenie linków:",
-       "tog-hideminor": "Ukryj drobne edycje w ostatnich zmianach",
+       "tog-hideminor": "Ukryj drobne edycje z ostatnich zmian",
        "tog-hidepatrolled": "Ukryj sprawdzone edycje w ostatnich zmianach",
        "tog-newpageshidepatrolled": "Ukryj sprawdzone strony na liście nowych stron",
        "tog-extendwatchlist": "Pokaż na liście obserwowanych wszystkie zmiany, nie tylko ostatnie",
        "category_header": "Strony w kategorii „$1”",
        "subcategories": "Podkategorie",
        "category-media-header": "Pliki w kategorii „$1”",
-       "category-empty": "<em>Obecnie w tej kategorii brak stron oraz plików.</em>",
+       "category-empty": "<em>Obecnie w tej kategorii nie ma stron ani plików.</em>",
        "hidden-categories": "{{PLURAL:$1|Ukryta kategoria|Ukryte kategorie}}",
        "hidden-category-category": "Ukryte kategorie",
        "category-subcat-count": "{{PLURAL:$2|Ta kategoria ma tylko jedną podkategorię.|Poniżej wyświetlono $1 spośród wszystkich $2 podkategorii tej kategorii.}}",
        "personaltools": "Osobiste",
        "articlepage": "Artykuł",
        "talk": "Dyskusja",
-       "views": "Widok",
+       "views": "Wyświetleń",
        "toolbox": "Narzędzia",
        "userpage": "Strona użytkownika",
        "projectpage": "Strona projektu",
        "viewcount": "Tę stronę obejrzano {{PLURAL:$1|tylko raz|$1 razy}}.",
        "protectedpage": "Strona zabezpieczona",
        "jumpto": "Skocz do:",
-       "jumptonavigation": "nawigacji",
-       "jumptosearch": "wyszukiwania",
+       "jumptonavigation": "nawigacja",
+       "jumptosearch": "szukaj",
        "view-pool-error": "Niestety w chwili obecnej serwery są przeciążone.\nZbyt wielu użytkowników próbuje wyświetlić tę stronę.\nPoczekaj chwilę przed ponowną próbą dostępu do tej strony.\n\n$1",
        "generic-pool-error": "Niestety w chwili obecnej serwery są przeciążone.\nZbyt wielu użytkowników próbuje wyświetlić tę stronę.\nPoczekaj chwilę przed ponowną próbą dostępu do tej strony.",
        "pool-timeout": "Zbyt długi czas oczekiwania na blokadę",
        "showpreview": "Pokaż podgląd",
        "showdiff": "Podgląd zmian",
        "blankarticle": "<strong>Uwaga:</strong> Strona, którą masz zamiar utworzyć jest pusta.\nJeżeli klikniesz \"{{int:savearticle}}\" ponownie, strona zostanie utworzona bez jakiejkolwiek treści.",
-       "anoneditwarning": "'''Uwaga:''' Nie jesteś {{GENDER:|zalogowany|zalogowana}}.\nTwój adres IP zostanie zapisany w historii edycji strony.",
+       "anoneditwarning": "<strong>Uwaga:</strong> Nie jesteś zalogowany. Twój adres IP będzie publicznie widoczny jeśli zrobisz dowolną zmianę. Jeśli <strong>[$1 zalogujesz się]</strong> lub <strong>[$2 stworzysz konto]</strong>, Twoje zmiany zostaną przypisane do konta, wraz z innymi korzyściami.",
        "anonpreviewwarning": "''Nie jesteś zalogowany. Jeśli zapiszesz zmiany, w historii edycji strony zostanie umieszczony Twój adres IP.''",
        "missingsummary": "'''Uwaga:''' Nie wprowadz{{GENDER:|iłeś|iłaś|ono}} opisu zmian.\nJeżeli nie chcesz go wprowadzać, naciśnij przycisk „Zapisz” jeszcze raz.",
        "missingcommenttext": "Wprowadź komentarz poniżej.",
        "content-model-text": "zwykły tekst",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Strony używają duplikaty argumentów w odwołaniach do szablonów.",
+       "duplicate-args-category-desc": "Strona zawiera szablony, które używają duplikaty argumentów, jak <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> lub <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>",
        "expensive-parserfunction-warning": "Uwaga! Ta strona zawiera zbyt wiele wywołań złożonych obliczeniowo funkcji parsera.\n\nPowinno być mniej niż $2 {{PLURAL:$2|wywołanie|wywołania|wywołań}}, a obecnie {{PLURAL:$1|jest $1 wywołanie|są $1 wywołania|jest $1 wywołań}}.",
        "expensive-parserfunction-category": "Strony ze zbyt dużą liczbą wywołań kosztownych funkcji parsera",
        "post-expand-template-inclusion-warning": "Uwaga – zbyt duża wielkość wykorzystanych szablonów.\nNiektóre szablony nie zostaną użyte.",
        "gender-female": "kobieta",
        "prefs-help-gender": "Podanie płci nie jest obowiązkowe. Jeśli zdecydujesz się ją określić, oprogramowanie dostosuje do niej interfejs. Informacja o Twojej płci będzie widoczna dla wszystkich.",
        "email": "E‐mail",
-       "prefs-help-realname": "Wpisanie imienia i nazwiska nie jest obowiązkowe.\nJeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje autorstwo.",
+       "prefs-help-realname": "Imię i nazwisko jest opcjonalne.\nJeśli je podasz, to może być stosowane w celu przypisania Twojej pracy.",
        "prefs-help-email": "Podanie adresu e‐mail nie jest obowiązkowe, lecz jest konieczne do zresetowania zapomnianego hasła.",
        "prefs-help-email-others": "Możesz również umożliwić innym użytkownikom wysłanie do Ciebie e‐maila poprzez Twoją stronę użytkownika lub stronę dyskusji (bez ujawniania Twojego adresu).",
        "prefs-help-email-required": "Wymagany jest adres e‐mail.",
        "prefs-tokenwatchlist": "Token",
        "prefs-diffs": "Zmiany",
        "prefs-help-prefershttps": "Ta opcja zacznie działać przy twoim następnym zalogowaniu.",
+       "prefswarning-warning": "Niektóre z dokonanych zmian w preferencjach nie zostały jeszcze zapisane. Jeśli wyjdziesz bez wciśnięcia „$1”, Twoje zmiany zostaną utracone.",
        "prefs-tabs-navigation-hint": "Wskazówka: do poruszania się między zakładkami możesz użyć klawiszy strzałek w lewo i w prawo",
        "email-address-validity-valid": "Wygląda na prawidłowy",
        "email-address-validity-invalid": "Wymagany jest prawidłowy adres!",
-       "userrights": "Zarządzaj uprawnieniami użytkowników",
+       "userrights": "Zarządzanie uprawnieniami użytkowników",
        "userrights-lookup-user": "Zarządzaj grupami użytkownika",
        "userrights-user-editname": "Wprowadź nazwę użytkownika",
        "editusergroup": "Edytuj grupy użytkownika",
        "right-deletedtext": "Podgląd usuniętego tekstu i zmian pomiędzy usuniętymi wersjami",
        "right-browsearchive": "Przeszukiwanie usuniętych stron",
        "right-undelete": "Odtwarzanie usuniętych stron",
-       "right-suppressrevision": "Podgląd i odtwarzanie wersji ukrytych przed administratorami",
+       "right-suppressrevision": "Podgląd, ukrywanie i odkrywanie wersji ukrytych przed wszystkimi",
        "right-viewsuppressed": "Umożliwia zobaczenie wersji ukrytych przed każdym użytkownikiem",
        "right-suppressionlog": "Podgląd rejestru ukrywania",
        "right-block": "Blokowanie użytkownikom możliwości edycji",
        "recentchanges-legend-heading": "'''Legenda:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zobacz też [[Special:NewPages|listę nowych stron]])",
        "recentchanges-legend-plusminus": "(''±123'')",
-       "rcnotefrom": "Poniżej {{PLURAL:$5|pokazano zmianę|pokazano zmiany}} wykonane po <strong>$3, $4</strong> (nie więcej niż '''$1''' pozycji).",
+       "rcnotefrom": "Poniżej {{PLURAL:$5|pokazano zmianę|pokazano zmiany}} {{PLURAL:$5|wykonaną|wykonane}} po <strong>$3, $4</strong> (nie więcej niż '''$1''' pozycji).",
        "rclistfrom": "Pokaż nowe zmiany od $3 $2",
        "rcshowhideminor": "$1 drobne zmiany",
        "rcshowhideminor-show": "Pokaż",
        "pager-older-n": "{{PLURAL:$1|1 starszy|$1 starsze|$1 starszych}}",
        "suppress": "Rewizor",
        "querypage-disabled": "Ta strona specjalna została wyłączona ze względu na ograniczenia wydajności.",
+       "apihelp": "Pomoc API",
+       "apihelp-no-such-module": "Moduł \"$1\" nie znaleziony.",
        "booksources": "Książki",
        "booksources-search-legend": "Szukaj informacji o książkach",
        "booksources-search": "Szukaj",
        "wlheader-enotif": "Wysyłanie powiadomień na adres e‐mail jest włączone.",
        "wlheader-showupdated": "'''Wytłuszczone''' zostały strony, które zostały zmodyfikowane od Twojej ostatniej wizyty na nich.",
        "wlnote": "Poniżej pokazano {{PLURAL:$1|zmianę wykonaną|<strong>$1</strong> zmiany wykonane|<strong>$1</strong> zmian wykonanych}} w ciągu {{PLURAL:$2|ostatniej godziny|ostatnich <strong>$2</strong> godzin}}, licząc od $4 dnia $3.",
-       "wlshowlast": "Pokaż ostatnie $1 godzin, $2 dni ()",
+       "wlshowlast": "Pokaż ostatnie $1 godzin, $2 dni",
        "watchlist-options": "Opcje obserwowanych",
        "watching": "Dodaję do obserwowanych...",
        "unwatching": "Przestaję obserwować...",
        "tooltip-pt-mycontris": "Lista moich edycji",
        "tooltip-pt-login": "Zachęcamy do zalogowania się, choć nie jest to obowiązkowe.",
        "tooltip-pt-logout": "Wyloguj",
+       "tooltip-pt-createaccount": "Zachęcamy do stworzenia konta i zalogowania, ale nie jest to konieczne.",
        "tooltip-ca-talk": "Dyskusja o zawartości tej strony",
        "tooltip-ca-edit": "Możesz edytować tę stronę. Przed zapisaniem zmian użyj przycisku podgląd.",
        "tooltip-ca-addsection": "Dodaj nowy wątek.",
        "tooltip-feed-atom": "Kanał Atom dla tej strony",
        "tooltip-t-contributions": "Pokaż listę edycji tego użytkownika",
        "tooltip-t-emailuser": "Wyślij e‐mail do tego użytkownika",
+       "tooltip-t-info": "Więcej informacji na temat tej strony",
        "tooltip-t-upload": "Prześlij plik",
        "tooltip-t-specialpages": "Lista wszystkich specjalnych stron",
        "tooltip-t-print": "Wersja do wydruku",
        "searchsuggest-search": "Szukaj",
        "searchsuggest-containing": "zawierające...",
        "api-error-badaccess-groups": "Nie masz uprawnień aby przesyłać pliki do tej wiki.",
-       "api-error-badtoken": "Błąd wewnętrzny – żeton wykorzystywany do identyfikacji użytkownika jest nieprawidłowy.",
+       "api-error-badtoken": "Błąd wewnętrzny – znacznik wykorzystywany do identyfikacji użytkownika jest nieprawidłowy.",
        "api-error-copyuploaddisabled": "Przesyłanie poprzez podanie adresu URL zostało na tym serwerze wyłączone.",
        "api-error-duplicate": "{{PLURAL:$1|Jest już [$2 inny plik]|Są już [$2 inne pliki]}} o tej samej zawartości",
        "api-error-duplicate-archive": "{{PLURAL:$1|Był już [$2 inny plik]|Były już [$2 inne pliki]}} o takiej samej zawartości, ale {{PLURAL:$1|został usunięty|zostały usunięte}}.",
index b017e4b..6da229e 100644 (file)
        "content-model-text": "mach test",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Pàgine ch'a deuvro d'argoment dobi ant j'arceste dë stamp",
        "expensive-parserfunction-warning": "'''Atension:''' Costa pàgina a l'ha tròpe ciamà costose a le fonsions d'anàlisi sintàtica.\n\nA dovrìa essnie men che {{PLURAL:$2|$2}}, adess a-i na j'é {{PLURAL:$1|$1}}.",
        "expensive-parserfunction-category": "Pàgine con tròpe ciamà costose ëd fonsion ëd l'analisator sintàtich",
        "post-expand-template-inclusion-warning": "'''Atension:''' La dimension dj'anseriment dë stamp a l'é tròp gròssa.\nChèich stamp a saran nen anserì.",
        "action-pagelang": "cangé la lenga dla pàgina",
        "log-name-pagelang": "Argistr dij cangiament ëd lenga",
        "log-description-pagelang": "Cost-sì a l'é n'argistr dij cangiament ant le lenghe dle pàgine.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|a l'ha cangià}} la lenga dla pàgina $3 da $4 a $5."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|a l'ha cangià}} la lenga dla pàgina $3 da $4 a $5.",
+       "default-skin-not-found": "Tension! La pel predeterminà për soa wiki, definìa an <code dir=\"ltr\">$wgDefaultSkin</code> tanme <code>$1</code>, a l'é nen disponìbil.\n\nSoa anstalassion a smija anclude le pel sì-dapress. Ch'a vëdda [https://www.mediawiki.org/wiki/Manual:Skin_configuration ël manual ëd configurassion dle pel] për d'anformassion su coma abiliteje e serne col apredefinìa.\n\n$2\n\n; S'a l'ha pen-a anstalà MediaWiki:\n: A l'é probàbil che a l'abia anstalalo da git, o diretaman dal còdes sorgiss an n'àutra manera. A l'é normal. Ch'a preuva a anstalé dle pej da [https://www.mediawiki.org/wiki/Category:All_skins la lista dle pel Ëd mediawiki.org], parèj:\n:* Dëscariand l' [https://www.mediawiki.org/wiki/Download archivi tar ëd l'anstalador], ch'a comprend vàire pel e estension. A peul copié e ancolé la lista dle <code>pel/</code> d'ambelelà.\n:* Clonand un dij depòsit <code>mediawiki/skins/*</code> via git ant la lista <code dir=\"ltr\">skins/</code> ëd soa anstalassion ëd MediaWiki.\n: Sòn a dovrìa nen antërferì con sò depòsit git si chiel a l'é un dësvlupador ëd MediaWiki.\n\n; S'a l'ha pen-a agiornà MediaWiki:\n: MediaWiki 1.24 e pi neuv a përmet pi nen an automàtich le pel anstalà (ch'a vëdda [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery manual an sla dëscuverta automàtica dle pel). A peul copié le linie sì-dapress an <code>LocalSettings.php</code> për abilité tute le pel ch'a son anstalà al moment:\n\n<pre dir=\"ltr\">$3</pre>\n\n; S'a l'ha pen-a modifivà <code>LocalSettings.php</code>:\n: Ch'a verìfica torna ël nòm ëd dle pej për evité ij boro."
 }
index d7da41b..b6f8dfe 100644 (file)
@@ -73,7 +73,8 @@
                        "Fabsouza1",
                        "아라",
                        "Jefersonmoraes",
-                       "Marcos dias de oliveira"
+                       "Marcos dias de oliveira",
+                       "He7d3r"
                ]
        },
        "tog-underline": "Sublinhar links:",
index 9acfc28..db7f246 100644 (file)
@@ -62,7 +62,8 @@
                        "555",
                        "아라",
                        "Leon saudanha",
-                       "Macofe"
+                       "Macofe",
+                       "He7d3r"
                ]
        },
        "tog-underline": "Sublinhar ligações:",
        "gender-female": "Ela edita páginas wiki",
        "prefs-help-gender": "Esta preferência é opcional.\nO software usa o seu valor para o endereçar e para o mencionar a outros usando o género gramatical apropriado.\nEsta informação será pública.",
        "email": "Correio eletrónico",
-       "prefs-help-realname": "O fornecimento do nome verdadeiro é opcional.\nSe optar por revelá-lo, ele será utilizado para atribuir-lhe crédito pelo seu trabalho.",
+       "prefs-help-realname": "O fornecimento do nome verdadeiro é opcional.\nSe optar por revelá-lo, será utilizado para atribuir-lhe crédito pelo seu trabalho.",
        "prefs-help-email": "Opcional: o endereço de correio eletrónico é opcional, mas será necessário para redefinir a palavra-passe caso esqueça a antiga.",
        "prefs-help-email-others": "Também pode optar por permitir que outros entrem em contacto consigo por correio eletrónico, através de uma ligação nas suas páginas de utilizador ou de discussão, sem revelar o seu endereço de correio eletrónico.",
        "prefs-help-email-required": "É necessário o endereço de correio eletrónico.",
        "pager-older-n": "{{PLURAL:$1|1 anterior|$1 anteriores}}",
        "suppress": "Supervisor",
        "querypage-disabled": "Esta página especial está desativada para não prejudicar o desempenho.",
+       "apihelp": "Ajuda API",
+       "apihelp-no-such-module": "Módulo \"$1\" não encontrado.",
        "booksources": "Fontes bibliográficas",
        "booksources-search-legend": "Pesquisar referências bibliográficas",
        "booksources-search": "Pesquisar",
        "listgrouprights-namespaceprotection-header": "Restrições do domínio",
        "listgrouprights-namespaceprotection-namespace": "Domínio",
        "listgrouprights-namespaceprotection-restrictedto": "Direito(s) do utilizador para editar",
-       "trackingcategories": "Monitoramento de categorias",
+       "trackingcategories": "Categorias de monitoramento",
        "trackingcategories-summary": "Esta página lista as categorias monitoradas que foram geradas automaticamente pelo software MediaWiki. Os seus nomes podem ser alterados ao editar sua mensagem correspondente no domínio {{ns:8}}.",
        "trackingcategories-msg": "Categoria monitorada",
        "trackingcategories-name": "Nome da mensagem",
        "tooltip-pt-mycontris": "Lista das suas contribuições",
        "tooltip-pt-login": "É encorajado que inicie sessão, apesar de não ser obrigatório.",
        "tooltip-pt-logout": "Sair da conta",
+       "tooltip-pt-createaccount": "É encorajado a criar uma conta e iniciar sessão; no entanto, não é obrigatório",
        "tooltip-ca-talk": "Discussão sobre o conteúdo da página",
        "tooltip-ca-edit": "Pode editar esta página.\nUtilize o botão de antevisão do resultado antes de gravar, por favor.",
        "tooltip-ca-addsection": "Iniciar uma nova seção",
        "tooltip-feed-atom": "''Feed'' Atom desta página",
        "tooltip-t-contributions": "Ver as contribuições deste utilizador",
        "tooltip-t-emailuser": "Enviar uma mensagem de correio a este utilizador",
+       "tooltip-t-info": "Mais informações sobre esta página",
        "tooltip-t-upload": "Carregar ficheiros",
        "tooltip-t-specialpages": "Lista de páginas especiais",
        "tooltip-t-print": "Versão para impressão desta página",
index 49d4201..6fa5678 100644 (file)
                        "פוילישער",
                        "គីមស៊្រុន",
                        "아라",
-                       "Jdforrester"
+                       "Jdforrester",
+                       "Mar(c)"
                ]
        },
        "sidebar": "{{notranslate}}",
        "content-model-text": "Name for the plain text content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}\n{{Identical|Plain text}}",
        "content-model-javascript": "Name for the JavaScript content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}",
        "content-model-css": "Name for the CSS content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}",
+       "duplicate-args-category": "This message is used as a category name for a [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages are placed automatically if they contain template calls that use duplicates of arguments, such as <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> or <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
+       "duplicate-args-category-desc": "Duplicate arguments category description. Shown on [[Special:TrackingCategories]].\n\nSee also:\n* {{msg-mw|Duplicate-args-category}}",
        "expensive-parserfunction-warning": "On some (expensive) [[MetaWikipedia:Help:ParserFunctions|parser functions]] (e.g. <code><nowiki>{{#ifexist:}}</nowiki></code>) there is a limit of how many times it may be used. This is an error message shown when the limit is exceeded.\n\nParameters:\n* $1 - the current number of parser function calls\n* $2 - the allowed number of parser function calls\nSee also [[:mw:Manual:$wgExpensiveParserFunctionLimit|$wgExpensiveParserFunctionLimit in the MediaWiki manual]].\n\nSee also:\n* {{msg-mw|Expensive-parserfunction-category}}",
        "expensive-parserfunction-category": "This message is used as a category name for a [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages are placed automatically if they contain too many calls to expensive parser functions.\n\nSee also:\n* {{msg-mw|Expensive-parserfunction-category-desc}}\n* {{msg-mw|Expensive-parserfunction-warning}}",
        "post-expand-template-inclusion-warning": "When templates are expanded, there is a size limit for the number of bytes yielded. Usually that occurs from excessively nested templates, recursive templates, or ones having x-zillion of #if #case or similar contructs in them. When the wikicode parser detects this, it outputs a red warning message to the page.\n\n\nSee also:\n* {{msg-mw|Post-expand-template-inclusion-category}}",
        "pager-older-n": "This is part of the navigation message on the top and bottom of Special pages which are lists of things in date order, e.g. the User's contributions page. It is passed as the first argument of {{msg-mw|Viewprevnext}}. $1 is the number of items shown per page.",
        "suppress": "{{Identical|Oversight}}",
        "querypage-disabled": "On special pages that use expensive database queries but are not cacheable, this message is displayed when 'miser mode' is on (i.e. no expensive queries allowed).",
+       "apihelp": "{{doc-special|ApiHelp}}",
+       "apihelp-summary": "{{doc-specialpagesummary|ApiHelp}}",
+       "apihelp-no-such-module": "Used as an error message if the requested API module is not found.\n\nParameters:\n* $1 - Requested module name",
+       "apihelp-link": "{{notranslate}} Used to construct a link to [[Special:ApiHelp]]\n\nParameters:\n* $1 - module to link\n* $2 - link text",
        "booksources": "{{doc-special|BookSources}}\n\n'''This message shouldn't be changed unless it has serious mistakes.'''\n\nIt's used as the page name of the configuration page of [[Special:BookSources]]. Changing it breaks existing sites using the default version of this message.\n\nSee also:\n* {{msg-mw|Booksources|title}}\n* {{msg-mw|Booksources-text|text}}",
        "booksources-summary": "{{doc-specialpagesummary|booksources}}",
        "booksources-search-legend": "Box heading on [[Special:BookSources|book sources]] special page. The box is for searching for places where a particular book can be bought or viewed.",
        "wlheader-enotif": "Message at the top of [[Special:Watchlist]], after {{msg-mw|watchlist-details}}. Has to be a full sentence.\n\nSee also:\n* {{msg-mw|Watchlist-options|fieldset}}\n* {{msg-mw|enotif reset|Submit button text}}",
        "wlheader-showupdated": "Message at the top of [[Special:Watchlist]], after {{msg-mw|watchlist-details}}. Has to be a full sentence.",
        "wlnote": "Used on [[Special:Watchlist]] when a maximum number of hours or days is specified.\n\nParameters:\n* $1 - the number of changes shown\n* $2 - the number of hours for which the changes are shown\n* $3 - a date alone\n* $4 - a time alone",
-       "wlshowlast": "Appears on [[Special:Watchlist]]. Parameters:\n* $1 - a choice of different numbers of hours (\"1 | 2 | 6 | 12\")\n* $2 - a choice of different numbers of days (\"1 | 3 | 7\")\nClicking on your choice changes the list of changes you see (without changing the default in my preferences).",
+       "wlshowlast": "Appears on [[Special:Watchlist]]. Parameters:\n* $1 - a choice of different numbers of hours (\"1 | 2 | 6 | 12\")\n* $2 - a choice of different numbers of days (\"1 | 3 | 7\" and the maximum number of days available)\nClicking on your choice changes the list of changes you see (without changing the default in my preferences).",
        "watchlist-options": "Legend of the fieldset of [[Special:Watchlist]]\n\nSee also:\n* {{msg-mw|Watchlist-details|watchlist header}}\n* {{msg-mw|Wlheader-enotif|watchlist header}}\n* {{msg-mw|enotif reset|Submit button text}}",
        "watching": "Text displayed when clicked on the watch tab: {{msg-mw|Watch}}. It means the wiki is adding that page to your watchlist.",
        "unwatching": "Text displayed when clicked on the unwatch tab: {{msg-mw|Unwatch}}. It means the wiki is removing that page from your watchlist.",
        "accesskey-pt-mycontris": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Mycontris}}\n* {{msg-mw|Accesskey-pt-mycontris}}\n* {{msg-mw|Tooltip-pt-mycontris}}",
        "accesskey-pt-login": "{{doc-accesskey}}",
        "accesskey-pt-logout": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Logout}}\n* {{msg-mw|Accesskey-pt-logout}}\n* {{msg-mw|Tooltip-pt-logout}}",
+       "accesskey-pt-createaccount": "{{doc-accesskey}}",
        "accesskey-ca-talk": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Talk}}\n* {{msg-mw|Accesskey-ca-talk}}\n* {{msg-mw|Tooltip-ca-talk}}",
        "accesskey-ca-edit": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Edit}}\n* {{msg-mw|Accesskey-ca-edit}}\n* {{msg-mw|Tooltip-ca-edit}}",
        "accesskey-ca-addsection": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Addsection}}\n* {{msg-mw|Accesskey-ca-addsection}}\n* {{msg-mw|Tooltip-ca-addsection}}",
        "accesskey-feed-atom": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Feed-atom}}\n* {{msg-mw|Accesskey-feed-atom}}\n* {{msg-mw|Tooltip-feed-atom}}",
        "accesskey-t-contributions": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Contributions}}\n* {{msg-mw|Accesskey-t-contributions}}\n* {{msg-mw|Tooltip-t-contributions}}",
        "accesskey-t-emailuser": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Emailuser}}\n* {{msg-mw|Accesskey-t-emailuser}}\n* {{msg-mw|Tooltip-t-emailuser}}",
+       "accesskey-t-info": "{{doc-accesskey}}",
        "accesskey-t-permalink": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Permalink}}\n* {{msg-mw|Accesskey-t-permalink}}\n* {{msg-mw|Tooltip-t-permalink}}",
        "accesskey-t-print": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Printableversion}}\n* {{msg-mw|Accesskey-t-print}}\n* {{msg-mw|Tooltip-t-print}}",
        "accesskey-t-upload": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Upload}}\n* {{msg-mw|Accesskey-t-upload}}\n* {{msg-mw|Tooltip-t-upload}}",
        "tooltip-pt-preferences": "Tooltip shown when hovering over the {{msg-mw|Mypreferences}} link in your personal toolbox (upper right side).\n\nSee also:\n* {{msg-mw|Mypreferences}}\n* {{msg-mw|Accesskey-pt-preferences}}\n* {{msg-mw|Tooltip-pt-preferences}}\n{{Identical|Preferences}}",
        "tooltip-pt-watchlist": "Tooltip shown when hovering over the {{msg-mw|Mywatchlist}} link in your personal toolbox (upper right side).\n\nSee also:\n* {{msg-mw|Mywatchlist}}\n* {{msg-mw|Accesskey-pt-watchlist}}\n* {{msg-mw|Tooltip-pt-watchlist}}",
        "tooltip-pt-mycontris": "Tooltip shown when hovering over the {{msg-mw|Mycontris}} link in your personal toolbox (upper right side).\n\nSee also:\n* {{msg-mw|Mycontris}}\n* {{msg-mw|Accesskey-pt-mycontris}}\n* {{msg-mw|Tooltip-pt-mycontris}}",
-       "tooltip-pt-login": "Tooltip shown when hovering over the link 'Log in / create account' in the upper right corner show on all pages while not logged in.",
+       "tooltip-pt-login": "Tooltip shown when hovering over the link 'Log in' in the upper right corner show on all pages while not logged in.",
        "tooltip-pt-logout": "Tooltip shown when hovering over the {{msg-mw|Logout}} link in your personal toolbox (upper right side).\n\nSee also:\n* {{msg-mw|Logout}}\n* {{msg-mw|Accesskey-pt-logout}}\n* {{msg-mw|Tooltip-pt-logout}}\n{{Identical|Log out}}",
+       "tooltip-pt-createaccount": "Tooltip shown when hovering over the link 'Create account' in the upper right corner show on all pages while not logged in.",
        "tooltip-ca-talk": "Tooltip shown when hovering over the {{msg-mw|Talk}} tab.\n\nA 'content page' is a page that forms part of the purpose of the wiki. It includes the main page and pages in the main namespace and any other namespaces that are included when the wiki is customised. For example on Wikimedia Commons 'content pages' include pages in the file and category namespaces. On Wikinews 'content pages' include pages in the Portal namespace. For a technical definition of 'content namespaces' see [[mw:Manual:Using_custom_namespaces#Content_namespaces|MediaWiki]].\n\nPossible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.\n\nSee also:\n* {{msg-mw|Talk}}\n* {{msg-mw|Accesskey-ca-talk}}\n* {{msg-mw|Tooltip-ca-talk}}\n{{Identical|Content page}}",
        "tooltip-ca-edit": "The tooltip when hovering over the {{msg-mw|Edit}} tab.\n\nSee also:\n* {{msg-mw|Edit}}\n* {{msg-mw|Accesskey-ca-edit}}\n* {{msg-mw|Tooltip-ca-edit}}",
        "tooltip-ca-addsection": "Tooltip shown when hovering over the \"addsection\" tab (shown on talk pages).\n\nSee also:\n* {{msg-mw|Addsection}}\n* {{msg-mw|Accesskey-ca-addsection}}\n* {{msg-mw|Tooltip-ca-addsection}}",
        "tooltip-feed-atom": "Used as tooltip for Atom feed link.\n\nSee also:\n* {{msg-mw|Feed-atom}}\n* {{msg-mw|Accesskey-feed-atom}}\n* {{msg-mw|Tooltip-feed-atom}}",
        "tooltip-t-contributions": "Tooltip shown when hovering over {{msg-mw|Contributions}} in the toolbox.\n\nSee also:\n* {{msg-mw|Contributions}}\n* {{msg-mw|Accesskey-t-contributions}}\n* {{msg-mw|Tooltip-t-contributions}}",
        "tooltip-t-emailuser": "Tooltip shown when hovering over the {{msg-mw|Emailuser}} link in the toolbox (sidebar, below).\n\nSee also:\n* {{msg-mw|Emailuser}}\n* {{msg-mw|Accesskey-t-emailuser}}\n* {{msg-mw|Tooltip-t-emailuser}}",
+       "tooltip-t-info": "Tooltip shown when hovering over the {{msg-mw|pageinfo-toolboxlink}} link in the toolbox (sidebar, below).",
        "tooltip-t-upload": "Tooltip shown when hovering over the link to upload files shown in the side bar menu on all pages.\n\nSee also:\n* {{msg-mw|Upload}}\n* {{msg-mw|Accesskey-t-upload}}\n* {{msg-mw|Tooltip-t-upload}}\n{{Identical|Upload file}}",
        "tooltip-t-specialpages": "The tooltip when hovering over the link {{msg-mw|Specialpages}} going to a list of all special pages available in the wiki.\n\nSee also:\n* {{msg-mw|Specialpages}}\n* {{msg-mw|Accesskey-t-specialpages}}\n* {{msg-mw|Tooltip-t-specialpages}}",
        "tooltip-t-print": "Tooltip shown when hovering over the link to printable version shown in the side bar menu on all pages.\n\nSee also:\n* {{msg-mw|Printableversion}}\n* {{msg-mw|Accesskey-t-print}}\n* {{msg-mw|Tooltip-t-print}}",
        "unknown_extension_tag": "This is an error shown when you use an unknown extension tag name.\n\nThis feature allows tags like <code><nowiki><pre></nowiki></code> to be called with a parser like <code><nowiki>{{#tag:pre}}</nowiki></code>.\n\nParameters:\n* $1 - the unknown extension tag name",
        "duplicate-defaultsort": "See definition of [[w:Sorting|sort key]] on Wikipedia. Parameters:\n* $1 - old default sort key\n* $2 - new default sort key",
        "duplicate-displaytitle": "Warning shown when a page has its display title set multiple times. Parameters:\n* $1 - old display title\n* $2 - new display title",
+       "invalid-indicator-name": "Warning shown when the [https://www.mediawiki.org/wiki/Help:Page_status_indicators &lt;indicator name=\"''unique-identifier''\">''content''&lt;/indicator>] parser tag is used incorrectly.",
        "version": "{{doc-special|Version}}\n{{Identical|Version}}",
        "version-summary": "{{doc-specialpagesummary|version}}",
        "version-extensions": "Header on [[Special:Version]].",
        "mediastatistics-header-text": "Header on [[Special:MediaStatistics]] for file types that are in the text category. This includes simple text formats, including plain text formats, json, csv, and xml. Source code of compiled programming languages may be included here in the future, but isn't currently.",
        "mediastatistics-header-executable": "Header on [[Special:MediaStatistics]] for file types that are in the executable category. This includes things like source files for interpreted programming language (Shell scripts, javascript, etc).",
        "mediastatistics-header-archive": "Header on [[Special:MediaStatistics]] for file types that are in the archive category. Includes things like tar, zip, gzip etc.",
-       "json-warn-trailing-comma": "A warning message notifying that JSON text was automatically corrected by removing erroneous commas.\n\nParameters:\n* $1 - number of commas that were removed",
-       "json-error-unknown": "User error message when there’s an unknown error.\n{{Identical|Unknown error}}. This error is shown if we received an unexpected value from PHP. See http://php.net/manual/en/function.json-last-error.php\n\nParameters:\n* $1 - integer error code",
-       "json-error-depth": "User error message when the maximum stack depth is exceeded.\nSee http://php.net/manual/en/function.json-last-error.php",
-       "json-error-state-mismatch": "User error message when underflow or the modes mismatch.\n\n'''Underflow''': A data-processing error arising when the absolute value of a computed quantity is smaller than the limits of precision of the computing device, retaining at least one significant digit.\nSee http://php.net/manual/en/function.json-last-error.php",
-       "json-error-ctrl-char": "User error message when an unexpected control character has been found.\nSee http://php.net/manual/en/function.json-last-error.php",
-       "json-error-syntax": "User error message when there is a syntax error; a malformed JSON.\nSee http://php.net/manual/en/function.json-last-error.php\n{{Identical|Syntax error}}",
-       "json-error-utf8": "User error message when there are malformed UTF-8 characters, possibly incorrectly encoded.\nSee http://php.net/manual/en/function.json-last-error.php",
-       "json-error-recursion": "PHP JSON encoding/decoding error. See http://php.net/manual/en/function.json-last-error.php",
-       "json-error-inf-or-nan": "PHP JSON encoding/decoding error. See http://php.net/manual/en/function.json-last-error.php",
-       "json-error-unsupported-type": "PHP JSON encoding/decoding error. See http://php.net/manual/en/function.json-last-error.php"
+       "json-warn-trailing-comma": "A warning message notifying that JSON text was automatically corrected by removing erroneous commas.\n\nParameters:\n* $1 - number of commas that were removed\n{{Related|Json-error}}",
+       "json-error-unknown": "User error message when there’s an unknown error.\n\nThis error is shown if we received an unexpected value from PHP. See http://php.net/manual/en/function.json-last-error.php\n\nParameters:\n* $1 - integer error code\n{{Related|Json-error}}\n{{Identical|Unknown error}}",
+       "json-error-depth": "User error message when the maximum stack depth is exceeded.\nSee http://php.net/manual/en/function.json-last-error.php\n{{Related|Json-error}}",
+       "json-error-state-mismatch": "User error message when underflow or the modes mismatch.\n\n'''Underflow''': A data-processing error arising when the absolute value of a computed quantity is smaller than the limits of precision of the computing device, retaining at least one significant digit.\n\nSee http://php.net/manual/en/function.json-last-error.php\n{{Related|Json-error}}",
+       "json-error-ctrl-char": "User error message when an unexpected control character has been found.\nSee http://php.net/manual/en/function.json-last-error.php\n{{Related|Json-error}}",
+       "json-error-syntax": "User error message when there is a syntax error; a malformed JSON.\nSee http://php.net/manual/en/function.json-last-error.php\n{{Related|Json-error}}\n{{Identical|Syntax error}}",
+       "json-error-utf8": "User error message when there are malformed UTF-8 characters, possibly incorrectly encoded.\nSee http://php.net/manual/en/function.json-last-error.php\n{{Related|Json-error}}",
+       "json-error-recursion": "PHP JSON encoding/decoding error. See http://php.net/manual/en/function.json-last-error.php\n{{Related|Json-error}}",
+       "json-error-inf-or-nan": "PHP JSON encoding/decoding error. See http://php.net/manual/en/function.json-last-error.php\n{{Related|Json-error}}",
+       "json-error-unsupported-type": "PHP JSON encoding/decoding error. See http://php.net/manual/en/function.json-last-error.php\n{{Related|Json-error}}"
 }
index 8e10c40..c33530a 100644 (file)
        "content-model-text": "text simplu",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Pagini care folosesc argumente duplicate în apelarea formatelor",
+       "duplicate-args-category-desc": "Pagina conține apelări ale formatelor care folosesc argumente duplicate, cum ar fi <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> sau <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "Atenție: Această pagină conține prea multe apelări costisitoare ale funcțiilor parser.\n\nAr trebui să existe mai puțin de $2 {{PLURAL:$2|apelare|apelări}}, acolo există {{PLURAL:$1|$1 apelare|$1 apelări}}.",
        "expensive-parserfunction-category": "Pagini cu prea multe apelări costisitoare de funcții parser",
        "post-expand-template-inclusion-warning": "Atenție: Formatele incluse sunt prea mari.\nUnele formate nu vor fi incluse.",
        "gender-female": "Ea modifică pagini wiki",
        "prefs-help-gender": "Stabilirea acestei preferințe este opțională.\nAcest software folosește datele pentru a vi se adresa și pentru a face referire la dumneavoastră utilizând genul gramatical corespunzător.\nAceastă informație va fi publică.",
        "email": "E-mail",
-       "prefs-help-realname": "Numele real este opțional.\nDacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.",
+       "prefs-help-realname": "Numele real este opțional.\nDacă este furnizat, ar putea fi folosit pentru a vă atribui munca.",
        "prefs-help-email": "Adresa de e-mail este opțională, dar este necesară pentru recuperarea parolei în cazul în care o uitați.",
        "prefs-help-email-others": "Puteți de asemenea permite altora să vă contacteze prin intermediul paginii dumneavoastră de utilizator fără a vă divulga identitatea.",
        "prefs-help-email-required": "Adresa de e-mail este necesară.",
        "pager-older-n": "{{PLURAL:$1|1|$1}} mai vechi",
        "suppress": "Oversight",
        "querypage-disabled": "Această pagină specială este dezactivată din motive de performanță.",
+       "apihelp": "Ajutor API",
+       "apihelp-no-such-module": "Modulul „$1” nu a fost găsit.",
        "booksources": "Surse de cărți",
        "booksources-search-legend": "Căutare surse pentru cărți",
        "booksources-search": "Caută",
        "tooltip-pt-mycontris": "Listă de contribuții",
        "tooltip-pt-login": "Sunteți încurajat să vă autentificați, deși acest lucru nu este obligatoriu.",
        "tooltip-pt-logout": "Închide sesiunea de lucru",
+       "tooltip-pt-createaccount": "Vă încurajăm să vă creați un cont și să vă autentificați; totuși, nu este obligatoriu",
        "tooltip-ca-talk": "Discuții despre această pagină",
        "tooltip-ca-edit": "Puteți modifica această pagină. Înainte de a o salva vă rugăm s-o previzualizați.",
        "tooltip-ca-addsection": "Adaugă o nouă secțiune.",
        "tooltip-feed-atom": "Alimentează fluxul Atom pentru această pagină",
        "tooltip-t-contributions": "Vezi lista de contribuții ale acestui utilizator",
        "tooltip-t-emailuser": "Trimite un e-mail acestui utilizator",
+       "tooltip-t-info": "Mai multe informații despre această pagină",
        "tooltip-t-upload": "Încărcare de fișiere",
        "tooltip-t-specialpages": "Lista tuturor paginilor speciale",
        "tooltip-t-print": "Versiunea de tipărit a acestei pagini",
        "unknown_extension_tag": "Extensie etichetă necunoscută „$1”",
        "duplicate-defaultsort": "'''Atenție:''' Cheia de sortare implicită („$2”) o înlocuiește pe precedenta („$1”).",
        "duplicate-displaytitle": "<strong>Atenție:</strong> Titlul afișat „$2” înlocuieşte titlul afișat anterior, „$1”.",
+       "invalid-indicator-name": "<strong>Eroare:</strong> Parametrul <code>nume</code> al indicatorilor de stare a paginii nu trebuie să fie gol.",
        "version": "Versiune",
        "version-extensions": "Extensii instalate",
        "version-skins": "Aspecte instalate",
index bc6135f..b6d9584 100644 (file)
        "compare-invalid-title": "'U titele ca è specificate jè invalide.",
        "compare-title-not-exists": "'U titele ca è specificate non g'esiste.",
        "compare-revision-not-exists": "'A revisione ca è specificate non g'esiste.",
-       "dberr-problems": "Simw spiacende! Stu site stè 'ngondre de le diffcoltà tecniche.",
+       "dberr-problems": "Sime spiacende! Stu site stè 'ngondre de le difficoltà tecniche.",
        "dberr-again": "Aspitte quacche minute e pò recareche.",
        "dberr-info": "(Non ge riuscime a condattà 'u server d'u database: $1)",
        "dberr-info-hidden": "(Non ge pozze condattà 'u server d'u database)",
index 348a2e7..918a46f 100644 (file)
@@ -70,7 +70,8 @@
                        "Agilight",
                        "Oleg3280",
                        "Nirovulf",
-                       "Striking Blue"
+                       "Striking Blue",
+                       "Fitoschido"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "content-model-text": "обычный текст",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Страницы, использующие повторяющиеся аргументы в вызовах шаблонов",
+       "duplicate-args-category-desc": "Страницы, содержащие вызовы шаблонов, использующие повторяющиеся аргументы, такие как <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> или <code><nowiki>{{foo|bar|1=bar}}</nowiki></code>.",
        "expensive-parserfunction-warning": "'''Внимание!''' Эта страница содержит слишком много вызовов ресурсоёмких функций.\n\nДолжно быть не более {{PLURAL:$2|$2 вызова|$2 вызовов|1=одного вызова}}, в то время как сейчас здесь $1 {{PLURAL:$1|вызов|вызовов|вызова}}.",
        "expensive-parserfunction-category": "Страницы со слишком большим количеством вызовов ресурсоёмких функций",
        "post-expand-template-inclusion-warning": "Предупреждение: суммарный размер включаемых шаблонов слишком велик.\nНекоторые шаблоны не будут включены.",
        "gender-female": "Онa редактирует страницы вики",
        "prefs-help-gender": "Установка этой настройки необязательна.\nПО использует это значение, чтобы обращаться к вам и упоминать вас в правильном грамматическом роде.\nЭта информация будет общедоступной.",
        "email": "Электронная почта",
-       "prefs-help-realname": "Ð\9dаÑ\81Ñ\82оÑ\8fÑ\89ее Ð¸Ð¼Ñ\8f (необÑ\8fзаÑ\82елÑ\8cное Ð¿Ð¾Ð»Ðµ).\nÐ\95Ñ\81ли Ð²Ñ\8b Ñ\83кажеÑ\82е ÐµÐ³Ð¾, Ñ\82о Ð¾Ð½Ð¾ Ð±Ñ\83деÑ\82 Ð¸Ñ\81полÑ\8cзовано Ð´Ð»Ñ\8f Ñ\82ого, Ñ\87Ñ\82обÑ\8b Ð¿Ð¾ÐºÐ°Ð·Ð°Ñ\82Ñ\8c, ÐºÐµÐ¼ Ð±Ñ\8bла Ð²Ð½ÐµÑ\81ена Ð¿Ñ\80авка Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b.",
+       "prefs-help-realname": "Ð\92водиÑ\82Ñ\8c Ð½Ð°Ñ\81Ñ\82оÑ\8fÑ\89ее Ð¸Ð¼Ñ\8f Ð½ÐµÐ¾Ð±Ñ\8fзаÑ\82елÑ\8cно.\nÐ\95Ñ\81ли Ð²Ñ\8b Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ\82е ÐµÐ³Ð¾, Ð¾Ð½Ð¾ Ð¼Ð¾Ð¶ÐµÑ\82 Ð±Ñ\8bÑ\82Ñ\8c Ð¸Ñ\81полÑ\8cзовано Ð´Ð»Ñ\8f Ñ\83казаниÑ\8f Ð°Ð²Ñ\82оÑ\80Ñ\81Ñ\82ва Ð²Ð°Ñ\88иÑ\85 Ñ\80абоÑ\82.",
        "prefs-help-email": "Адрес электронной почты указывать необязательно, но он будет необходим в том случае, если вы забудете пароль.",
        "prefs-help-email-others": "Он также позволит другим участникам связаться с вами по электронной почте с помощью ссылки на вашей персональной странице или на вашей странице обсуждения. При этом ваш адрес электронной почты не будет никому раскрыт.",
        "prefs-help-email-required": "Необходимо указать адрес электронной почты.",
        "pager-older-n": "$1 более {{PLURAL:$1|старая|старых|старые}}",
        "suppress": "Сокрытие",
        "querypage-disabled": "Эта спецстраница отключена для повышения производительности.",
+       "apihelp": "Справка по API",
+       "apihelp-no-such-module": "Модуль «$1» не найден.",
        "booksources": "Источники книг",
        "booksources-search-legend": "Поиск информации о книге",
        "booksources-isbn": "ISBN:",
        "change-blocklink": "изменить блокировку",
        "contribslink": "вклад",
        "emaillink": "отправить письмо",
-       "autoblocker": "Автоблокировка из-за того, что ваш IP-адрес недавно использовал «[[User:$1|$1]]».\nПричина блокировки $1ː «$2»",
+       "autoblocker": "Автоблокировка из-за того, что ваш IP-адрес недавно использовал «[[User:$1|$1]]».\nПричина блокировки $1: «$2»",
        "blocklogpage": "Журнал блокировок",
        "blocklog-showlog": "{{GENDER:$1|Этот участник уже блокировался|Эта участница уже блокировалась}} ранее.\nНиже приведён журнал блокировок:",
        "blocklog-showsuppresslog": "{{GENDER:$1|Этот участник уже заблокирован и скрыт|Эта участница уже заблокирована и скрыта}}. Журнал сокрытий приведён ниже:",
        "tooltip-pt-mycontris": "Список ваших правок",
        "tooltip-pt-login": "Здесь можно зарегистрироваться в системе, но это необязательно.",
        "tooltip-pt-logout": "Завершить сеанс работы",
+       "tooltip-pt-createaccount": "Мы предлагаем вам создать учётную запись и войти в систему, хотя это и не обязательно.",
        "tooltip-ca-talk": "Обсуждение основной страницы",
        "tooltip-ca-edit": "Вы можете редактировать эту страницу. Перед тем, как записать свои изменения, воспользуйтесь, пожалуйста, кнопкой предварительного просмотра.",
        "tooltip-ca-addsection": "Создать новый раздел",
        "tooltip-feed-atom": "Трансляция в Atom для этой страницы",
        "tooltip-t-contributions": "Список страниц, которые изменял этот участник",
        "tooltip-t-emailuser": "Отправить письмо этому участнику",
+       "tooltip-t-info": "Подробнее об этой странице",
        "tooltip-t-upload": "Загрузить файлы",
        "tooltip-t-specialpages": "Список служебных страниц",
        "tooltip-t-print": "Версия этой страницы для печати",
        "unknown_extension_tag": "Неизвестный тег расширения «$1»",
        "duplicate-defaultsort": "Внимание. Ключ сортировки по умолчанию «$2» переопределяет прежний ключ сортировки по умолчанию «$1».",
        "duplicate-displaytitle": "<strong>Внимание:</strong> Отображаемое название «$2» переопределяет ранее заданное отображаемое название «$1».",
+       "invalid-indicator-name": "<strong>Ошибка:</strong> Атрибут <code>name</code> индикаторов состояния страницы не должен быть пустым.",
        "version": "Версия",
        "version-extensions": "Установленные расширения",
        "version-skins": "Установленные темы оформления",
        "log-name-pagelang": "Журнал изменения языка",
        "log-description-pagelang": "Это журнал изменений в языках страницы.",
        "logentry-pagelang-pagelang": "$1 изменил{{GENDER:$2||а}} язык страницы для $3 с $4 на $5.",
-       "default-skin-not-found": "Упс! Тема оформления по умолчанию для вашей вики <code>$wgDefaultSkin</code>, <code>$1</code> недоступна.\n\nВаша установка, похоже, содержит следующие темы оформления. См. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для получения информации о том, как включить темы оформления и выбрать тему по умолчанию.\n\n\n$ 2\n\n\n; Если вы только что установили MediaWiki:\n: Вы, видимо, сделали это с Git или непосредственно из исходного кода с использованием другого способа. Тогда такое возможно. Попробуйте установить некоторые темы из [https://www.mediawiki.org/wiki/Category:All_skins каталога тем оформления сайта mediawiki.org]:\n:* Скачав [https://www.mediawiki.org/wiki/Download архив установочных файлов], который содержит несколько тем оформления и расширений. Вы можете скопировать папку <code>skins/</code> из него.\n:* Склонировав один из репозиториев <code>mediawiki/skins/*</code> через git в подпапку <code  dir=\"ltr\">skins/</code> папки, куда установлена MediaWiki.\n: Это не должно навредить вашему репозиторию, если вы MediaWiki-разработчик. См. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для получения информации о том, как включить темы оформления и выбрать тему по умолчанию.\n; Если вы только что обновили MediaWiki:\n: MediaWiki версии 1.24 и более новых больше не включает автоматически установленные темы (see [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]).\nВы можете вставить следующие строчки в <code>LocalSettings.php</code>, чтобы включить все установленные темы оформления: \n\n\n<pre dir=\"ltr\">$3</pre>\n\n\n; Если вы только что изменили <code>LocalSettings.php</code>:\n: Перепроверьте названия тем на наличие опечаток.",
-       "default-skin-not-found-no-skins": "Упс! Тема оформления по умолчанию для вашей вики <code>$wgDefaultSkin</code>, <code>$1</code> недоступна.\n\n\nУ вас нет установленных тем оформления.\n\n\n; Если вы только что установили или обновили MediaWiki:\n: Вы, видимо, сделали это с Git или непосредственно из исходного кода с использованием другого способа. Тогда такое возможно. MediaWiki версии 1.24 или более поздней не содержат темы оформления в основном репозитории. Попробуйте установить некоторые темы из [https://www.mediawiki.org/wiki/Category:All_skins каталога тем оформления сайта mediawiki.org]:\n:* Скачав [https://www.mediawiki.org/wiki/Download архив установочных файлов], который содержит несколько тем оформления и расширений. Вы можете скопировать папку <code>skins/</code> из него.\n:* Склонировав один из репозиториев <code>mediawiki/skins/*</code> через git в подпапку <code dir=\"ltr\">skins/</code> папки, куда установлена MediaWiki.\n: Это не должно навредить вашему репозиторию, если вы MediaWiki-разработчик. См. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для получения информации о том, как включить темы оформления и выбрать тему по умолчанию.",
+       "default-skin-not-found": "Упс! Тема оформления по умолчанию для вашей вики <code>$wgDefaultSkin</code>, <code>$1</code> недоступна.\n\nВаша установка, похоже, содержит следующие темы оформления. См. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для получения информации о том, как включить темы оформления и выбрать тему по умолчанию.\n\n$ 2\n\n; Если вы только что установили MediaWiki:\n: Вы, видимо, сделали это с Git или непосредственно из исходного кода с использованием другого способа. Тогда такое возможно. Попробуйте установить некоторые темы из [https://www.mediawiki.org/wiki/Category:All_skins каталога тем оформления сайта mediawiki.org]:\n:* Загрузив [https://www.mediawiki.org/wiki/Download архив установочных файлов], который содержит несколько тем оформления и расширений. Вы можете скопировать папку <code>skins/</code> из него.\n:* Клонировав один из репозиториев <code>mediawiki/skins/*</code> через git в подпапку <code  dir=\"ltr\">skins/</code> папки, куда установлена MediaWiki.\n: Это не должно навредить вашему репозиторию, если вы MediaWiki-разработчик. См. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для получения информации о том, как включить темы оформления и выбрать тему по умолчанию.\n; Если вы только что обновили MediaWiki:\n: MediaWiki версии 1.24 и новее больше не включает автоматически установленные темы (см. [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]).\nВы можете вставить следующие строки в <code>LocalSettings.php</code>, чтобы включить все установленные темы оформления: \n\n\n<pre dir=\"ltr\">$3</pre>\n\n\n; Если вы только что изменили <code>LocalSettings.php</code>:\n: Перепроверьте названия тем на наличие опечаток.",
+       "default-skin-not-found-no-skins": "Упс! Тема оформления по умолчанию для вашей вики <code>$wgDefaultSkin</code>, <code>$1</code> недоступна.\n\nУ вас нет установленных тем оформления.\n\n; Если вы только что установили или обновили MediaWiki:\n: Вы, видимо, сделали это с Git или непосредственно из исходного кода с использованием другого способа. Тогда такое возможно. MediaWiki версии 1.24 и новее не содержат темы оформления в основном репозитории. Попробуйте установить некоторые темы из [https://www.mediawiki.org/wiki/Category:All_skins каталога тем оформления сайта mediawiki.org]:\n:* Загрузив [https://www.mediawiki.org/wiki/Download архив установочных файлов], который содержит несколько тем оформления и расширений. Вы можете скопировать папку <code>skins/</code> из него.\n:* Клонировав один из репозиториев <code>mediawiki/skins/*</code> через git в подпапку <code dir=\"ltr\">skins/</code> папки, куда установлена MediaWiki.\n: Это не должно навредить вашему репозиторию, если вы MediaWiki-разработчик. См. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для получения информации о том, как включить темы оформления и выбрать тему по умолчанию.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (включено)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''отключено''')",
        "mediastatistics": "Медиа-статистика",
index 988f541..bc374b8 100644 (file)
        "passwordreset-capture-help": "Кідь означіте тото поличко, буде імейл (з дочасным геслом) оркем посланя хоснователёви указаный і вам.",
        "passwordreset-email": "Адреса електронічной пошты:",
        "passwordreset-emailtitle": "Детайлы конта на {{SITENAME}}",
-       "passwordreset-emailtext-ip": "Дахто (може Вы, з IP адресы $1) попросив о наставлїня нового гесла до вашого конта на {{grammar:6sg|{{SITENAME}}}} ($4). З тов адресов {{PLURAL:$3|є повязане наступне конто|суть повазяны слїдуючі конта}}:\n\n$2\n\n{{PLURAL:$3|Тото дочасне гесло|Тоты дочасны гесла}} стануть неплатныма {{PLURAL:$5|за день|за $5 днї|за $5 днїв}}.\nТеперь бы хотїло, бы сьте ся приголосили та зволлил нове гесло. Кідь тоту просьбу післав хтось другый або сьте ся на старе гесло роспамнятали і не хочете го змінити, можете тото повідомлїня іґноровати та дале хосновати старе гесло.",
-       "passwordreset-emailtext-user": "{{gender:$1|ХоÑ\81новаÑ\82елÑ\8c|ХоÑ\81новаÑ\82елÑ\8cка|ХоÑ\81новаÑ\82елÑ\8c}} $1 {{grammar:2sg|{{SITENAME}}}} {{gender:$1|попÑ\80оÑ\81ив|попÑ\80оÑ\81ила|попÑ\80оÑ\81ив}} Ð¾ Ð½Ð°Ñ\81Ñ\82авлÑ\97нÑ\8f Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð³ÐµÑ\81ла Ðº Ð²Ð°Ñ\88омÑ\83\nконÑ\82Ñ\83 Ð½Ð° {{grammar:6sg|{{SITENAME}}}} ($4). Ð\9a Ñ\82Ñ\96й Ð°Ð´Ñ\80еÑ\81Ñ\97 {{PLURAL:$3|Ñ\94 Ñ\81пÑ\80Ñ\8fжене Ð½Ð°Ñ\81Ñ\82Ñ\83пне ÐºÐ¾Ð½Ñ\82о|Ñ\81Ñ\83Ñ\82Ñ\8c Ñ\81пÑ\80Ñ\8fженÑ\8b Ð½Ð°Ñ\81Ñ\82Ñ\83пнÑ\83 ÐºÐ¾Ð½Ñ\82а}}:\n\n$2\n\n{{PLURAL:$3|ТоÑ\82о Ð´Ð¾Ñ\87аÑ\81не Ð³ÐµÑ\81ло|ТоÑ\82Ñ\8b Ð´Ð¾Ñ\87аÑ\81нÑ\8b Ð³ÐµÑ\81ла}} ÐºÑ\96нÑ\87аÑ\82Ñ\8c {{PLURAL:$5|о Ñ\94ден Ð´ÐµÐ½Ñ\8c|о $5 Ð´Ð½Ñ\97|о $5 Ð´Ð½Ñ\97в}}.\nÐ\9dÑ\8bнÑ\97 Ð±Ñ\8b Ñ\81Ñ\8cÑ\82е Ñ\81Ñ\8f Ð¼Ð°Ð²(а) Ð¿Ñ\80иголоÑ\81иÑ\82и Ñ\83 Ð·Ð²Ð¾Ð»Ð¸Ñ\82и Ñ\81обÑ\96 Ð½Ð¾Ð²Ðµ Ð³ÐµÑ\81ло. Ð\9aÑ\96дÑ\8c Ñ\82оÑ\82Ñ\83 Ð¿Ð¾Ð¶Ð°Ð´Ð°Ð²ÐºÑ\83\nпоÑ\81лав Ð´Ð°Ñ\85Ñ\82о Ð´Ñ\80Ñ\83гÑ\8bй Ð°Ð±Ð¾ Ñ\81Ñ\8cÑ\82е Ñ\81обÑ\96 Ð½Ð° Ñ\81воÑ\94 Ñ\81Ñ\82аÑ\80е Ð³ÐµÑ\81ло Ñ\81помÑ\8fнÑ\83в(а),і не хочете го\nзмінити, можете тото повідомлїня іґноровати і надале хосновати старе гесло.",
+       "passwordreset-emailtext-ip": "Дахто (може Вы, з IP адресы $1) попросив о наставлїня нового гесла до вашого конта на {{grammar:6sg|{{SITENAME}}}} ($4). З тов адресов {{PLURAL:$3|є повязане слїдуюче конто|суть повязаны слїдуючі конта}}:\n\n$2\n\n{{PLURAL:$3|Тото дочасне гесло стане неплатным|Тоты дочасны гесла стануть неплатныма}} {{PLURAL:$5|за день|за $5 днї|за $5 днїв}}.\nТеперь бы сьте ся мали приголосити і зволити собі нове гесло. Кідь тоту просьбу послав хтось другый або сьте собі на своє старе гесло спомянули і не хочете го змінити, можете тото повідомлїня іґноровати і дале хосновати старе гесло.",
+       "passwordreset-emailtext-user": "{{gender:$1|ХоÑ\81новаÑ\82елÑ\8c|ХоÑ\81новаÑ\82елÑ\8cка|ХоÑ\81новаÑ\82елÑ\8c}} $1 {{grammar:2sg|{{SITENAME}}}} {{gender:$1|попÑ\80оÑ\81ив|попÑ\80оÑ\81ила|попÑ\80оÑ\81ив}} Ð¾ Ð½Ð°Ñ\81Ñ\82авлÑ\97нÑ\8f Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð³ÐµÑ\81ла Ð´Ð¾ Ð²Ð°Ñ\88ого\nконÑ\82а Ð½Ð° {{grammar:6sg|{{SITENAME}}}} ($4). Ð\97 Ñ\82ов Ð°Ð´Ñ\80еÑ\81ов {{PLURAL:$3|Ñ\94 Ð¿Ð¾Ð²Ñ\8fзане Ð½Ð°Ñ\81Ñ\82Ñ\83пне ÐºÐ¾Ð½Ñ\82о|Ñ\81Ñ\83Ñ\82Ñ\8c Ð¿Ð¾Ð²Ñ\8fзанÑ\8b Ð½Ð°Ñ\81Ñ\82Ñ\83пнÑ\8b ÐºÐ¾Ð½Ñ\82а}}:\n\n$2\n\n{{PLURAL:$3|ТоÑ\82о Ð´Ð¾Ñ\87аÑ\81не Ð³ÐµÑ\81ло ÐºÑ\96нÑ\87иÑ\82Ñ\8c|ТоÑ\82Ñ\8b Ð´Ð¾Ñ\87аÑ\81нÑ\8b Ð³ÐµÑ\81ла ÐºÑ\96нÑ\87аÑ\82Ñ\8c}} {{PLURAL:$5|о Ñ\94ден Ð´ÐµÐ½Ñ\8c|о $5 Ð´Ð½Ñ\97|о $5 Ð´Ð½Ñ\97в}}.\nТепеÑ\80Ñ\8c Ð±Ñ\8b Ñ\81Ñ\8cÑ\82е Ñ\81Ñ\8f Ð¼Ð°Ð»Ð¸ Ð¿Ñ\80иголоÑ\81иÑ\82и Ñ\96 Ð·Ð²Ð¾Ð»Ð¸Ñ\82и Ñ\81обÑ\96 Ð½Ð¾Ð²Ðµ Ð³ÐµÑ\81ло. Ð\9aÑ\96дÑ\8c Ñ\82оÑ\82Ñ\83 Ð¿Ð¾Ð¶Ð°Ð´Ð°Ð²ÐºÑ\83 \nпоÑ\81лав Ð´Ð°Ñ\85Ñ\82о Ð´Ñ\80Ñ\83гÑ\8bй Ð°Ð±Ð¾ Ñ\81Ñ\8cÑ\82е Ñ\81обÑ\96 Ð½Ð° Ñ\81воÑ\94 Ñ\81Ñ\82аÑ\80е Ð³ÐµÑ\81ло Ñ\81помÑ\8fнÑ\83ли і не хочете го\nзмінити, можете тото повідомлїня іґноровати і надале хосновати старе гесло.",
        "passwordreset-emailelement": "Імя хоснователя: $1\nДочасне гесло: $2",
        "passwordreset-emailsent": "Імейл з геслом быв посланый.",
        "passwordreset-emailsent-capture": "Быв выґенерованый імейл з геслом, што є вказаный ниже.",
        "powersearch-togglelabel": "Позначіти:",
        "powersearch-toggleall": "Вшыткы",
        "powersearch-togglenone": "Жадный",
+       "powersearch-remember": "Запамятати выбір про будучі гляданя",
        "search-external": "Екстерне гляданя",
        "searchdisabled": "<p>Перебачте. Повнотекстове гляданя є дочасно недоступне. Затля можете спробовати гляданя Google; є але можне, же ёго резултаты не мусять быти актуалны.</p>",
        "search-error": "Як ся глядало трафіла ся хыба: $1",
        "mimetype": "MIME-тіп:",
        "download": "скачати",
        "unwatchedpages": "Неслїдованы сторінкы",
-       "listredirects": "Список напрямлинь",
+       "listredirects": "Список напрямлїнь",
        "unusedtemplates": "Нехоснованы шаблоны",
        "unusedtemplatestext": "Тота сторінка обсягує список вшыткых сторінок в простору назв {{ns:template}}, котры не суть вложены до жадной іншой сторінкы. Перед їх змазанём не забудьте перевірити іншы одказы.",
        "unusedtemplateswlh": "іншы одказы",
index daff7f8..3969358 100644 (file)
        "view-foreign": "Vedz la $1",
        "edit": "Alâxire",
        "edit-local": "Alâxeaști descrierea localâ",
+       "create": "Prindiri",
+       "create-local": "Adavgâ descrierea localâ",
+       "editthispage": "Alâxeaști aestâ frândzâ",
+       "create-this-page": "Adari aestâ frândzâ",
        "delete": "Așcirḑire",
        "deletethispage": "Așteardzi frândza",
        "undeletethispage": "Aflâ frundza aștearsâ",
        "otherlanguages": "Pi alanti limbi",
        "redirectedfrom": "(yinitâ di la $1)",
        "redirectpagesub": "Frândzâ di redirecționari",
+       "redirectto": "Purtari la:",
        "lastmodifiedat": "Aestâ frândzâ fu alâxitâ di-tu soni pi $1, la $2.",
        "viewcount": "Aestâ frândzâ fu mutritâ di {{PLURAL:$1|mași unâ oarâ|$1 ori}}.",
        "protectedpage": "Frândzâ protejatâ",
        "thisisdeleted": "Vedz icâ adu napoea $1?",
        "viewdeleted": "Vedz $1?",
        "restorelink": "Vedz {{PLURAL:$1|unâ alâxiri aștearsâ|$1 (di) alâxiri aștearsi}}",
+       "feedlinks": "Feed:",
+       "feed-invalid": "Turlii di feed invalidâ",
+       "feed-unavailable": "Nu suntu disponibili fluxuri web.",
        "site-rss-feed": "$1 Abonari RSS",
        "site-atom-feed": "$1 Abonari Atomu",
        "page-rss-feed": "„$1” Abonari RSS",
        "nstab-help": "Agiutoru",
        "nstab-category": "Categorie",
        "nosuchaction": "Aeastâ acțiuni nu easti",
+       "nosuchspecialpage": "Aestâ frândzâ maxusâ (specialâ) nu ari aoați",
+       "error": "Eroari (alatus)",
+       "databaseerror": "Alatus la baza di dati",
+       "databaseerror-text": "Apâru unu alatusu la interogarea bazâľei di dati. Aestâ poati s-hibâ trâ ațea câ ari unâ problemâ di software.",
+       "databaseerror-textcl": "Apâru unu alatusu la interogarea bazâľei di dati.",
+       "databaseerror-query": "Interogari: $1",
+       "databaseerror-function": "Funcție: $1",
        "databaseerror-error": "Eroari (alutusu): $1",
+       "laggedslavemode": "<strong>Sacănu!</strong>: S-poati ca frândza s-nu aibâ actualizărili di-tu soni.",
        "readonly": "Baza di dati easti blocatâ (ncľisâ) la nyrâpseari",
+       "missingarticle-rev": "(versiuniľea#: $1)",
+       "missingarticle-diff": "(Dif: $1, $2)",
+       "badtitle": "Titlu alatusu",
        "viewsource": "Vez-u textu",
+       "viewsource-title": "Vedz ivurlu trâ $1",
+       "ns-specialprotected": "Frâdzâli maxusi (speciali) nu potu s-hibâ alâxiti.",
+       "exception-nologin": "Nu hii ligatu",
+       "exception-nologin-text": "Leagâ-ti ca sâ poț sâ u vedz aestâ frândzâ i acțiuni.",
+       "exception-nologin-text-manual": "Vâ pâlâcârsimu sâ $1 ca s-puteț s-u videț frândza i acțiunea aestâ.",
+       "virus-badscanner": "Configurațiľe alatusitâ: scaneru di virus nicunuscutu: \"$1\"",
+       "welcomeuser": "Ghini viniș, $1!",
+       "welcomecreation-msg": "Contulu (isape) a tău fu adratu.\nPoț s-lu alâxești [[Special:Preferences|Prutimisirli]] a tali ma câ vrei.",
        "yourname": "Numa di utilizatoru:",
        "userlogin-yourname": "Numa di utilizatoru:",
        "userlogin-yourname-ph": "Bagâ-u numa a ta di utilizatoru",
        "createacct-another-username-ph": "Bagâ-u numa di utilizatoru",
        "yourpassword": "Zboru cľeae:",
+       "userlogin-yourpassword": "Zboarâ acrifo (parolâ)",
+       "userlogin-yourpassword-ph": "Bagâ-u parola (zboru acrifo)",
+       "createacct-yourpassword-ph": "Bagâ-u parola (zboru acrifo)",
        "yourpasswordagain": "Bagâ-u cľeae diznou:",
+       "createacct-yourpasswordagain": "Apuchiruseaști zborlu mistico",
+       "createacct-yourpasswordagain-ph": "Bagâ-u parola diz-nou",
        "remembermypassword": "Țâni minti ligâtura a mea pi browserlu aestu (cheari dupu $1 {{PLURAL:$1|dzuuâ|dzâli}})",
+       "userlogin-remembermypassword": "Pâstreadzâ ligarea",
+       "userlogin-signwithsecure": "Ufiliseaști unâ conexiuni sigurâ",
+       "yourdomainname": "Domeniulu a tău:",
+       "password-change-forbidden": "Nu poț s-li alâxești zboarâli mistico pi aestu wiki.",
        "login": "Leagâ-ti",
        "nav-login-createaccount": "Leagâ-ti / Fă contu (isape)",
        "userlogin": "Leagâ-ti / Fă contu (isape)",
        "userlogout": "Dizleagâ-ti",
        "notloggedin": "Nu hii ligatu",
        "userlogin-noaccount": "N-ai nicâ contu (isape)?",
+       "userlogin-joinproject": "Bagâ-ti la {{SITENAME}}",
        "nologin": "N-ai nicâ contu (isape)? $1.",
        "nologinlink": "Fă unu utilizatoru a tău tora",
        "createaccount": "Fă contu (isape)",
+       "gotaccount": "Ai nicâ contu (isape)? $1.",
        "gotaccountlink": "Leagâ-ti",
+       "userlogin-resetlink": "U agârșii parola i numa di utilizatoru?",
+       "userlogin-resetpassword-link": "U agârșii parola?",
        "createacct-emailrequired": "Adresâ di carti electronicâ",
        "createacct-emailoptional": "Adresâ di carti electronicâ (opționalu)",
        "createacct-email-ph": "Bagâ-u adresa a ta di carti electronicâ",
        "newpages-username": "Numa di utilizatoru:",
        "move": "Mutari",
        "movethispage": "Mutâ frândza aestâ",
-       "booksources-go": "Du-ti",
        "allpagessubmit": "Du-ti",
        "watchlist": "Frândzâ avinati",
        "mywatchlist": "Frândzâ avinati",
index 102cbbf..0c888be 100644 (file)
        "cantcreateaccounttitle": "Саҥа ааты киллэрэр сатаммат",
        "cantcreateaccount-text": "[[User:$3|$3]] кыттааччы бу IP-ттан ('''$1''') саҥа бэлиэтэниини бопто.\n\nБыһаарыыта: $3 - ''$2''",
        "cantcreateaccount-range-text": "Бу IP-диапазонтан '''$1''' ааты бэлиэтиири [[User:$3|$3]] боппут. Эн IP-аадырыһыҥ ('''$4''') онно киирсэр эбит. \n\nЫйыллыбыт төрүөтэ: $2.",
-       "viewpagelogs": "Бу сирэй историятын көрдөр",
+       "viewpagelogs": "Бу сирэй сурунаалларын көрүү",
        "nohistory": "Бу сирэй историята суох эбит.",
        "currentrev": "Билиҥҥи барыл",
        "currentrev-asof": "Билиҥҥи торум манна: $1",
index 7f84f3b..5e41676 100644 (file)
        "tog-hideminor": "Cua is acontzos minores in sa pàgina de is ùrtimas mudàntzias",
        "tog-hidepatrolled": "Cua is mudas verificadas in is ùrtimos càmbios",
        "tog-newpageshidepatrolled": "Cua sas pàginas verificadas dae sa lista de sas pàginas noas",
-       "tog-extendwatchlist": "Ammània sa watchlist pro ammustrare totu sos càmbios, non sos prus reghentes ebbia",
+       "tog-extendwatchlist": "Ammània sa watchlist pro ammustrare totus sos càmbios, non sos prus reghentes ebbia",
        "tog-usenewrc": "Pone in pare sos càmbios de cada pàgina in sos ùrtimos càmbios e in sa watchlist",
        "tog-numberheadings": "Auto-numeratzione de sos tìtulos",
        "tog-showtoolbar": "Ammustra sa mustra de sa barra de sas ainas",
        "tog-editondblclick": "Càmbia pàginas cun duos click",
        "tog-editsectiononrightclick": "Abìlita su càmbiu de sas setziones cun click de dereta in sos tìtulos de sas setziones",
-       "tog-watchcreations": "Agiunghe sas pàginas chi apo creadu e sos documentos chi apo carrigadu in sa watchlist mea",
-       "tog-watchdefault": "Agiunghe pàginas e documentos chi apo cambiadu in sa watchlist mea",
-       "tog-watchmoves": "Agiunghe pàginas e documentos chi apo mòvidu in sa watchlist mea",
-       "tog-watchdeletion": "Agiunghe pàginas e documentos chi apo fuliadu in sa watchlist mea",
+       "tog-watchcreations": "Annanghe is pàginas chi apo creadu e is documentos chi apo carrigadu in sa lista de pàginas annotadas mea",
+       "tog-watchdefault": "Annanghe pàginas e documentos chi apo cambiadu in sa lista de pàginas annotadas mea",
+       "tog-watchmoves": "Annanghe pàginas e documentos chi apo mòvidu in sa lista de pàginas annotadas mea",
+       "tog-watchdeletion": "Annanghe pàginas e documentos chi apo burradu in sa lista de pàginas annotadas mea",
        "tog-watchrollback": "Pone is pàginas innue apo fatu su rollback in is pàginas annotadas",
-       "tog-minordefault": "Marca comente minores pro difetu totu sos càmbios",
+       "tog-minordefault": "Marca comente minores pro difetu totus sos càmbios",
        "tog-previewontop": "Ammustra s'anteprima in subra de sa casella de càmbiu e no in suta",
        "tog-previewonfirst": "Ammustra s'anteprima pro sa prima muda",
        "tog-enotifwatchlistpages": "Imbia·mi una post.el. cando b'at àpidu unu càmbiu in una pàgina o in unu documentu de sa watchlist mea",
        "edit": "Càmbia",
        "edit-local": "Càmbia sa descritzione locale",
        "create": "Crea",
-       "create-local": "Agiunghe descritzione locale",
+       "create-local": "Annanghe descritzione locale",
        "editthispage": "Càmbia custa pàgina",
        "create-this-page": "Crea custa pàgina",
        "delete": "Burra",
        "laggedslavemode": "<strong>Atentzione:</strong> Sa pàgina podet non cuntènnere sos agiornamentos prus novos.",
        "readonly": "Database bloccadu",
        "enterlockreason": "Inserta su motivu de su blocu, ispetzifichende su momentu probàbile chi su blocu at a acabbare",
-       "readonlytext": "In custu momentu su database est bloccadu dae aciunturas e àteras modificas, probabilmente pro ordinaria manutentzione a su database, a pustis de custas at a èssere normale torra.\n\nS'aministradore chi dd'at bloccadu at donadu custa ispiegatzione: $1",
+       "readonlytext": "In custu momentu su database est bloccadu dae aciunturas e àteras modificas, probabilmente pro ordinaria manutentzione a su database, a pustis de custas at a èssere normale torra.\n\nS'amministradore chi dd'at bloccadu at donadu custa ispiegatzione: $1",
        "missing-article": "Su database no at agatadu su testu de una pàgina chi diat àere agatadu a suta de su nùmene \"$1\" $2.\n\nCustu a su sòlitu si verìficat cando bi est unu ligòngiu in s'istòria o in unu cunfrontu intre revisiones de una pàgina chi est istada fuliada.\n\nSi no est custu su casu, s'est agatada una faddina de su software.\nPro praghere signa s'acontèssidu a unu [[Special:ListUsers/sysop|amministradore]] ispetzifichende su URL de sa faddina.",
        "missingarticle-rev": "(revisione nùmeru: $1)",
        "missingarticle-diff": "(Dif: $1, $2)",
        "protectedpagetext": "Custa pàgina est istada amparada pro nde prevenner su càmbiu o àteras fatas.",
        "viewsourcetext": "Podes bìere o copiare su còdighe mitza de custa pàgina:",
        "viewyourtext": "Càstia e còpia su còdighe mitza de is <strong>mudàntzias tuas</strong> in custa pàgina:",
-       "protectedinterface": "Custa pàgina frunit testu pro s'interfàtzie de su programma de custa wiki, ed est amparada pro prevènnere abusos.\nPro annànghere o cambiare tradutziones pro totu sas wikis, pro piaghere imprea [//translatewiki.net/ translatewiki.net], su progetu MediaWiki de localizatzione.",
-       "editinginterface": "<strong>Atentzione:</strong> Ses modificande una pàgina chi est impreada pro frunire testu de s'interfàtzie pro su programma.\nCàmbios a custa pàgina ant a influentzare sa bisura de s'interfàtzie impitadore pro àteros impitadores in custa wiki.\nPro annànghere o cambiare tradutziones pro totu sas wikis, pro piaghere imprea [//translatewiki.net/ translatewiki.net], su progetu MediaWiki de localizatzione.",
-       "cascadeprotected": "Custa pàgina est istada amparada dae sas modìficas proite est incluida in {{PLURAL:$1|custa pàgina, chi est amparada|pàginas, chi sunt amparadas}} cun s'optzione \"a tzurru\":\n$2",
+       "protectedinterface": "Custa pàgina frunit testu pro s'interfàtzie de su programma de custa wiki, ed est amparada pro prevènnere abusos.\nPro annànghere o cambiare tradutziones pro totus sas wikis, pro piaghere imprea [//translatewiki.net/ translatewiki.net], su progetu MediaWiki de localizatzione.",
+       "editinginterface": "<strong>Atentzione:</strong> Ses modificande una pàgina chi est impreada pro frunire testu de s'interfàtzie pro su programma.\nCàmbios a custa pàgina ant a influentzare sa bisura de s'interfàtzie impitadore pro àteros impitadores in custa wiki.\nPro annànghere o cambiare tradutziones pro totus sas wikis, pro piaghere imprea [//translatewiki.net/ translatewiki.net], su progetu MediaWiki de localizatzione.",
+       "cascadeprotected": "Custa pàgina est istada amparada dae sas modìficas proite est incluida in {{PLURAL:$1|custa pàgina, chi est amparada|custas pàginas, chi sunt amparadas}} cun s'optzione \"a tzurru\" ativada:\n$2",
        "namespaceprotected": "Non tenes su permissu de cambiare is pàginas in su nùmene-lugu '''$1'''.",
        "customcssprotected": "Non tenes sos permissos pro cambiare custa pàgina CSS proite cuntènnidi sas impostaduras pessonales de un'àteru impitadore.",
        "customjsprotected": "Non tenes sos permissos pro cambiare custa pàgina JavaScript proite cuntènnidi sas impostaduras pessonales de un'àteru impitadore.",
        "summary-preview": "Antiprima ogetu:",
        "subject-preview": "Antiprima tema/tìtulu:",
        "blockedtitle": "S'impitadore est istadu bloccadu",
-       "blockedtext": "<strong>Custu nùmene impitadore o indiritzu IP est stadu bloccadu.</strong>\n\nSu bloccu est stadu postu dae $1.\nSu motivu de su bloccu est: <em>$2</em>.\n\n* Su bloccu incumentzat: $8\n* Su bloccu scadit: $6\n* Intervallu de bloccu: $7\n\nSi boles, podes tzerriare $1 o un'àteru [[{{MediaWiki:Grouppage-sysop}}|amministradore]] pro faeddare de su bloccu.\nNota ca sa funtzione 'Ispedi un'email a custu impitadore' no est ativa ki no est stadu registradu un'indiritzu email vàlidu in is [[Special:Preferences|preferèntzias]] tuas o ki s'usu de custa funtzione est stadu bloccadu.\nS'indiritzu IP atuale est $3, su nùmeru ID de su bloccu est #$5.\nPro praxere spetzìfica totu is particulares in antis in carche siat pregunta de acrarimentu.",
+       "blockedtext": "<strong>Custu nùmene impitadore o indiritzu IP est stadu bloccadu.</strong>\n\nSu bloccu est stadu postu dae $1.\nSu motivu de su bloccu est: <em>$2</em>.\n\n* Su bloccu incumentzat: $8\n* Su bloccu scadit: $6\n* Intervallu de bloccu: $7\n\nSi boles, podes tzerriare $1 o un'àteru [[{{MediaWiki:Grouppage-sysop}}|amministradore]] pro faeddare de su bloccu.\nNota ca sa funtzione 'Ispedi un'email a custu impitadore' no est ativa si no est istadu registradu un'indiritzu email vàlidu in is [[Special:Preferences|preferèntzias]] tuas o si s'impreu de custa funtzione est istadu arreadu.\nS'indiritzu IP atuale est $3, su nùmeru ID de su bloccu est #$5.\nPro praghere ispetzìfica totus is particulares in antis in cale siat pregonta de acrarimentu.",
        "blockednoreason": "perunu motivu inditadu",
        "whitelistedittext": "Pro cambiare is pàginas $1.",
        "nosuchsectiontitle": "Impossìbile agatare sa setzione",
        "explainconflict": "Calicunu àteru at cambiadu custa pàgina in su tempus chi dda fias cambiende tue.\nS'àrea de testu de susu cuntènnet su testu de sa pàgina in sa forma atuale.\nIs mudàntzias tuas sunt ammustradas in s'àrea de testu in suta.\nAs a dèper insertare is mudàntzias tuas in su testu atuale, e pro custu a ddas iscrìer in s'àrea de susu.\n<strong>Solu</strong> su testu in s'àrea de susu at a èsser sarbadu si carcas su butone \"{{int:savearticle}}\".",
        "yourtext": "Su testu tuo",
        "storedversion": "Revisione in archìviu",
-       "editingold": "<strong>Atentzione: Ses cambiende una versione non-agiornada de sa pàgina.</strong>\nSi dda sarbas de aici, totu is càmbios fatos a pustis de custa versione ant a bènnere pèrdidos pro semper.",
+       "editingold": "<strong>Atentzione: Ses cambiende una versione non-agiornada de sa pàgina.</strong>\nSi dda sarbas de aici, totus is càmbios fatos a pustis de custa versione ant a bènnere pèrdidos pro semper.",
        "yourdiff": "Diferèntzias",
-       "copyrightwarning": "Abbàida, pro praghere, chi totu is contributos a {{SITENAME}} sunt cunsideradas lassadas a suta permissu de tipu $2 (càstia $1 pro nde ischire de prus). Si non boles chi s'iscritu tuo potzat èssere cambiadu e re-distribuidu dae chie si siat sena piedade e sena àteros lìmites, non ddu imbies a {{SITENAME}}.\nCun s'imbiu de custu iscritu ses garantende, a responsabilidade tua, si su iscritu ddu as cumpostu tue de persone e in originale, o puru si est istadu copiadu dae una fonte de domìniu pùblicu, o una fonte de gasi, o puru si as otentu permissu craru de impreare custu iscritu e si ddu podes dimustrare. '''NO IMPREARE MATERIALE COBERTU DAE DERETU DE AUTORE SENA PERMISSU CRARU!'''",
-       "titleprotectedwarning": "<strong>Atentzione: Custa pàgina est istada amparada pro fàghere in modu chi ant a serbire [[Special:ListGroupRights|deretos dislindados]]pro la creare.</strong>\nS'ùrtimu elementu de su registru est marcadu inoghe in suta pro referèntzia:",
+       "copyrightwarning": "Abbàida, pro praghere, chi totus is contributos a {{SITENAME}} sunt cunsideradas lassadas a suta permissu de tipu $2 (càstia $1 pro nde ischire de prus). Si non boles chi s'iscritu tuo potzat èssere cambiadu e re-distribuidu dae chie si siat sena piedade e sena àteros lìmites, non ddu insartas inoghe.<br />\nCun s'imbiu de custu iscritu ses garantende, a responsabilidade tua, si su iscritu ddu as cumpostu tue de persone e in originale, o puru si est istadu copiadu dae una fonte de domìniu pùblicu, o una fonte de gasi, o puru si as otentu permissu craru de impreare custu iscritu e si ddu podes dimustrare. <strong>No impreare materiale cobertu dae deretu de autore sena permissu craru!</strong>",
+       "titleprotectedwarning": "<strong>Atentzione: Custa pàgina est istada amparada pro fàghere in modu chi ant a serbire [[Special:ListGroupRights|deretos dislindados]] pro la creare.</strong>\nS'ùrtimu elementu de su registru est marcadu inoghe in suta pro referèntzia:",
        "templatesused": "{{PLURAL:$1|Template impreadu|Templates impreados}} in custa pàgina:",
        "templatesusedpreview": "{{PLURAL:$1|Template impreadu|Templates impreados}} in custa antiprima:",
        "templatesusedsection": "{{PLURAL:$1|Template impreadu|Templates impreados}} in custa setzione:",
        "template-protected": "(bardadu)",
        "template-semiprotected": "(mesu-bardadu)",
        "hiddencategories": "Custa pàgina faghet parte de {{PLURAL:$1|1 categoria cuada|$1 categorias cuadas}}:",
-       "nocreatetext": "{{SITENAME}} at limitadu sa possibilidade de creare pàginas noas a sos impitadores registrados.\nPodes torrare in segus e modificare una pàgina esistente, [[Special:UserLogin|intrare in su contu tuo o creare unu contu nou]].",
+       "nocreatetext": "{{SITENAME}} at limitadu sa possibilidade de creare pàginas noas a sos impitadores registrados.\nPodes torrare in segus e modificare una pàgina esistente, o puru [[Special:UserLogin|intrare in su contu tuo o creare unu contu nou]].",
        "nocreate-loggedin": "Non tenes su permissu de creare pàginas noas.",
        "sectioneditnotsupported-title": "Modìfica de sas setziones non suportada",
        "sectioneditnotsupported-text": "Modìfica de sas setziones non suportada in custa pàgina.",
        "defaultmessagetext": "Testu de su messàgiu predeterminadu",
        "invalid-content-data": "Datos de cuntènnidu invàlidos",
        "content-not-allowed-here": "Cuntènnidu a manera \"$1\" no adduidu in sa pàgina [[$2]]",
-       "editwarning-warning": "S'essida dae custa pàgina diat pòdere cajonare sa pèrdida de totu sos càmbios chi as fatu.\nSi ses autentificadu, podes disabilitare custu avisu in sa setzione \"{{int:prefs-editing}}\" de sas preferèntzias tuas.",
-       "editpage-notsupportedcontentformat-title": "Formadu de su documentu non suportadu",
+       "editwarning-warning": "S'essida dae custa pàgina diat pòdere cajonare sa pèrdida de totus sos càmbios chi as fatu.\nSi ses autentificadu, podes disabilitare custu avisu in sa setzione \"{{int:prefs-editing}}\" de sas preferèntzias tuas.",
+       "editpage-notsupportedcontentformat-title": "Formadu de càbidu non suportadu",
        "content-model-wikitext": "wikitestu",
        "content-model-text": "testu normale",
        "content-model-javascript": "JavaScript",
        "prefs-email": "Sèberos pro sa email",
        "prefs-rendering": "Aparèntzia",
        "saveprefs": "Sarba",
-       "restoreprefs": "Restàura totu is sèberos predefinidos (in totu is setziones)",
+       "restoreprefs": "Restàura totus is sèberos predefinidos (in totus is setziones)",
        "prefs-editing": "Casella de modìfica",
        "rows": "Lìnias:",
        "columns": "Colunnas:",
        "prefs-diffs": "Diferèntzias",
        "userrights-user-editname": "Inserta unu nùmene impitadore:",
        "editinguser": "Cambiamentu de is deretos impitadore de s'impitadore <strong>[[User:$1|$1]]</strong> $2",
+       "userrights-editusergroup": "Cambiare is grupos de impitadores",
        "userrights-groupsmember": "Membru de:",
        "userrights-reason": "Motivu:",
        "userrights-irreversible-marker": "$1*",
        "group-user-member": "{{GENDER:$1|impitadore}}",
        "group-autoconfirmed-member": "{{GENDER:$1|impitadores autocunfirmados}}",
        "group-bot-member": "{{GENDER:$1|bot}}",
-       "group-sysop-member": "{{GENDER:$1|aministradore}}",
+       "group-sysop-member": "{{GENDER:$1|amministradore}}",
        "group-bureaucrat-member": "{{GENDER:$1|buròcrate}}",
        "group-suppress-member": "{{GENDER:$1|tzensore}}",
        "grouppage-user": "{{ns:project}}:Usuàrios",
        "specialloguserlabel": "Atzione fata dae:",
        "speciallogtitlelabel": "Atzione fata subra:",
        "log": "Registros",
-       "allpages": "Totu is pàginas",
+       "allpages": "Totus is pàginas",
        "prevpage": "Pàgina in antis ($1)",
        "allpagesfrom": "Ammustra pàginas a partire dae:",
        "allpagesto": "Ammustra pàginas fintzas a:",
-       "allarticles": "Totu is pàginas",
-       "allinnamespace": "Totu is pàginas (nùmene-logu $1)",
+       "allarticles": "Totus is pàginas",
+       "allinnamespace": "Totus is pàginas (nùmene-logu $1)",
        "allpagessubmit": "Bae",
        "allpages-bad-ns": "Su nùmene-logu \"$1\" non esistit in {{SITENAME}}.",
        "categories": "Categorias",
        "unwatchthispage": "Boga custa pàgina dae sa watchlist tua",
        "notanarticle": "Custa pàgina no est unu artìculu",
        "watchlist-details": "Tenes {{PLURAL:$1|$1 pàgina annotada paris a sa pagina de cuntierra sua|$1 pàginas annotadas paris a is pàginas de cuntierra issoro}}.",
-       "wlshowlast": "Ammustra is ùrtimas $1 oras $2 dies",
+       "wlshowlast": "Ammustra is ùrtimas $1 oras, $2 dies",
        "watchlist-options": "Optziones subra sa lista de pàginas annotadas",
        "watching": "Giunghende a sa watchlist...",
        "unwatching": "Boghende dae sa watchlist...",
        "deletepage": "Fùlia pàgina",
        "confirm": "Cunfima",
        "excontent": "su cuntènnidu fiat: '$1'",
-       "excontentauthor": "su cuntènnidu fiat: '$1' (e s'ùnicu contribudori fiat '[[Special:Contributions/$2|$2]]')",
+       "excontentauthor": "su cuntènnidu fiat: '$1' (e s'ùnicu contribudore fiat '[[Special:Contributions/$2|$2]]')",
        "delete-confirm": "Fùlia \"$1\"",
        "delete-legend": "Fuliare",
        "confirmdeletetext": "Ses acanta de burrare una pàgina cun totu su stòria sua.\nPro praxere, cunfirma ca est intentzione tua fàgher custu, ca connosches is cosseguèntzias de s'atzione tua, a ca custa est cunforma a is [[{{MediaWiki:Policy-url}}|lìnias polìticas]].",
        "exif-contrast-0": "Normale",
        "exif-saturation-0": "Normale",
        "exif-sharpness-0": "Normale",
-       "namespacesall": "totu",
-       "monthsall": "totu",
+       "namespacesall": "totus",
+       "monthsall": "totus",
        "confirmemail": "Cunfirma s'indiritzu e-mail",
        "confirm_purge_button": "OK",
        "confirm-watch-button": "OK",
diff --git a/languages/i18n/ses.json b/languages/i18n/ses.json
new file mode 100644 (file)
index 0000000..4277754
--- /dev/null
@@ -0,0 +1,1779 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Songhay"
+               ]
+       },
+       "tog-underline": "Dobu ganda-žeeriyan:",
+       "tog-hideminor": "Fasal kayney kaŋ hun barmayyaŋ korawey ra tugu",
+       "tog-hidepatrolled": "Fasalyan kurantey tugu barmay korawey ra",
+       "tog-newpageshidepatrolled": "Moo kurantey tugu moo taaga maašeedaa ra",
+       "tog-extendwatchlist": "Hawgay maašeedaa hayandi ka barmawey kul cebe, manti ikokorantaa hinne",
+       "tog-usenewrc": "Barmawey marga moo bande barmay korawey nda hawgayhayey ra",
+       "tog-numberheadings": "Boŋdekerey boŋkabuyan",
+       "tog-showtoolbar": "Goyjinay žeeri fasalyan cebe",
+       "tog-editondblclick": "Naagu cee hinka ka moɲey fasal",
+       "tog-editsectiononrightclick": "Kanbe guma dunbu maaɲey naagu ka dunbu fasalyan tunandi",
+       "tog-watchcreations": "Moɲey kaŋ ay k'i tee nda tukey kaŋ ay g'i zumandi tonton ay hawgayhayey ga",
+       "tog-watchdefault": "Moɲey nda tukey kaŋ ay g'i fasal tonton ay hawgayhayey ga",
+       "tog-watchmoves": "Moɲey nda tukey kaŋ ay g'i ganandi tonton ay hawgayhayey ga",
+       "tog-watchdeletion": "Moɲey nda tukey kaŋ ay g'i tuusu tonton ay hawgayhayey ga",
+       "tog-watchrollback": "Moɲey kaŋ ay n'i taagandi tonton ay hawgayhayey ga",
+       "tog-minordefault": "Fasalyaney kul šilbay sanda ikaynayaŋ nda tilasu",
+       "tog-previewontop": "Moofuryan cebe jina fasal bataa ra",
+       "tog-previewonfirst": "Moofuryan cebe fasalyan jinaa ra",
+       "tog-enotifwatchlistpages": "Bataga sanba yane waati kaŋ moo wala tuku kaŋ goo ay hawgayhayey ra barmay",
+       "tog-enotifusertalkpages": "Bataga sanba yane waati kaŋ ay goykaw šenni moɲoo barmay",
+       "tog-enotifminoredits": "Bataga sanba yane da nda moɲey nda tukey barmay kayna",
+       "tog-enotifrevealaddr": "Ay bataga aderesoo cebe bayrandi batagawey ra",
+       "tog-shownumberswatching": "Goykey kaŋ ga moɲoo hawgay hinnaa cebe",
+       "tog-oldsig": "Kanbežeeri barantaa:",
+       "tog-fancysig": "Kanbežeero tee sanda wikihantum (bila nda nga boŋdobu)",
+       "tog-uselivepreview": "Moofuryan goywaati ra (šiiyan)",
+       "tog-forceeditsummary": "Ay šaawar nda ya na fasal durandiyan dam",
+       "tog-watchlisthideown": "Ay boŋ fasalyaney tugu hawgayhayey ra",
+       "tog-watchlisthidebots": "Maršin fasalyaney tugu hawgayhayey ra",
+       "tog-watchlisthideminor": "Fasalyan kayney tugu hawgayhayey ra",
+       "tog-watchlisthideliu": "Goykaw hurantey fasalyaney tugu hawgayhayey ra",
+       "tog-watchlisthideanons": "Goykaw tugantey fasalyaney tugu hawgayhayey ra",
+       "tog-watchlisthidepatrolled": "Faslayan kurantey tugu hawgayhayey ra",
+       "tog-ccmeonemails": "Batagawey kaŋ ay g'i sanba goykaw taney se gaabu yane",
+       "tog-diffonly": "Ma ši moo gundekuna cebe fayarey cire",
+       "tog-showhiddencats": "Duni tugantey cebe",
+       "tog-norollbackdiff": "Ma ši fayari cebe taagandiyan waate",
+       "tog-useeditwarning": "Ay šaawar waati kaŋ ay ga fasal moo naŋ bila nda barmawey ma gaabundi",
+       "tog-prefershttps": "Ciyari saajante tee waati kul ka huru",
+       "underline-always": "Waati kul",
+       "underline-never": "Abada",
+       "underline-default": "Kuusu wala ceecikaw tilasu",
+       "editfont-style": "Ganda šigira alhaali fasal:",
+       "editfont-default": "Ceecikaw tilasu",
+       "editfont-monospace": "Šigira kankamante",
+       "editfont-sansserif": "Šigira mulla",
+       "editfont-serif": "Šigiri yutta",
+       "sunday": "Alhadi",
+       "monday": "Atinni",
+       "tuesday": "Atalaata",
+       "wednesday": "Alarba",
+       "thursday": "Alhamiisa",
+       "friday": "Alzuma",
+       "saturday": "Asibti",
+       "sun": "Ahd",
+       "mon": "Atn",
+       "tue": "Atl",
+       "wed": "Alb",
+       "thu": "Alh",
+       "fri": "Alz",
+       "sat": "Asb",
+       "january": "Žanwiye",
+       "february": "Feewiriye",
+       "march": "Marsi",
+       "april": "Awiril",
+       "may_long": "Me",
+       "june": "Žuweŋ",
+       "july": "Žuyye",
+       "august": "Ut",
+       "september": "Sektanbur",
+       "october": "Oktoobur",
+       "november": "Noowanbur",
+       "december": "Deesanbur",
+       "january-gen": "Žanwiye",
+       "february-gen": "Feewiriye",
+       "march-gen": "Marsi",
+       "april-gen": "Awiril",
+       "may-gen": "Me",
+       "june-gen": "Žuweŋ",
+       "july-gen": "Žuyye",
+       "august-gen": "Ut",
+       "september-gen": "Sektanbur",
+       "october-gen": "Oktoobur",
+       "november-gen": "Noowanbur",
+       "december-gen": "Deesanbur",
+       "jan": "Žan",
+       "feb": "Few",
+       "mar": "Mar",
+       "apr": "Awl",
+       "may": "Me",
+       "jun": "Žuw",
+       "jul": "Žuy",
+       "aug": "Ut",
+       "sep": "Sekt",
+       "oct": "Okt",
+       "nov": "Now",
+       "dec": "Des",
+       "january-date": "Žanwiye $1",
+       "february-date": "Feewiriye $1",
+       "march-date": "Marsi $1",
+       "april-date": "Awiril $1",
+       "may-date": "Me $1",
+       "june-date": "Žuweŋ $1",
+       "july-date": "Žuyye $1",
+       "august-date": "Ut $1",
+       "september-date": "Sektanbur $1",
+       "october-date": "Oktoobur $1",
+       "november-date": "Noowanbur $1",
+       "december-date": "Deesanbur $1",
+       "pagecategories": "{{PLURAL:$1|Dumi|Dumey}}",
+       "category_header": "Moɲey dumi \"$1\" ra",
+       "subcategories": "Dumi-izey",
+       "category-media-header": "Hẽenandihaya dumi \"$1\" ra",
+       "category-empty": "<em>Sohõda dumoo woo šii nda moo wala hẽenandihaya kul.</em>",
+       "hidden-categories": "{PLURAL:$1|Dumi tugante|Dumi tugantey}}",
+       "hidden-category-category": "Dumi tugantey",
+       "category-subcat-count": "{{PLURAL:$2|Dumoo woo goo nda dumi-izoo woo hinne.|Dumoo woo goo nda dumi-izey wey hinne {{PLURAL:$1|dumi-ize|$1 dumi-ize}}, ka hun $2 ra.}}",
+       "category-subcat-count-limited": "Dumoo woo goo nda {{PLURAL:$1|dumi-izoo|$1 dumi-izey}}.",
+       "category-article-count": "{{PLURAL:$2|Moɲoo woo hinne bara dumoo woo ra.|Ne {{PLURAL:$1|moɲoo|$1 moɲey}} dumoo woo ra, ka hun $2 ra.}}",
+       "category-article-count-limited": "Ne {{PLURAL:$1|moɲoo goo|$1 moɲey goo}} sohõda dumoo ra.",
+       "category-file-count": "{{PLURAL:$2|Tukoo woo hinne bara dumoo woo ra.|Ne {{PLURAL:$1|tukoo goo|$1 tukey goo}} dumoo, ka hun $2 ra.}}",
+       "category-file-count-limited": "Ne {{PLURAL:$1|tukoo goo|$1 tukey goo}} sohõda dumoo ra.",
+       "listingcontinuesabbrev": "(bisa)",
+       "index-category": "Moo šilbantey",
+       "noindex-category": "Moɲey kaŋ mana šilbandi",
+       "broken-file-category": "Mooyaŋ nda tuku dobu kayrayaŋ",
+       "categoryviewer-pagedlinks": "($1) ($2)",
+       "about": "Bay woo ga",
+       "article": "Gundekuna moo",
+       "newwindow": "(ga feera zanfun taaga ra)",
+       "cancel": "Naŋ",
+       "moredotdotdot": "Ka tonton…",
+       "morenotlisted": "Maašeedaa woo mana timme.",
+       "mypage": "Moo",
+       "mytalk": "Šelaŋ",
+       "anontalk": "Šelaŋ IP aderesoo woo se",
+       "navigation": "Naaruyan",
+       "and": "&#32;nda",
+       "qbfind": "Guna",
+       "qbbrowse": "Ceeci",
+       "qbedit": "Fasal",
+       "qbpageoptions": "Moɲoo woo",
+       "qbmyoptions": "Ay moɲey",
+       "faq": "Hãa ka faham",
+       "faqpage": "Project:Hãa ka faham",
+       "actions": "Teerey",
+       "namespaces": "Maafarrey",
+       "variants": "Dumi-dumey",
+       "navigation-heading": "Naaruyan šilbayboŋ",
+       "errorpagetitle": "Firka",
+       "returnto": "Willi $1 ga.",
+       "tagline": "Hun {{SITENAME}} ga",
+       "help": "Faaba",
+       "search": "Ceeci",
+       "searchbutton": "Ceeci",
+       "go": "Koy",
+       "searcharticle": "Koy",
+       "history": "Moo taariki",
+       "history_short": "Taariki",
+       "updatedmarker": "kaŋ taagandi z'ay naarumi koraa",
+       "printableversion": "Karyan dumi",
+       "permalink": "Dobu duumante",
+       "print": "Kar",
+       "view": "Guna",
+       "view-foreign": "Guna $1 ga",
+       "edit": "Fasal",
+       "edit-local": "Gorodoo šilbay fasal",
+       "create": "Tee",
+       "create-local": "Gorodoo šilbay tonton",
+       "editthispage": "Moɲoo woo fasal",
+       "create-this-page": "Moɲoo woo tee",
+       "delete": "Tuusu",
+       "deletethispage": "Moɲoo woo tuusu",
+       "undeletethispage": "Moo tuusantaa woo yeeti",
+       "undelete_short": "Yeeti {{PLURAL:$1|barmay foo|$1 barmay fooyaŋ}}",
+       "viewdeleted_short": "Guna {{PLURAL:$1|barmay tuusante foo|$1 barmay tuusante fooyaŋ}}",
+       "protect": "Jejebu",
+       "protect_change": "barmay",
+       "protectthispage": "Moɲoo woo jejebu",
+       "unprotect": "Jejebu barmay",
+       "unprotectthispage": "Moɲoo woo jejeboo barmay",
+       "newpage": "Moo taaga",
+       "talkpage": "Deede moo woo ga",
+       "talkpagelinktext": "Šelaŋ",
+       "specialpage": "Cerecere moo",
+       "personaltools": "Boro-boŋ goyjinawey",
+       "articlepage": "Gundekuna moɲoo guna",
+       "talk": "Deedeyan",
+       "views": "Gunarey",
+       "toolbox": "Goyjinawey",
+       "userpage": "Goykaw moo guna",
+       "projectpage": "Porože moo guna",
+       "imagepage": "Tuku moo guna",
+       "mediawikipage": "Bataga moo guna",
+       "templatepage": "Leeti moo guna",
+       "viewhelppage": "Faaba moo guna",
+       "categorypage": "Dumi moo guna",
+       "viewtalkpage": "Deedaa guna",
+       "otherlanguages": "Šenni tanayaŋ ra",
+       "redirectedfrom": "(Kaŋ $1 n'a bisandi)",
+       "redirectpagesub": "Bisandi moo",
+       "redirectto": "Bisandi ne:",
+       "lastmodifiedat": "Moɲoo barmay cee koraa $1 hane, $2 waate.",
+       "viewcount": "Moɲoo woo duwandi {{PLURAL:$1|cee foo|$1 cee booboyaŋ}}.",
+       "protectedpage": "Moo jejebante",
+       "jumpto": "Sar ne:",
+       "jumptonavigation": "naaruyan",
+       "jumptosearch": "ceeciyan",
+       "view-pool-error": "Alhaa naŋ, feršikey goo goy šenda ra sohõda.\nGoykaw booboyaŋ ga ceeci ka dii moɲoo woo.\nTaare batu kayna jina de ma ceeci ka dii moɲoo koyne.",
+       "generic-pool-error": "Alhaa naŋ, feršikey goo goy šenda ra sohõda.\nGoykaw booboyan ga ceeci ka dii goy misoo woo.\nTaare batu kayna jina de ma ceeci ka dii y'a koyne.",
+       "pool-timeout": "Goywaati batuyan ben",
+       "pool-queuefull": "Batuyan šillo too",
+       "pool-errorunknown": "Firka šibayante",
+       "pool-servererror": "Batuyan goy kabukaw ši duwandi ($1).",
+       "aboutsite": "{{SITENAME}} ga",
+       "aboutpage": "Porože:Bayray",
+       "copyright": "Gundekuna ga bara $1 cire nda manti kakaw ra.",
+       "copyrightpage": "{{ns:project}}:Alhakey",
+       "currentevents": "Sohõda teerey",
+       "currentevents-url": "Project:Sohõda teerey",
+       "disclaimers": "Yaamarey",
+       "disclaimerpage": "Project: Hankul yaamar",
+       "edithelp": "Fasalyan faaba",
+       "mainpage": "Šintin moo",
+       "mainpage-description": "Šintin moo",
+       "policy-url": "Project:Laada",
+       "portal": "Jamaa batoo",
+       "portal-url": "Project:Jamaa batoo",
+       "privacy": "Sutura laada",
+       "privacypage": "Project:Sutura laada",
+       "badaccess": "Duɲeyaney firka",
+       "badaccess-group0": "N' šii nda fondo ka goyoo woo tee ne.",
+       "badaccess-groups": "Goyoo kaŋ war n'a wiri ga feeri goykey wey de se {PLURAL:$2|margaa|margawey affaa}}: $1.",
+       "versionrequired": "MediaWiki dumi $1 ga waažibandi",
+       "versionrequiredtext": "MediaWiki dumi $1 ga waažibandi ka goy nda moɲoo woo. Dii [Special:Dumi|moo dumi]].",
+       "ok": "Ayyo",
+       "pagetitle": "$1 - {{SITENAME}}",
+       "pagetitle-view-mainpage": "{{SITENAME}}",
+       "backlinksubtitle": "← $1",
+       "retrievedfrom": "Soolomandi ka hun \"$1\" ra",
+       "youhavenewmessages": "{{PLURAL:$3|N' goo nda}} $1 ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|N' goo nda }} $1 ka hun {{PLURAL:$3|goykaw tana|$3 goykaw taney}} ra ($2).",
+       "youhavenewmessagesmanyusers": "N' goo nda $1 goykaw booboyaŋ ra ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|alhabar foo|999=alhabar taagayaŋ}}",
+       "newmessagesdifflinkplural": "{{PLURAL:$1|barmay|999=barmay}} kokorante",
+       "youhavenewmessagesmulti": "War goo nda alhabar taaga $1 ga",
+       "editsection": "fasal",
+       "editold": "fasal",
+       "viewsourceold": "aššil guna",
+       "editlink": "fasal",
+       "viewsourcelink": "aššil guna",
+       "editsectionhint": "Dumbu fasal:$1",
+       "toc": "Gundekuna",
+       "showtoc": "cebe",
+       "hidetoc": "tugu",
+       "collapsible-collapse": "Daabirji",
+       "collapsible-expand": "Hayandi",
+       "confirmable-confirm": "Woy wal'aru no?",
+       "confirmable-yes": "Ayyo",
+       "confirmable-no": "Kalaa",
+       "thisisdeleted": "Guna wala yeeti $1?",
+       "viewdeleted": "$1 guna?",
+       "restorelink": "{{PLURAL:$1|barmay tuusante foo|$1 barmay tuusante fooyaŋ}}",
+       "feedlinks": "Toonandiyan:",
+       "feed-invalid": "Maahantumyan toonandiyan dumi laala.",
+       "feed-unavailable": "Goykondayyan toonandiyaney ši duwandi",
+       "site-rss-feed": "$1 RSS toonandiyan",
+       "site-atom-feed": "$1 Atom toonandiyan",
+       "page-rss-feed": "\"$1\" RSS toonandiyan",
+       "page-atom-feed": "\"$1\" Atom toonandiyan",
+       "feed-atom": "Atom",
+       "feed-rss": "RSS",
+       "red-link-title": "$1 (moɲoo šii bara)",
+       "sort-descending": "Kabu ka zunbu fayyan",
+       "sort-ascending": "Kabu ka ziji fayyan",
+       "nstab-main": "Moo",
+       "nstab-user": "Goykaw moo",
+       "nstab-media": "Hẽenandi moo",
+       "nstab-special": "Cerecere moo",
+       "nstab-project": "Porožewoo ga",
+       "nstab-image": "Tuku",
+       "nstab-mediawiki": "Alhabar",
+       "nstab-template": "Leeti",
+       "nstab-help": "Faaba moo",
+       "nstab-category": "Dumi",
+       "nosuchaction": "Teera tanaa woo šii",
+       "nosuchactiontext": "Goyoo kaŋ tabatandi URL ra ši tee.\nMane firka bara URL hantumoo ra, wala dobu laala ma hanga.\nWoo ga hin ka tee da hasaraw {{SITENAME}} goy porogaramoo ra.",
+       "nosuchspecialpage": "Cerecere moɲoo woo ši bara",
+       "nospecialpagetext": "Maašeede goo moo cerecerante henney se kaŋ ga duwandi [[Special:SpecialPages|{{int:specialpages}}]] ga.",
+       "error": "Firka",
+       "databaseerror": "Bayrayhugu firka",
+       "databaseerror-text": "Bayrayhugu hãayan firka bangay.\nWoo ga hin ka ti porogaram hasaraw tammaasa.",
+       "databaseerror-textcl": "Bayrayhugu hãayan firka bangay.",
+       "databaseerror-query": "Hãayan: $1",
+       "databaseerror-function": "Goymee: $1",
+       "databaseerror-error": "Firka: $1",
+       "laggedslavemode": "<strong>Yaamar:</strong> A ga hin ka tee taagandiri korawey šii moɲoo ra.",
+       "readonly": "Bayrayhugu kufalante",
+       "enterlockreason": "Dalin dam kaŋ kufaloo se, sanda ka žimam waati kaŋ kufaloo ka feera",
+       "readonlytext": "Juwalkaa kaŋ n'a kufal na daliloo woo noo: $1",
+       "missing-article": "Bayrayhugoo mana dii moo foo hantumoo kaŋ a hima ka duu w'a, kaŋ maaɲoo ti \"$1\" $2.",
+       "missingarticle-rev": "(barmayyan#: $1)",
+       "missingarticle-diff": "(Barmay: $1, $2)",
+       "readonly_lag": "Bayrayhugoo n' ka kufalandi nga boŋše waati kaŋ alhaadimi bayrayhugu feršikey ga feršikaw jinehuno gaarandi",
+       "internalerror": "Kunahere firka",
+       "internalerror_info": "Kunahere firka: $1",
+       "filecopyerror": "Mana hin ka tuku \"$1\" bere \"$2\" ga.",
+       "filerenameerror": "Mana hin ka tuku \"$1\" maa barmay \"$2\" ga.",
+       "filedeleteerror": "Mana hin ka tuku \"$1\" tuusu.",
+       "directorycreateerror": "Mana hin ka fooloɲaa \"$1\" tee.",
+       "filenotfound": "Mana hin ka duu tuku \"$1\" barmay.",
+       "unexpected": "Hinna kaŋ mana naanandi: \"$1\"=\"$2\".",
+       "formerror": "Firka: Mana hin ka takari sanba.",
+       "badarticleerror": "Goyoo woo ši hin ka tee moɲoo woo ga.",
+       "cannotdelete": "\"$1\" moo wala tuku mana hin ka tuusandi.",
+       "cannotdelete-title": "Ši hi ka \"$1\" moɲoo tuusu",
+       "delete-hook-aborted": "Dobu foo na tuusuroo ganji.\nA mana dalil kul noo.",
+       "no-null-revision": "Mana hin ka yaada-barmay taaga tee \"$1\" moo se",
+       "badtitle": "Maa laala",
+       "badtitletext": "Moo maaɲoo kaŋ hãandi ga laala, koonu wal'a dobu laybante no šenney wala wiki maaɲey game.",
+       "perfcached": "Bayhayey wey ga tugandi nd'a ga tee kaŋ i ši teji koyne. {{PLURAL:$1|hunyan foo|$1 hunyaŋ}} ga bara tugu dogoo ra..",
+       "perfcachedts": "Bayhayey wey ga tugandi nd'i taagandi cee koraa $1 hane. Fella ra {PLURAL:$4|hunyan foo|$4 hunyaŋ}} ga bara tugudogoo ra.",
+       "querypage-no-updates": "Moɲoo woo taagandirey n' ka kay sohõda.\nNe bayhayey ši kaa ka taagandi sohõda.",
+       "viewsource": "Aššil guna",
+       "viewsource-title": "Aššil guna $1 se",
+       "actionthrottled": "Goy nakasante",
+       "actionthrottledtext": "Ka žiibi bataga ganji, war ga hin ka goyoo woo tee de cee fooyaŋ waati dunba ra, nda war na adadoo din hoo.\nTaare wa ceeci koyne minitiyaŋ ra.",
+       "protectedpagetext": "Moɲoo woo n' ka jejebandi ka barmayyan wala goy tanayaŋ ganji.",
+       "viewsourcetext": "War ga hin ka dii moɲoo ašsiloo nda k'a bere:",
+       "viewyourtext": "War ga hin ka dii <strong>war fasalyaney</strong> aššilo nda k'i bere:",
+       "protectedinterface": "Moɲoo woo ka hantumoo cebe wikiyoo woo porogaramoo se nd'a ga jejebu hasaraw teekey ga. Goy nda [//translatewiki.net/ translatewiki.net], MediaWiki berandiyan porožewoo ka berandiyaŋ tonton wala k'i barmay.",
+       "editinginterface": "<strong>Yaamar:</strong> War goo ma moo fasal kaŋ nd'i ga goy ka goyjinaa porogaram hantumoo cebe. \nBarmay kaŋ ga tee moɲoo ka hantumey kaŋ goykaw ga dii y'ey bere wikiyoo woo ga. Goy nda [//translatewiki.net/ translatewiki.net], MediaWiki berandiyan porožewoo ka barmay wala berandiyaŋ tonton.",
+       "cascadeprotected": "Moɲoo woo ga jejebu barmayyan ga zam'a goo ne {PLURAL:$1|moo kaŋ ti|moɲey kaŋ ti}} jejebante nda \"kaŋandiyan\" suubari kaŋ ga dira: \n$2",
+       "namespaceprotected": "War šii nda fondo ka moɲey barmay <strong>$1</strong> maadogoo ra.",
+       "customcssprotected": "War šii nda fondo ka CSS moɲoo woo barmay zama goykaw tana foo boŋkayandiyaney g'a ra.",
+       "customjsprotected": "War šii nda fondo ka JavaScript barmay zama a goo nda goykaw tana foo boŋkayandiyaney.",
+       "mycustomcssprotected": "War šii nda fondo ka CSS moɲoo woo barmay.",
+       "mycustomjsprotected": "War šii nda fondo ka JavaScript moɲoo woo barmay.",
+       "myprivateinfoprotected": "War šii nda fondo ka war sutura alhabaroo moɲoo woo barmay.",
+       "mypreferencesprotected": "War šii nda fondo ka war ibaayey barmay.",
+       "ns-specialprotected": "Moo cerecerantey ši hin ka barmandi.",
+       "titleprotected": "[[User:$1|$1]] na maaɲoo woo jejebu za teeyanoo ga.\nI na daliloo noo \"<em>$2</em>\" ra.",
+       "filereadonlyerror": "Mana hin ka \"$1\" tukoo barmay zama tuku \"$2\" jišidogoo goo cawyan-hinne alhaali ra.\n\nJuwalkaa kaŋ n'a kufal na daliloo woo noo: \"$3\"",
+       "invalidtitle-knownnamespace": "Maa laala \"$2\" maadogoo nda \"$3\" hantumoo bande",
+       "invalidtitle-unknownnamespace": "Maa laala maadoo hinna \"$1\" šibayante nda \"$2\" hantumoo bande",
+       "exception-nologin": "Mana huru",
+       "exception-nologin-text": "Taare huru ka hin ka duu moɲoo wala teeraa woo.",
+       "exception-nologin-text-manual": "Taare $1 ka hin ka duu moɲoo wala teeraa woo.",
+       "virus-badscanner": "Hanseyan laala: wirisi gunakaw šibayante: <em>$1</em>",
+       "virus-scanfailed": "gunari kaŋ (ašariya $1)",
+       "virus-unknownscanner": "wirisi safari šibayante:",
+       "logouttext": "Bay kaŋ moɲey jerey ga hin ka gaabandi ka cebe sanda war n' ka cindi ka huru, hala war ma ceecikaw tugudogoo tuusu.",
+       "welcomeuser": "Kubayni, $1!",
+       "welcomecreation-msg": "War kontoo tee ka ben.\nWar ga hin ka war {{SITENAME}} [[Special:Preferences|ibaayey]] barmay nda war ga baa.",
+       "yourname": "Goykaw maa:",
+       "userlogin-yourname": "Goykaw ma",
+       "userlogin-yourname-ph": "Ni goykaw maaɲoo dam",
+       "createacct-another-username-ph": "Goykaw maa dam",
+       "yourpassword": "Šennikufal:",
+       "userlogin-yourpassword": "Šennikufal",
+       "userlogin-yourpassword-ph": "ni šennikufaloo dam",
+       "createacct-yourpassword-ph": "Šennikufal dam",
+       "yourpasswordagain": "Šennikufal hantum taaga:",
+       "createacct-yourpasswordagain": "Šennikufal tabatandi",
+       "createacct-yourpasswordagain-ph": "Šennikufal dam taaga",
+       "remembermypassword": "Hong'ay huruyan tammaasa ceecikaa woo ga (a ma ši bisa {PLURAL:$1|jirbi|jirbi}}) $1",
+       "userlogin-remembermypassword": "Ay goywaatoo ma gaabandi ka feera",
+       "userlogin-signwithsecure": "Ciya nda saajaw",
+       "yourdomainname": "Ni zunbu dogoo:",
+       "password-change-forbidden": "Ni ši hin ka šennikufaley barmay wikiyoo woo ga.",
+       "externaldberror": "Huru",
+       "login": "Huru",
+       "nav-login-createaccount": "Huru / kontu tee",
+       "userlogin": "Huru / kontu tee",
+       "userloginnocreate": "Huru",
+       "logout": "Fatta",
+       "userlogout": "Fatta",
+       "notloggedin": "Mana huru",
+       "userlogin-noaccount": "Šii nda kontu wala?",
+       "userlogin-joinproject": "Dii {{SITENAME}}",
+       "nologin": "Šii nda kontu wala? $1.",
+       "nologinlink": "Kontu tee",
+       "createaccount": "Kontu tee",
+       "gotaccount": "Huru",
+       "gotaccountlink": "Huru",
+       "userlogin-resetlink": "Dirŋa ni kontu šilbawey?",
+       "userlogin-resetpassword-link": "Dirŋa ni šennikufaloo?",
+       "userlogin-helplink2": "Ay gaa ka huru",
+       "userlogin-loggedin": "N' huru ka ben sanda {{GENDER:$1|$1}}.\nGanda takaddaa zaa ka huru goykaw tana.",
+       "userlogin-createanother": "Kontu tee",
+       "createacct-emailrequired": "Bataga aderesu",
+       "createacct-emailoptional": "Bataga aderesu (suubari)",
+       "createacct-email-ph": "Ni bataga aderesoo dam",
+       "createacct-another-email-ph": "Bataga aderesu dam",
+       "createaccountmail": "Šiiyan šennikufal dam saaye bande nd'a sanba bataga aderesu tabatantaa do",
+       "createacct-realname": "Maa cimi (suubari)",
+       "createaccountreason": "Dalil:",
+       "createacct-reason": "Dalil",
+       "createacct-reason-ph": "Hayaa kaŋ se war goo ma kontu waana tee",
+       "createacct-captcha": "Saajaw korošiyan",
+       "createacct-imgcaptcha-ph": "Hantumoo kaŋ war ga dii y'a beene dam",
+       "createacct-submit": "War kontoo tee",
+       "createacct-another-submit": "Kontu waana foo tee",
+       "createacct-benefit-heading": "Boro kaŋ ga hima war ka {{SITENAME}} tee.",
+       "createacct-benefit-body1": "{{PLURAL:$1|barmay $1}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|moo $1}}",
+       "createacct-benefit-body3": "Cee koraa {{PLURAL:$1|kanbuzaakaw $1}}",
+       "badretype": "Kufalšenney kaŋ war n'i dam ši tenji.",
+       "userexists": "Maa waanante suuba taare.",
+       "loginerror": "Huruyan firka",
+       "createacct-error": "Kontu feeriyan firka",
+       "createaccounterror": "Mana hin ka kontu tee: $1",
+       "nocookiesnew": "War aleewawey n' ka kay.\nW'i tunandi, de war ma huru nda war goykawmaa nda šennikufal taagey.",
+       "nocookieslogin": "War aleewawey n' ka kay.\nW'i tunandi, de war ma ceeci koyne.",
+       "nocookiesfornew": "Goykaw kontoo mana mana teendi zam'ir mana hin ka ng'aššiloo tabatandi.\nWar m'alhakiika kaŋ aleewawey tunandi, moɲoo zumandi taaga nda ceeci koyne.",
+       "nocookiesforlogin": "{{int:nocookieslogin}}",
+       "noname": "War mana goykaw maa henna kayandi.",
+       "loginsuccesstitle": "Huryanoo boori",
+       "loginsuccess": "<strong>War huru {{SITENAME}} ra sohõ sanda \"$1\".</strong>",
+       "nosuchuser": "Goykaw kul šii kaŋ ti \"$1\".  \nGoykawmaaɲey ga kula nda harfu azzaati.\nWar hantumoo koroši, wala [[Special:UserLogin/signup|kontu taaga tee]].",
+       "nosuchusershort": "Goykaw kul šii kaŋ ti \"$1\".\nHantum-tenjiyan koroši.",
+       "nouserspecified": "War ga hima ka goykawmaa kayandi.",
+       "login-userblocked": "Goykaw gagayandi. Huruyan šii nda fondo.",
+       "wrongpassword": "Ceeci koyne taare.",
+       "wrongpasswordempty": "Šennikufaloo kaŋ huru ga koonu. \nTee koyne taare.",
+       "passwordtooshort": "Šennikufaley ka hima ka bara nda {{harfu 1$|PLURAL:$1}.",
+       "password-name-match": "War šennikufaloo ma ši hima war goykaw maaɲoo.",
+       "password-login-forbidden": "Goykaw maa nda šennikufaley wey ši hin ka koy.",
+       "mailmypassword": "Šennikufaloo yeeti",
+       "passwordremindertitle": "Šiiyan šennikufal taaga {{SITENAME}} se",
+       "passwordremindertext": "Boro foo (sanda ni, nda IP aderesu $1) na šennikufal taaga wiri {{SITENAME}} ($4) se nd'a kayandi \"$3\" ga. Nda war mana boona woo, war mma hima ka huru nda šennikufal taaga suuba sohõ. War šiiyan šennikufaloo waato ga ben {{PLURAL:$5|jirbi foo|jirbi $5}} ra. \n\nNda boro waani foo no k'a wiri, wala war n' ka honga war šennikufaloo nda war ši boona k'a barmay koyne, war ga hin ka yaamaroo woo muray, nda ka gaabu ka goy nda šennikufal žeenaa.",
+       "noemail": "Bataga aderesu kul mana jisandi \"$1\" goykaa se.",
+       "noemailcreate": "War ga hima ka bataga aderesu henna noo.",
+       "passwordsent": "Šennikufal taaga n' ka sanbandi bataga aderesu jisantaa ga  \"$1\" se. Ceeci ka huru koyne nda n' duu w'a.",
+       "blocked-mailpassword": "I na war IP aderesoo ganji a ma hantum, adiši a ši duu fondo ka goy nda šennikufal yeetiyan dabaroo ka zanbayan gagay.",
+       "eauthentsent": "Cimandiyan bataga n' ka sanbandi bataga aderesu tabatantaa ga. \nWar ga hima ka šilbawey kaŋ goo bataga laasaabu jina, hala war ga hin ka war ga hin ka bataga tana kul sanba ka cimandi kaŋ alhakiika ra kontoo ti war wane.",
+       "throttled-mailpassword": "Šennikufal yeetiyan bataga n' ka sanbandi war se a ga too {{PLURAL:$1|guuru $1}}.\nKa zanbayan ganji, šennikufal yeetiyan bataga foo de ma sanbandi {{PLURAL:$1|guuru $1}} ra.",
+       "mailerror": "Bataga sanbayan firka: $1",
+       "acct_creation_throttle_hit": "Boro kaŋ ga ciya nda war IP aderesoo na {{PLURAL:$1|kontu $1}} jirbi koraa ra, woo ti alkadaroo beero kaŋ ga hin ka tee waatoo woo ra. \nWoo sabboo se, borey kaŋ ga goy nda IP aderesoo woo ši hin ka kontu kul tee koyne sohõda.",
+       "emailauthenticated": "War bataga aderesoo n' ka tabatandi $2 boŋ $3 ga.",
+       "emailnotauthenticated": "War bataga aderesoo mana tabatandi.\nBataga kul ši sanbandi alhaaley wey affoo ku še.",
+       "noemailprefs": "Bataga aderesu tabatandi war ibaayey ra alhaaley wey ma hin ka goy.",
+       "emailconfirmlink": "War bataga aderesoo tabatandi",
+       "invalidemailaddress": "Bataga aderesoo ši hin ka zaandi z'a mma hima takari laybante.   \nSoobay k'aderesu takari henna dam wala farru koonu naŋ.",
+       "cannotchangeemail": "Kontu bataga aderesey ši hin ka barmay wikiyoo woo ga.",
+       "emaildisabled": "Nungoo woo ši hin ka bataga sanba.",
+       "accountcreated": "Kontoo tee ka ben",
+       "accountcreatedtext": "Kontoo goykaa no ka tee [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|batu]]) se.",
+       "createaccount-title": "Kontu tee {{SITENAME}} se",
+       "createaccount-text": "Boro foo na kontu tee war bataga aderesoo se {{SITENAME}} ($4) kaŋ maa ti \"$2\" ga, nda \"$3\" šennikufaloo.\nWa maa hantum ka hima ka huru nda šennikufal barmay sohõ.\n\nWar ga hin ka batagaa woo muray nda kontoo woo n' ka dere ka tee.",
+       "login-throttled": "War ceeci cee booboyaŋ ka huru.\nTaare batu $1 jina ka ciya koyne.",
+       "login-abort-generic": "War mana hin ka huru - Laybu",
+       "login-migrated-generic": "War kontoo n' ka ganandi nda war goykaw maaɲoo ši ye ka bara wikiyoo woo ga.",
+       "loginlanguagelabel": "Šenni:$1",
+       "suspicious-userlogout": "War ceeciroo ka fatta mongu zam'a ga hima kaŋ ceecikaw kayraa wala tugudoo tokore k'a sanba.",
+       "createacct-another-realname-tip": "Maa cimi noo nda n' ga baa.\nNda war soobay k'a noondi, boro ga goy nd'a ka goykaw alhaali noo ngi goyoo se.",
+       "pt-login": "Huru",
+       "pt-login-button": "Huru",
+       "pt-createaccount": "Kontu tee",
+       "pt-userlogout": "Fatta",
+       "php-mail-error-unknown": "Firka šibayante PHP mail() goymee se",
+       "user-mail-no-addy": "A ceeci ka bataga sanda bila nda bataga aderesu",
+       "user-mail-no-body": "A ceeci ka bataga koonu wala kaŋ ga hansa ka duurya sanba.",
+       "changepassword": "Šennikufal barmay",
+       "resetpass_announce": "Ka huru ka ben, war ga hima ka šennikufala taaga dam.",
+       "resetpass_text": "<!-- Hantun tonton ne -->",
+       "resetpass_header": "Kontoo šennikufaloo barmay",
+       "oldpassword": "Šennikufal žeena:",
+       "newpassword": "Šennikufal taaga:",
+       "retypenew": "Šennikufal taagaa hantum koyne:",
+       "resetpass_submit": "Šennikufal barmay ka huru",
+       "changepassword-success": "War šennikufaloo barmay ka boori!",
+       "changepassword-throttled": "War ceeci cee booboyaŋ ka huru.\nTaare batu $1 jina ka ceeci koyne.",
+       "resetpass_forbidden": "Šennikufaley ši hin ka barmay",
+       "resetpass-no-info": "War ga hima ka huru jina ka duu moɲoo woo.",
+       "resetpass-submit-loggedin": "Šennikufal barmay",
+       "resetpass-submit-cancel": "Naŋ",
+       "resetpass-wrong-oldpass": "Sohõda wala batuyan šennikufal laala.\nA ga hin ka tee war bay na šennikufaloo barmay wala batuyan wane taaga wiri.",
+       "resetpass-recycled": "Taare war šennikufaloo yeeti k'a tee affoo kaŋ nanti war sohõda šennikufaloo.",
+       "resetpass-temp-emailed": "War n' ka huruyan nda šiiyan ašariya kaŋ sanbandi bataga ra.\nKa huru ka timme, war ga hima ka šennikufal taaga dam ne:",
+       "resetpass-temp-password": "Šiiyan šennikufal:",
+       "resetpass-abort-generic": "Dobu foo no ka šennikufal barmayyanoo ganji.",
+       "resetpass-expired": "War šennikulaloo waatoo ben. Wa šennikufal taaga dam ka huru.",
+       "resetpass-expired-soft": "War šennikufaloo waatoo ben nd'a ga hima ka yeeti. War šennikufal taaga suuba sohõda, wala \"{{int:resetpass-submit-cancel}}\" naagu k'a yeeti waati foo.",
+       "resetpass-validity-soft": "War šennikufaloi ši boori: $1\n\nTaare šennikufal taaga suuba sohõ, wala \"{{int:resetpass-submit-cancel}}\" naagu k'a yeeti waati foo.",
+       "passwordreset": "Šennikufal yeeti",
+       "passwordreset-text-one": "Takaddaa woo timmandi ka duu šiiyan šennikufal bataga ra.",
+       "passwordreset-text-many": "{{PLURAL:$1|Faari foo toonandi ka duu šiiyan šennikufal foo bataga ra.}}",
+       "passwordreset-legend": "Šennikufal yeeti",
+       "passwordreset-disabled": "Šennikufal yeetiyan n' ka kaŋ wikiyoo woo se.",
+       "passwordreset-emaildisabled": "Bataga alhaaley n' ka kaŋ wikiyoo ga.",
+       "passwordreset-username": "Goykaw maa:",
+       "passwordreset-domain": "Zunbudoo:",
+       "passwordreset-capture": "Cebe batagaa kaŋ hun woo ra?",
+       "passwordreset-capture-help": "Nda war na bataa woo šilbay, batagaa (nda šiiyan šennikufal) ga cebe war se nd'a ga sanbandi goykaa do.",
+       "passwordreset-email": "Bataga aderesu:",
+       "passwordreset-emailtitle": "Kontu šilbawey {{SITENAME}} ga",
+       "passwordreset-emailtext-ip": "Boro foo (sanda war da, nda IP aderesu $1) ceeci ka war\n šenniufaloo barmay {{SITENAME}} ($4) se. Goykaa woo {{PLURAL:$3|kontoo ti}\n kaŋ ga hanga bataga aderesoo woo:\n\n $2\n\n{{PLURAL:$3|Šiiyan šennikufaloo woo|Šiiyan šennikufaley wey}}  ga buu {{PLURAL:$5|zaari foo|zaari}} ra.\nWar ga hima ka huru nda šennifulal taaga dam sohõ. Nda boro waani ka ceeci ka woo tee\n nda war honga war šennikufal žeenaa, nda war ši boona koyne\n ka šennikufal barmay,\n war ga hin ka šaawaroo woo murayy nda soobay ka goy nda war\n šennikufal žeenaa.",
+       "passwordreset-emailtext-user": "Goykaw $1 {{SITENAME}} wiri ka war sennikufaloo yeeti {{SITENAME}} se\n($4). Goykaa woo {{PLURAL:$3|kontoo ga|kontey ga}} marga nda nda bataga aderesoo woo:\n\n$2\n\n {{PLURAL:$3|Šiiyan šennikufaloo woo|Šiiyan šennikufaley wey}} ga buu {{PLURAL:$5|jirbi foo|jirbi $5}} ra.\nWar ga hima ka huru  nda šennikufal taaga suuba sohõ. Nda boro waani ka ceeci\n ka woo tee wala war ga honga wara šennikufal žeenaa nda war ši boona koyne\n k'a barma, war ga hin ka šaawaroo woo muray nda gaabandi ka goy nda war\n šennikufal žeenaa.",
+       "passwordreset-emailelement": "Goykaw maa: $1\nŠiiyan šennikufal: $2",
+       "passwordreset-emailsent": "Šennikufal yeetiyan bataga n' ka sanbandi war se.",
+       "passwordreset-emailsent-capture": "Šennikulal yeetiyan bataga n' ka sanbandi war se, kaŋ ga cebandi ne ganda.",
+       "passwordreset-emailerror-capture": "Šennikufal yeetiyan bataga n' ka teendi, kaŋ ga cebandi ne ganda, amm'a mana hin ka sanbandi {{GENDER:$2|goykaw}} do: $1",
+       "changeemail": "Bataga aderesu barmay",
+       "changeemail-text": "Takaddaa woo toonandi ka war bataga aderesoo barmay. War ka hima ka war šennikufaloo dam ka barmayyanoo tabatandi.",
+       "changeemail-no-info": "War ga hima ka huru ka hin duu moɲoo woo.",
+       "changeemail-oldemail": "Sohõda bataga aderesu",
+       "changeemail-newemail": "Bataga aderesu taaga:",
+       "changeemail-none": "(baffoo)",
+       "changeemail-password": "War {{SITENAME}} šennikufaloo:",
+       "changeemail-submit": "Bataga barmay",
+       "changeemail-throttled": "War wiri ka huru cee booboyaŋ.\nTaare wa batu  $1 jina ka ceeci koyne.",
+       "resettokens": "Tammaasawey yeeti",
+       "resettokens-text": "War ga hin ka tammaasawey yeeti kaŋ ga too war ma hin ka dii sutura bayhaya tanayaŋ nda war kontoo ne.\n|nWar ga hima k'a tte nda war dere k'i noo boro waani se wala nda war ga šikka kaŋ boro waani n' ka huru kontoo ra.",
+       "resettokens-no-tokens": "Tammaasa kul šii yeetiyan se.",
+       "resettokens-legend": "Tammaasawey yeeti",
+       "resettokens-tokens": "Tammaasawey:",
+       "resettokens-token-label": "$1 (sohõda hinna: $2)",
+       "resettokens-watchlist-token": "Tammaasa interneti toonandiyanoo se (Atom/RSS) [[Special:Hawgayhayey|barmawey war hawgayhayey maašeedaa ga]]",
+       "resettokens-done": "Tammaasawey yeeti:",
+       "resettokens-resetbutton": "Tammaasa suubantey yeeti",
+       "bold_sample": "Hantum warga",
+       "bold_tip": "Hantum warga",
+       "italic_sample": "Hantum šiirante",
+       "italic_tip": "Hantum šiirante",
+       "link_sample": "Dobu maa",
+       "link_tip": "Kunahere dobu",
+       "extlink_sample": "http://www.example.com dobu maa",
+       "extlink_tip": "Tarayhere dobu (honga http:// jinekanji)",
+       "headline_sample": "Boŋžeeri hantum",
+       "headline_tip": "Adadu 2 boŋžeeri",
+       "nowiki_sample": "Hantum bila nda fasal-takari dam ne",
+       "nowiki_tip": "Wiki fasal-takaroo muray",
+       "image_sample": "Example.jpg",
+       "image_tip": "Tuku damgamante",
+       "media_sample": "Example.ogg",
+       "media_tip": "Tuku dobu",
+       "sig_tip": "War kanbežeeroo nda waati šilbay",
+       "hr_tip": "Žeeri kanante (w'a tee cee fooyaŋ de)",
+       "summary": "Duurandi:",
+       "subject": "Teekaw/boŋžeeri:",
+       "minoredit": "Barmay kayna ti woo:",
+       "watchthis": "Moɲoo woo hawgay",
+       "savearticle": "Moɲoo gaabu",
+       "preview": "Moofur",
+       "showpreview": "Moofuryan cebe",
+       "showdiff": "Barmawey cebe",
+       "blankarticle": "<strong>Yaamar:</strong> Moɲoo kaŋ war goo m'a tee t'ikoonu.\nNda war na \"{{int:savearticle}}\" naagu, moɲoo ga kaa ta tee bila nda gundekuna.",
+       "anoneditwarning": "<strong>Yaamar:</strong> War mana huru. Borey kul hin ka dii war IP aderesoo nda war na barmay kul tee. Nda war <strong>[$1 huru]</strong> wala <strong>[$2 kontu tee]</strong>, war barmawey ga hanga war goykaw maaɲoo bande, nda nafaw taney kul.",
+       "anonpreviewwarning": "<em>War mana huru. Gaabuyan ga too war IP aderesoo ma jisandi moɲoo woo fasalyan taarikoo ra.</em>",
+       "missingsummary": "<strong>Hongu:</strong> War mana barmay duurandi noo.\nWa \"{{int:savearticle}}\" naagu koyne, kul war barmaa ga gaabundi bila nd'affoo.",
+       "missingcommenttext": "Wa feeriyan foo hantum ganda.",
+       "missingcommentheader": "<strong>Hongu:</strong> War mana teekaw/boŋžeeri noo feeriyanoo woo se.\nWa \"{{int:savearticle}}\" naagu koyne, kul war barmaa ga gaabundi bila nd'affoo.",
+       "summary-preview": "Duurandi moofuryan:",
+       "subject-preview": "Teekaw|boŋžeeri moofuryan:",
+       "blockedtitle": "Goykaa n' ka gagayandi",
+       "blockedtext": "<strong>War goykaw maa wala IP aderesoo n' ka hode.</strong>\n\n$1 no k'a hode.\nDaliloo kaŋ a n'a noo ti <em>$2</em>.\n\n* Hode šintinoo: $8\n* Hode benantaa: $6\n* Boraa kaŋ š'a na hoderoo miile: $7\n\nWar ga hin ka hantum $1 wala [[{{MediaWiki:Grouppage-sysop}}|juwalkaa]] se ka hoderoo šennoo tee.\nWar ši hin ka bataga sanba nda \"email this user\" fondaa nda manti war bataga aderesu henna ka tabatandi war [[Special:Ibaayey|kontu ibaayey]] ra nd'i mana war gagay a ga. \nWar sohõda IP aderesoo to $3 nda hode šilbaa ti #$5.\nWa beene šilbawey kul dam hãayan bataga kaŋ war g'a tee ra.",
+       "autoblockedtext": "Haya na war IP aderesoo nga boŋše zama goykaw waani foo k'a ka goy, boro kaŋ $1 n'a hode.Daliloo kaŋ nondi ti:\n\n:<em>$2</em>\n\n* Hode šintinoo: $8\n* Hode benantaa: $6\n* Boraa kaŋ i n'a miile hodeyan se: $7\n\nLaasaabu kaŋ war ši hima ka goy nda \"email this user\" alhaaloo nda manti war mma bara nda bataga aderesu jisante war [[Special:Preferences|goykaw ibaayey]] ra nd'i mana war gagay ka goy nd'a.\n\nWar sohõda IP aderesoo ti $3 nda hodeyan šilbaa ti #$5.\nTaare wa šilbawey wey kul dam hãayan kul kaŋ war g'a sanba ra.",
+       "blockednoreason": "dalil kul šii",
+       "whitelistedittext": "Taare $1 ka moɲey fasal.",
+       "confirmedittext": "War ga hima ka war bataga aderesoo tabatandi jina ka moɲey fasal.\nWar bataga aderesoo tabatandi [[Special:Preferences|goykaw ibaayey]] ra.",
+       "nosuchsectiontitle": "Ši hin ka dii dunboo",
+       "nosuchsectiontext": "War ceeci ka dunbu foo kan ši bara fasal.\nA hin ka tee a ganandi wal'a tuusandi waatoo kaŋ war goo ma moɲoo guna.",
+       "loginreqtitle": "Huruyan ga waažibi",
+       "loginreqlink": "huru",
+       "loginreqpagetext": "Taare $1 ka moɲey jerey.",
+       "accmailtitle": "Šennikufaloo sanbandi",
+       "accmailtext": "Ɲaami-ra šennikufal kaŋ tee  [[User talk:$1|$1]] sanbandi $2 do. A ga hin ka barmay  <em>[[Special:ChangePassword|šennikufal barmay]] moɲoo ga </em> nda war ga huru.",
+       "newarticle": "(Itaaga)",
+       "newarticletext": "War hanga dobu kaŋ ka fatta moo foo kaŋ ši bara jina ga.\nKa moɲoo tee, soobay ka hantum ganda bataa ra ([$1 faaba moɲoo] guna ka bay ka tonton.\nNda war n' ka dere ka kaa ne, war ceecikaa <strong>banda</strong>butoŋoo naagu.",
+       "anontalkpagetext": "----\n<em>Kakaw moɲoo woo goo goykaw kaŋ maaɲoo ši bangay se, boro kaɲ mana kontu tee jina, wal'a ši a ka goy.</em>\nAdiši kal'ir ma goy nda hinna IP aderesu ka boraa alhaaloo tabatandi.\nIP aderesu dumoo woo ga hin ka žemnandi goykaw booboyaŋ game.\nNda war ti goykaw kaŋ maaɲoo ši bangay nda war ga tammahã kaŋ war ši kula nda šenney wey, [[Special:UserLogin/signup|kontu tee]] wala [[Special:UserLogin|huru]] ka ganji hiino war nda goykaw taney kaŋ šii nda maa ma birji cere ra.",
+       "noarticletext": "Hantum kul šii moɲoo woo ga sohõda.\nWar ga hin ka [Special:Search/{{PAGENAME}}|moɲoo woo maaɲoo ceeci]] moɲe jerey ra,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|moo={{FULLPAGENAMEE}}}} hantum himantey guna],\nwala [{{fullurl:{{FULLPAGENAME}}|teera=fasal}} moɲoo woo fasal]</span>.",
+       "noarticletext-nopermission": "Hantum kul šii moɲoo woo ra sohõda.\nWar ga hin ka [[Special:Search/{{PAGENAME}}|moɲoo woo maaɲoo ceeci]] moɲey jerey ra wala <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|moo={{FULLPAGENAMEE}}}} cceci hantum himantey ra]</span>, amma war ši nda fondo ka moɲoo woo tee.",
+       "missing-revision": "Filla #$1 moɲoo kaŋ maaɲoo ti \"{{FULLPAGENAME}}\" se ši bara.\n\nWoo ga doona ka tee nda boro hanga taariki dobu žeena banda kaŋ ga fatta moo tuusante ga.\nŠilbaywey ga hin ka duwandi [{{fullurl:{{#Special:Log}}/tuusu|moo={{FULLPAGENAMEE}}}} tuusuyan taariki] ra.",
+       "userpage-userdoesnotexist": "Goykaw kontu \"$1\" mana jisandi.\nTaare guna wala war ga boona ka moɲoo woo tee/fasal.",
+       "userpage-userdoesnotexist-view": "Goykaw kontu \"$1\"  mana jisandi.",
+       "blocked-notice-logextract": "Goykaw n' ka hode sohõda.\nHodeyan kokorantaa šilbay ceebandoo ga duwandi ganda feeriyanoo ra:",
+       "clearyourcache": "<strong>Laasaabu:</strong> Nd war gaabundi ka ben, war ga hin ka war ceecika tugudogoo koli ka dii barmawey.\n* <strong>Firefox / Safari:</strong> Gaabu <em>Shift</em> nda war ga <em>Zumandi taaga</em> naagu, wala naagu <em>Ctrl-F5</em> wala <em>Ctrl-R</em> (<em>⌘-R</em> Mac ga)\n* <strong>Google Chrome:</strong> <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> naagu Mac ga)\n* <strong>Internet Explorer:</strong> Gaabu <em>Ctrl</em> nda war ga <em>Taagandi</em> naagu, wala <em>Ctrl-F5</em> naagu\n * <strong>Opera:</strong> Tugudogoo tuusu <em>Goyjinawey → Ibaayey</em> ra",
+       "usercssyoucanpreview": "<strong>Alhiila:</strong> Goy nda \"{{int:showpreview}}\" butoŋoo ka war CSS taagaa šii jina k'a gaabu. before saving.",
+       "userjsyoucanpreview": "<strong>Alhiila:</strong>Goy nda \"{{int:showpreview}}\" butoŋoo ka  war JavaScript taagaa šii jina k'a gaabu.",
+       "usercsspreview": "<strong>Honga kaŋ war na mma moofur de war CSS goykaa ga.\nA mana gaabundi jina!</strong>",
+       "userjspreview": "<strong>Honga kaŋ war goo ma šii/moofur de war JavaScript goykaa ga.\nA mana gaabundi jina!</strong>",
+       "sitecsspreview": "<strong>Honga kaŋ war mma moofur de CSS woo ga.\n A mana gaabundi jina!</strong>",
+       "sitejspreview": "<strong>Honga kaŋ war mma moofur de JavaScript ašariyaa woo ga.\nA mana gaabundi jina!</strong>",
+       "userinvalidcssjstitle": "<strong>Yaamar:</strong> \"$1\" kuuru kul šii.\nLaada .css nda .js moɲey ga goy nda karfu kayna maa, sanda {{ns:user}}:Foo/vector.css manti {{ns:user}}:Foo/Vector.css.",
+       "updated": "(Taagante)",
+       "note": "<strong>Laasaabu:</strong>",
+       "previewnote": "<strong>Honga kaŋ war moofuryan de ti wo.</strong>\nWar barmawey mana gaabundi jina!",
+       "continue-editing": "Koy fasal nungu here",
+       "previewconflict": "Moofuryanoo woo ga tenji nda beene hantum fasalyan doo, z'a ga bangay nda war soobay k'a gaabu.",
+       "session_fail_preview": "<strong>Alhaa naŋ! Ir mana hin ka war barmaa ka koy nda jine za goywaatoo bayhayey dere.</strong>\nTaare ceeci k'a tee koyne.\nNd'a ši koy hala sohõ, ceeci ka [[Special:UserLogout|fatta]] nda huru taaga.",
+       "session_fail_preview_html": "<strong>Alhaa naŋ! Ir mana hin ka war barmaa ka koy nda jine za goywaatoo bayhayey dere.</strong>\n\n<em>Zama {{SITENAME}} goo nda HTML gani ka dira, moofuryan mma tugu ka ganji i ma kaŋ JavaScript ga.</em>",
+       "token_suffix_mismatch": "<strong>I wanji war barmaa ga zama war daykaa na tonbi harfey birji fasalyan tammaasaa ra.</strong>\nI wanji barmaa ga ka ganji moo hantumoo ma hasara.\nWoo ka tee waati kaŋ war ga goy nda maršin interneti-bande tokore goymee kaŋ ši nda maa.",
+       "edit_form_incomplete": "<strong>Barmay takari jerey mana too feršikaa do; naagu ceeci hinka ka dii kaŋ war barmawey ga timme de war ma ceeci koyne.</strong>",
+       "editing": "Goo ma $1 fasal",
+       "creating": "Goo ma $1 tee",
+       "editingsection": "Goo ma $1 fasal (dunbu)",
+       "editingcomment": "Goo ma $1 fasal (dunbu taaga)",
+       "editconflict": "Fasal cerehooyan: $1",
+       "explainconflict": "Boro foo na moɲoo woo barmay za war šintin k'a fasal.\nBeene hantum nungoo goo nda moo hantumoo takaa kaŋ nd'a bara sohõda.\nWar barmawey ga cebandi gandehere hantum nungoo ra.\nWar ga hima ka barmawey marga hantum barantaa ra.\nMoɲoo kan goo beene hantum nungoo ra <strong>hinne</strong> ma gaabundi nda war na \"{{int:savearticle}}\" naagu.",
+       "yourtext": "War hantumoo",
+       "storedversion": "Barmayyan jisante",
+       "nonunicodebrowser": "<strong>Yaamar: War ceecikaw ši Unicode kanbe.</strong>\nA workaround is in place to allow you to safely edit pages: Non-ASCII characters will appear in the edit box as hexadecimal codes.War ga hin ka šendaa woo koli nungu foo ra kaŋ naŋ war moɲey ma fasal nda saajaw. Harfey kaŋ manti ASCII ga bangay fasal bataa ra sanda ferši-iddu ašariyayaŋ.",
+       "editingold": "<strong>Yaamar: War goo ma goy nda filla dumi žeena moɲoo woo se.</strong>\nNda war war n'a gaabu, barmawey kul kaŋ tee fillaa woo bandaa ga dere.",
+       "yourdiff": "Zilayyaney",
+       "copyrightwarning": "Taare laasaabu kaŋ kanbuzaamey kul kaŋ tee {{SITENAME}} se ga tee sanda i n' ka fattandi $2 cire (dii $1 ka bay ka tonton).\nNda war ši baa war hantumoo ma barmay laala nd'a ma žemnandi forba, kul ma ši  a sanba ne.<br />\nWar ga allaahidu noo kaŋ war n'a hantum war boŋše, kaŋ war man'a bere ka kaa baytal doo for ga wala forba aššil tana.\n<strong>War ši goy-waani kul sanba bila nda alhaku koyey duɲeyanoo!</strong>",
+       "copyrightwarning2": "Laasaabu kaŋ kanbuzaamawey kul kaŋ tee {{SITENAME}} se, hantumkaw fooyaŋ ga hin ki fasal, barmay wal'i k'i tuusu.\nNda war ši boona war hantumoo ma barmay laala, kul war ma ši a sanba ne. <br />\nWar ga allaahidu no kaŋ war n'a hantum war boŋše, wala k'a bere ka hun baytal nungu ga wala forba aššil tana (dii $1 ka bay ka tonton).\n<strong>War ma ši goy kul sanba bila nda hantumkey alhaku duɲeyanoo!</strong>",
+       "longpageerror": "<strong>Firka: Hantumoo kaŋ sanbandi kuuroo ka sawa nda  {{PLURAL:$1|cebsi-ize $1}} long, kaŋ ga bisa {{PLURAL:$2|cebsi-ize $2}}.</strong>\nA ši hin ka gaabundi.",
+       "readonlywarning": "<strong>Yaamar: Bayhayahugoo",
+       "log-fulllog": "Ceebandu hantum kul guna",
+       "edit-hook-aborted": "Delbu na fasalyanoo say.\nA mana fahamandiyan kul noo.",
+       "edit-gone-missing": "Mana hin ka moɲoo taagandi.\nA ga hima an' ka tuusandi.",
+       "edit-conflict": "Fasal cerehooyan",
+       "edit-no-change": "War fasalyan mana zaandi zama hantumoo mana barmay kul.",
+       "postedit-confirmation-created": "Moɲoo n' ka tee.",
+       "postedit-confirmation-restored": "Moɲoo n' ka willi.",
+       "postedit-confirmation-saved": "War fasalyanoo n' ka gaabundi",
+       "edit-already-exists": "Mana hin ka moo taaga tee.Affoo no kaŋ ga bara.",
+       "defaultmessagetext": "Tilasu alhabar hantum",
+       "content-failed-to-parse": "Mana hin ka $2 gundekuna fesu-fesu $1 takari se: $3",
+       "invalid-content-data": "Gundekuna bayhaya laala",
+       "content-not-allowed-here": "\"$1\" gundekuna ši koy moɲoo woo ga [[$2]]",
+       "editwarning-warning": "Nda war na moɲoo naŋ, a ga hin ka tee barmawey kaŋ war n'i tee kul ga dere.\nNda war huru ka ben, war ga hin ka yaamaroo wii war ibaayey \"{{int:prefs-editing}}\" dunboo ra.",
+       "editpage-notsupportedcontentformat-title": "Gundekuna takari ši koy ne",
+       "editpage-notsupportedcontentformat-text": "Gundekuna takari $1 ši koy ne gundekuna takari $2 bande.",
+       "content-model-wikitext": "wikihantum",
+       "content-model-text": "hantum kaaray",
+       "content-model-javascript": "JavaScript",
+       "content-model-css": "CSS",
+       "expensive-parserfunction-warning": "<strong>Yaamar:</strong> Moɲoo woo goo nda fesu-fesu goyjinay alhaali booboyaŋ.\n\nA ga hima ka bara nda {{PLURAL:$2|ciyari}} $2, {{PLURAL:$1| ciyari $1 bara sohõ}}.",
+       "expensive-parserfunction-category": "Moɲey kaŋ goo nda fesu-fesu goyjinay alhaali booboyaŋ",
+       "post-expand-template-inclusion-warning": "<strong>Yaamar:</strong> Leeti azzaatoo ga hansa ka beeri.\nLeeti fooyaŋ mana tonton ne.",
+       "post-expand-template-inclusion-category": "Moɲey kaŋyaŋ ra leeti ga ng'azzaatoo hoo.",
+       "post-expand-template-argument-warning": "<strong>Yaamar:</strong> Moɲoo woo goo nda, nd'a kacca, leeti hujja foo kaŋ  azzaatoo hayandiroo ga bebbeeri.\nHujjaa woo n' ka naŋandi.",
+       "post-expand-template-argument-category": "Moɲey kaŋyaŋ goo nda leeti hujja naŋanteyaŋ",
+       "parser-template-loop-warning": "Leeti zollo maatante: [[$1]]",
+       "parser-template-recursion-depth-warning": "Leeti fillari guusuyan dimaa n' ka hoo ($1)",
+       "language-converter-depth-warning": "Šenni berekaw guusuyan dimmaa n' ka hoo ($1)",
+       "node-count-exceeded-category": "Moɲey kaŋyaŋ ra guli hinnaa n' ka hoo",
+       "node-count-exceeded-category-desc": "Moɲoo ga guli hinna alkadaroo hoo.",
+       "node-count-exceeded-warning": "Moɲoo na guli hinnaa hoo",
+       "expansion-depth-exceeded-category": "Moɲey kaŋyaŋ ra hayandiri guusuyanoo hoo",
+       "expansion-depth-exceeded-category-desc": "Moɲoo ga hayandiri guusuyan kul ibeeroo hoo.",
+       "expansion-depth-exceeded-warning": "Moɲoo ga hayandiri guusuyanoo hoo",
+       "parser-unstrip-loop-warning": "Feferiyan-naŋ zollo maatandi",
+       "parser-unstrip-recursion-limit": "Feferiyan-filla dimmaa hoo ($1)",
+       "converter-manual-rule-error": "Firka bangay kanbe šenni bereyan ašariyaa ra",
+       "undo-success": "Fasalyan ga hin ka borrandi.\nGuna ganda deedandiyanoo ka tabatandi kaŋ woo no war ga boona k'a tee, nda waati din wa ganda barmawey gaabu ka fasalyan borroyanoo benandi.",
+       "undo-failure": "Barmaa ši hin ka taafeeri zama game barmay fooyaŋ ga cere hoo.",
+       "undo-norev": "Barmaa mana hin ka taafeeri zam'a ši bara wal'a n' ka tuusandi.",
+       "undo-nochange": "A ga hima kaŋ barmaa n' ka taafeeri ka ben.",
+       "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|deede]]) na $1 fillaa taafeeri",
+       "undo-summary-username-hidden": "Goykaw tugante na $1 fillaa taafeeri",
+       "cantcreateaccounttitle": "Ši hin ha kontu tee",
+       "cantcreateaccount-text": "[User:$3|$3]] ganji kontu ma tee IP aderesu (<strong>$1</strong>) ga.\n\nDaliloo kaŋ $3 n'a noo ti <em>$2</em>",
+       "cantcreateaccount-range-text": "[[User:$3|$3]] ganji kaŋ kontu ma tee IP aderesey kaŋyaŋ goo '''$1''' laamaa ra ga, sanda war IP aderesoo ('''$4''').\n\nDaliloo kaŋ $3 n'a noo ti ''$2''",
+       "viewpagelogs": "Hantum taarikey guna moɲoo woo se",
+       "nohistory": "Barmay taariki kul šii moɲoo woo se.",
+       "currentrev": "Filla kokorantaa",
+       "currentrev-asof": "Filla kokorante za $1",
+       "revisionasof": "Filla za $1",
+       "revision-info": "{{GENDER:$6|$2}}$7 fillaa za $1",
+       "previousrevision": "← Filla žeena",
+       "nextrevision": "Filla kul itaagaa →",
+       "currentrevisionlink": "Filla kokorante",
+       "cur": "cur",
+       "next": "jine",
+       "last": "bisante",
+       "page_first": "jina",
+       "page_last": "kora",
+       "histlegend": "Zilayyan suubari: Arajo batawey šilbay fillawey se k'i deedandi, de ma dam butoŋ wala ganda butoŋ naagu.<br />\nŠilbayɲaa: <strong>({{int:cur}})</strong> = zilayyan nda filla kokorantaa, <strong>({{int:last}})</strong> = zilayyan nda filla bisantaa, <strong>{{int:minoreditletter}}</strong> = barmay kayna.",
+       "history-fieldset-title": "Ceeci taariki",
+       "history-show-deleted": "Tuusu hinne",
+       "histfirst": "ikul ižeenaa",
+       "histlast": "ikul itaagaa",
+       "historysize": "({{PLURAL:$1|cebsi $1}})",
+       "historyempty": "(koonu)",
+       "history-feed-title": "Filla taariki",
+       "history-feed-description": "Filla taariki moɲoo woo se wikiyoo ga",
+       "history-feed-item-nocomment": "$1 $2 hane/waate",
+       "history-feed-empty": "Moɲoo kaŋ war n'a wiri ši bara.\nA ga hin ka tee a tuusandi ka hun wikiyoo ga, wal'a duu maa taaga.Šii nda [[Special:Search|ceeciyan wiki ga]] moo taaga himantey se.",
+       "rev-deleted-comment": "(fasal duurandi n' ka hun)",
+       "rev-deleted-user": "(goykaw hun)",
+       "rev-deleted-event": "(hantum ceebandu teera hun)",
+       "rev-deleted-user-contribs": "[goykaw wala IP aderesu hun - barmaa tugandi sanbarey se]",
+       "rev-deleted-text-permission": "Moo fillaa woo n' ka <strong>tuusandi</strong>.\nŠilbawey ga hin ka duwandi [{{fullurl:{{#Special:Log}}/tuusu|moo={{FULLPAGENAMEE}}}} tuusu taariki] ra.",
+       "rev-suppressed-text-permission": "Moo fillaa woo n' ka <strong>tuusandi</strong>.\nŠilbawey ga hin ka duwandi [{{fullurl:{{#Special:Log}}/tuusu|moo={{FULLPAGENAMEE}}}} tuusuyan taariki].",
+       "rev-deleted-text-unhide": "Moo fillaa woo n' ka <strong>tuusandi</strong>.\nŠilbawey ga hin ka duwandi [{{fullurl:{{#Special:Log}}/tuusu|moo={{FULLPAGENAMEE}}}} tuusu taariki] ra.\nWar ga hin ka [dii $1 fillaa woo] nda war ga boona ka koy jine.",
+       "rev-suppressed-text-unhide": "Moo fillaa woo n' ka <strong>tuusandi</strong>.\nŠilbawey ga hin ka duwandi [{{fullurl:{{#Special:Log}}/tuusu|moo={{FULLPAGENAMEE}}}} tuusu taariki] ra.\nWar ga hin ka [dii $1 fillaa woo] nda war ga boona ka koy jine.",
+       "rev-deleted-text-view": "Moo fillaa woo n' ka <strong>tuusandi</strong>.\nWar ga hin ka dii y'a; šilbawey ga hin ka duwandi [{{fullurl:{{#Special:Log}}/tuusu|moo={{FULLPAGENAMEE}}}} tuusu taariki] ra.",
+       "rev-suppressed-text-view": "Moo flllaa woo n' ka <strong>tuusandi</strong>.\nWar ga hin ka dii y'a; šilbawey ga hin ka duwandi [{{fullurl:{{#Special:Log}}/tuusu|moo={{FULLPAGENAMEE}}}} tuusu taariki].",
+       "rev-deleted-no-diff": "War ši hin ka dii zilayyanoo woo zama fillawey affoo n' ka <strong>tuusandi</strong>.\nŠilbawey ga hin ka duwandi [{{fullurl:{{#Special:Log}}/tuusu|moo={{FULLPAGENAMEE}}}} tuusu taariki] ra.",
+       "rev-suppressed-no-diff": "War ši hin ka dii zilayyanoo woo zama fillawey affaa n' ka <strong>tuusandi</strong>.",
+       "rev-deleted-unhide-diff": "Fillawey affaa zilayyanoo woo se n' ka <strong>tuusandi</strong>.\nŠilbawey ga hin ka duwandi [{{fullurl:{{#Special:Log}}/tuusu|moo={{FULLPAGENAMEE}}}} tuusu taariki log] ra.\nWar ga hin ka [dii $1 zilayyanoo] nda war ga boona ka koy jine.",
+       "rev-suppressed-unhide-diff": "Fillawey affaa zilayyanoo woo n' ka <strong>tuusandi</strong>.\nŠilbawey ga hin ka duwandi [{{fullurl:{{#Special:Log}}/tuusu|moo={{FULLPAGENAMEE}}}} tuusu taariki log] ra.\nWar ga hin ka [dii $1 zilayyanoo woo] nda war ga boona ka koy jine.",
+       "rev-deleted-diff-view": "Fillawey affaa zilayyanoo woo se n' ka <strong>tuusandi</strong>.\nWar ga hin ka dii zilayyanoo woo; šilbawey ga hin ka duwandi [{{fullurl:{{#Special:Log}}/tuusu|moo={{FULLPAGENAMEE}}}} tuusu taariki] ra.",
+       "rev-suppressed-diff-view": "Fillawey affaa zilayyanoo n' ka <strong>tuusandi</strong>.\nWar ga hin ka dii zilayyanoo woo; šilbawey ga hin ka duwandi [{{fullurl:{{#Special:Log}}/tuusu|moo={{FULLPAGENAMEE}}}} tuusu taariki] ra.",
+       "rev-delundel": "diiyan alkadar barmay",
+       "rev-showdeleted": "cebe",
+       "revisiondelete": "Fillawey tuusu/yeeti",
+       "revdelete-nooldid-title": "Toodoo filla laala",
+       "revdelete-nooldid-text": "War mana toodoo fillawey tabatandi ka goyoo woo tee\n filla tabatante ši bara, wala war mma ceeci ka sohõda fillaa tugu.",
+       "revdelete-no-file": "Tukoo tabatantaa ši bara.",
+       "revdelete-show-file-confirm": "Alhakiika kaŋ war ga boona ka dii tukoo filla tuusante foo guna \"<nowiki>$1</nowiki>\" kaŋ tee $2 hane $3 waate?",
+       "revdelete-show-file-submit": "Ayyo",
+       "revdelete-selected-text": "{{PLURAL:$1|Filla suubante|Filla suubantey}} [[:$2]] se:",
+       "revdelete-selected-file": "{{PLURAL:$1|Tuku dumi suubante| Tuku dumi suubantey}} [[:$2]] se:",
+       "logdelete-selected": "{{PLURAL:$1|Hantum ceebandu teera suubante| Hantum ceebandu teera suubantey}}:",
+       "revdelete-text-text": "Filla tuusantey ga bangay moo taarikoo ra, amma gundekunaa jereyaŋ šii duwandi jamaa kul se.",
+       "revdelete-text-file": "Tuku dumi tuusantey ga bangay moo taarikoo ra, amma gundekunaa jereyaŋ šii duwandi jamaa kul se.",
+       "logdelete-text": "Hantum ceebandu teera tuusantey ga bangay hantum taarikoo ra, amma gundekunaa jereyaŋ šii duwandi jamaa kul se.",
+       "revdelete-text-others": "Juwalkaw tanayaŋ ga hin ka duu gundekuna tugantaa wal'i m'a tuusu, nda jejebu tontoniyaŋ mana huru a se.",
+       "revdelete-confirm": "Tabatandi kaŋ war g'anniya ka woo tee, kaŋ war faham nd'allamaana kaŋ g'a ra, nda kaŋ war goo ma woo tee [[{{MediaWiki:Policy-url}}|laada]] bande.",
+       "revdelete-suppress-text": "Tuusuyan ga hima ka tee misey wey cine <strong>hinne</strong> ra:\n* alhabar kaŋ ga hima nda miimanda nda maa hasaraw\n* alhabar kaŋ ga sutura laada hoo\n*: <em>hugu aderesu nda talfon lanba, ganda kartidanti lanba, nda šilbay taney</em>",
+       "revdelete-legend": "Kayandi hayey kaŋ borey ga dii y'ey",
+       "revdelete-hide-text": "Filla hantum",
+       "revdelete-hide-image": "Tuku gundekuna tugu",
+       "revdelete-hide-name": "Teera nda toodoo tugu",
+       "revdelete-hide-comment": "Duurandi fasal",
+       "revdelete-hide-user": "Fasalkaa goykaw maaɲoo/IP aderesu",
+       "revdelete-hide-restricted": "Bayhayey tuusu k'i kaa juwalkey nda goykaw taney jine",
+       "revdelete-radio-same": "(ma ši barmay)",
+       "revdelete-radio-set": "Tugante",
+       "revdelete-radio-unset": "Boro ga dii y'a",
+       "revdelete-suppress": "Bayhayey tuusu k'i kaa juwalkey nda goykaw taney jine",
+       "revdelete-unsuppress": "Kankamandey kaa  filla willantey ga",
+       "revdelete-log": "Dalil:",
+       "revdelete-submit": "Kanandi {PLURAL:$1|filla}} kanante ga",
+       "revdelete-success": "<strong>Filla diiyan alkadar taagandi ka boori.</strong>",
+       "revdelete-failure": "<strong> Filla diiyan alkdar mana hin ka taagandi:</strong>\n$1",
+       "logdelete-success": "<strong>Hantum ceebandu diiyan alkadar kayandi ka boori.</strong>",
+       "logdelete-failure": "<strong>Hantum ceebandu diiyan alkdar mana kayandi:</strong>\n$1",
+       "revdel-restore": "diiyan alkadar barmay",
+       "pagehist": "Moo taariki",
+       "deletedhist": "Taariku tuusante",
+       "revdelete-hide-current": "Firka bangay kaŋ haya-izoo kaŋ tee $2 waate, $1 hane ga tugandi: Sohõda fillaa ti woo.\nA ši hin ka tugandi.",
+       "revdelete-show-no-access": "Firka bangay kaŋ haya-izoo kaŋ tee $2 waate, $1 hane ga cebandi: Haya-izoo n' ka šilbay nda \"restricted\".\nWar ši nda fondo ka duu w'a.",
+       "revdelete-modify-no-access": "Firka bangay kaŋ haya-izoo kaŋ tee $2 waate, $1 hane ga barmay: Haya-izoo ga šilbay nda \"restricted\".\nWar ši nda fondo ka duu w'a.",
+       "revdelete-modify-missing": "Firka bangay kaŋ haya-ize nda tammaasa $1: A šii bayhayhugoo ra!",
+       "revdelete-no-change": "<strong>Yaamar:</strong> Haya-izoo kaŋ tee $2 waate, $1 hane duu diiyan alkadar kayandiyan waažibantey ka ben.",
+       "revdelete-concurrent-change": "Firka kaŋ haya-izoo kaŋ tee $2 waate, $1 hane ga barmay: Nga assariyaa ga bangay sanda boro tana foo k'a barmay waatoo kaŋ war ceeci k'a barmay.\nHantum ceebandu taarikey koroši.",
+       "revdelete-only-restricted": "Firka bangay kaŋ haya-izoo kaŋ tee $2 waate, $1 hane ga tugandi: War ga hin k'a tuusu k'a kaa juwalkey jine bila nda war ma diiyan alkadar suubarey affoo kayandi.",
+       "revdelete-reason-dropdown": "*Yamma tuusu dalile\n** Hantumkaw alhaku hooyan\n** Gundekuna laala wala sutura-hooyan alhabar\n** Goykaw maa laala\n** Miimanda wala maahasaraw allamaana",
+       "revdelete-otherreason": "Dalil tana/tontoni:",
+       "revdelete-reasonotherlist": "Dalil tana",
+       "revdelete-edit-reasonlist": "Tuusu daliley fasal",
+       "revdelete-offender": "Filla hantumkaw:",
+       "suppressionlog": "Tuusu ceebandu taariki",
+       "suppressionlogtext": "Ganda maašeeda goo nda tuusarey nda hodeyaney kaŋ sabboo ti gundekuna kaŋ tugandi juwalkey se.\n Dii [[Special:BlockList|hode maašeeda]] maašeedaa se kaŋ tee sohõda goy barrantey nda hodantey se.",
+       "mergehistory": "Moo taarikey marga",
+       "mergehistory-header": "Moɲoo woo ga naŋ war ma taarikoo fillawey marga aššil moo faa se k'a tee moo taaga.\nWar m'alhakiika kaŋ barmaa woo ga moo taarikoo faaba a ma cindi cere bande.",
+       "mergehistory-box": "Moo hinka fillawey marga:",
+       "mergehistory-from": "Aššil moo",
+       "mergehistory-into": "Toodoo moo:",
+       "mergehistory-list": "Fasal taariki kaŋ ga hin ka marga",
+       "mergehistory-merge": "Fillawey wey kaŋ tee [[:$1]] se ga hin ka marga ka tee [[:$2]].\nArajo butoŋ soofu naagu k'a marga nda fillawey hinne kaŋyaŋ tee waati tabatantaa ga wal'a se jine.\nLaasaabu kaŋ nda boro too naaruyan dobey ga, i ga soofoo woo yeeti alhaali žeenaa ga.",
+       "mergehistory-go": "Fasalyaney kaŋ ga hin ka marga cebe",
+       "mergehistory-submit": "Fillawey marga",
+       "mergehistory-empty": "Filla kulyaŋ mana margandi.",
+       "mergehistory-success": "[[:$1]] {{PLURAL:$3|filla}} $3 margandi ka boori ka tee [[:$2]].",
+       "mergehistory-fail": "Ši hin taariki margaroo tee, taare moo nda waati kayandiyaney guna ka boori.",
+       "mergehistory-fail-toobig": "Ši hin ka taariki margaroo tee zam'a ga bisa {{PLURAL:$1|filla}} $1 kaŋ ga ganandi waati din.",
+       "mergehistory-no-source": "$1 aššil moo ši bara.",
+       "mergehistory-no-destination": "$1 toodoo moo ši bara.",
+       "mergehistory-invalid-source": "Ašsil moɲoo ga hima ka bara nda maa henna.",
+       "mergehistory-invalid-destination": "Toodoo moɲoo ga hima ka bara nda maa henna.",
+       "mergehistory-autocomment": "Na [[:$1]]  marga k'a tee [[:$2]]",
+       "mergehistory-comment": "Na [[:$1]] k'a tee [[:$2]]: $3",
+       "mergehistory-same-destination": "Aššil nda toodoo moɲey ši hin ka tee affollokaa da",
+       "mergehistory-reason": "Dalil:",
+       "mergehistory-revisionrow": "$1 ($2) $3 . . $4 $5 $6",
+       "mergelog": "Margari hantum ceebandu",
+       "pagemerge-logentry": "na [[$1]] marga k'a tee [[$2]] (hala filla $3)",
+       "revertmerge": "Margari say",
+       "mergelogpagetext": "Ganda margari kokorantey maašeedaa, taka kaŋ nda moo taariki foo ga huru affaa ra.",
+       "history-title": "Filla taariki \"$1\" se",
+       "difference-title": "Zilayyan \"$1\" fillawey game",
+       "difference-title-multipage": "Zilayyan \"$1\" nda \"$2\" game",
+       "difference-multipage": "(Zilayyan moɲey game)",
+       "lineno": "Žeeri $1:",
+       "compareselectedversions": "Filla suubantey deedandi",
+       "showhideselectedversions": "Diiyan dimma barmay filla suubantey se",
+       "editundo": "borro",
+       "diff-empty": "(Ši zilay)",
+       "diff-multi-sameuser": "({{PLURAL:$1|Gam filla $1}} goykaw follokaa se ši cebandi)",
+       "diff-multi-otherusers": "({{PLURAL:$1|Gam filla $1}} {{PLURAL:$2|goykaw $1}} se ši cebandi)",
+       "diff-multi-manyusers": "({{PLURAL:$1|Gam filla $1}} a ga bisa {{PLURAL:$2|goykaw}} $2 se ši cebandi)",
+       "difference-missing-revision": "{{PLURAL:$2|Gam filla $1}} zilayyanoo woo se ($1) {{PLURAL:$2|mana}} duwandi.\n\nZilayyan dobu žeena moo tuusante ga no ma doona ka woo te.\nŠilbawey ga hin ka duwandi [{{fullurl:{{#Special:Log}}/tuusu|moo={{FULLPAGENAMEE}}}}  tuusu taarikoo ra.]",
+       "searchresults": "Ceeci hunyaney",
+       "searchresults-title": "Ceeci hunyaney \"$1\" se",
+       "titlematches": "Moo maa tenjandey",
+       "textmatches": "Moo hantum tenjandey",
+       "notextmatches": "Moo hantum tenjandiyaŋ kul šii",
+       "prevn": "{{PLURAL:$1|$1}} bisante",
+       "nextn": "jine {{PLURAL:$1|$1}}",
+       "prevn-title": "{{PLURAL:$1|hunyan}} $1 bisante",
+       "nextn-title": "jine {{PLURAL:$1|hunyan}} $1",
+       "shown-title": "Cebe {{PLURAL:$1|hunyan}} $1 moo ra",
+       "viewprevnext": "Guna ($1 {{hoobu-fayakaw}} $2) ($3)",
+       "searchmenu-exists": "<strong>Moo goo kaŋ maaɲoo ti \"[[:$1]]\" wikiyoo woo ga.</strong> {{PLURAL:$2|0=|Guna da ceeci hunyan taney kaŋ fatta.}}",
+       "searchmenu-new": "<strong>Moɲoo tee \"[[:$1]]\" wikiyoo woo ga!</strong> {{PLURAL:$2|0=|Guna da moɲoo kaŋ duwandi nda war ceeciroo.|Guna da ceeci hunyan kaŋ fatta.}}",
+       "searchprofile-articles": "Gundekuna moɲey",
+       "searchprofile-images": "Hẽenandi jinawey",
+       "searchprofile-everything": "Hayakul",
+       "searchprofile-advanced": "Koyjinante",
+       "searchprofile-articles-tooltip": "Ceeci $1 ra",
+       "searchprofile-images-tooltip": "Tukey ceeci",
+       "searchprofile-everything-tooltip": "Gundekuna kul ceeci (nda deede moɲey da)",
+       "searchprofile-advanced-tooltip": "Guna laada maafarrey ra",
+       "search-result-size": "$1 ({{PLURAL:$1|kalima $1}})",
+       "search-result-category-size": "{{PLURAL:$1|koydayze $1}} ({{PLURAL:$2|1 dumi-ize $2}}, {{PLURAL:$3|tuku $3}})",
+       "search-redirect": "($1 bisandi)",
+       "search-section": "($1 dunbu)",
+       "search-file-match": "(ga tenji nda tuku gundekuna)",
+       "search-suggest": "War n' ka tammahãa: $1",
+       "search-interwiki-caption": "Porože ɲayzey",
+       "search-interwiki-default": "Hunyaney $1 ga:",
+       "search-interwiki-more": "(tontoni)",
+       "search-relatedarticle": "Himante",
+       "searchrelated": "himante",
+       "searchall": "kul",
+       "showingresults": "Showing below up to {{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> results}} starting with #<strong>$2</strong>.",
+       "showingresultsinrange": "Goo ma cebe {{PLURAL:$1|<strong>1</strong> hunyan|<strong>$1}} gamoo ra #<strong>$2</strong> hala #<strong>$3</strong>.",
+       "search-showingresults": "{{PLURAL:$4|Hunyan <strong>$1</strong> - <strong>$3</strong>}}",
+       "search-nonefound": "Hunyan kul ši tenji nda hãayanoo.",
+       "powersearch-legend": "Ceeciyan koyjinante",
+       "powersearch-ns": "Ceeci maafarrey:",
+       "powersearch-togglelabel": "Koroši:",
+       "powersearch-toggleall": "Kul",
+       "powersearch-togglenone": "Baffoo",
+       "powersearch-remember": "Honga suubaroo hiino ceeciyaney se",
+       "search-external": "Tarayhere ceeciyan",
+       "searchdisabled": "{{SITENAME}} ceeciyan n' ka kayandi.\nWar ga hin ka ceeci nda Google waatoo woo ra.\nLaasaabu kaŋ ngi šilbawey {{SITENAME}} gundenaa se ga hima ižeenayaŋ.",
+       "search-error": "Firka bangay ceeciyan waate: $1",
+       "preferences": "Ibaayey",
+       "mypreferences": "Ibaayey",
+       "prefs-edits": "Barmawey hinnaa:",
+       "prefsnologintext2": "Huru taare ka war ibaayey barmay.",
+       "prefs-skin": "Kuuru",
+       "skin-preview": "Moofur",
+       "datedefault": "Ibaayey kul šii",
+       "prefs-labs": "Šiidoo alhaaley",
+       "prefs-user-pages": "Goykaw moɲey",
+       "prefs-personal": "Goykaw alhaali",
+       "prefs-rc": "Barmay korawey",
+       "prefs-watchlist": "Hawgayhayey",
+       "prefs-watchlist-days": "Zaarey ka fatta hawgayhayey ra:",
+       "prefs-watchlist-days-max": "{{PLURAL:$1|Zaari}} $1 ibeeri",
+       "prefs-watchlist-edits": "Barmay hinna kul ibeeroo ka cebe hawgawhayey hayantey ra:",
+       "prefs-watchlist-edits-max": "Hinna kul ibeeroo: 1000",
+       "prefs-watchlist-token": "Hawgayhayey tammaasa:",
+       "prefs-misc": "Haya birjantey",
+       "prefs-resetpass": "Šennikufal barmay",
+       "prefs-changeemail": "Bataga aderesu barmay",
+       "prefs-setemail": "Bataga aderesu kayandi",
+       "prefs-email": "Bataga suubarey",
+       "prefs-rendering": "Bangayyan alhaali",
+       "saveprefs": "Gaabu",
+       "restoreprefs": "Tilasu kayandiyaney kul yeeti (dunbey kul ra)",
+       "prefs-editing": "Goo ma fasal",
+       "rows": "Sorrawey:",
+       "columns": "Soofey:",
+       "searchresultshead": "Ceeci",
+       "stub-threshold": "Šiifa <a href=\"#\" class=\"stub\">zaa dobu</a> takari kayandiyan (cebsi hinna) se:",
+       "stub-threshold-disabled": "Ga kay",
+       "recentchangesdays": "Zaarey kaŋ ga cebe barmay korawey ra:",
+       "recentchangesdays-max": "$1 ibeeri {{PLURAL:$1|zaari $1}}",
+       "recentchangescount": "Barmay hinnawey kaŋ ga cebe tilasu ra:",
+       "prefs-help-recentchangescount": "Sanda barmay korawey, moo taarikey nda hantum ceebandu tiirawey.",
+       "prefs-help-watchlist-token2": "Woo ti kufal tugante war hawgayhayey interneti toonandiyanoo se.\nBoro kul kaŋ g'a bay ga hin ka war hawgayhayey caw, adiši ma ši žemna.\nNd'a waažibi, [[Special:ResetTokens|war ga hin k'a yeeti]] da.",
+       "savedprefs": "War ibaayey n' ka gaabundi.",
+       "timezonelegend": "Waati ganda:",
+       "localtime": "Gorodoo waati:",
+       "timezoneuseserverdefault": "Goy nda wiki tilasu ($1)",
+       "timezoneuseoffset": "Itana (han/waati tabatandi)",
+       "servertime": "Feršikaw waati:",
+       "guesstimezone": "Toonandi ceecikaa ga",
+       "timezoneregion-africa": "Afiriki",
+       "timezoneregion-america": "Ameriki",
+       "timezoneregion-antarctica": "Antarkitika",
+       "timezoneregion-arctic": "Arkutiki",
+       "timezoneregion-asia": "Aazi",
+       "timezoneregion-atlantic": "Atalantiki teeko",
+       "timezoneregion-australia": "Osutarali",
+       "timezoneregion-europe": "Erop",
+       "timezoneregion-indian": "Endu teeko",
+       "timezoneregion-pacific": "Baani teeko",
+       "allowemail": "Goykaw taney bataga tunandi",
+       "prefs-searchoptions": "Ceeci",
+       "prefs-namespaces": "Maafarrey",
+       "default": "tilasu",
+       "prefs-files": "Tukey",
+       "prefs-custom-css": "Laada CSS",
+       "prefs-custom-js": "Laada JavaScript",
+       "prefs-common-css-js": "CSS/JavaScript kaŋ kuurey k'a may:",
+       "prefs-reset-intro": "War ga hin ka goy nda moɲoo woo ka war ibaayey yeeti nungoo tilasu alhaaley ga.\nWoo ši hin ka taafeeri.",
+       "prefs-emailconfirm-label": "Bataga tabatandiyan:",
+       "youremail": "Bataga:",
+       "username": "{{GENDER:$1|Goykaw maa}}:",
+       "prefs-memberingroups": "{{GENDER:$2|Kondayze}} {{PLURAL:$1|batu|batey}} ra:",
+       "prefs-memberingroups-type": "$1",
+       "prefs-registration": "Maahantumayan waati:",
+       "prefs-registration-date-time": "$1",
+       "yourrealname": "Maa cimi:",
+       "yourlanguage": "Šenni:",
+       "yourvariant": "Gundekuna šenni fayante:",
+       "prefs-help-variant": "War šenni fayane wala hantum tenjandiyan ga gundekuna moɲey cebe wikiyoo woo ga.",
+       "yournick": "Kanbežeeri taaga:",
+       "prefs-help-signature": "Deedawey kaŋ goo",
+       "badsig": "Kanbežeeri gani laala.\nHTML kanjarey koroši.",
+       "badsiglength": "War kanbežeeroo ga hansa ka kuu.\nA ši hima ka kuu ka bisa {{PLURAL:$1|harfu}} $1.",
+       "yourgender": "Taka foo nda war ga baa ir ma war cee?",
+       "gender-unknown": "Ay ši baa y'a har",
+       "gender-male": "Aru kaŋ ga wiki moɲey fasal",
+       "gender-female": "Woy kaŋ ga wiki moɲey fasal",
+       "prefs-help-gender": "Ibaayoo woo kanayandiyanoo ti suuba-haya.\nGoyjinay ga nda hinna ka goy ka šelaŋ war se nda ka war bayrandi boro tanayaŋ se nda woy-aru tammaasa henna.\nBoro kul ga hin ka dii alhabaroo woo.",
+       "email": "Bataga",
+       "prefs-help-realname": "Maa cimi ti suuba-haya.\nNda war soobay ka woo noo, i g'a ka goy ka war goymiɲoo kayandi.",
+       "prefs-help-email": "Bataga aderesu ti suuba-haya, amm'a ga waažibi šennikufal yeetiyan se, nda war dirŋa war šennikufaloo.",
+       "prefs-help-email-others": "War ga hin ka soobay da ka boro tanayaŋ naŋ i ma bataga sanba war se dobu foo ga war goyksaw wala deede moɲoo ga.\nWar bataga aderesoo ši fatta nda waati kaŋ goykaw tanayaŋ hantum war se.",
+       "prefs-help-email-required": "Bataga aderesu ga waažibi.",
+       "prefs-info": "Šintin alhabar",
+       "prefs-i18n": "Adduɲɲaa-me teera",
+       "prefs-signature": "Kanbežeeri",
+       "prefs-dateformat": "Han takari",
+       "prefs-timeoffset": "Waati zilayyan",
+       "prefs-advancedediting": "Yamma suubarey",
+       "prefs-editor": "Fasalkaw",
+       "prefs-preview": "Moofur",
+       "prefs-advancedrc": "Suubari jinekoyantey",
+       "prefs-advancedrendering": "Suubari jinekoyantey",
+       "prefs-advancedsearchoptions": "Suubari jinekoyantey",
+       "prefs-advancedwatchlist": "Suubari jinekoyantey",
+       "prefs-displayrc": "Suubarey cebe",
+       "prefs-displaywatchlist": "Suubarey cebe",
+       "prefs-tokenwatchlist": "Tammaasa",
+       "prefs-diffs": "Zilayyaney",
+       "prefs-help-prefershttps": "Ibaayoo woo ga kanandi war hiino huruyanoo ga.",
+       "prefswarning-warning": "War na hayayaŋ barmay war ibaayey ra, amm'i mana gaabundi jina.\nNda war na moɲoo woo naŋ bila nda war ma \"$1\" naagu war ibaayey ši taagandi.",
+       "prefs-tabs-navigation-hint": "Alhiila: War ga hin ka goy nda biraw wowa wal'iguma kufal ka dira nor lokey game nor loku maašeedaa ra.",
+       "email-address-validity-valid": "Bataga aderesoo ga hima ihenna",
+       "email-address-validity-invalid": "Bataga aderesu henna dam",
+       "userrights": "Goykaw alhakey juwalyan",
+       "userrights-lookup-user": "Goykaw kondawey juwal",
+       "userrights-user-editname": "Goykaw maa dam:",
+       "editusergroup": "Goykaw kondawey fasal:",
+       "editinguser": "Goo ma goykaw alhakey barmay goykaw <strong>[[User:$1|$1]]</strong> $2 se",
+       "userrights-editusergroup": "Goykaw kondawey fasal",
+       "saveusergroups": "Goykaw kondawey gaabu",
+       "userrights-groupsmember": "Kondayze:",
+       "userrights-groupsmember-auto": "Kondayze tugante:",
+       "userrights-groupsmember-type": "$1",
+       "userrights-groups-help": "War ga hin ka kondawey barmay goykey wey se ne:\n* Bata maasante maanaa ti goykaa goo kondaa din ra.\n* Bata bila nda maasa maanaa ti goykaa šii kondaa din ra.\n* Handaray * ga tammaasa kaŋ war ši hin ka kondaa kaa nda war ben k'a tonton, wal'a kaa.",
+       "userrights-reason": "Dalil:",
+       "userrights-no-interwiki": "War ši nda fonda ka goykaw alhakey fasal wiki tanayaŋ ga.",
+       "userrights-nodatabase": "Bayhayhugu $1 ši bara wal'a šii gandaa ra.",
+       "userrights-nologin": "War ga hima ka [[Special:UserLogin|huru]] nda juwalkaw kontu ka goykaw alhakey noo.",
+       "userrights-notallowed": "War ši nda fondo ka goykey alhakey dam wala k'i kaa.",
+       "userrights-changeable-col": "Kondawey kaŋ war ga hin k'i barmay",
+       "userrights-unchangeable-col": "Kondawey kaŋ war ga hin k'i barmay",
+       "userrights-irreversible-marker": "$1*",
+       "userrights-conflict": "Cerehooyan goykaw alhadey barmawey ra! Taare war barmawey guna boryo nd'a tabatandi.",
+       "userrights-removed-self": "War na war alhakey kaa ka timme. Adiši, war ši hin ka duu moɲoo woo koyne.",
+       "group": "Konday:",
+       "group-user": "Goykey",
+       "group-autoconfirmed": "Goykaw boŋtabatantey",
+       "group-bot": "Maršin berandikey",
+       "group-sysop": "Juwalkey",
+       "group-bureaucrat": "Birogoykey",
+       "group-suppress": "Lawreyaney",
+       "group-all": "(ku)",
+       "group-user-member": "{{GENDER:$1|goykaw}}",
+       "group-autoconfirmed-member": "{{GENDER:$1|goykaw boŋtabatante}}",
+       "group-bot-member": "{{GENDER:$1|maršin berandiyan}}",
+       "group-sysop-member": "{{GENDER:$1|juwalkaw}}",
+       "group-bureaucrat-member": "{{GENDER:$1|birogoykaw}}",
+       "group-suppress-member": "{{GENDER:$1|lawreyan}}",
+       "grouppage-user": "{{ns:project}}:Goykey",
+       "grouppage-autoconfirmed": "{{ns:project}}:Goykaw boŋtabatantey",
+       "grouppage-bot": "{{ns:project}}:Maršin berandiyaney",
+       "grouppage-sysop": "{{ns:project}}:Juwalkey",
+       "grouppage-bureaucrat": "{{ns:project}}:Birgoykey",
+       "grouppage-suppress": "{{ns:project}}:Lawreyan",
+       "right-read": "Caw moɲey",
+       "right-edit": "Fasal moɲey",
+       "right-createpage": "Moɲey tee (kaŋ manti kakaw mooyaŋ)",
+       "right-createtalk": "Kakaw moɲey tee",
+       "right-createaccount": "Goykaw kontu taagayaŋ tee",
+       "right-minoredit": "Šilbay sanda barmay kaccuyaŋ",
+       "right-move": "Moɲey ganandi",
+       "right-move-subpages": "Moɲey ganandi nda ngi moɲiizey",
+       "right-move-rootuserpages": "Linji goykaw moɲey ganandi",
+       "right-move-categorypages": "Dumi moɲey ganandi",
+       "right-movefile": "Tukey ganandi",
+       "right-suppressredirect": "Ma ši bisandi ka hun aššil moɲey ga moo ganandiyan waate",
+       "right-upload": "Tukey zijandi",
+       "right-reupload": "Hantum tuku barantey boŋ",
+       "right-reupload-own": "Hantum tuku barantey boŋ kaŋ boro hunday n'i zijandi",
+       "right-reupload-shared": "Hantum tukey boŋ kaŋ ga jiši gorodoo ra hẽenandi jinay žemnante ga",
+       "right-upload_by_url": "Tukey zijandi ka hun URL ga",
+       "right-purge": "Internti nungoo tugu dogoo leele moo bila nda tabatandiyan se",
+       "right-autoconfirmed": "Ši kula nda IP-bande albaha dimma alkadarey",
+       "right-bot": "Kaŋ ga tee sand'a ga goy nga boŋše",
+       "right-nominornewtalk": "Kaŋ ši nda barmay kaccuyaŋ kakaw moɲey ga ka too yaamar taagayaŋ ma bangay",
+       "right-apihighlimits": "Alkadar beeriyan dam API hãayaney ra",
+       "right-writeapi": "Goy nda hantum API",
+       "right-delete": "Moɲey tuusu",
+       "right-bigdelete": "Moɲey kaŋ goo nda taariki kukuyaŋ tuusu",
+       "right-deletelogentry": "Ceebantu damhaya tabatanteyaŋ tuusu nd'i yeeri",
+       "right-deleterevision": "Moo filla tabatanteyaŋ tuusu nd'i yeeri",
+       "right-deletedhistory": "Taariki damhaya tuusantey guna bila nda hantum hangantey",
+       "right-deletedtext": "Hantum tuusantey guna nda barmawey filla tuusantey game",
+       "right-browsearchive": "Moo tuusantey ceeci",
+       "right-undelete": "Moo foo yeeri",
+       "right-suppressrevision": "Moo filla tabatanteyaŋ guna, tugu nda bangandi goykaw kul se",
+       "right-viewsuppressed": "Guna fillawey kaŋ tugandi goykaw kul se",
+       "right-suppressionlog": "Sutura hantum ceebandey guna",
+       "right-block": "Ma ganji goykaw tanayaŋ m'a fasal",
+       "right-blockemail": "Ganji goykaw kul ma bataga sanba",
+       "right-hideuser": "Goykaw maa foo hode, k'a tugu jamaa se",
+       "right-ipblock-exempt": "IP hodeyaney, boŋ-hodeyaney nda ganda hodeyaney koli",
+       "right-proxyunbannable": "Tokore boŋ-hodeyaney koli",
+       "right-unblockself": "Boŋ-hodeyan kaa",
+       "right-protect": "Jejebuyan alkadarey nda kaŋandi-fasal moo jejebantey barmay",
+       "right-editprotected": "Moɲey kaŋ jejebandi sanda \"{{int:protect-level-sysop}}\" fasal",
+       "right-editsemiprotected": "Moɲey kaŋ jejebandi sanda \"{{int:protect-level-autoconfirmed}}\" fasal",
+       "right-editinterface": "Goykaw diidogoo fasal",
+       "right-editusercssjs": "Goykaw taney CSS nda JavaScript tukey fasal",
+       "right-editusercss": "Goykaw taney CSS tukey fasal",
+       "right-edituserjs": "Goykaw taney JavaScript tuke fasal",
+       "right-editmyusercss": "War boŋ goykaw CSS tukey fasal",
+       "right-editmyuserjs": "War boŋ JavaScript tukey fasal",
+       "right-viewmywatchlist": "War boŋ hawgayhayey guna",
+       "right-editmywatchlist": "War boŋ hawgayhayey fasal. Laasaabu kaŋ teera fooyaŋ ga mooyaŋ tonton bila nda woo fondaa.",
+       "right-viewmyprivateinfo": "War boŋ sutura hayhayey guna (sanda bataga aderesu, maa cimi)",
+       "right-editmyprivateinfo": "War boŋ sutura bayhayey fasal (sanda bataga aderesu, maa cimi)",
+       "right-editmyoptions": "War boŋ ibaayey fasal",
+       "right-rollback": "Cahã ka barmawey yeeti goykaw koraa kaŋ na moo naadirante foo fasal se",
+       "right-markbotedits": "Barmawey kaŋ yeeti kul cebe sanda maršin berandiyaŋ",
+       "right-noratelimit": "Ši kula nda albaha dimma alkadarey",
+       "right-import": "Moɲey zaa wiki tanayaŋ ga",
+       "right-importupload": "Moɲey zaa tuku zijante foo ga",
+       "right-patrol": "Šilbay kaŋ boro taney barmawey ga kurandi",
+       "right-autopatrol": "Ka boro boŋ barmawey šilbay nd'i ma kurandi",
+       "right-patrolmarks": "Barmay kokorantey kuray šilbawey guna",
+       "right-unwatchedpages": "Moɲey kaŋ ši hawgandi guna ne",
+       "right-mergehistory": "Moɲey taarikoo marga",
+       "right-userrights": "Goykey alhakey kul fasal",
+       "right-userrights-interwiki": "Goykaw alhakey fasal wiki tanawey ga",
+       "right-siteadmin": "Bayrahugoo kufal nd'a feeri",
+       "right-override-export-depth": "Moɲey kaataray kaŋ ra moo dobantey hala guusu 5 alkadar ga",
+       "right-sendemail": "Bataga sanba goykaw taney do",
+       "right-passwordreset": "Šennikufal yeetiyan batagawey guna",
+       "newuserlogpage": "Goykaw teeyan ceebandu tiira",
+       "newuserlogpagetext": "Goykaw teeyaney ceebandu tiira ti woo.",
+       "rightslog": "Goykaw alhakey ceebandu tiira",
+       "rightslogtext": "Ceebandu tiiraa woo tee goykaw alhakey barmawey.",
+       "action-read": "moɲoo woo caw",
+       "action-edit": "moɲoo woo fasal",
+       "action-createpage": "moɲey tee",
+       "action-createtalk": "kakaw",
+       "action-createaccount": "goykaw kontoo woo tee",
+       "action-history": "moɲoo woo taarikoo guna",
+       "action-minoredit": "woo šilbay sanda barmay kaccu",
+       "action-move": "moɲoo woo ganandi",
+       "action-move-subpages": "moɲoo woo ganandi, nga moɲiizey da",
+       "action-move-rootuserpages": "linji goykaw moɲey ganandi",
+       "action-move-categorypages": "dumi moɲey ganandi",
+       "action-movefile": "tukoo woo ganandi",
+       "action-upload": "tukoo woo zijandi",
+       "action-reupload": "hantum tuku barantaa woo boŋ",
+       "action-reupload-shared": "hantum tukoo woo boŋ jišidoo žemnante ga",
+       "action-upload_by_url": "tukoo woo zijandi ka hun URL foo ga",
+       "action-writeapi": "goy nda hantum API",
+       "action-delete": "moɲoo woo tuusu",
+       "action-deleterevision": "fillaa woo tuusu",
+       "action-deletedhistory": "moɲoo woo taariki tuusantaa guna",
+       "action-browsearchive": "moo tuusantey ceeci",
+       "action-undelete": "moɲoo woo yeeri",
+       "action-suppressrevision": "filla tugantaa woo filla nd'a yeeti",
+       "action-suppressionlog": "suturu cebandu tiira guna",
+       "action-block": "goykaa woo ganji a m'a barmay",
+       "action-protect": "jejebu alkadarey barmay moɲoo woo se",
+       "action-rollback": "cahã ka barmawey yeeri goykaw kokorantaa kaŋ na moo naadirantaa barmay se",
+       "action-import": "moɲey zaa wiki tana foo ga",
+       "action-importupload": "moɲey zaa tuku zijante foo ga",
+       "action-patrol": "šilbay kaŋ boro taney barmawey ga kurandi",
+       "action-autopatrol": "war boŋ barmaa šilbay kaŋ a ga kurandi",
+       "action-unwatchedpages": "moɲey kaŋ si hawgayandi maašeedaa guna",
+       "action-mergehistory": "moɲoo woo taarikoo marga",
+       "action-userrights": "goykaw alhakey kul fasal",
+       "action-userrights-interwiki": "goykaw alhakey fasal goykey kul se wiki taney ga",
+       "action-siteadmin": "bayrayhugoo kufal wal'a feeri",
+       "action-sendemail": "batagawey sanba",
+       "action-editmywatchlist": "war hawgayhayey fasal",
+       "action-viewmywatchlist": "war hawgayhayey guna",
+       "action-viewmyprivateinfo": "war sutura alhabaroo guna",
+       "action-editmyprivateinfo": "war sutura alhabarpp fasal",
+       "nchanges": "{{PLURAL:$1|barmay}} $1",
+       "enhancedrc-since-last-visit": " $1 {{PLURAL:$1|za gunayan koraa}}",
+       "enhancedrc-history": "taariki",
+       "recentchanges": "Barmay kokorantey",
+       "recentchanges-legend": "Barmay kokorantey suubarey",
+       "recentchanges-summary": "Hanga barmay kokorantey kaŋ tee wikiyoo ga moɲoo woo ra.",
+       "recentchanges-noresult": "Barmay kul mana tee waatoo ra kaŋ ga hima šilbawey kaŋ noondi.",
+       "recentchanges-feed-description": "Hanga barmay kokorantey kaŋ tee wikiyoo ga toonandiyanoo woo ra.",
+       "recentchanges-label-newpage": "Barmaa woo na moo taaga tee",
+       "recentchanges-label-minor": "Woo ti barmay kaccu",
+       "recentchanges-label-bot": "Maršin no ka barmaa woo tee",
+       "recentchanges-label-unpatrolled": "Barmaa woo mana kurandi jina",
+       "recentchanges-label-plusminus": "Moɲoo azzaatoo barmay nda cebsi hinnaa woo",
+       "recentchanges-legend-heading": "'''Maana:'''",
+       "recentchanges-legend-newpage": "{{int:barmay kokorantey-šilbay-moo taaga}} (guna da [[Special:NewPages|moo taagey maašeede]])",
+       "recentchanges-legend-plusminus": "(<em>±123</em>)",
+       "rcnotefrom": "Ne ganda {{PLURAL:$5|ti barmay|barmawey}} za <strong>$3, $4</strong> (hala <strong>$1</strong> kaŋ ga cebandi).",
+       "rclistfrom": "Cebe barmay taagey kaŋ ga šintin $2, $3 ga",
+       "rcshowhideminor": "Barmay kaccu $1",
+       "rcshowhideminor-show": "Cebe",
+       "rcshowhideminor-hide": "Tugu",
+       "rcshowhidebots": "Maršin berekay $1",
+       "rcshowhidebots-show": "Cebe",
+       "rcshowhidebots-hide": "Tugu",
+       "rcshowhideliu": "Goykaw hantumante $1",
+       "rcshowhideliu-show": "Cebe",
+       "rcshowhideliu-hide": "Tugu",
+       "rcshowhideanons": "Goykaw kaŋ ši nda maa $1",
+       "rcshowhideanons-show": "Cebe",
+       "rcshowhideanons-hide": "Tugu",
+       "rcshowhidepatr": "Barmay kurante $1",
+       "rcshowhidepatr-show": "Cebe",
+       "rcshowhidepatr-hide": "Tugu",
+       "rcshowhidemine": "Ay barmay $1",
+       "rcshowhidemine-show": "Cebe",
+       "rcshowhidemine-hide": "Tugu",
+       "rclinks": "Cebe barmay koraw $1 jirbi $2 korawey ra<br />$3",
+       "diff": "zilayyan",
+       "hist": "taariki",
+       "hide": "Tugu",
+       "show": "Cebe",
+       "minoreditletter": "m",
+       "newpageletter": "N",
+       "boteditletter": "b",
+       "rc_categories": "Kayandi dumey ga (i fay nda \"|\")",
+       "rc_categories_any": "Affoo kul",
+       "rc-change-size": "$1",
+       "rc-change-size-new": "{{PLURAL:$1|cebsi}} $1 barmaa banda ga",
+       "newsectionsummary": "/* $1 */ dunbu taaga",
+       "rc-enhanced-expand": "Šilbayhayey cebe",
+       "rc-enhanced-hide": "Šilbayhayey tugu",
+       "rc-old-title": "aššil teeyanoo sanda \"$1\"",
+       "recentchangeslinked": "Barmay kondantey",
+       "recentchangeslinked-feed": "Barmay kondantey",
+       "recentchangeslinked-toolbox": "Barmay kondantey",
+       "recentchangeslinked-title": "Barmay kondantey \"$1\" ga",
+       "license": "Duɲeyan:",
+       "license-header": "Duɲeyan",
+       "nolicense": "Haya kul mana suubandi",
+       "licenses-edit": "Duɲeyan suubarey fasal",
+       "license-nopreview": "(Moofuryan ši bara)",
+       "upload_source_url": "(war tuku suubantaa ka hun URL henna nda forba-duura ga)",
+       "upload_source_file": "(war tuku suubantaa ka hun war ordinateroo ga)",
+       "listfiles-delete": "tuusu",
+       "listfiles-summary": "Cerecere moɲoo woo ga tuku zumantey kul cebe.",
+       "listfiles_search_for": "Hẽenandihaya maa ceeci:",
+       "imgfile": "tuku",
+       "listfiles": "Tuku maašeeda",
+       "listfiles_thumb": "Kanbeboy",
+       "listfiles_date": "Han",
+       "listfiles_name": "Maa",
+       "listfiles_user": "Goykaw",
+       "listfiles_size": "Azzaati",
+       "listfiles_description": "Šilbayyan",
+       "listfiles_count": "Dumey",
+       "listfiles-show-all": "Biyey dumi žeeney goo no",
+       "listfiles-latestversion": "Sohõda dumoo",
+       "listfiles-latestversion-yes": "Ayyo",
+       "listfiles-latestversion-no": "Kalaa",
+       "file-anchor-link": "Tuku",
+       "filehist": "Tuku taariki",
+       "filehist-help": "Han/waati naagu ka dii tukoo taka kaŋ nd'a ga bangay waati din.",
+       "filehist-deleteall": "ikul tuusu",
+       "filehist-deleteone": "tuusu",
+       "filehist-revert": "willi",
+       "filehist-current": "sohõda",
+       "filehist-datetime": "Han/waati",
+       "filehist-thumb": "Kanbeboy",
+       "filehist-thumbtext": "Kanbeboy dumoo se sanda $1 ga",
+       "filehist-nothumb": "Kanbeboy kul šii",
+       "filehist-user": "Goykaw",
+       "filehist-dimensions": "Adadey",
+       "filehist-filesize": "Tuku azzaati",
+       "filehist-comment": "Deede",
+       "imagelinks": "Tuku goyyan",
+       "linkstoimage": "Ne {{PLURAL:$1|moo $1 ga dobu}} tukoo woo ga:",
+       "linkstoimage-more": "A ga bisa {{PLURAL:$1|moo $1 kaŋ ga dobu}} tukoo woo ga.\nMaašeedaa woo ga {{PLURAL:$1|moo jina dobu |moo jina $1 dobey}} cebe tukoo woo hinne ga.\n[[Special:WhatLinksHere/$2|maašeeda timmante]] ga bara.",
+       "nolinkstoimage": "Moo kulyaŋ šii kaŋ ga dobu tukoo woo ga.",
+       "morelinkstoimage": "[[Special:WhatLinksHere/$1|dobu tontoni]] guna tukoo woo ka.",
+       "linkstoimage-redirect": "$1 (tuku gumari) $2",
+       "duplicatesoffile": " {{PLURAL:$1|tukoo ti fillante|tuku $1 ti fillanteyaŋ}} tukoo woo se ([[Special:FileDuplicateSearch/$2|bay ka tonton]]):",
+       "sharedupload": "Tukoo woo hun $1 ga nda porože tanayaŋ ga hin ka goy nd'a.",
+       "sharedupload-desc-there": "Tukoo woo hun $1 ga nda porože tanayaŋ ga hin ka goy nd'a.",
+       "sharedupload-desc-here": "Tukoo woo hun $1 ga nda porože tanayaŋ ga hin ka goy nd'a.\nŠilbayyan nga [$2 tuku šilbayyan moo] noodin ga cebe ne ganda.",
+       "sharedupload-desc-edit": "Tukoo woo hun $1 ga nda porože tanayaŋ ga hin ka goy nd'a.\nA ga hin ka tee war ga boona ka šilbayyanoo fasal nga noodin [$2 tuku šilbayyan moo] ga.",
+       "sharedupload-desc-create": "Tukoo woo hun $1 ga nda porože tanayaŋ ga hin ka goy nd'a.\nA ga hin ka tee war ga boona ka šilbaa fasal noodin nda [$2 tuku šilbayyan moɲoo] ga.",
+       "filepage-nofile": "Tukoo woo maakoyni kul ši bara.",
+       "filepage-nofile-link": "Tukoo woo maakoyni kul ši bara, amma war ga hin ka nga [$1 zumandi].",
+       "uploadnewversion-linktext": "Tukoo woo dumi taaga zijandi",
+       "shared-repo-from": "ka hum $1 do",
+       "shared-repo": "jišidoo žemnante",
+       "shared-repo-name-wikimediacommons": "Wikimedia Commons",
+       "filepage.css": "/* CSS kaŋ jisandi ne ga bara tuku šilbayyan moɲoo ga, a goo daykaw ceewaani wikitiirawey da ga */",
+       "upload-disallowed-here": "War ši hin ka hantum tukoo woo boŋ.",
+       "filerevert": "$1 willi",
+       "filerevert-legend": "Tuku willi",
+       "filerevert-intro": "War ga kaa ka tukoo willi <strong>[[Media:$1|$1]]</strong> nga [$4 dumi ga $3 waate, $2 hane].",
+       "filerevert-comment": "Dalil:",
+       "filerevert-defaultcomment": "Willi dumoo ga kaŋ tee $2 waate, $1 hane.",
+       "filerevert-submit": "Willi",
+       "filerevert-success": "<strong>[[Media:$1|$1]]</strong> n' ka willi [$4 dumi ga $3 waate, $2 hane].",
+       "filerevert-badversion": "Nungu dumi bisante kul ši bara tukoo woo se nda waatišilbaa kaŋ noondi.",
+       "filedelete": "$1 tuusu",
+       "filedelete-legend": "Tuku tuusu",
+       "filedelete-intro": "War ga kaa ka tuku <strong>[[Media:$1|$1]]</strong>nda nga taarikoo kul tuusu.",
+       "filedelete-intro-old": "War goo ma dumi <strong>[[Media:$1|$1]]</strong> tuusu za [$4 $3 waate, $2 hane].",
+       "filedelete-comment": "Dalil:",
+       "filedelete-submit": "Tuusu",
+       "filedelete-success": "<strong>$1</strong> n' ka tuusandi.",
+       "filedelete-success-old": "Dumi <strong>[[Media:$1|$1]]</strong> za $3 waate, $2 hane n' ka tuusandi.",
+       "filedelete-nofile": "<strong>$1</strong> ši bara.",
+       "filedelete-nofile-old": "Dumi jisante kul ši <strong>$1</strong> se nda alhaaley wey kaŋ tabatandi.",
+       "filedelete-otherreason": "Dalil tana/tontoni:",
+       "filedelete-reason-otherlist": "Dalil waani",
+       "filedelete-reason-dropdown": "*Yamma tuusuyan daliley\n**Hantummayray alhaku hooyan\n**Tuku fillante",
+       "filedelete-edit-reasonlist": "Fasal tuusuyan daliley",
+       "filedelete-maintenance": "Tuku tuusuyan nda yeekateyan ši goy waati foo hawgayyan-goy sabbu ra.",
+       "filedelete-maintenance-title": "Ši hin ka tuku tuusu",
+       "mimesearch": "MIME ceeci",
+       "mimesearch-summary": "Moɲoo woo ka naŋ tukey ma faya ngi MIME dumoo bande.\nDamhaya: contenttype/subtype wala contenttype/*, sanda <code>image/jpeg</code>",
+       "mimetype": "MIME dumi:",
+       "download": "zumandi",
+       "unwatchedpages": "Moɲey kaŋ ši gunandi",
+       "listredirects": "Bisandiyan maašeede",
+       "listduplicatedfiles": "Tuku fillantey maašeede",
+       "listduplicatedfiles-summary": "Woo ti tuku maašeede kaŋ ra tukoo dumi kokorantaa ga tee celle tuku tana foo dumi kokorantaa se. Nungu-bande tukey de no woo g'i guna.",
+       "listduplicatedfiles-entry": "[:File:$1|$1]] goo nda [[$3|{{PLURAL:$2|celle foo|celle $2}}]].",
+       "unusedtemplates": "Leetey kaŋ ši goyandi",
+       "unusedtemplatestext": "Moɲoo woo ga moɲey kul cebe {{ns:template}} maafarroo ra, kaŋyaŋ ši bara moo tana foo ra.\nHonga ka dobu taney tenjandi leetey ga jina nda war ga baa k'i tuusu.",
+       "unusedtemplateswlh": "doby taney",
+       "randompage": "Kaašim moo",
+       "randompage-nopages": "Moo kul ši ne {{PLURAL:$2|maafarroo|maafarrey}} ra: $1.",
+       "randomincategory": "Kaašim moo dumi ra",
+       "randomincategory-invalidcategory": "\"$1\" manti dumi maa henna.",
+       "randomincategory-nopages": "Moo kul ši bara [[:Category:$1|$1]] dumoo ra.",
+       "randomincategory-category": "Dumi:",
+       "randomincategory-legend": "Kaašim moo dumi ra",
+       "randomredirect": "Kaašim bisandiyan",
+       "randomredirect-nopages": "Bisandiyan kul ši \"$1\" maafarroo ra.",
+       "statistics": "Kabu-izey",
+       "statistics-header-pages": "Moo kabu-izey",
+       "statistics-header-edits": "Fasalyan kabu-izey",
+       "statistics-header-views": "Kabu-izey guna",
+       "statistics-header-users": "Goykaw kabu-izey",
+       "statistics-header-hooks": "Kabu-ize taney",
+       "statistics-articles": "Gundekuna moɲey",
+       "statistics-pages": "Moɲes",
+       "statistics-pages-desc": "Moɲey kul kaŋ goo wikiyoo ra, sanda deede moɲey, bisandiyaney nda taney.",
+       "statistics-files": "Tuku zijantey",
+       "statistics-edits": "Moo barmawey za {{SITENAME}}  n' ka gorandi",
+       "statistics-edits-average": "Sasawandi barmaney moo foo kul se",
+       "statistics-views-total": "Laasaabey kul",
+       "statistics-views-total-desc": "Laasaabey moo ši-barantey nda moo cerecerantey ši diyandi ne.",
+       "statistics-views-peredit": "Laasaabey barmay bande",
+       "statistics-users": "Maa-hantumante [[Special:ListUsers|goykey]]",
+       "statistics-users-active": "Goykaw kaŋ goo mee ra",
+       "statistics-users-active-desc": "Goykey kaŋ na teera foo timmandi {{PLURAL:$1|zaari $1}} koraw ra",
+       "statistics-mostpopular": "Moɲey kaŋ laasaabandi ka šifa",
+       "pageswithprop": "Moɲoo kaŋ goo nda moo mayray",
+       "pageswithprop-legend": "Moɲey kaŋ goo nda moo mayray",
+       "pageswithprop-text": "Moɲoo woo ga mooyaŋ cebe kaŋ ga goy nda moo mayray naadira.",
+       "pageswithprop-prop": "Mayray maa:",
+       "pageswithprop-submit": "Koy",
+       "pageswithprop-prophidden-long": "hantum mayray hinna tugande kuku $1)",
+       "pageswithprop-prophidden-binary": "fondo-hinka mayray hinna tugante ($1)",
+       "doubleredirects": "Bisandiyan fillantey",
+       "doubleredirectstext": "Moɲoo woo ga mooyaŋ cebe kaŋ ga bisandi bisandiyan moo tanayaŋ ga./nSorro foo kul goo nda dobuyaŋ ijinaa ga nda bisandiyaŋ ihinkantoo ga, kaŋ ga doona ka tee \"real\" toodoo moɲoo kaŋ do bisandiyan jinaa ga hima ka sinja.\n Hantumey <del>gamžeerantey</del> kul aššiloo duwandi.",
+       "emailsend": "sanba",
+       "emailccme": "Ay batagaa sanba ya ne da",
+       "emailccsubject": "War batagaa ga bere $1 ga: $2",
+       "emailsent": "Bataga sanbandi",
+       "emailsenttext": "War batagaa n' ka sanbandi.",
+       "emailuserfooter": "$1 na batagaa woo sanba $2 do nda \"Email user\" goyfondo {{SITENAME}} ga.",
+       "usermessage-summary": "Goo ma dabariɲaa alhabar sanba.",
+       "usermessage-editor": "Dabariɲaa bayrandikaw",
+       "usermessage-template": "MediaWiki:UserMessage",
+       "watchlist": "Hawgayhayey",
+       "mywatchlist": "Hawgayhayey",
+       "watchlistfor2": "$1 $2 se",
+       "nowatchlist": "Haya-izeyaŋ kul šii war hawgayhayey ra.",
+       "watchlistanontext": "Wa huru taare ka dii haya-izey war hawgayhayey ra. wala k'i fasal.",
+       "watchnologin": "Mana huru",
+       "addwatch": "Tonton hawgayhayey ga",
+       "addedwatchtext": "\"[[:$1]]\" moɲoo n' ka tontonandi war [[Special:Watchlist|watchlist]] ga.\nHiino barmawey kaŋ tee moɲoo woo nda deede moo kondantaa ga cebandi noodin.",
+       "addedwatchtext-short": " \"$1\" moɲoo n' ka tontonandi war hawgayhayey ga.",
+       "removewatch": "Kaa hawgayhayey ra",
+       "removedwatchtext": " \"[[:$1]]\"  moɲoo  n' ka hun [[Special:Watchlist|war hawgayhayey]] ra.",
+       "removedwatchtext-short": "\"$1\" moɲoo n' ka hun war hawgayhayey ra.",
+       "watch": "Hawgay",
+       "watchthispage": "Moɲoo woo hawgay",
+       "unwatch": "Ma ši hawgay",
+       "unwatchthispage": "Feenda hawgayhayyan",
+       "notanarticle": "Manti gundekuna moo",
+       "notvisiblerev": "Filla koraa kaŋ goykaw waani n'a tee n' ka tuusandi",
+       "watchlist-details": "{{PLURAL:$1|moo $1}} bara war hawgayhayey ra, deede moɲey ši kabu jere ga.",
+       "wlheader-enotif": "Bataga bayrandiyan n' ka tunandi.",
+       "wlheader-showupdated": "Moɲey kaŋ barmay za cee koraa kaŋ war n'i guna ga cebandi harfu <strong>warga</strong> ra.",
+       "wlnote": "Ne ganda {{PLURAL:$1|ti barmay kokorante <strong>$1</strong>}} za {{PLURAL:$2|guuru kokorante <strong>$2</strong> ra}}, $3 hane, $4 waate.",
+       "wlshowlast": "Guuru $1 zaari $2 kokorante cebe",
+       "watchlist-options": "Hawgayhaya suubarey",
+       "watching": "Goo ma hawgay…",
+       "unwatching": "Ši ma guna…",
+       "watcherrortext": "Firka bangay waatoo kaŋ war hawgayhayey kayandiyaney ga barmay \"$1\" se.",
+       "enotif_reset": "Moo gunantey kul šilbay",
+       "enotif_impersonal_salutation": "{{SITENAME}} goykaw",
+       "ilsubmit": "ceeci",
+       "bydate": "han bande",
+       "sp-newimages-showfrom": "Tuku taagey kaŋ ga šintin $2 waate, $1 hane",
+       "video-dims": "$1, $2 × $3",
+       "seconds-abbrev": "s $1",
+       "minutes-abbrev": "min $1",
+       "hours-abbrev": "g $1",
+       "days-abbrev": "z $1",
+       "seconds": "{{PLURAL:$1|segondu $1}}",
+       "minutes": "{{PLURAL:$1|miniti $1}}",
+       "hours": "{{PLURAL:$1|guura $1}}",
+       "days": "{{PLURAL:$1|zaari $1}}",
+       "weeks": "{{PLURAL:$1|jirbiyye $1}}",
+       "months": "{{PLURAL:$1|handu $1}}",
+       "years": "{{PLURAL:$1|jiiri $1}}",
+       "ago": "za $1",
+       "just-now": "sohõda tilliyo",
+       "hours-ago": "za {{PLURAL:$1|guuru}} $1",
+       "minutes-ago": "za {{PLURAL:$1|miniti}} $1",
+       "seconds-ago": "za {{PLURAL:$1|segondu}} $1",
+       "monday-at": "Atinni $1",
+       "tuesday-at": "Atalaata $1",
+       "wednesday-at": "Alarba $1",
+       "thursday-at": "Alhamiisa $1",
+       "friday-at": "Alzuma $1",
+       "saturday-at": "Asibti $1",
+       "sunday-at": "Alhadi $1",
+       "yesterday-at": "Bi $1",
+       "bad_image_list": "Takaroo ti takaa woo:\n\nHaya-izey hantumantey (žeerey kaŋ ga šintiin nda *) de ma kulandi.\nDobu jinaa kaŋ goo žeeroo ga ga hima ka dobu tuku laala ga.\nDobu tontoni žeeri follokaa ga kul ga hima hasarawyaŋ, sanda moɲey kaŋ ra tukoo ga bangay hantum-game ra.",
+       "variantname-zh-hans": "hans",
+       "variantname-zh-hant": "hant",
+       "variantname-zh-cn": "cn",
+       "variantname-zh-tw": "tw",
+       "variantname-zh-hk": "hk",
+       "variantname-zh-mo": "mo",
+       "variantname-zh-sg": "sg",
+       "variantname-zh-my": "my",
+       "variantname-zh": "zh",
+       "variantname-gan-hans": "hans",
+       "variantname-gan-hant": "hant",
+       "variantname-gan": "gan",
+       "variantname-sr-ec": "sr-ec",
+       "variantname-sr-el": "sr-el",
+       "variantname-sr": "sr",
+       "variantname-kk-kz": "kk-kz",
+       "variantname-kk-tr": "kk-tr",
+       "variantname-kk-cn": "kk-cn",
+       "variantname-kk-cyrl": "kk-cyrl",
+       "variantname-kk-latn": "kk-latn",
+       "variantname-kk-arab": "kk-arab",
+       "variantname-kk": "kk",
+       "variantname-ku-arab": "ku-Arab",
+       "variantname-ku-latn": "ku-Latn",
+       "variantname-ku": "ku",
+       "variantname-tg-cyrl": "tg-Cyrl",
+       "variantname-tg-latn": "tg-Latn",
+       "variantname-tg": "tg",
+       "variantname-ike-cans": "ike-Cans",
+       "variantname-ike-latn": "ike-Latn",
+       "variantname-iu": "iu",
+       "variantname-shi-tfng": "shi-Tfng",
+       "variantname-shi-latn": "shi-Latn",
+       "variantname-shi": "shi",
+       "variantname-uz": "uz",
+       "variantname-uz-latn": "uz-Latn",
+       "variantname-uz-cyrl": "uz-Cyrl",
+       "metadata": "Bayahaya beeri",
+       "metadata-help": "Tukoo woo ga bara nda alhabar tontonante, a ga hin ka tee hinna biizaakaw wala biiberekaw nd'a tee wal'a bere hinna ra.\nNda tukoo n' ka barmay ka hun nga aššil alhaaloo ga, mane šilbayhaya fooyaŋ ši ye ka sawa nd'alhaali barmantaa koyne.",
+       "metadata-expand": "Šilbayhaya kukantey cebe",
+       "metadata-collapse": "Šilbayhaya kukantey tugu",
+       "metadata-fields": "Bii bayhaya beeri faarey kaŋ hantumandi alhabaroo ra ga kaa ka bara nda moo bii ceberi nda bayhaya beeri daaroo ga yee cere ga.\nJerey ga tugandi tilasu ra.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-langitem": "<strong>$2:</strong> $1",
+       "metadata-langitem-default": "$1",
+       "exif-imagewidth": "Hayri",
+       "exif-imagelength": "Kayyan",
+       "exif-bitspersample": "Cebsey jere-ize ra",
+       "exif-compression": "Kankamandiyan dabari",
+       "exif-photometricinterpretation": "Biitonbi margayan",
+       "exif-orientation": "Honnandiyan",
+       "exif-samplesperpixel": "Jere-izey hinna",
+       "exif-planarconfiguration": "Bayhaya kanandiyan",
+       "exif-ycbcrsubsampling": "Y hala C ganda-birjiyan dimma",
+       "exif-ycbcrpositioning": "Y hala C kaydoo",
+       "exif-xresolution": "Kaniyan biisahã",
+       "exif-yresolution": "Zunbuyan biisahã",
+       "exif-stripoffsets": "Bii bayhaya gorodoo",
+       "exif-rowsperstrip": "Sorro hinna zuu foo ra",
+       "exif-stripbytecounts": "Cebsu hinna zuu kankamante ra",
+       "exif-jpeginterchangeformat": "Kay JPEG SOI ga",
+       "exif-jpeginterchangeformatlength": "JPEG bayhaya cebsu hinna",
+       "exif-whitepoint": "Tonbi kaaray noone alhaaley",
+       "exif-primarychromaticities": "Noone alhaaley atabiyawey se",
+       "exif-ycbcrcoefficients": "Noone faari barmayyan hinnaɲaa alkadarey",
+       "exif-referenceblackwhite": "Celle bibi nd'ikaaray fella hinnawey",
+       "exif-datetime": "Tuku barmayyan han nda waati",
+       "exif-imagedescription": "Bii maa",
+       "exif-make": "Biizaahaya teekaw",
+       "exif-model": "Biizaahaya tee-dumi",
+       "exif-software": "Goyjinay kaŋ goyandi",
+       "exif-artist": "Hantumkaw",
+       "exif-copyright": "Alhaku mayraykoyni",
+       "exif-exifversion": "Exif dumi",
+       "exif-flashpixversion": "Flashpix dumi kaŋ goo nda kanbari",
+       "exif-colorspace": "Noone farru",
+       "exif-componentsconfiguration": "Jere-ize foo kul maana",
+       "exif-compressedbitsperpixel": "Bii kankamandiyan yaayi",
+       "exif-pixelydimension": "Bii hayri",
+       "exif-pixelxdimension": "Bii kayyan",
+       "exif-usercomment": "Goykaw daarawey",
+       "exif-relatedsoundfile": "Jinde tuku hangante",
+       "exif-datetimeoriginal": "Han nda waati bayhaya teeyan se",
+       "exif-datetimedigitized": "Han nda waati hinna-bereyan se",
+       "exif-subsectime": "DateTime subseconds",
+       "exif-subsectimeoriginal": "DateTimeOriginal subseconds",
+       "exif-subsectimedigitized": "DateTimeDigitized subseconds",
+       "exif-exposuretime": "Biizaayan waati",
+       "exif-exposuretime-format": "seg $1 ($2)",
+       "exif-fnumber": "F Hinna",
+       "exif-fnumber-format": "f/$1",
+       "exif-exposureprogram": "Biizaayan porogaram",
+       "exif-spectralsensitivity": "Gaayay maateyan",
+       "exif-isospeedratings": "ISO cahãri zimamyan",
+       "exif-shutterspeedvalue": "APEX daabirji cahãri",
+       "exif-aperturevalue": "APEX daabirji",
+       "exif-brightnessvalue": "APEX gaay",
+       "exif-exposurebiasvalue": "APEX daabirji mee",
+       "exif-maxaperturevalue": "Labu daabirji beeri",
+       "exif-subjectdistance": "Teekaw hiyaari",
+       "exif-meteringmode": "Neešiyan yaayi",
+       "exif-lightsource": "Fawra aššil",
+       "exif-flash": "Denji",
+       "exif-focallength": "Diji gunayan sahã",
+       "exif-focallength-format": "mm $1",
+       "exif-subjectarea": "Teekaw ganda",
+       "exif-flashenergy": "Denji sahã",
+       "exif-focalplanexresolution": "Moodiiyan X biisahã",
+       "exif-focalplaneyresolution": "Moodiiyan Y biisahã",
+       "exif-focalplaneresolutionunit": "Moodiiyan biisahã ize",
+       "exif-subjectlocation": "Teekaw gorodoo",
+       "exif-exposureindex": "Biizaayan šilbay",
+       "exif-sensingmethod": "Maateyan dabari",
+       "exif-filesource": "Tuku aššil",
+       "exif-scenetype": "Ganda dumi",
+       "exif-customrendered": "Laada bii hanseyan",
+       "exif-exposuremode": "Biizaayan yaayi",
+       "exif-whitebalance": "Kaaray almizan",
+       "exif-digitalzoomratio": "Hinna bii azzaati",
+       "exif-focallengthin35mmfilm": "Moodii kukuyan mm 35 filim ra",
+       "exif-scenecapturetype": "Ganda zaayan dumi",
+       "exif-gaincontrol": "Ganda korošiyan",
+       "exif-contrast": "Bii zilayyan",
+       "exif-saturation": "Bii tiŋay",
+       "exif-sharpness": "Bii henanyan",
+       "exif-devicesettingdescription": "Jinay kayandiyaney šilbayyan",
+       "exif-subjectdistancerange": "Teekaw mooruyan alkadar",
+       "exif-imageuniqueid": "Bii folloku tammaasa",
+       "exif-gpsversionid": "GPS kanjari dumi",
+       "exif-gpslatituderef": "Hawsa wala gurma hayyanzuu",
+       "exif-gpslatitude": "Hayyanzuu",
+       "exif-gpslongituderef": "Dandi wala dangay kayyanzuu",
+       "exif-gpslongitude": "Kayyanzuu",
+       "exif-gpsaltituderef": "Beene fella",
+       "exif-gpsaltitude": "Beene",
+       "exif-gpstimestamp": "GPS waati (atom montor)",
+       "exif-gpssatellites": "Satelitey kaŋ nda neesširoo tee",
+       "exif-gpsstatus": "Duukaw assariya",
+       "exif-gpsmeasuremode": "Neeširi alhaali",
+       "exif-gpsdop": "Neeširi alhakiikataray",
+       "exif-gpsspeedref": "Cahãri ize",
+       "exif-gpsspeed": "GPS duukaw cahãri",
+       "exif-gpstrackref": "Fella nootiyan tenje se",
+       "exif-gpstrack": "Ɲootiyan tenje",
+       "exif-gpsimgdirectionref": "Fella bii tenje se",
+       "exif-gpsimgdirection": "Bii tenje",
+       "exif-gpsmapdatum": "Labu neešiyan bayhaya damante",
+       "exif-gpsdestlatituderef": "Fella toodoo hayyanzuu se",
+       "exif-gpsdestlatitude": "Toodoo hayyanzuu",
+       "exif-gpsdestlongituderef": "Fella toodoo kayyanzuu se",
+       "exif-gpsdestlongitude": "Toodoo kayyanzuu",
+       "exif-gpsdestbearingref": "Fella toodoo jineteeyan se",
+       "exif-gpsdestbearing": "Toodoo jineteeyan",
+       "exif-gpsdestdistanceref": "Fella toodoo mooray se",
+       "exif-gpsdestdistance": "Toodoo mooray",
+       "exif-gpsprocessingmethod": "Maa GPS kabuyan dabari se",
+       "exif-gpsareainformation": "Maa GPS ganda se",
+       "exif-gpsdatestamp": "GPS han",
+       "exif-gpsdifferential": "GPS zilayyan serrandi",
+       "exif-coordinate-format": "$1° $2′ $3″ $4",
+       "exif-jpegfilecomment": "JPEG tuku daara",
+       "exif-keywords": "Kufalkalimawey",
+       "exif-worldregioncreated": "Adduɲɲa gandaa kaŋ ra biyoo zaandi",
+       "exif-countrycreated": "Laamaa kaŋ ra biyoo zaandi",
+       "exif-countrycodecreated": "Laamaa kaŋ ra biyoo zaandi lanbaa",
+       "exif-provinceorstatecreated": "Laama žemnaroo wala hinoo kaŋ ra biyoo zaandi",
+       "exif-citycreated": "Gaaloo kaŋ ra biyoo zaandi",
+       "exif-sublocationcreated": "Gallu fargandoo kaŋ ra biyoo zaandi",
+       "exif-worldregiondest": "Adduɲɲa gandaa kaŋ ra biyoo zaandi",
+       "exif-countrydest": "Laamaa kaŋ cebandi",
+       "exif-countrycodedest": "Laamaa kaŋ cebandi lanbaa",
+       "exif-provinceorstatedest": "Laama žemnaroo wala hinoo kaŋ cebandi",
+       "exif-citydest": "Galloo kaŋ cebandi",
+       "exif-sublocationdest": "Gallu fragandoo kaŋ cebandi",
+       "exif-objectname": "Maa duura",
+       "exif-specialinstructions": "Cerecere fahamandiyan",
+       "exif-headline": "Maabon",
+       "exif-credit": "Alhaku/Nookaw",
+       "exif-source": "Aššil",
+       "exif-editstatus": "Bii wallafiyan assariya",
+       "exif-urgency": "Tilasu",
+       "exif-fixtureidentifier": "Hawari maa",
+       "exif-locationdest": "Gorodoo šilbante",
+       "exif-locationdestcode": "Lanba gorodoo šilbante se",
+       "exif-objectcycle": "Zaari waatoo kaŋ se hẽenandi jinaa miile",
+       "exif-contact": "Hantumyan alhabar",
+       "exif-writer": "Hantumkaw",
+       "exif-languagecode": "Šenni",
+       "exif-iimversion": "IIM dumi",
+       "exif-iimcategory": "Dumi",
+       "exif-iimsupplementalcategory": "Dumi tontonantey",
+       "exif-datetimeexpires": "A ma ši goyandi nd'a bisa",
+       "exif-datetimereleased": "Fattayan han",
+       "exif-originaltransmissionref": "Sanbayan jinaa gorodoo lanbaa",
+       "exif-identifier": "Tammaasakaw",
+       "exif-lens": "Zaayan moodiji",
+       "exif-serialnumber": "Biizaahayaa fannu lanbaa",
+       "exif-cameraownername": "Biizaahayaa koyoo",
+       "exif-label": "Šilbay",
+       "exif-datetimemetadata": "Han bayhaya beeri barmay cee koraa",
+       "exif-nickname": "Bii maa kanbari",
+       "exif-rating": "Alkadar damyan (5 ra)",
+       "exif-rightscertificate": "Alhaku juwalyan tabatandi tiira",
+       "exif-copyrighted": "Teekaw alhaku assariya",
+       "exif-copyrightowner": "Teekaw alhaku mayraykoyni",
+       "exif-usageterms": "Goymee waafakay",
+       "exif-webstatement": "Interneti-ra alhaku koy kalima",
+       "exif-originaldocumentid": "Aššil takaddaa tammaasa follokaa",
+       "exif-licenseurl": "URL alhaku duɲeyan tiira",
+       "exif-morepermissionsurl": "Barmay-se duɲeyan tiira alhabar",
+       "exif-attributionurl": "Nda war ga goy nda woo koyne, dobu ne",
+       "exif-preferredattributionname": "Nda war ga goy nda woo koyne, saabu har",
+       "exif-pngfilecomment": "PNG tuku daara",
+       "exif-disclaimer": "Šikka yaamar",
+       "exif-contentwarning": "Gundekuna yaamar",
+       "exif-giffilecomment": "GIF tuku gundekuna",
+       "exif-intellectualgenre": "Haya-ize duni",
+       "exif-subjectnewscode": "Teekaw lanba",
+       "exif-scenecode": "IPTC ganda lanba",
+       "exif-event": "Teera šilbante",
+       "exif-organisationinimage": "Konday šilbante",
+       "exif-personinimage": "Boro šilbante",
+       "exif-originalimageheight": "Biyoo kayyanoo nd'a mana kosu",
+       "exif-originalimagewidth": "Biyoo hayroo nd'a mana kosu",
+       "exif-contact-value": "$1\n\n$2\n<div class=\"adr\">\n$3\n\n$4, $5, $6 $7\n</div>\n$8",
+       "exif-subjectnewscode-value": "$2 ($1)",
+       "exif-compression-1": "Mana kankamandi",
+       "exif-compression-2": "CCITT Kuray 3 1-Zimamari Huffman barmante diray kuuyan harfu-hawyan",
+       "exif-compression-3": "CCITT Kuray 3 faksu harfu-hawyan",
+       "exif-compression-4": "CCITT Kuray 4 faksu harfu-hawyan",
+       "exif-compression-5": "LZW",
+       "exif-compression-6": "JPEG (ižeena)",
+       "exif-compression-7": "JPEG",
+       "exif-compression-8": "Motti (Adobe)",
+       "exif-compression-32773": "PackBits (Macintosh RLE)",
+       "exif-compression-32946": "Motti (PKZIP)",
+       "exif-compression-34712": "JPEG2000",
+       "exif-copyrighted-true": "Teekaw alhaku saajante",
+       "exif-copyrighted-false": "Teekaw alkaku assariya mana kayandi",
+       "exif-photometricinterpretation-2": "RGB",
+       "exif-photometricinterpretation-6": "YCbCr",
+       "exif-unknowndate": "Han ši bayante",
+       "exif-orientation-1": "Hankul",
+       "exif-orientation-2": "Bere ka kanandi",
+       "exif-orientation-3": "Kuubi 180°",
+       "exif-orientation-4": "Bere ka sukandi",
+       "exif-orientation-5": "Kuubi 90° CCW nda bere ka sukandi",
+       "exif-orientation-6": "Kuubi 90° CCW",
+       "exif-orientation-7": "Kuubi 90° CW nda bere ka kanandi",
+       "exif-orientation-8": "Bere 90° CW",
+       "exif-planarconfiguration-1": "gunguti takari",
+       "exif-planarconfiguration-2": "planar takari",
+       "exif-xyresolution-i": "dpi $1",
+       "exif-xyresolution-c": "dpc $1",
+       "exif-colorspace-1": "sRGB",
+       "exif-colorspace-65535": "Mana faara",
+       "exif-componentsconfiguration-0": "ši bara",
+       "exif-componentsconfiguration-1": "Y",
+       "exif-componentsconfiguration-2": "Cb",
+       "exif-componentsconfiguration-3": "Cr",
+       "exif-componentsconfiguration-4": "R",
+       "exif-componentsconfiguration-5": "G",
+       "exif-componentsconfiguration-6": "B",
+       "exif-exposureprogram-0": "Manti bayrante",
+       "exif-exposureprogram-1": "Boŋteeyan",
+       "exif-exposureprogram-2": "Hankul porogaram",
+       "exif-exposureprogram-3": "Feeriyan jindoo",
+       "exif-exposureprogram-4": "Daabuyan jindoo",
+       "exif-exposureprogram-5": "Kanbeteeri porogaram (ga faari guusuyan dam jine)",
+       "exif-exposureprogram-6": "Teeyan porogaram (daabuyan cahãnte dam jine)",
+       "exif-exposureprogram-7": "Kayyanbii alhaali (ndum bii manante zaayan se nda bandafaari kokoorante)",
+       "exif-exposureprogram-8": "Hayyanbii alhaali (ganda bii moorante zaayan se nda bandafaari manante)",
+       "exif-subjectdistance-value": "meetar $1",
+       "exif-meteringmode-0": "Šibayante",
+       "exif-meteringmode-1": "Sasawandi",
+       "exif-meteringmode-2": "Gam tiŋay sasawante",
+       "exif-meteringmode-3": "Doo",
+       "exif-meteringmode-4": "Doo-boobo",
+       "exif-meteringmode-5": "Noone",
+       "exif-meteringmode-6": "Jere",
+       "exif-meteringmode-255": "Tana",
+       "exif-lightsource-0": "Šibayante",
+       "exif-lightsource-1": "Zaarigaaya",
+       "exif-lightsource-2": "Fawrante",
+       "exif-lightsource-3": "Tungsten (nunetaa denji)",
+       "exif-lightsource-4": "Meli",
+       "exif-lightsource-9": "Waati henna",
+       "exif-lightsource-10": "Duula (bur)",
+       "exif-lightsource-11": "Bii",
+       "exif-lightsource-12": "Zaarigaaya fawrante ((D 5700 – 7100K)",
+       "exif-lightsource-13": "Zaari kaaray fawrante ((N 4600 – 5400K)",
+       "exif-lightsource-14": "Fawra kaaray yayna ((W 3900 – 4500K)",
+       "exif-lightsource-15": "Kaaray fawrante (WW 3200 – 3700K)",
+       "exif-lightsource-17": "Gaaya tabatante A",
+       "exif-lightsource-18": "Gaaya tabatante B",
+       "exif-lightsource-19": "Gaaya tabatante C",
+       "exif-lightsource-20": "D55",
+       "exif-lightsource-21": "D65",
+       "exif-lightsource-22": "D75",
+       "exif-lightsource-23": "D50",
+       "exif-lightsource-24": "ISO goytenda tungsten",
+       "exif-lightsource-255": "Gaaya aššil tana",
+       "exif-flash-fired-0": "Meloo mana dii",
+       "exif-flash-fired-1": "Meloo dii",
+       "exif-flash-return-0": "bila nda denji willante maateyan goy",
+       "exif-flash-return-2": "denji willante gaaya mana maatandi",
+       "exif-flash-return-3": "denji willante gaaya maatandi",
+       "exif-flash-mode-1": "gaabi meli diinandiyan",
+       "exif-flash-mode-2": "gaabi meli wiiyan",
+       "exif-flash-mode-3": "Boŋše alhaali",
+       "exif-flash-function-1": "Mei goy kul šii no",
+       "exif-flash-redeye-1": "moo-ciray kaayan alhaali",
+       "exif-focalplaneresolutionunit-2": "kabaaru",
+       "exif-sensingmethod-1": "Manti bayrante",
+       "exif-sensingmethod-2": "Canbu-foo noone ganda maateji",
+       "exif-sensingmethod-3": "Canbu-hinka noone ganda maateji",
+       "exif-sensingmethod-4": "Canbu-hinza noone ganda maateji",
+       "exif-sensingmethod-5": "Noone hangante ganda maateji",
+       "exif-sensingmethod-7": "Žeeri-hinza maateji",
+       "exif-sensingmethod-8": "Noone hangante žeeri maateji",
+       "exif-filesource-3": "Hinna biizaahay dejjante",
+       "exif-scenetype-1": "Bii kaŋ zaandi dogoo ra",
+       "exif-customrendered-0": "Hankul teeyan",
+       "exif-customrendered-1": "Kaŋ tee boro foo se",
+       "exif-exposuremode-0": "Bii zaa nga boŋše",
+       "exif-exposuremode-1": "Kanbe biizaayan",
+       "exif-exposuremode-2": "Boŋše holgu",
+       "exif-whitebalance-0": "Boŋše kaaray sawante",
+       "exif-whitebalance-1": "Kanbe kaaray sawante",
+       "exif-scenecapturetype-0": "Tabatante",
+       "exif-scenecapturetype-1": "Hayyanbii",
+       "exif-scenecapturetype-2": "Kayyanbii",
+       "exif-scenecapturetype-3": "Cijinhere bii alhaali",
+       "exif-gaincontrol-0": "Baffoo",
+       "exif-gaincontrol-1": "Duura buuna ka ziji",
+       "exif-gaincontrol-2": "Duura beeri ka ziji",
+       "exif-gaincontrol-3": "Duura buuna ka zunbu",
+       "exif-gaincontrol-4": "Duura beeri ka zunbu",
+       "exif-contrast-0": "Hankul",
+       "exif-contrast-1": "Baana",
+       "exif-contrast-2": "Šenda",
+       "exif-saturation-0": "Hankul",
+       "exif-saturation-1": "Bii sahã buuna",
+       "exif-saturation-2": "Bii sahã beeri",
+       "exif-sharpness-0": "Hankul",
+       "exif-sharpness-1": "Baana",
+       "exif-sharpness-2": "Šenda",
+       "exif-subjectdistancerange-0": "Šibayante",
+       "exif-subjectdistancerange-1": "Bebbeeri",
+       "exif-subjectdistancerange-2": "Moo daabu",
+       "exif-subjectdistancerange-3": "Diiyan moora",
+       "exif-gpslatitude-n": "Hawsa hayyanzuu",
+       "exif-gpslatitude-s": "Gurma hayyanzuu",
+       "exif-gpslongitude-e": "Dandi kayyanzuu",
+       "exif-gpslongitude-w": "Dangay kayyanzuu",
+       "exif-gpsaltitude-above-sealevel": "{{PLURAL:$1|meetar}} $1 teeko se beene",
+       "exif-gpsaltitude-below-sealevel": "{{PLURAL:$1|meetar}} $1 teeko se ganda",
+       "exif-gpsstatus-a": "Neešiyan goo ma tee",
+       "exif-gpsstatus-v": "Neešiyan cerekubayyan",
+       "exif-gpsmeasuremode-2": "Azzaati-2 neešiyan",
+       "exif-gpsmeasuremode-3": "Azzaati-3 neešiyan",
+       "exif-gpsspeed-k": "Kilomeetarey guuru ra",
+       "exif-gpsspeed-m": "Miley guuru ra",
+       "exif-gpsspeed-n": "Guley",
+       "exif-gpsdestdistance-k": "Kilomeetarey",
+       "exif-gpsdestdistance-m": "Miley",
+       "exif-gpsdestdistance-n": "Teeko gande miley",
+       "exif-gpsdop-excellent": "Bešere ($1)",
+       "exif-gpsdop-good": "Boryo ($1)",
+       "exif-gpsdop-moderate": "Sawante ($1)",
+       "exif-gpsdop-fair": "Cimante ($1)",
+       "exif-gpsdop-poor": "Talka ($1)",
+       "exif-objectcycle-a": "Subbaahi hinne",
+       "exif-objectcycle-p": "Almaari hinne",
+       "exif-objectcycle-b": "Subbaahi nd'almaari kaa",
+       "exif-gpsdirection-t": "Tenjeyan cimi",
+       "exif-gpsdirection-m": "Alhindi tenjeyan",
+       "exif-ycbcrpositioning-1": "Gamhaya",
+       "exif-ycbcrpositioning-2": "Cere-hinka",
+       "exif-dc-contributor": "Kanbuzaakey",
+       "exif-dc-coverage": "Ganda nda waati alkadar hẽenandihayey se",
+       "exif-dc-date": "Han(ey)",
+       "exif-dc-publisher": "Wallafikaw",
+       "exif-dc-relation": "Hẽenandihaya kondante",
+       "exif-dc-rights": "Alhakey",
+       "exif-dc-source": "Aššil hẽenandihaya",
+       "exif-dc-type": "Hẽenandihaya dumi",
+       "exif-rating-rejected": "Jindawante",
+       "exif-isospeedratings-overflow": "Ka bisa 65535",
+       "exif-maxaperturevalue-value": "APEX $1 (f/$2)",
+       "exif-iimcategory-ace": "Goy suubante, alaada nda hooray",
+       "exif-iimcategory-clj": "Bone nd' alhukum",
+       "exif-iimcategory-dis": "Albalaawu nd' alwaadu",
+       "exif-iimcategory-fin": "Ganda duura nda maamalayan",
+       "exif-iimcategory-edu": "Caw",
+       "exif-iimcategory-evn": "Windila",
+       "exif-iimcategory-hth": "Gaahambaani",
+       "exif-iimcategory-hum": "Addamayze nafaw",
+       "exif-iimcategory-lab": "Goyyan",
+       "exif-iimcategory-lif": "Hunayan fondo nda hunanzamay teera",
+       "exif-iimcategory-pol": "Politiki",
+       "exif-iimcategory-rel": "Addiina nda ganari",
+       "exif-iimcategory-sci": "Bayray nda dabari",
+       "exif-iimcategory-soi": "Jama misey",
+       "exif-iimcategory-spo": "Gaahamfeeriyan",
+       "exif-iimcategory-war": "Wangu, alfitina nda kosuri",
+       "exif-iimcategory-wea": "Waati",
+       "exif-urgency-normal": "Hankul ($1)",
+       "exif-urgency-low": "Ganda ($1)",
+       "exif-urgency-high": "Beene ($1)",
+       "exif-urgency-other": "Goykaw-bayrante jine-ka-tee haya ($1)",
+       "namespacesall": "kul",
+       "monthsall": "kul",
+       "confirmemail": "Bataga aderesu tabatandi",
+       "confirmemail_noemail": "War ši nda bataga aderesu henna war [[Special:Preferences|goykaw ibaayey]] ra.",
+       "searchsuggest-search": "Ceeci",
+       "json-error-syntax": "Nahaw firka",
+       "json-error-utf8": " UTF-8 harfu laybanteyaŋ, sanda ašariya hantum laala bande",
+       "json-error-recursion": "Feeriyan foo wala hinna tana ga filla kaŋ asariyaa ga hantumandi ra",
+       "json-error-inf-or-nan": "NAN wala INF hinna foo wal'ibooboyaŋ goo hinna kaŋ ašariyaa ga hantumandi ra",
+       "json-error-unsupported-type": "Hinna noondi kaŋ dumoo ašariya ši hin ka hantumandi"
+}
index a473e1a..03daa7d 100644 (file)
@@ -24,7 +24,8 @@
                        "සුරනිමල",
                        "아라",
                        "හරිත",
-                       "Indunil Chamara"
+                       "Indunil Chamara",
+                       "Susith Chandira Gts"
                ]
        },
        "tog-underline": "සබැඳි යටීර කිරීම:",
        "gender-female": "ස්ත්‍රී",
        "prefs-help-gender": "මෙම සංස්කරණය අත්‍යවශ්‍ය නැත: මෘදුකාංග විසින් නිවැරැදි ආමන්ත්‍රනය සඳහා භාවිතා කෙරෙයි.\nමෙම තොරතුර ප්‍රජාවට විවෘතය.",
        "email": "විද්‍යුත් තැපෑල",
-       "prefs-help-realname": "à·\83à·\90බà·\91 à¶±à·\8fමය à·\84à·\99à·\85à·\92 à¶\9aà·\92රà·\93ම à·\80à·\9bà¶\9aලà·\8aපà·\92à¶\9aයà·\92.\nà¶\94බ à·\80à·\92à·\83à·\92නà·\8a à¶\91ය à·\84à·\99à·\85à·\92 à¶\9aල à·\84à·\9cතà·\8a, à¶\94බà¶\9cà·\9a à¶\9aà·\98තà·\93නà·\8a à·\83ඳà·\84à·\8f à¶\94බà·\84ට à¶\9aතà·\98-බුහුමන් පිරිනැමීමට එය භාවිතා කරනු ඇත.",
+       "prefs-help-realname": "à·\83à·\90බà·\91 à¶±à·\8fමය à·\84à·\99à·\85à·\92 à¶\9aà·\92රà·\93ම à\85තà·\8aâ\80\8dයà·\80à·\81à·\8aâ\80\8dය à¶±à·\90ත.\nà¶\94බ à·\80à·\92à·\83à·\92නà·\8a à¶\91ය à·\84à·\99à·\85à·\92 à¶\9aල à·\84à·\9cතà·\8a, à¶\94බà¶\9cà·\9a à¶\9aà·\98තà·\93නà·\8a à·\83ඳà·\84à·\8f à¶\94බà·\84ට à¶\9aතà·\98බුහුමන් පිරිනැමීමට එය භාවිතා කරනු ඇත.",
        "prefs-help-email": "විද්‍යුත් තැපැල් ලිපිනය අත්‍යාවශ්‍ය නොවේ, එහෙත් ඔබගේ මුර පදය අමතක වූ විටෙක එය යලි සැකසීමට නම් විද්‍යුත් ලිපිනයක් දී තිබිය යුතුය.",
        "prefs-help-email-others": "ඔබගේ පරිශීලක හෝ පරිශීලක සාකච්ඡා පිටුවෙහි සබැඳියක් ඔස්සේ විද්‍යුත් තැපෑල මගින් අනෙක් අයට ඔබව සම්බන්ධ කර ගැනීම පිණිස තේරිමක් සිදු කල හැක.\nඅනෙකුත් පරිශීලකයන් ඔබව අමතන විට ඔබගේ විද්‍යුත් තැපැල් ලිපිනය හෙලිදරවු නොකෙරේ.",
        "prefs-help-email-required": "විද්‍යුත්-ලිපිනය අවශ්‍යයි.",
        "pager-older-n": "{{PLURAL:$1|පැරණි 1|පැරණි $1}}",
        "suppress": "ප්‍රමාද දෝෂය",
        "querypage-disabled": "ක්‍රියාකාරීත්ව හේතූන්මත මෙම විශේෂ පිටුව අක්‍රීය කර ඇත.",
+       "apihelp": "API උදවු",
+       "apihelp-no-such-module": "ආකෘතිය \"$1\" හමුවුනේ නැත.",
        "booksources": "මූලාශ්‍ර පොත්",
        "booksources-search-legend": "ග්‍රන්ථ මූලාශ්‍ර සඳහා ගවේෂණය කරන්න",
        "booksources-isbn": "ISBN:",
        "wlheader-enotif": "විද්‍යුත් තැපැල් දැනුම්දීම සක්‍රීයයි.",
        "wlheader-showupdated": "ඔබ විසින් ඒවාට අවසන් වරට පිවිසුනු පසුව වෙනස්ව තිබෙන පිටු <strong>තදකුරු</strong> වලින් පෙන්වා ඇත.",
        "wlnote": "පහත දැක්වෙන්නේ $3, $4 මෙන්, අවසන් {{PLURAL:$2|පැය|පැය '''$2''' }} තුලදී සිදු කෙරී ඇති {{PLURAL:$1|අවසන් වෙනස්වීම්යි |අවසන් වෙනස්වීම්  '''$1''' යි}}.",
-       "wlshowlast": "පසුගිය පැය $1 දින $2  පෙන්වන්න",
+       "wlshowlast": "පසුගිය පැය $1 දින $2 පෙන්වන්න",
        "watchlist-options": "තෝරාගතහැකි මුර ලැයිස්තු සැකසුම්",
        "watching": "මුර කරමින්...",
        "unwatching": "මුර නොකරමින්...",
index ad70cfb..3413be8 100644 (file)
        "otherlanguages": "V iných jazykoch",
        "redirectedfrom": "(Presmerované z $1)",
        "redirectpagesub": "Presmerovacia stránka",
+       "redirectto": "Presmerovať na:",
        "lastmodifiedat": "Čas poslednej úpravy tejto stránky je $2, $1.",
        "viewcount": "Táto stránka bola navštívená {{PLURAL:$1|raz|$1-krát|$1-krát}}.",
        "protectedpage": "Zamknutá stránka",
        "jumptonavigation": "navigácia",
        "jumptosearch": "hľadanie",
        "view-pool-error": "Ľutujeme, servery sú momentálne preťažené.\nPríliš veľa používateľov sa pokúša zobraziť túto stránku.\nProsím, počkajte chvíľu predtým, než sa pokúsite na túto stránku dostať znova.\n\n$1",
+       "generic-pool-error": "Ľutujeme, servery sú momentálne preťažené.\nPríliš veľa používateľov sa pokúša zobraziť tento zdroj.\nProsím, pred ďalším pokusom o prístup chvíľu počkajte.",
        "pool-timeout": "Bol prekročený vyhradený čas čakania na zámok",
        "pool-queuefull": "Front je plný",
        "pool-errorunknown": "Neznáma chyba",
        "hidetoc": "skryť",
        "collapsible-collapse": "zbaliť",
        "collapsible-expand": "rozbaliť",
+       "confirmable-confirm": "Ste si {{GENDER:$1|istý|istá|istí}}?",
        "confirmable-yes": "Áno",
        "confirmable-no": "Nie",
        "thisisdeleted": "Zobraziť alebo obnoviť $1?",
        "invalidtitle-knownnamespace": "Neplatný názov s menným priestorom „$2“ a textom „$3“",
        "invalidtitle-unknownnamespace": "Neplatný názov s neznámym číslom menného priestoru „$1“ a textom „$2“",
        "exception-nologin": "Nie ste prihlásený",
-       "exception-nologin-text": "Táto stránka alebo operácia vyžaduje, aby ste [[Special:Userlogin|boli prihlásený]].",
+       "exception-nologin-text": "Táto stránka alebo operácia vyžaduje, aby ste boli prihlásený.",
        "exception-nologin-text-manual": "Pre prístup na túto stránku alebo k tejto akcii sa musíte $1.",
        "virus-badscanner": "Chybná konfigurácia: neznámy antivírus: ''$1''",
        "virus-scanfailed": "kontrola zlyhala (kód $1)",
        "createaccount-text": "Niekto vytvoril účet pre vašu emailovú adresu na {{GRAMMAR:lokál|{{SITENAME}}}}\n($4) s názvom „$2“, s heslom „$3“. Mali by ste sa prihlásiť a svoje heslo teraz zmeniť.\n\nAk bol účet vytvorený omylom, túto správu môžete ignorovať.",
        "login-throttled": "Uskutočnili ste príliš mnoho neúspešných pokusov o prihlásenie.\nProsím, počkajte $1 predtým, než to skúsite znova.",
        "login-abort-generic": "Vaše prihlásenie nebolo úspešné - zrušené",
+       "login-migrated-generic": "Váš účet bol presťahovaný a vaše používateľské meno už viac na tejto wiki neexistuje.",
        "loginlanguagelabel": "Jazyk: $1",
        "suspicious-userlogout": "Vaša požiadavka odhlásiť sa bola zamietnutá, pretože to vyzerá, že ju poslal pokazený prehliadač alebo proxy server.",
        "createacct-another-realname-tip": "Skutočné meno je nepovinné.\nAk sa rozhodnete ho poskytnúť, použije sa na označenie vašej práce.",
        "resetpass-validity-soft": "Vaše heslo je neplatné: $1\n\nVyberte si nové heslo, alebo kliknite na „{{int:resetpass-submit-cancel}}“ a nastavte si ho neskôr.",
        "passwordreset": "Reset hesla",
        "passwordreset-text-one": "Pre získanie nového hesla vyplňte tento formulár.",
-       "passwordreset-text-many": "{{PLURAL:$1|Pre získanie nového hesla zadajte jeden z údajov.}}",
+       "passwordreset-text-many": "{{PLURAL:$1|Pre získanie nového hesla emailom, zadajte jeden z údajov.}}",
        "passwordreset-legend": "Obnoviť heslo",
        "passwordreset-disabled": "Obnovenie hesla bolo na tejto wiki zakázané.",
        "passwordreset-emaildisabled": "E-mailové funkcie boli na tejto wiki vypnuté.",
        "preview": "Náhľad",
        "showpreview": "Zobraziť náhľad",
        "showdiff": "Zobraziť rozdiely",
-       "anoneditwarning": "'''Upozornenie:''' Nie ste prihlásený.\nVaša IP adresa bude zaznamenaná v histórii úprav tejto stránky.",
+       "blankarticle": "<strong>Upozornenie:</strong> Stránka, ktorú sa chystáte založiť, je prázdna. Pokiaľ ešte raz kliknete na „{{int:savearticle}}“, bude založená úplne bez obsahu.",
+       "anoneditwarning": "<strong>Upozornenie:</strong> Nie ste prihlásený.\nAk uložíte akúkoľvek úpravu vaša IP adresa bude zverejnená v histórii tejto stránky. Ak sa <strong>[$1 prihlásite]</strong> alebo si <strong>[$2 vytvoríte účet]</strong>, budú vaše úpravy priradené k vášmu používateľskému menu a získate i ďalšie výhody.",
        "anonpreviewwarning": "''Nie ste prihlásený. Uložením zaznamenáte svoju IP adresu do histórie úprav tejto stránky.''",
        "missingsummary": "'''Pripomienka:''' Neposkytli ste zhrnutie úprav. Ak kliknete znova na Uložiť, vaše úpravy sa uložia bez zhrnutia úprav.",
        "missingcommenttext": "Prosím, dolu napíšte komentár.",
        "edit-gone-missing": "Nebolo možné aktualizovať stránku.\nZdá sa, že bola zmazaná.",
        "edit-conflict": "Konflikt pri upravovaní.",
        "edit-no-change": "Vaša úprava bola ignorovaná, pretože ste v texte nič nezmenili.",
+       "postedit-confirmation-created": "Stránka bola vytvorená.",
+       "postedit-confirmation-restored": "Stránka bola obnovená.",
        "postedit-confirmation-saved": "Vaša úprava bola uložená.",
        "edit-already-exists": "Nebolo možné vytvoriť novú stránku.\nUž existuje.",
        "defaultmessagetext": "Predvolený text správy",
        "parser-template-recursion-depth-warning": "Bol prekročený limit rekurzie šablón ($1)",
        "language-converter-depth-warning": "Bolo prekročené obmedzenie hĺbky ($1) jazykového konvertora",
        "node-count-exceeded-category": "Stránky s priveľkým počtom uzlov",
-       "node-count-exceeded-warning": "Stránka prekročila povolený počet uzlov",
+       "node-count-exceeded-category-desc": "Tato stránka prekračuje maximálny počet uzlov.",
+       "node-count-exceeded-warning": "Stránka prekročila počet uzlov",
        "expansion-depth-exceeded-category": "Stránky s priveľkou hĺbkou expanzie",
+       "expansion-depth-exceeded-category-desc": "Stránka prekročila maximálnu hĺbku expanzie.",
        "expansion-depth-exceeded-warning": "Stránka prekročila povolenú hĺbku expanzie",
        "parser-unstrip-loop-warning": "Zistené zacyklenie volania rozširovacej značky",
        "parser-unstrip-recursion-limit": "Prektočený limit rekurzie volania rozširovacej značky ($1)",
        "undo-success": "Úpravu je možné vrátiť. Prosím skontrolujte tento rozdiel, čím overíte, že táto úprava je tá, ktorú chcete, a následne uložte zmeny, čím ukončíte vrátenie.",
        "undo-failure": "Úpravu nie je možné vrátiť kvôli konfliktným medziľahlým úpravám.",
        "undo-norev": "Túto úpravu nie je možné vrátiť, pretože neexistuje alebo bola zmazaná.",
+       "undo-nochange": "Zdá se, že úprava už bola zrušená.",
        "undo-summary": "Revízia $1 používateľa [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusia]]) bola vrátená",
        "undo-summary-username-hidden": "Vrátiť revíziu $1, ktorú vykonal skrytý používateľ",
        "cantcreateaccounttitle": "Nie je možné vytvoriť účet",
        "right-move": "Presúvať stránky",
        "right-move-subpages": "Presunúť stránky aj s podstránkami",
        "right-move-rootuserpages": "Presunúť koreňové stránky používateľa",
+       "right-move-categorypages": "Premiestňovanie stránok kategórií",
        "right-movefile": "Presunúť súbory",
        "right-suppressredirect": "Nevytvoriť presmerovanie zo starého názvu pri presúvaní stránky",
        "right-upload": "Nahrávať súbory",
        "action-createpage": "vytvárať stránky",
        "action-createtalk": "vytvárať diskusné stránky",
        "action-createaccount": "vytvoriť tento používateľský účet",
+       "action-history": "zobraziť históriu tejto stránky",
        "action-minoredit": "označiť túto úpravu ako drobnú",
        "action-move": "presunúť túto stránku",
        "action-move-subpages": "presunúť túto stránku a jej podtránky",
        "action-move-rootuserpages": "presunúť koreňové stránky používateľa",
+       "action-move-categorypages": "premiestňovať stránky kategórií",
        "action-movefile": "presunúť tento súbor",
        "action-upload": "nahrať tento súbor",
        "action-reupload": "prepísať tento existujúci súbor",
        "recentchanges-label-plusminus": "Veľkosť stránky sa zmenila o toľkoto bajtov",
        "recentchanges-legend-heading": "'''Legenda:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (pozri tiež [[Special:NewPages|zoznam nových stránok]])",
-       "rcnotefrom": "Nižšie sú zobrazené úpravy od <strong>$2</strong> (do <strong>$1</strong>).",
+       "rcnotefrom": "Nižšie {{PLURAL:$5|je zobrazená úprava|sú zobrazené úpravy}} od <strong>$2</strong> (do <strong>$1</strong>).",
        "rclistfrom": "Zobraziť nové úpravy počnúc od $3 $2",
        "rcshowhideminor": "$1 drobné úpravy",
        "rcshowhideminor-show": "Zobraziť",
        "diff": "rozdiel",
        "hist": "história",
        "hide": "Skryť",
-       "show": "zobraziť",
+       "show": "Zobraziť",
        "minoreditletter": "d",
        "newpageletter": "N",
        "boteditletter": "b",
        "querypage-disabled": "Táto špeciálna stránka bola zakázaná z výkonnostných dôvodov.",
        "booksources": "Knižné zdroje",
        "booksources-search-legend": "Vyhľadávať knižné zdroje",
+       "booksources-search": "Hľadať",
        "booksources-text": "Nižšie je zoznam odkazov na iné stránky, ktoré predávajú nové a použité knihy a tiež môžu obsahovať ďalšie informácie o knihách, ktoré hľadáte:",
        "booksources-invalid-isbn": "Zdá sa, že dané ISBN nie je platné. Skontrolujte, či ste neurobili chybu pri kopírovaní z pôvodného zdroja.",
        "specialloguserlabel": "Pôvodca:",
        "import": "Import stránok",
        "importinterwiki": "Transwiki import",
        "import-interwiki-text": "Zvoľte wiki a názov stránky, ktorá sa má importovať.\nDátumy revízií a mená používateľov budú zachované.\nVšetky transwiki importy sa zaznamenávajú v [[Special:Log/import|Zázname importov]].",
+       "import-interwiki-sourcewiki": "Zdrojová wiki:",
+       "import-interwiki-sourcepage": "Zdrojová stránka:",
        "import-interwiki-history": "Skopírovať všetky historické revízie tejto stránky",
        "import-interwiki-templates": "Vložiť všetky šablóny",
        "import-interwiki-submit": "Importovať",
        "importuploaderrortemp": "Nahranie alebo import súboru zlyhal. Dočasný adresár chýba.",
        "import-parse-failure": "Chyba syntaktickej analýzy pri XML importe",
        "import-noarticle": "Žiadny článok na import!",
-       "import-nonewrevisions": "Všetky revízie boli predtým importované.",
+       "import-nonewrevisions": "Žiadne revízie neboli importované (buď už boli všetky  importované skôr, alebo boli preskočené kvôli chybám).",
        "xml-error-string": "$1 na riadku $2, stĺpec $3 (bajt $4): $5",
        "import-upload": "Nahrať XML údaje",
        "import-token-mismatch": "Strata údajov relácie. Prosím, skúste to znova.",
        "newimages-summary": "Táto špeciálna stránka zobrazuje posledné nahrané súbory.",
        "newimages-legend": "Filter",
        "newimages-label": "Názov súboru (alebo jeho časť):",
+       "newimages-showbots": "Zobraziť súbory nahrané botmi",
        "noimages": "Niet čo zobraziť.",
        "ilsubmit": "Hľadať",
        "bydate": "podľa dátumu",
        "autosumm-replace": "Nahrádzam stránku textom „$1“",
        "autoredircomment": "Presmerovanie na [[$1]]",
        "autosumm-new": "Vytvorená stránka „$1“",
+       "autosumm-newblank": "Vytvorená prázdna stránka",
        "lag-warn-normal": "Úpravy za {{PLURAL:$1|poslednú sekundu|posledné $1 sekundy|posledných $1 sekúnd}} nemusia byť v tomto zozname zobrazené.",
        "lag-warn-high": "Kvôli dlhšej odozve databázového servera nemusia byť úpravy za {{PLURAL:$1|poslednú sekundu|posledné $1 sekundy|posledných $1 sekúnd}} v tomto zozname zobrazené.",
        "watchlistedit-normal-title": "Upraviť zoznam sledovaných stránok",
        "watchlistedit-raw-done": "Váš zoznam sledovaných stránok bol aktualizovaný.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Jedna položka bola pridaná|$1 položky boli pridané|$1 položiek bolo pridaných}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Jedna položka bola odstránená|$1 položky boli odstránené|$1 položiek bolo odstránených}}:",
+       "watchlistedit-clear-title": "Vyprázdnenie zoznamu sledovaných stránok",
+       "watchlistedit-clear-legend": "Vyprázdniť zoznam sledovaných stránok",
+       "watchlistedit-clear-explain": "Z vášho zoznamu sledovaných stránok budú odstránené všetky názvy",
        "watchlistedit-clear-titles": "Názvy:",
+       "watchlistedit-clear-submit": "Vyprázdniť zoznam sledovaných stránok (natrvalo!)",
+       "watchlistedit-clear-done": "Váš zoznam sledovaných stránok bol vyprázdnený.",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|Bol odstránený jeden názov|Boli odstránené $1 názvy|Bolo odstránených $1 názvov}}:",
+       "watchlisttools-clear": "Vyprázdniť zoznam sledovaných stránok",
        "watchlisttools-view": "Zobraziť súvisiace zmeny",
        "watchlisttools-edit": "Zobraziť a upraviť zoznam sledovaných stránok",
        "watchlisttools-raw": "Upraviť nespracovaný zoznam sledovaných stránok",
        "pagelang-use-default": "Použiť predvolený jazyk",
        "pagelang-select-lang": "Vybrať jazyk",
        "right-pagelang": "Zmeniť jazyk stránky",
-       "default-skin-not-found": "Uups! Základná tapeta pre Vašu wiki, popísanú v <code dir=\"ltr\">$wgDefaultSkin</code> ako <code>$1</code>, nie je dostupná. \n\nVaša inštalácia pravdepodobne obsahuje nasledovné tapety. Pozri [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pre viac informácii o ich aktivácii a zvoľte základnú.\n\n$2\n\n; Ak ste MediaWiki len teraz nainštalovali\n; Zrejme ste to nainštalovali z gitu alebo priamo zo zdrojového kódu inou metódou. Je to očakávané. Skúste nainštalovať nejaké tapety z [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory];\n:*Stiahnutím [https://www.mediawiki.org/wiki/Download tarball installer], ktorý ponúka viacero tapiet a rozšírení. Skopírovať a nalepiť možno priamo z <code>skins/</code>.\n:*Klonovanie jednej zo <code>mediawiki/skins/*</code> schránok cez git do <code dir=\"ltr\">skins/</code> priečinku Vašej Media Wiki inštalácie.\n: S existujúcou git schránkou, ak ste vývojár MediaWiki, by nemal byť konflikt.\n\n: Ak ste upgradeovali MediaWiki\n: MediaWiki 1.24 a novšie už tapety automaticky neaktivujú. (see [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Nasledovný kód môžete skopírovať do <code>LocalSettings.php</code> pre aktivovanie všetkých dostupných tapiet.\n\n<pre dir=\"ltr\">$3</pre>\n\n; Ak ste upravili <code>LocalSettings.php</code>:\n: Skontrolujte chyby."
+       "default-skin-not-found": "Uups! Základná tapeta pre Vašu wiki, popísanú v <code dir=\"ltr\">$wgDefaultSkin</code> ako <code>$1</code>, nie je dostupná. \n\nVaša inštalácia pravdepodobne obsahuje nasledovné tapety. Pozri [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pre viac informácii o ich aktivácii a zvoľte základnú.\n\n$2\n\n; Ak ste MediaWiki len teraz nainštalovali\n; Zrejme ste to nainštalovali z gitu alebo priamo zo zdrojového kódu inou metódou. Je to očakávané. Skúste nainštalovať nejaké tapety z [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory];\n:*Stiahnutím [https://www.mediawiki.org/wiki/Download tarball installer], ktorý ponúka viacero tapiet a rozšírení. Skopírovať a nalepiť možno priamo z <code>skins/</code>.\n:*Klonovanie jednej zo <code>mediawiki/skins/*</code> schránok cez git do <code dir=\"ltr\">skins/</code> priečinku Vašej Media Wiki inštalácie.\n: S existujúcou git schránkou, ak ste vývojár MediaWiki, by nemal byť konflikt.\n\n: Ak ste upgradeovali MediaWiki\n: MediaWiki 1.24 a novšie už tapety automaticky neaktivujú. (see [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Nasledovný kód môžete skopírovať do <code>LocalSettings.php</code> pre aktivovanie všetkých dostupných tapiet.\n\n<pre dir=\"ltr\">$3</pre>\n\n; Ak ste upravili <code>LocalSettings.php</code>:\n: Skontrolujte chyby.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (povolený)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''zakázaný''')",
+       "mediastatistics": "Štatistika súborov",
+       "mediastatistics-table-count": "Počet súborov",
+       "mediastatistics-table-totalbytes": "Celková veľkosť",
+       "mediastatistics-header-unknown": "Neznáme",
+       "mediastatistics-header-bitmap": "Rastrové obrázky",
+       "mediastatistics-header-drawing": "Kresby (vektorové obrázky)",
+       "mediastatistics-header-audio": "Audio",
+       "mediastatistics-header-video": "Videá",
+       "mediastatistics-header-multimedia": "Multimédiá",
+       "mediastatistics-header-office": "Kancelárske súbory",
+       "mediastatistics-header-text": "Text",
+       "mediastatistics-header-executable": "Spustiteľné súbory",
+       "mediastatistics-header-archive": "Komprimované formáty"
 }
index c078e01..7f0e337 100644 (file)
        "content-model-text": "golo besedilo",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Strani s podvojenimi argumenti v klicih predlog",
+       "duplicate-args-category-desc": "Stran vsebuje klice predlog, ki vsebujejo dvojnike argumentov, kot sta <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> ali <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "'''Opozorilo:''' Ta stran vsebuje preveč klicev funkcije razčlenjevalnika kode.\n\nStran naj bi vsebovala manj kot $2 {{PLURAL:$2|klic|klica|klice|klicev}}, trenutno {{PLURAL:$1|je v uporabi $1 klic|sta v uporabi $1 klica|so v uporabi $1 klici|je v uporabi $1 klicev}}.",
        "expensive-parserfunction-category": "Strani s prevelikim številom klicev na funkcijo razčlenjevalnika kode",
        "post-expand-template-inclusion-warning": "'''Opozorilo:''' Velikost vključenih predlog je prevelika.\nNekatere predloge ne bodo prikazane.",
        "gender-female": "Ona ureja wikistrani.",
        "prefs-help-gender": "Nastavitev ni obvezna.\nProgramje uporablja njeno vrednost za vaše naslavljanje in omenjanje v ustreznem slovničnem spolu.\nPodatek bo javno prikazan.",
        "email": "E-pošta",
-       "prefs-help-realname": "Pravo ime ni obvezno.\nČe se ga odločite navesti, bo uporabljeno za priznavanje vašega dela.",
+       "prefs-help-realname": "Pravo ime ni obvezno.\nČe ga navedete, ga bomo morda uporabili za priznavanje vašega dela.",
        "prefs-help-email": "E-poštni naslov ni obvezen, vendar omogoča, da vam v primeru pozabljenega gesla pošljemo novo.",
        "prefs-help-email-others": "Omogočite lahko tudi možnost, da vam lahko ostali uporabniki pošiljajo e-pošto prek vaše uporabniške ali pogovorne strani.\nKo vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo razkrili.",
        "prefs-help-email-required": "E-poštni naslov je obvezen.",
        "pager-older-n": "{{PLURAL:$1|starejši|starejša|starejši|starejših}} $1",
        "suppress": "Nadzor",
        "querypage-disabled": "Ta posebna stran je onemogočena iz zmogljivostnih razlogov.",
+       "apihelp": "Pomoč za API",
+       "apihelp-no-such-module": "Modula »$1« nismo našli.",
        "booksources": "Viri knjig",
        "booksources-search-legend": "Išči knjižne vire",
        "booksources-search": "Išči",
        "tooltip-pt-mycontris": "Seznam vaših prispevkov",
        "tooltip-pt-login": "Prijava ni obvezna, vendar je zaželena",
        "tooltip-pt-logout": "Odjavite se",
+       "tooltip-pt-createaccount": "Predlagamo vam, da ustvarite račun in se prijavite, vendar pa to ni obvezno.",
        "tooltip-ca-talk": "Pogovor o strani",
        "tooltip-ca-edit": "Stran lahko uredite. Preden jo shranite, uporabite gumb za predogled.",
        "tooltip-ca-addsection": "Začnite novo razpravo",
        "tooltip-feed-atom": "Atom-vir strani",
        "tooltip-t-contributions": "Preglejte seznam uporabnikovih prispevkov",
        "tooltip-t-emailuser": "Pošljite uporabniku e-pismo",
+       "tooltip-t-info": "Več informacij o strani",
        "tooltip-t-upload": "Naložite slike ali predstavnostne datoteke",
        "tooltip-t-specialpages": "Preglejte seznam vseh posebnih strani",
        "tooltip-t-print": "Natisljiva različica strani",
        "unknown_extension_tag": "Neznana razširitvena etiketa »$1«",
        "duplicate-defaultsort": "'''Opozorilo:''' Privzeti ključ razvrščanja »$2« prepiše prejšnji privzeti ključ razvrščanja »$1«.",
        "duplicate-displaytitle": "<strong>Opozorilo:</strong> Prikazni naslov »$2« prepiše prejšnji prikazni naslov »$1«.",
+       "invalid-indicator-name": "<strong>Napaka:</strong> Atribut <code>name</code> indikatorjev stanja strani ne sme biti prazen.",
        "version": "Različica",
        "version-extensions": "Nameščene razširitve",
        "version-skins": "Nameščene kože",
index 3cd21d8..85b079d 100644 (file)
        "parser-unstrip-loop-warning": "Утврђена је петља",
        "parser-unstrip-recursion-limit": "Прекорачено је ограничење рекурзије ($1)",
        "converter-manual-rule-error": "Пронађена је грешка у правилу за ручно претварање језика",
-       "undo-success": "Измена се може вратити.\nПроверите разлике испод, па сачувајте измене.",
+       "undo-success": "Измена се може вратити.\nПроверите разлике испод па сачувајте измене.",
        "undo-failure": "Ова измена се не може поништити због сукоба измена.",
        "undo-norev": "Не могу да вратим измену јер не постоји или је обрисана.",
        "undo-nochange": "Изгледа да је измена већ поништена.",
        "movepage-moved": "'''„$1“ је премештена на „$2“'''",
        "movepage-moved-redirect": "Преусмерење је направљено.",
        "movepage-moved-noredirect": "Стварање преусмерења је онемогућено.",
-       "articleexists": "Страница с тим именом већ постоји, или је име неисправно.\nИзаберите друго име.",
+       "articleexists": "Страница с тим именом већ постоји или је име неисправно.\nИзаберите друго име.",
        "cantmove-titleprotected": "Не можете да преместите страницу на то место јер је жељени наслов заштићен од стварања",
        "movetalk": "Премести и страницу за разговор",
        "move-subpages": "Премести и подстранице (до $1)",
        "logentry-delete-delete": "$1 је {{GENDER:$2|обрисао|обрисала}} страницу $3",
        "logentry-delete-restore": "$1 је {{GENDER:$2|вратио|вратила}} страницу $3",
        "logentry-delete-event": "$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=догађаја|$5 догађаја|$5 догађаја}} у дневнику на $3: $4",
-       "logentry-delete-revision": "$1 је {{GENDER:$2|променио|променила}} видљивост $5 {{PLURAL:$5|измене|измена|1=измене}} на страници $3: $4",
+       "logentry-delete-revision": "$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|$5 измене|$5 измена|1=измене}} на страници $3: $4",
        "logentry-delete-event-legacy": "$1 је {{GENDER:$2|променио|променила}} видљивост догађаја у дневнику на $3",
        "logentry-delete-revision-legacy": "$1 је {{GENDER:$2|променио|променила}} видљивост измена на страници $3",
        "logentry-suppress-delete": "$1 је {{GENDER:$2|потиснуо|потиснула}} страницу $3",
        "pagelang-select-lang": "Изабери језик",
        "right-pagelang": "мењање језика странице",
        "action-pagelang": "промену језика странице",
+       "mediastatistics-summary": "Статистике о типовима послатих датотека. Овде су урачунате само најновије верзије датотека. Старе или обрисане верзије нису урачунате.",
        "mediastatistics-table-mimetype": "MIME тип",
-       "mediastatistics-table-count": "Број датотека"
+       "mediastatistics-table-extensions": "Могуће екстензије",
+       "mediastatistics-table-count": "Број датотека",
+       "mediastatistics-table-totalbytes": "Укупна величина",
+       "mediastatistics-header-bitmap": "Битмап слике",
+       "mediastatistics-header-drawing": "Цртежи (векторске слике)",
+       "mediastatistics-header-audio": "Аудио",
+       "mediastatistics-header-video": "Видео",
+       "mediastatistics-header-office": "Канцеларија"
 }
index fad5f2b..31c6db0 100644 (file)
        "parser-unstrip-loop-warning": "Utvrđena je petlja",
        "parser-unstrip-recursion-limit": "Prekoračeno je ograničenje rekurzije ($1)",
        "converter-manual-rule-error": "Pronađena je greška u pravilu za ručno pretvaranje jezika",
-       "undo-success": "Izmena se može vratiti.\nProverite razlike ispod, pa sačuvajte izmene.",
+       "undo-success": "Izmena se može vratiti.\nProverite razlike ispod pa sačuvajte izmene.",
        "undo-failure": "Ova izmena se ne može poništiti zbog sukoba izmena.",
        "undo-norev": "Ne mogu da vratim izmenu jer ne postoji ili je obrisana.",
        "undo-nochange": "Izgleda da je izmena već poništena.",
        "movepage-moved": "'''„$1“ je premeštena na „$2“'''",
        "movepage-moved-redirect": "Preusmerenje je napravljeno.",
        "movepage-moved-noredirect": "Stvaranje preusmerenja je onemogućeno.",
-       "articleexists": "Stranica s tim imenom već postoji, ili je ime neispravno.\nIzaberite drugo ime.",
+       "articleexists": "Stranica s tim imenom već postoji ili je ime neispravno.\nIzaberite drugo ime.",
        "cantmove-titleprotected": "Ne možete da premestite stranicu na to mesto jer je željeni naslov zaštićen od stvaranja",
        "movetalk": "Premesti i stranicu za razgovor",
        "move-subpages": "Premesti i podstranice (do $1)",
        "logentry-delete-delete": "$1 je {{GENDER:$2|obrisao|obrisala}} stranicu $3",
        "logentry-delete-restore": "$1 je {{GENDER:$2|vratio|vratila}} stranicu $3",
        "logentry-delete-event": "$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=događaja|$5 događaja|$5 događaja}} u dnevniku na $3: $4",
-       "logentry-delete-revision": "$1 je {{GENDER:$2|promenio|promenila}} vidljivost $5 {{PLURAL:$5|izmene|izmena|1=izmene}} na stranici $3: $4",
+       "logentry-delete-revision": "$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|$5 izmene|$5 izmena|1=izmene}} na stranici $3: $4",
        "logentry-delete-event-legacy": "$1 je {{GENDER:$2|promenio|promenila}} vidljivost događaja u dnevniku na $3",
        "logentry-delete-revision-legacy": "$1 je {{GENDER:$2|promenio|promenila}} vidljivost izmena na stranici $3",
        "logentry-suppress-delete": "$1 je {{GENDER:$2|potisnuo|potisnula}} stranicu $3",
        "pagelang-language": "Jezik",
        "pagelang-select-lang": "Izaberi jezik",
        "right-pagelang": "menjanje jezika stranice",
-       "action-pagelang": "promenu jezika stranice"
+       "action-pagelang": "promenu jezika stranice",
+       "mediastatistics-summary": "Statistike o tipovima poslatih datoteka. Ovde su uračunate samo najnovije verzije datoteka. Stare ili obrisane verzije nisu uračunate.",
+       "mediastatistics-table-mimetype": "MIME tip",
+       "mediastatistics-table-extensions": "Moguće ekstenzije",
+       "mediastatistics-table-count": "Broj datoteka",
+       "mediastatistics-table-totalbytes": "Ukupna veličina",
+       "mediastatistics-header-bitmap": "Bitmap slike",
+       "mediastatistics-header-drawing": "Crteži (vektorske slike)",
+       "mediastatistics-header-audio": "Audio",
+       "mediastatistics-header-video": "Video",
+       "mediastatistics-header-office": "Kancelarija"
 }
index d06ecb6..e172f5c 100644 (file)
        "content-model-text": "oformaterad text",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Sidor som använder upprepade argument i mallanrop",
+       "duplicate-args-category-desc": "Sidan innehåller mallanrop som använder repeterade argument, så som <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> eller <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "Varning: Denna sida innehåller för många anrop av resurskrävande parserfunktioner.\n\nAntalet anrop får vara högst $2, nu görs {{PLURAL:$1|$1 anrop}}",
        "expensive-parserfunction-category": "Sidor med för många resurskrävande parserfunktioner",
        "post-expand-template-inclusion-warning": "Varning: Den här sidan innehåller för mycket mallinklusioner.\nNågra av mallarna kommer inte att inkluderas.",
        "gender-female": "Hon redigerar wikisidor",
        "prefs-help-gender": "Denna inställning är valfri.\nProgramvaran använder detta värde för att adressera dig till andra med rätt genus. Denna information kommer att vara offentlig.",
        "email": "E-post",
-       "prefs-help-realname": "Riktigt namn behöver inte anges.\nOm du väljer att ange ditt riktiga namn, kommer det att användas för att tillskriva dig ditt arbete.",
+       "prefs-help-realname": "Riktigt namn behöver inte anges.\nOm angivet, kan det komma att användas för att tillskriva dig ditt arbete.",
        "prefs-help-email": "Att ange e-postadress är valfritt, men gör det möjligt att få ditt lösenord mejlat till dig om du glömmer det.",
        "prefs-help-email-others": "Du kan också välja att låta andra kontakta dig via e-post genom en länk på din användar- eller diskussionssida. Din e-postadress avslöjas inte när andra användare kontaktar dig.",
        "prefs-help-email-required": "E-postadress måste anges.",
        "pager-older-n": "{{PLURAL:$1|1 äldre|$1 äldre}}",
        "suppress": "Censur",
        "querypage-disabled": "Den här specialsidan är inaktiverad av prestandaskäl.",
+       "apihelp": "API-hjälp",
+       "apihelp-no-such-module": "Modulen ”$1” hittades inte",
        "booksources": "Bokkällor",
        "booksources-search-legend": "Sök efter bokkällor",
        "booksources-search": "Sök",
        "tooltip-pt-mycontris": "Lista över dina bidrag",
        "tooltip-pt-login": "Du uppmuntras att logga in, men det är inte nödvändigt",
        "tooltip-pt-logout": "Logga ut",
+       "tooltip-pt-createaccount": "Du uppmuntras att skapa ett konto och logga in, men det är inte obligatoriskt",
        "tooltip-ca-talk": "Diskussion om innehållssidan",
        "tooltip-ca-edit": "Du kan redigera den här sidan.\nVänligen använd förhandsgranskningsknappen innan du sparar.",
        "tooltip-ca-addsection": "Starta ett nytt avsnitt",
        "tooltip-feed-atom": "Atom-flöde för den här sidan",
        "tooltip-t-contributions": "En lista över bidrag från den här användaren",
        "tooltip-t-emailuser": "Skicka e-post till den här användaren",
+       "tooltip-t-info": "Mer information om denna sida",
        "tooltip-t-upload": "Ladda upp filer",
        "tooltip-t-specialpages": "Lista över alla specialsidor",
        "tooltip-t-print": "Utskriftvänlig version av den här sidan",
        "tooltip-recreate": "Återskapa sidan fast den har tagits bort",
        "tooltip-upload": "Starta uppladdning",
        "tooltip-rollback": "\"Tillbakarullning\" tar med en knapptryckning bort ändringar som gjorts av den som senast redigerade sidan",
-       "tooltip-undo": "\"Gör ogjord\" återställer denna redigering och öppnar redigeringsrutan med förhandsgranskning.\nDen ger möjlighet att skriva en motivering i redigeringssammanfattningen.",
+       "tooltip-undo": "\"Gör ogjord\" återställer denna redigering och öppnar redigeringsrutan med förhandsgranskning. Det ger möjlighet att skriva en motivering i redigeringssammanfattningen.",
        "tooltip-preferences-save": "Spara inställningar",
        "tooltip-summary": "Skriv en kort sammanfattning",
        "interlanguage-link-title": "$1 - $2",
        "mediastatistics-header-archive": "Komprimerade format",
        "json-warn-trailing-comma": "$1 avslutande {{PLURAL:$1|kommatecken}} togs bort från JSON",
        "json-error-unknown": "Det var ett problem med JSON. Fel: $1",
+       "json-error-depth": "Listans maximala djup har överskridits",
        "json-error-state-mismatch": "Ogiltig eller felaktig JSON",
+       "json-error-ctrl-char": "Kontrollteckenfel, möjligen felaktigt kodad",
        "json-error-syntax": "Syntaxfel",
-       "json-error-utf8": "Felaktiga UTF-8-tecken, möjligen felkodade"
+       "json-error-utf8": "Felaktiga UTF-8-tecken, möjligen felkodade",
+       "json-error-recursion": "En eller flera rekursiva referenser i värde som ska kodas",
+       "json-error-inf-or-nan": "En eller flera NAN- eller INF-värden i värdet som ska kodas",
+       "json-error-unsupported-type": "Ett värde av en typ som inte kan kodas angavs"
 }
index af54d9c..35f5519 100644 (file)
        "tooltip-feed-atom": "இப்பக்கத்துக்கான அடொம் ஓடை கிடையாது",
        "tooltip-t-contributions": "இப்பயனரின்  பங்களிப்புக்களின் பட்டியலைப் பார்",
        "tooltip-t-emailuser": "இப் பயனருக்கு மின்னஞ்சல் செய்",
+       "tooltip-t-info": "இப்பக்கத்தைப்பற்றி மேலதிக விபரம்",
        "tooltip-t-upload": "கோப்புகளைப் பதிவேற்றுக",
        "tooltip-t-specialpages": "அனைத்துச் சிறப்புப் பக்கங்களின் பட்டியல்",
        "tooltip-t-print": "இப்பக்கத்தின் அச்சுக்குகந்தப் பதிப்பு",
index e8d274a..ef9e529 100644 (file)
@@ -25,8 +25,8 @@
        },
        "tog-underline": "การขีดเส้นใต้ลิงก์:",
        "tog-hideminor": "ซ่อนการแก้ไขเล็กน้อยในหน้าปรับปรุงล่าสุด",
-       "tog-hidepatrolled": "ซ่อนการแก้ไขที่ตรวจแล้วในหน้าปรับปรุงล่าสุด",
-       "tog-newpageshidepatrolled": "à¸\8bà¹\88อà¸\99หà¸\99à¹\89าà¸\97ีà¹\88à¸\95รวà¸\88à¹\81ลà¹\89วà¸\88าà¸\81รายการหน้าใหม่",
+       "tog-hidepatrolled": "à¸\8bà¹\88อà¸\99à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\97ีà¹\88à¸\95รวà¸\88สอà¸\9aà¹\81ลà¹\89วà¹\83à¸\99หà¸\99à¹\89าà¸\9bรัà¸\9aà¸\9bรุà¸\87ลà¹\88าสุà¸\94",
+       "tog-newpageshidepatrolled": "à¸\8bà¹\88อà¸\99หà¸\99à¹\89าà¸\97ีà¹\88à¸\95รวà¸\88สอà¸\9aà¹\81ลà¹\89วà¹\83à¸\99รายการหน้าใหม่",
        "tog-extendwatchlist": "ขยายรายการเฝ้าดูให้แสดงการเปลี่ยนแปลงทั้งหมด ไม่เพียงการเปลี่ยนแปลงล่าสุด",
        "tog-usenewrc": "จัดกลุ่มการเปลี่ยนแปลงแบ่งตามหน้าในรายการปรับปรุงล่าสุดและรายการเฝ้าดู",
        "tog-numberheadings": "ใส่เลขหัวเรื่องอัตโนมัติ",
@@ -35,7 +35,7 @@
        "tog-editsectiononrightclick": "เปิดใช้งานการแก้ไขเฉพาะส่วนโดยคลิกขวาที่ชื่อเรื่องของส่วนนั้น",
        "tog-watchcreations": "เพิ่มหน้าที่ฉันสร้างและไฟล์ที่ฉันอัปโหลดเข้ารายการเฝ้าดู",
        "tog-watchdefault": "เพิ่มหน้าและไฟล์ที่ฉันแก้ไขเข้ารายการเฝ้าดู",
-       "tog-watchmoves": "à¹\80à¸\9eิà¹\88มà¹\81ละà¹\84à¸\9fลà¹\8cà¸\97ีà¹\88à¸\89ัà¸\99à¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อเข้ารายการเฝ้าดู",
+       "tog-watchmoves": "à¹\80à¸\9eิà¹\88มà¹\81ละà¹\84à¸\9fลà¹\8cà¸\97ีà¹\88à¸\89ัà¸\99ยà¹\89ายเข้ารายการเฝ้าดู",
        "tog-watchdeletion": "เพิ่มหน้าและไฟล์ที่ฉันลบเข้ารายการเฝ้าดู",
        "tog-watchrollback": "เพิ่มหน้าที่ฉันย้อนกลับฉุกเฉินเข้ารายการเฝ้าดู",
        "tog-minordefault": "กำหนดการแก้ไขทุกครั้งเป็นการแก้ไขเล็กน้อยโดยปริยาย",
index afdb78d..1d2973f 100644 (file)
        "pager-older-n": "$1 daha eski",
        "suppress": "Gözetim",
        "querypage-disabled": "Bu özel sayfa, performansa dayalı nedenlerle devre dışı bırakılır.",
+       "apihelp-no-such-module": "\"$1\" modülü bulunamadı.",
        "booksources": "Kaynak kitaplar",
        "booksources-search-legend": "Kitap kaynaklarını ara",
        "booksources-isbn": "ISBN:",
        "import-error-create": "\"$1\" sayfası içe aktarılamadı çünkü sayfayı oluşturmaya yetkiniz yok.",
        "import-error-interwiki": "\"$1\" sayfası içe aktarılamadı çünkü sayfanın adı dış bağlantı için ayrılmış (vikilerarası).",
        "import-error-special": "\"$1\" sayfası içe aktarılamadı çünkü sayfalara izin vermeyen özel bir ad alanına ait.",
-       "import-error-invalid": "\"$1\" sayfası içe aktarılamadı çünkü sayfa adı geçersiz.",
+       "import-error-invalid": "\"$1\" sayfası içe aktarılamadı çünkü sayfa adı bu vikide geçersiz.",
        "import-error-unserialize": "\"$1\" sayfasının $2 revizyonu serileştirilmesi geri alınamıyor. Revizyonun $4 olarak serileştirilmiş $3 içerik modelini kullandığı raporlandı.",
        "import-error-bad-location": "\"$1\" sayfası için $3 içerik modelini kullanan $2 revizyonu, model sayfada desteklenmediğinden, bu vikide saklanamıyor.",
        "import-options-wrong": "Yanlış {{PLURAL:$2|seçenek|seçenek}}: <nowiki>$1</nowiki>",
        "importlogpage": "Aktarım günlüğü",
        "importlogpagetext": "Diğer vikilerden sayfaların değişiklik geçmişiyle idari içe aktarımları.",
        "import-logentry-upload": "[[$1]] dosya yüklemesiyle içe aktarıldı",
-       "import-logentry-upload-detail": "$1 {{PLURAL:$1|revizyon|revizyon}}",
+       "import-logentry-upload-detail": "$1 {{PLURAL:$1|revizyon|revizyon}} içe aktarıldı",
        "import-logentry-interwiki": "$1 transvikileşmiş",
-       "import-logentry-interwiki-detail": "$2 sayfasından $1 {{PLURAL:$1|revizyon|revizyon}}",
+       "import-logentry-interwiki-detail": "$2 sayfasından $1 {{PLURAL:$1|revizyon|revizyon}} içe aktarıldı",
        "javascripttest": "JavaScript denemesi",
        "javascripttest-title": "$1 testleri çalışıyor",
        "javascripttest-pagetext-noframework": "Bu sayfa JavaScript testleri çalıştırmak için ayrılmıştır.",
        "tooltip-pt-mycontris": "Katkılarınızın listesi",
        "tooltip-pt-login": "Oturum açmanızı tavsiye ederiz; ancak zorunda değilsiniz",
        "tooltip-pt-logout": "Sistemden çık",
+       "tooltip-pt-createaccount": "Bir hesap oluşturup oturum açmanız tavsiye edilmektedir ancak bu zorunlu değildir",
        "tooltip-ca-talk": "İçerik ile ilgili tartışma",
        "tooltip-ca-edit": "Bu sayfayı değiştirebilirsiniz. Lütfen kaydetmeden önce önizleme düğmesini kullanın.",
        "tooltip-ca-addsection": "Yeni bir altbaşlık aç",
        "pagelang-select-lang": "Dil seçin",
        "right-pagelang": "Sayfa dilini değiştir",
        "action-pagelang": "sayfa dilini değiştir",
+       "logentry-pagelang-pagelang": "$1, $3 sayfasının dilini $4 dilinden $5 diline {{GENDER:$2|çevirdi}}.",
        "mediastatistics": "Medya istatistikleri",
        "mediastatistics-summary": "Karşıya yüklenen dosya türlerine ilişkin istatistikler. Bu yalnızca bir dosyanın en son sürümünü içerir. Eski veya silinen dosyala sürümleri hariç tutulur.",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte|$1 byte}} ($2; $3%)",
index a33d17d..095f931 100644 (file)
        "content-model-text": "звичайний текст",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "Сторінки, що включають шаблони з дублікатним визначенням аргументу",
+       "duplicate-args-category-desc": "Тут перелічено сторінки, що містять дублікатне визначення аргументу при включенні шаблону, приміром, <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> або <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "'''Увага:''' Ця сторінка містить дуже багато викликів ресурсомістких функцій.\n\nКількість викликів не повинна перевищувати $2, зараз потрібно зробити $1 {{PLURAL:$1|виклик|виклики|викликів}}.",
        "expensive-parserfunction-category": "Сторінки з дуже великою кількістю викликів ресурсомістких функцій",
        "post-expand-template-inclusion-warning": "'''Увага:''' розмір шаблонів для включення занадто великий.\nДеякі шаблони не буде включено.",
        "gender-female": "Жіноча",
        "prefs-help-gender": "Задання цього параметру - необов'язкове. Застосовується рушієм у тих звертаннях до користувача, які залежать від статі.\nЦя інформація загальнодоступна.",
        "email": "Електронна пошта",
-       "prefs-help-realname": "СпÑ\80авжнÑ\94 Ñ\96м'Ñ\8f Ð½ÐµÐ¾Ð±Ð¾Ð²'Ñ\8fзково Ð²ÐºÐ°Ð·Ñ\83ваÑ\82и.\nЯкÑ\89о Ð²Ð¸ Ð¹Ð¾Ð³Ð¾ Ð·Ð°Ð·Ð½Ð°Ñ\87иÑ\82е, Ñ\82о Ð²Ð¾Ð½Ð¾ Ð±Ñ\83де Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83ваÑ\82иÑ\81Ñ\8f, Ñ\89об Ð¿Ð¾ÐºÐ°Ð·Ð°Ñ\82и, Ñ\85Ñ\82о Ñ\80едагÑ\83вав Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83.",
+       "prefs-help-realname": "СпÑ\80авжнÑ\94 Ñ\96м'Ñ\8f Ð²ÐºÐ°Ð·Ñ\83ваÑ\82и Ð½ÐµÐ¾Ð±Ð¾Ð²'Ñ\8fзково.\nЯкÑ\89о Ð²Ð¸ Ð¹Ð¾Ð³Ð¾ Ð·Ð°Ð·Ð½Ð°Ñ\87иÑ\82е, Ñ\82о Ñ\81аме Ð· Ð½Ð¸Ð¼ Ð¼Ð¾Ð¶Ðµ Ð±Ñ\83Ñ\82и Ð¿Ð¾Ð²'Ñ\8fзаний Ñ\83веÑ\81Ñ\8c Ð²Ð°Ñ\88 Ð´Ð¾Ñ\80обок.",
        "prefs-help-email": "Адреса електронної пошти не є обов'язковою, але необхідна для скидання пароля, якщо ви його забудете.",
        "prefs-help-email-others": "Також вона дозволить іншим користувачам зв'язатися з вами через вашу особисту сторінку без необхідності розкриття вашої електронної адреси.",
        "prefs-help-email-required": "Потрібно зазначити адресу електронної пошти.",
        "pager-older-n": "{{PLURAL:$1|старіша|старіші|старіших}} $1",
        "suppress": "Ревізор",
        "querypage-disabled": "Цю спеціальну сторінку вимкнуто для покращення продуктивності.",
+       "apihelp": "Довідка з API",
+       "apihelp-no-such-module": "Додаток \"$1\" не знайдено.",
        "booksources": "Джерела книг",
        "booksources-search-legend": "Пошук інформації про книгу",
        "booksources-isbn": "ISBN:",
        "move-page": "Перейменування сторінки «$1»",
        "move-page-legend": "Перейменування сторінки",
        "movepagetext": "Скориставшись формою нижче, ви можете перейменувати сторінку, одночасно перемістивши на нове місце і журнал її редагувань.\nСтара назва стане перенаправленням на нову назву.\nВи можете автоматично оновити перенаправлення на стару назву.\nЯкщо ви цього не зробите, будь ласка, перевірте наявність [[Special:DoubleRedirects|подвійних]] чи [[Special:BrokenRedirects|розірваних]] перенаправлень.\nВи відповідаєте за те, щоб посилання і надалі вказували туди, куди припускалося.\n\nЗверніть увагу, що сторінка '''не''' буде перейменована, якщо сторінка з новою назвою вже існує, окрім випадків, коли остання порожня або є перенаправленням, а журнал її редагувань порожній.\nЦе означає, що ви можете повернути сторінці стару назву, якщо ви перейменували її помилково, але ви не можете затерти існуючу сторінку.\n\n'''ПОПЕРЕДЖЕННЯ!'''\nЦя дія може стати причиною серйозних та неочікуваних змін популярних сторінок.\nБудь ласка, перед продовженням переконайтесь, що ви розумієте всі можливі наслідки.",
-       "movepagetext-noredirectfixer": "ЦÑ\8f Ñ\84оÑ\80ма Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\8fÑ\94 Ð¿ÐµÑ\80ейменÑ\83ваÑ\82и Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83 Ð· Ð¾Ð´Ð½Ð¾Ñ\87аÑ\81ним Ð¿ÐµÑ\80емÑ\96Ñ\89еннÑ\8fм Ñ\97Ñ\97 Ð¶Ñ\83Ñ\80налÑ\83 Ð·Ð¼Ñ\96н.\nСÑ\82аÑ\80а Ð½Ð°Ð·Ð²Ð° Ñ\81Ñ\82ане Ð¿ÐµÑ\80енапÑ\80авленнÑ\8fм Ð½Ð° Ð½Ð¾Ð²Ñ\83.\nÐ\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð½Ðµ Ð·Ð°Ð±Ñ\83дÑ\8cÑ\82е Ð²Ð¸Ð¿Ñ\80авиÑ\82и [[Special:DoubleRedirects|подвÑ\96йнÑ\96]] Ñ\96 [[Special:BrokenRedirects|розірвані перенаправлення]].\nВи відповідаєте за те, щоб посилання і далі вказували туди, куди треба.\n\nЗверніть увагу, що сторінка '''не буде''' перейменована, якщо сторінка з новою назвою вже існує, крім випадків, коли вона є перенаправленням або порожня та не має історії редагувань.\nЦе означає, що Ви можете перейменувати сторінку назад, якщо Ви допустилися помилки, і при цьому не зможете випадково перезаписати наявну сторінку.\n\n'''Попередження!'''\nПерейменування може призвести до масштабних і несподіваних змін для ''популярних'' сторінок.\nТому перед перейменуванням упевніться, що Ви оцінили можливі наслідки.",
+       "movepagetext-noredirectfixer": "ЦÑ\8f Ñ\84оÑ\80ма Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\8fÑ\94 Ð¿ÐµÑ\80ейменÑ\83ваÑ\82и Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83 Ð· Ð¾Ð´Ð½Ð¾Ñ\87аÑ\81ним Ð¿ÐµÑ\80емÑ\96Ñ\89еннÑ\8fм Ñ\97Ñ\97 Ð¶Ñ\83Ñ\80налÑ\83 Ð·Ð¼Ñ\96н.\nСÑ\82аÑ\80а Ð½Ð°Ð·Ð²Ð° Ñ\81Ñ\82ане Ð¿ÐµÑ\80енапÑ\80авленнÑ\8fм Ð½Ð° Ð½Ð¾Ð²Ñ\83.\nÐ\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð½Ðµ Ð·Ð°Ð±Ñ\83дÑ\8cÑ\82е Ð²Ð¸Ð¿Ñ\80авиÑ\82и [[Special:DoubleRedirects|подвÑ\96йнÑ\96]] Ñ\82а [[Special:BrokenRedirects|розірвані перенаправлення]].\nВи відповідаєте за те, щоб посилання і далі вказували туди, куди треба.\n\nЗверніть увагу, що сторінка '''не буде''' перейменована, якщо сторінка з новою назвою вже існує, крім випадків, коли вона є перенаправленням або порожня та не має історії редагувань.\nЦе означає, що Ви можете перейменувати сторінку назад, якщо Ви допустилися помилки, і при цьому не зможете випадково перезаписати наявну сторінку.\n\n'''Попередження!'''\nПерейменування може призвести до масштабних і несподіваних змін для ''популярних'' сторінок.\nТому перед перейменуванням упевніться, що Ви оцінили можливі наслідки.",
        "movepagetalktext": "Приєднана сторінка обговорення також буде автоматично перейменована, '''окрім таких випадків:'''\n* Непорожня сторінка обговорення з такою назвою вже існує або\n* Ви не поставили галочку в полі нижче.\n\nУ цих випадках ви будете змушені перейменувати чи об'єднати сторінки вручну в разі необхідності",
        "movearticle": "Перейменувати сторінку",
        "moveuserpage-warning": "'''Увага:''' Ви збираєтеся перейменувати сторінку користувача. Будь ласка, зверніть увагу, що  буде перейменовано тільки сторінку, але користувача '''не''' буде перейменовано.",
        "tooltip-pt-mycontris": "Ваш внесок",
        "tooltip-pt-login": "Тут можна зареєструватися в системі, але це не обов'язково.",
        "tooltip-pt-logout": "Вихід із системи",
+       "tooltip-pt-createaccount": "Пропонуємо створити обліковий запис і увійти в систему; однак, це не обов'язково",
        "tooltip-ca-talk": "Обговорення змісту сторінки",
        "tooltip-ca-edit": "Ви можете редагувати цю сторінку. Будь ласка, використовуйте кнопку попереднього перегляду перед збереженням",
        "tooltip-ca-addsection": "Створити новий розділ",
        "tooltip-feed-atom": "Трансляція в Atom для цієї сторінки",
        "tooltip-t-contributions": "Перегляд внеску цього користувача",
        "tooltip-t-emailuser": "Надіслати листа цьому користувачеві",
+       "tooltip-t-info": "Додаткові відомості про цю сторінку",
        "tooltip-t-upload": "Завантажити файли",
        "tooltip-t-specialpages": "Перелік спеціальних сторінок",
        "tooltip-t-print": "Версія цієї сторінки для друку",
        "unknown_extension_tag": "Невідомий тег доповнення «$1»",
        "duplicate-defaultsort": "Увага. Ключ сортування «$2» перекриває попередній ключ сортування «$1».",
        "duplicate-displaytitle": "<strong>Увага:</strong> Відображений заголовок \"$2\" заміщує раніше відображений заголовок \"$1\".",
+       "invalid-indicator-name": "<strong>Помилка:</strong> Сторінка індикатора стану <code>name</code> атрибута не може бути пуста.",
        "version": "Версія MediaWiki",
        "version-extensions": "Установлені розширення",
        "version-skins": "Встановлені теми оформлення",
index 73006fd..0e22ebe 100644 (file)
@@ -9,17 +9,18 @@
                        "Nataev",
                        "Sociologist",
                        "Xexdof",
-                       "Arystanbek"
+                       "Arystanbek",
+                       "6ahodir"
                ]
        },
        "tog-underline": "Havolalarning tagiga chizish:",
-       "tog-hideminor": "Yangi oʻzgarishlar roʻyxatida kichik tahrirlarni yashirish",
-       "tog-hidepatrolled": "Yangi oʻzgarishlar roʻyxatida tekshirilgan tahrirlarni yashirish",
-       "tog-newpageshidepatrolled": "Yangi sahifalar roʻyxatida tekshirilgan sahifalarni yashirish",
+       "tog-hideminor": "Yangi oʻzgarishlar roʻyxatidan kichik tahrirlarni yashirish",
+       "tog-hidepatrolled": "Yangi oʻzgarishlar roʻyxatidan tekshirilgan tahrirlarni yashirish",
+       "tog-newpageshidepatrolled": "Yangi sahifalar roʻyxatidan tekshirilgan sahifalarni yashirish",
        "tog-extendwatchlist": "Kengaytirilgan kuzatuv roʻyxati: faqat oxirgi paytdagi emas, barcha oʻzgarishlar koʻrsatiladi",
        "tog-usenewrc": "Yangi oʻzgarishlar va kuzatuv roʻyxatidagi sahifalarni guruhlarga boʻlish (JavaScript orqali)",
        "tog-numberheadings": "Sarlavhalarni avtomatik raqamlash",
-       "tog-showtoolbar": "Yuqoridagi tahrirlash asboblarini koʻrsatish",
+       "tog-showtoolbar": "Tahrirlash asboblarini koʻrsatish",
        "tog-editondblclick": "Sichqonchaning chap tugmasini ikki marta bosib tahrirlashni boshlash",
        "tog-editsectiononrightclick": "Boʻlim sarlavhasiga sichqonchaning oʻng tugmasini bosib tahrirlashni boshlash",
        "tog-watchcreations": "Men yaratgan sahifalar va yuklagan fayllar kuzatuv roʻyxatimga qoʻshilsin",
        "thu": "Pay",
        "fri": "Jum",
        "sat": "Shn",
-       "january": "yanvar",
-       "february": "fevral",
-       "march": "mart",
-       "april": "aprel",
-       "may_long": "may",
-       "june": "iyun",
-       "july": "iyul",
-       "august": "avgust",
-       "september": "sentabr",
-       "october": "oktabr",
-       "november": "noyabr",
-       "december": "dekabr",
-       "january-gen": "yanvar",
-       "february-gen": "fevral",
-       "march-gen": "mart",
-       "april-gen": "aprel",
-       "may-gen": "may",
-       "june-gen": "iyun",
-       "july-gen": "iyul",
-       "august-gen": "avgust",
-       "september-gen": "sentabr",
-       "october-gen": "oktabr",
-       "november-gen": "noyabr",
-       "december-gen": "dekabr",
-       "jan": "yan",
-       "feb": "fev",
-       "mar": "mar",
-       "apr": "apr",
-       "may": "may",
-       "jun": "iyn",
-       "jul": "iyl",
-       "aug": "avg",
-       "sep": "sen",
-       "oct": "okt",
-       "nov": "noy",
-       "dec": "dek",
+       "january": "Yanvar",
+       "february": "Fevral",
+       "march": "Mart",
+       "april": "Aprel",
+       "may_long": "May",
+       "june": "Iyun",
+       "july": "Iyul",
+       "august": "Avgust",
+       "september": "Sentabr",
+       "october": "Oktabr",
+       "november": "Noyabr",
+       "december": "Dekabr",
+       "january-gen": "Yanvar",
+       "february-gen": "Fevral",
+       "march-gen": "Mart",
+       "april-gen": "Aprel",
+       "may-gen": "May",
+       "june-gen": "Iyun",
+       "july-gen": "Iyul",
+       "august-gen": "Avgust",
+       "september-gen": "Sentabr",
+       "october-gen": "Oktabr",
+       "november-gen": "Noyabr",
+       "december-gen": "Dekabr",
+       "jan": "Yan",
+       "feb": "Fev",
+       "mar": "Mar",
+       "apr": "Apr",
+       "may": "May",
+       "jun": "Jyn",
+       "jul": "Iyl",
+       "aug": "Avg",
+       "sep": "Sen",
+       "oct": "Okt",
+       "nov": "Noy",
+       "dec": "Dek",
        "january-date": "Yanvar $1",
        "february-date": "Fevral $1",
        "march-date": "Mart $1",
        "april-date": "Aprel $1",
+       "may-date": "$1-may",
        "june-date": "Iyun $1",
        "july-date": "Iyul $1",
        "august-date": "Avgust $1",
        "november-date": "Noyabr $1",
        "december-date": "Dekabr $1",
        "pagecategories": "{{PLURAL:$1|Turkum}}",
-       "category_header": "\"$1\" turkumidagi maqolalar.",
+       "category_header": "\"$1\" turkumidagi sahifalar",
        "subcategories": "Ostturkumlar",
        "category-media-header": "\"$1\" turkumidagi fayllar",
        "category-empty": "''Ushbu turkumda hozircha sahifa yoki fayllar yoʻq.''",
        "anontalk": "Ushbu IP-manzil munozarasi",
        "navigation": "Saytda harakatlanish",
        "and": "&#32;va",
-       "qbfind": "Qidiruv",
-       "qbbrowse": "Koʻrish",
+       "qbfind": "Topish",
+       "qbbrowse": "Koʻrib chiqish",
        "qbedit": "Tahrirlash",
        "qbpageoptions": "Ushbu sahifa moslamalari",
-       "qbmyoptions": "Moslamalarim",
+       "qbmyoptions": "Mening sahifalarim",
        "faq": "TSS",
-       "faqpage": "Project:TSS",
+       "faqpage": "Loyiha:TSS",
        "actions": "Amallar",
        "namespaces": "Nomfazolar",
        "variants": "Variantlar",
        "permalink": "Doimiy ishorat",
        "print": "Chop etish",
        "view": "Koʻrish",
+       "view-foreign": "$1 da koʻrish",
        "edit": "Tahrirlash",
        "create": "Yaratish",
        "editthispage": "Ushbu sahifani tahrirlash",
        "hidetoc": "yashirish",
        "collapsible-collapse": "Yigʻish",
        "collapsible-expand": "Yoyish",
+       "confirmable-yes": "Ha",
+       "confirmable-no": "Yoʻq",
        "thisisdeleted": "$1ni koʻrib chiqasizmi yoki tiklaysizmi?",
        "viewdeleted": "$1ni koʻrib chiqasizmi?",
        "restorelink": "{{PLURAL:$1|Oʻchirilgan tahrir|$1 ta oʻchirilgan tahrirlar}}",
        "nosuchaction": "Bunday amal yoʻq",
        "nosuchspecialpage": "Bunday maxsus sahifa yoʻq",
        "error": "Xato",
+       "databaseerror": "Maʼlumotlar bazasida xatolik",
+       "databaseerror-query": "So‘rov: $1",
+       "databaseerror-function": "Funktsiya: $1",
+       "databaseerror-error": "Xato: $1",
        "laggedslavemode": "'''Diqqat:''' sahifada oxirgi yangilanishlar koʻrsatilmagan boʻlishi mumkin.",
        "readonly": "Maʼlumotlar bazasiga yozish toʻsilgan",
        "missingarticle-rev": "(versiya №: $1)",
        "gotaccountlink": "Kirish",
        "userlogin-resetlink": "Kirish maʻlumotlaringiz esdan chiqdimi?",
        "userlogin-resetpassword-link": "Unutib qoʻydingizmi?",
+       "userlogin-helplink2": "Kirish uchun yordam",
        "userlogin-loggedin": "Siz {{GENDER:$1|$1}} nomi bilan kirgansiz.\nBoshqa hisob raqami orqali kirish uchun quyidagi formadan foydalaning.",
        "userlogin-createanother": "Boshqa hisob yaratish",
        "createacct-emailrequired": "Elektron pochta manzilingiz",
        "login-abort-generic": "Tizimga kirishga mufavvaqiyatsiz urinish",
        "loginlanguagelabel": "Til: $1",
        "pt-login": "Kirish",
+       "pt-login-button": "Kirish",
        "pt-createaccount": "Hisob yaratish",
        "pt-userlogout": "Chiqish",
        "changepassword": "Maxfiy soʻzni oʻzgartirish",
        "recentchangescount": "Sukut boʻyicha koʻrsatiladigan tahrirlar soni:",
        "prefs-help-recentchangescount": "Yangi oʻzgarishlar, sahifalar tarixi va qaydlar uchun",
        "prefs-help-watchlist-token2": "Bu kuzatuv roʻyxatingizning veb-kanali uchun maxfiy kalit kodi.\nBu kodni biladigan har kim sizning kuzatuv roʻyxatingizni koʻrishi mumkin, shuning uchun boshqalarga uni oshkor qilmang. [[Special:ResetTokens|Tokenni yangilash]].",
-       "savedprefs": "Sizning moslamalaringiz saqlandi.",
+       "savedprefs": "Sizning moslamalaringiz saqlandi",
        "timezonelegend": "Vaqt mintaqangiz:",
        "localtime": "Mahalliy vaqt:",
        "timezoneuseserverdefault": "Server moslamalaridan foydalanish ($1)",
        "watchlist-details": "Sizning kuzatuv roʻyxatingizda hozirda {{PLURAL:$1|bitta sahifa|$1ta sahifa}} mavjud (munozara sahifalarini hisobga olmaganda).",
        "wlheader-showupdated": "Siz oxirgi marta kirganingizdan keyin oʻzgartirilgan sahifalar '''qalin''' yozuv bilan ajratib koʻrsatilgan.",
        "wlnote": "Below {{PLURAL:$1|is the last change|are the last '''$1''' changes}} in the last {{PLURAL:$2|hour|'''$2''' hours}}, as of $3, $4.",
-       "wlshowlast": "Oxirgi $1 soatdagi $2 kundagi tahrirlarni koʻrsat",
+       "wlshowlast": "Oxirgi $1 soatdagi $2 kundagi tahrirlarni koʻrsatish",
        "watchlist-options": "Kuzatuv roʻyxati moslamalari",
        "watching": "Kuzatish...",
        "unwatching": "Kuzatuv ro'yxatidan o'chirish...",
index 95434b4..fa1d974 100644 (file)
        "pager-older-n": "{{PLURAL:$1|1|$1}} cũ hơn",
        "suppress": "Giám sát viên",
        "querypage-disabled": "Trang đặc biệt này bị tắt vì lý do hiệu suất.",
+       "apihelp": "Trợ giúp API",
+       "apihelp-no-such-module": "Không tìm thấy mô đun “$1”",
        "booksources": "Nguồn sách",
        "booksources-search-legend": "Tìm kiếm nguồn sách",
        "booksources-search": "Tìm kiếm",
        "tooltip-pt-mycontris": "Danh sách các đóng góp của tôi",
        "tooltip-pt-login": "Đăng nhập sẽ có lợi hơn, tuy nhiên không bắt buộc.",
        "tooltip-pt-logout": "Đăng xuất",
+       "tooltip-pt-createaccount": "Khuyến khích bạn mở tài khoản và đăng nhập; tuy nhiên, không phải bắt buộc phải có tài khoản",
        "tooltip-ca-talk": "Thảo luận về trang này",
        "tooltip-ca-edit": "Bạn có thể sửa được trang này! (Xin vui lòng xem trước trước khi lưu.)",
        "tooltip-ca-addsection": "Bắt đầu một đề mục mới",
        "tooltip-feed-atom": "Nguồn cấp Atom của trang này",
        "tooltip-t-contributions": "Xem đóng góp của người này",
        "tooltip-t-emailuser": "Gửi thư cho người này",
+       "tooltip-t-info": "Thêm chi tiết về trang này",
        "tooltip-t-upload": "Tải hình ảnh hoặc tập tin lên",
        "tooltip-t-specialpages": "Danh sách các trang đặc biệt",
        "tooltip-t-print": "Bản để in ra của trang",
index 6d6c6da..b62b7ee 100644 (file)
@@ -16,7 +16,8 @@
                        "Duolaimi",
                        "Impersonator 1",
                        "LNDDYL",
-                       "TheChampionMan1234"
+                       "TheChampionMan1234",
+                       "Fitoschido"
                ]
        },
        "tog-underline": "鏈接下橫線:",
        "databaseerror-text": "數據庫討信出錯。\n嘸數說明軟件裏有一個bug。",
        "databaseerror-textcl": "數據庫討信出錯。",
        "databaseerror-query": "討信:$1",
-       "databaseerror-function": "功能ː $1",
+       "databaseerror-function": "功能: $1",
        "databaseerror-error": "出錯:$1",
        "laggedslavemode": "警告: 页面可能弗包含最近个更新。",
        "readonly": "數據庫鎖牢",
index c8799e2..b1a8c0b 100644 (file)
        "gender-female": "זי רעדאקטירט וויקי בלעטער",
        "prefs-help-gender": "שטעלן דעם פרעפֿערענץ איז אפציאנאַל.\nדאס ווייכוואַרג באניצט זיין ווערט אײַך צו אַדרעסירן און דערמאנען צו אנדערע מיטן געהעריגן מין פֿארעם. \nדי אינפֿארמאַציע ווערט ידוע צו אַלעמען.",
        "email": "ע-פאסט",
-       "prefs-help-realname": "* עכטער נאמען (אפציאנאל): אויב וועט איר אויסוועלן צוצישטעלן דאס, וועט גענוצט ווערן צו געבן אטריביאציע צו אייער ארבייט.",
+       "prefs-help-realname": "עכטער נאמען איז אפציאנאל.\nווען אנגעגעבן, וועט ער גענוצט ווערן צו געבן אטריבוציע פאר אייער ארבעט.",
        "prefs-help-email": "ע-פאסט אַדרעס איז ברירהדיק, אבער עס דערמעגליכט אז מען קען אייך שיקן א ניי פאסווארט טאמער איר פֿארגעסט דאָס אַלטע.",
        "prefs-help-email-others": "איר קענט אויך אויסקלייבן צו לאזן אנדערע פֿארבינדן מיט אייך דורך ע־פאסט דורך א לינק אויף אייער באניצער אדער שמועס בלאט.\nמען וועט נישט אנטפלעקן אייער ע־פאסט אדרעס ווען אנדערע פֿארבינדן זיך מיט אייך.",
        "prefs-help-email-required": "בליצפאסט אדרעס באדארפט.",
index 3a281e4..9e3848d 100644 (file)
        "content-model-text": "纯文本",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "页面的模板调用中使用重复参数",
+       "duplicate-args-category-desc": "页面包含使用重复参数的模板调用,例如<code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code>或<code><nowiki>{{foo|bar|1=baz}}</nowiki></code>。",
        "expensive-parserfunction-warning": "<strong>警告:</strong>这个页面有太多高昂的语法功能调用。\n\n它应该少过$2次呼叫,现在有$1次呼叫。",
-       "expensive-parserfunction-category": "有过多高开销解析器函数调用的页面",
+       "expensive-parserfunction-category": "页面中有太多耗费的语法功能呼叫",
        "post-expand-template-inclusion-warning": "'''警告:'''包含模板大小过大。\n一些模板将不会包含。",
        "post-expand-template-inclusion-category": "模板包含上限已经超过的页面",
        "post-expand-template-argument-warning": "<strong>警告:</strong>本页面包含至少一个模板参数有过大扩展大小。这些参数会被略过。",
        "gender-female": "她",
        "prefs-help-gender": "该设置为可选项。软件根据该值在称呼您及对他人提及您时使用适当的语法性别。该信息会被公开。",
        "email": "电子邮件",
-       "prefs-help-realname": "真实姓名是选填项目。如果你选择提供它,它将会用于贡献署名。",
+       "prefs-help-realname": "真实姓名是选填项目。如果提供,它可能用于署名您的贡献。",
        "prefs-help-email": "电子邮件地址是选填项,但是当你忘记你的密码要重置密码时,需要该信息。",
        "prefs-help-email-others": "您也可以选择让其他用户通过您的用户或讨论页面上的链接用电子邮件联系您。其他用户联系您时您的电子邮件地址不会显示。",
        "prefs-help-email-required": "电子邮件地址是必填项目。",
        "pager-older-n": "后$1个",
        "suppress": "监督",
        "querypage-disabled": "本特殊页面因性能问题而停用。",
+       "apihelp": "API 帮助",
+       "apihelp-no-such-module": "找不到模块“$1”。",
        "booksources": "网络书源",
        "booksources-search-legend": "搜索图书来源",
        "booksources-isbn": "ISBN:",
        "importlogpagetext": "管理性导入在其他wiki上有编辑历史的页面。",
        "import-logentry-upload": "通过文件上传导入[[$1]]",
        "import-logentry-upload-detail": "导入$1个{{PLURAL:$1|版本}}",
-       "import-logentry-interwiki": "跨wiki页面$1",
-       "import-logentry-interwiki-detail": "导入自$2的$1个{{PLURAL:$1|版本}}",
+       "import-logentry-interwiki": "跨wiki导入页面$1",
+       "import-logentry-interwiki-detail": "来自$2的$1个{{PLURAL:$1|版本}}已导入",
        "javascripttest": "JavaScript测试",
        "javascripttest-title": "运行$1测试",
        "javascripttest-pagetext-noframework": "本页面被保留进行JavaScript测试。",
        "tooltip-pt-mycontris": "你的贡献的列表",
        "tooltip-pt-login": "我们鼓励您登录,不过这不是强制的",
        "tooltip-pt-logout": "退出登录",
+       "tooltip-pt-createaccount": "我们鼓励您创建一个账户并登录;然而这不是强制的",
        "tooltip-ca-talk": "关于内容页面的讨论",
        "tooltip-ca-edit": "你可以编辑本页面。请在保存前使用预览按钮",
        "tooltip-ca-addsection": "开始新段落",
        "tooltip-feed-atom": "本页面的Atom源",
        "tooltip-t-contributions": "该用户的贡献的列表",
        "tooltip-t-emailuser": "给该用户发送电子邮件",
+       "tooltip-t-info": "关于此页面的更多信息",
        "tooltip-t-upload": "上传文件",
        "tooltip-t-specialpages": "所有特殊页面的列表",
        "tooltip-t-print": "本页面的可打印版本",
        "unknown_extension_tag": "未知扩展标签“$1”",
        "duplicate-defaultsort": "'''警告:'''默认排序关键词“$2”覆盖了之前的默认排序关键词“$1”。",
        "duplicate-displaytitle": "<strong>警告:</strong>显示的标题“$2”重写了此前显示的标题“$1”。",
+       "invalid-indicator-name": "<strong>错误:</strong>页面状态指示器的<code>name</code>属性必须不为空。",
        "version": "版本",
        "version-extensions": "安装的扩展程序",
        "version-skins": "已安装皮肤",
        "log-description-pagelang": "这是页面语言更改的日志。",
        "logentry-pagelang-pagelang": "$1{{GENDER:$2|更改}}$3的页面语言:从$4改为$5。",
        "default-skin-not-found": "天哪!您在<code dir=\"ltr\">$wgDefaultSkin</code>定义的wiki默认皮肤<code>$1</code>不可用。您的安装版本看起来需要包含以下皮肤。参见MediaWiki官网手册[https://www.mediawiki.org/wiki/Manual:Skin_configuration “皮肤配置”]获取如何启用他们并设置为默认。\n\n$2\n\n; 如果您刚刚安装完了MediaWiki的话:\n: 您可能是从git库安装的,或者使用其他方法直接从源代码安装的。希望如此。尝试通过以下方法从[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org的皮肤存储库]安装一些皮肤:\n:* 下载[https://www.mediawiki.org/wiki/Download/zh-hans 打包安装器],这会预装一些皮肤和扩展。您可在此处复制粘贴<code>skins/</code>。\n:* 通过git直接克隆<code>mediawiki/skins/*</code>存储库中的一个至您的MediaWiki副本的<code dir=\"ltr\">skins/</code>。\n: 做这些事应该不会打扰您的git存储库如果你是MediaWiki开发人员的话。\n\n; 如果您升级了您的MediaWiki的话:\n: MediaWiki 1.24版本起不再自动启用已安装皮肤(参见[https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery 此手册])。您可复制粘贴以下文本至您wiki的<code>LocalSettings.php</code>以启用安装的皮肤:\n\n<pre dir=\"ltr\">$3</pre>\n\n; 如果您已经修改了<code>LocalSettings.php</code>:\n: 请再次检查皮肤名以确保不存在错误拼写。",
-       "default-skin-not-found-no-skins": "天哪!您在<code>$wgDefaultSkin</code>定义的wiki默认皮肤<code>$1</code>不可用。而且您没有安装任何皮肤。\n\n; 如果您刚刚安装完了MediaWiki的话:\n: 您可能是从git库安装的,或者使用其他方法直接从源代码安装的。希望如此。尝试通过以下方法从[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org的皮肤存储库]安装一些皮肤:\n:* 下载[https://www.mediawiki.org/wiki/Download/zh-hans 打包安装器],这会预装一些皮肤和扩展。您可在此处复制粘贴<code>skins/</code>。\n:* 通过git直接克隆<code>mediawiki/skins/*</code>存储库中的一个至您的MediaWiki副本的<code dir=\"ltr\">skins/</code>。\n: 做这些事应该不会打扰您的git存储库如果你是MediaWiki开发人员的话。参见MediaWiki官网手册[https://www.mediawiki.org/wiki/Manual:Skin_configuration “皮肤配置”]获取如何启用他们并设置为默认。",
+       "default-skin-not-found-no-skins": "天哪!您在<code>$wgDefaultSkin</code>定义的wiki默认皮肤<code>$1</code>不可用。而且您没有安装任何皮肤。\n\n; 如果您刚刚安装完了MediaWiki的话:\n: 您可能是从git库安装的,或者使用其他方法直接从源代码安装的,希望如此。这是因为MediaWiki 1.24版本起主代码库不再包含任何皮肤。尝试通过以下方法从[https://www.mediawiki.org/wiki/Special:MyLanguage/Category:All_skins mediawiki.org的皮肤存储库]安装一些皮肤:\n:* 下载[https://www.mediawiki.org/wiki/Download/zh-hans 打包安装器],这会预装一些皮肤和扩展。您可在此处复制粘贴<code>skins/</code>。\n:* 通过git直接克隆<code>mediawiki/skins/*</code>存储库中的一个至您的MediaWiki副本的<code dir=\"ltr\">skins/</code>。\n: 做这些事应该不会打扰您的git存储库如果你是MediaWiki开发人员的话。参见MediaWiki官网手册[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_configuration “皮肤配置”]获取如何启用他们并设置为默认。",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2(已启用)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2('''已禁用''')",
        "mediastatistics": "媒体统计",
        "mediastatistics-summary": "有关上传文件类型的统计。这只包含文件的最新版本,旧版本或删除版本则不会包括。",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1字节}}($2;$3%)",
        "mediastatistics-table-mimetype": "MIME类型",
-       "mediastatistics-table-extensions": "可能的扩展",
+       "mediastatistics-table-extensions": "可用扩展名",
        "mediastatistics-table-count": "文件数",
        "mediastatistics-table-totalbytes": "组合尺寸",
        "mediastatistics-header-unknown": "未知",
index b3afe53..7c59b32 100644 (file)
                        "EagerLin"
                ]
        },
-       "tog-underline": "連結顯示底線:",
-       "tog-hideminor": "隱藏最近變更以來的小編輯",
-       "tog-hidepatrolled": "隱藏最近變更中巡查過的編輯",
+       "tog-underline": "底線標示連結:",
+       "tog-hideminor": "隱藏近期變更以來的小編輯",
+       "tog-hidepatrolled": "隱藏近期變更中巡查過的編輯",
        "tog-newpageshidepatrolled": "隱藏新頁面清單中巡查過的頁面",
        "tog-extendwatchlist": "展開監視清單顯示包含最近以外的所有變更",
-       "tog-usenewrc": "依最近變更與監視清單頁面分類顯示變更",
+       "tog-usenewrc": "依近期變更與監視清單頁面分類顯示變更",
        "tog-numberheadings": "標題自動編號",
        "tog-showtoolbar": "顯示編輯工具列",
        "tog-editondblclick": "開啟滑鼠雙擊編輯頁面",
        "userpage-userdoesnotexist": "使用者帳號 \"$1\" 尚未註冊。\n若您要建立/編輯此頁面,請先檢查是否正確。",
        "userpage-userdoesnotexist-view": "使用者帳號 \"$1\" 尚未註冊。",
        "blocked-notice-logextract": "此使用者目前已被封鎖。\n以下為最近的封鎖紀錄以供參考:",
-       "clearyourcache": "<strong>注意:</strong>在您儲存之後您必須清除瀏覽器快取才可看到最新的變動。\n* <strong>Firefox / Safari:</strong>按住 <em>Shift</em> 時點選 <em>重新整理</em>,或按 <em>Ctrl-F5</em> 或 <em>Ctrl-R</em>(Mac 則為 <em>⌘-R</em>)\n* <strong>Google Chrome:</strong>按 <em>Ctrl-Shift-R</em>(Mac 則為 <em>⌘-Shift-R</em>)\n* <strong>Internet Explorer:</strong>按住 <em>Ctrl</em> 時點選 <em>重新整理</em>,或按 <em>Ctrl-F5</em>\n* <strong>Opera:</strong>進入 <em>工具 → 偏好設定</em> 中清除快取。",
+       "clearyourcache": "<strong>注意:</strong>在您儲存之後您必須清除瀏覽器快取才可看到最新的變動。\n* <strong>Firefox / Safari:</strong>按住 <em>Shift</em> 時點選 <em>重新整理</em>,或按 <em>Ctrl-F5</em> 或 <em>Ctrl-R</em> (Mac 則為 <em>⌘-R</em>) \n* <strong>Google Chrome:</strong>按 <em>Ctrl-Shift-R</em> (Mac 則為 <em>⌘-Shift-R</em>) \n* <strong>Internet Explorer:</strong>按住 <em>Ctrl</em> 時點選 <em>重新整理</em>,或按 <em>Ctrl-F5</em>\n* <strong>Opera:</strong>進入 <em>工具 → 偏好設定</em> 中清除快取。",
        "usercssyoucanpreview": "<strong>提示:</strong>在儲存之前使用 \"{{int:showpreview}}\" 按鈕來測試您的新 CSS。",
        "userjsyoucanpreview": "<strong>提示:</strong>在儲存之前使用 \"{{int:showpreview}}\" 按鈕來測試您的新 JavaScript。",
        "usercsspreview": "<strong>您目前正預覽您的使用者 CSS,CSS 還尚未儲存!</strong>",
        "content-model-text": "純文字",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-category": "樣版呼叫時使用重複的參數的頁面",
+       "duplicate-args-category-desc": "該頁面包含重複使用參數的樣版呼叫,如 <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> 或 <code><nowiki>{{foo|bar|1=baz}}</nowiki>。",
        "expensive-parserfunction-warning": "<strong>警告:</strong>此頁面使用了太多消耗系統資源的解析函數。\n\n使用次數應小於 $2 次,但目前使用了 $1 次。",
        "expensive-parserfunction-category": "使用了太多消耗系統資源的分析函數的頁面",
        "post-expand-template-inclusion-warning": "<strong>警告:</strong>引用樣板後大小超出限制。\n部份樣版內容將不會被使用。",
        "search-suggest": "您指的是不是:$1",
        "search-interwiki-caption": "姐妹專案",
        "search-interwiki-default": "來自 $1 的結果:",
-       "search-interwiki-more": "(更多)",
+       "search-interwiki-more": "(更多)",
        "search-relatedarticle": "相關",
        "searchrelated": "相關",
        "searchall": "全部",
        "showingresults": "以下顯示從第 <strong>$2</strong> 筆開始,共 {{PLURAL:$1|<strong>1</strong> 筆結果|<strong>$1</strong> 筆結果}}:",
        "showingresultsinrange": "以下顯示從第 <strong>$2</strong> 筆至第 <strong>$3</strong> 筆中的 {{PLURAL:$1|<strong>1</strong> 筆結果|<strong>$1</strong> 筆結果}}:",
-       "search-showingresults": "{{PLURAL:$4|<strong>$3</strong> 的 <strong>$1</strong> 筆結果|<strong>$3</strong> 的 <strong>$1 - $2</strong> 筆結果}}",
+       "search-showingresults": "{{PLURAL:$4|第 <strong>$1</strong> 筆結果,共 <strong>$3</strong> 筆|第 <strong>$1 - $2</strong> 筆結果,共 <strong>$3</strong> 筆}}",
        "search-nonefound": "無符合查詢條件的結果。",
        "powersearch-legend": "進階搜尋",
        "powersearch-ns": "搜尋以下命名空間:",
        "recentchangesdays": "近期變更的顯示天數:",
        "recentchangesdays-max": "最多 $1 {{PLURAL:$1|天}}",
        "recentchangescount": "預設顯示的編輯數:",
-       "prefs-help-recentchangescount": "這包含最近變更、頁面歷史以及日誌。",
+       "prefs-help-recentchangescount": "這包含近期變更、頁面歷史以及日誌。",
        "prefs-help-watchlist-token2": "訂閱您的監視清單所需的密鑰。\n任何人只要知道密鑰就能夠讀取您的監視清單,所以請勿任意與它人共享。\n若有需要 [[Special:ResetTokens|您可重設密鑰]]。",
        "savedprefs": "已儲存您的偏好設定。",
        "timezonelegend": "時區:",
        "gender-female": "她編輯了 Wiki 頁面",
        "prefs-help-gender": "此偏好設定為選填欄位。\n系統會使用您選擇的方式稱呼您,對他人提及您時也會使用適當語法稱呼。\n此項資訊會被公開。",
        "email": "電子郵件",
-       "prefs-help-realname": "ç\9c\9f實å§\93å\90\8dç\82ºé\81¸å¡«æ¬\84ä½\8dã\80\82\nè\8b¥æ\82¨æ\8f\90ä¾\9bç\9c\9f實å§\93å\90\8dï¼\8cå®\83æ\9c\83ç\94¨æ\96¼ä½¿ç\94¨è\80\85è²¢ç\8d»署名。",
+       "prefs-help-realname": "ç\9c\9f實å§\93å\90\8dç\82ºé\81¸å¡«æ¬\84ä½\8dã\80\82\nè\8b¥æ\8f\90ä¾\9bï¼\8cç\9c\9f實å§\93å\90\8då\8f¯è\83½æ\9c\83ç\94¨ä¾\86ä½\9cç\82ºæ\82¨ç\9a\84ä½\9cå\93\81ç\9a\84署名。",
        "prefs-help-email": "電子郵件位址為選填欄位。\n但在重設密碼時會使用,而您很有可能會忘記密。",
        "prefs-help-email-others": "您亦可以選擇讓其他使用者用電子郵件與您聯繫,透過您的使用者或對話頁面上方的連結。\n您的電子郵件位址不會實際告知給其他要聯絡您的使用者。",
        "prefs-help-email-required": "電子郵件地址是必填項目。",
        "right-importupload": "由檔案上傳匯入頁面",
        "right-patrol": "標示其他人的編輯爲已巡查",
        "right-autopatrol": "將自己的編輯自動標示為已巡查",
-       "right-patrolmarks": "檢視最近變更的巡查標記",
+       "right-patrolmarks": "檢視近期變更的巡查標記",
        "right-unwatchedpages": "檢視未監視的頁面",
        "right-mergehistory": "合併頁面歷史",
        "right-userrights": "編輯所有使用者的權限",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (請參考 [[Special:NewPages|最新頁面]])",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "rcnotefrom": "以下{{PLURAL:$5|為}}自 <strong>$3 $4</strong> 以來的變更 (最多顯示 <strong>$1</strong> 筆)。",
-       "rclistfrom": "顯示自 $3 $2 以來的最近變更",
+       "rclistfrom": "顯示自 $3 $2 以來的近期變更",
        "rcshowhideminor": "$1 小修訂",
        "rcshowhideminor-show": "顯示",
        "rcshowhideminor-hide": "隱藏",
        "upload_directory_read_only": "網頁伺服器沒有上傳目錄 ($1) 的寫入權限。",
        "uploaderror": "上傳錯誤",
        "upload-recreate-warning": "<strong>警告:曾有檔案使用此名稱已被刪除或者移動至它處。</strong>\n\n在此提供刪除與移動日誌方便作為參考:",
-       "uploadtext": "使用下面的表單來上傳檔案。\n要檢視或搜尋以前上傳的檔案,可至 [[Special:FileList|檔案上傳清單]],(重新)上傳會在 [[Special:Log/upload|上傳日誌]] 中記錄,而刪除則會在 [[Special:Log/delete|刪除日誌]] 中記錄。\n\n要在頁面中引用檔案,可使用以下其中一種方式連結:\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> 顯示完整尺寸的圖片\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code></strong> 會在左方放置一張 200 像素寬的圖片於框中,並顯示 \"alt text\" 作為描述\n* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> 直接連結到圖片而不顯示預覽",
+       "uploadtext": "使用下面的表單來上傳檔案。\n要檢視或搜尋以前上傳的檔案,可至 [[Special:FileList|檔案上傳清單]],(重新) 上傳會在 [[Special:Log/upload|上傳日誌]] 中記錄,而刪除則會在 [[Special:Log/delete|刪除日誌]] 中記錄。\n\n要在頁面中引用檔案,可使用以下其中一種方式連結:\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> 顯示完整尺寸的圖片\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code></strong> 會在左方放置一張 200 像素寬的圖片於框中,並顯示 \"alt text\" 作為描述\n* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> 直接連結到圖片而不顯示預覽",
        "upload-permitted": "允許的檔案類型:$1。",
        "upload-preferred": "建議的檔案類型:$1。",
        "upload-prohibited": "禁止的檔案類型:$1。",
        "filename-tooshort": "檔案名稱過短。",
        "filetype-banned": "此類型檔案已禁止使用。",
        "verification-error": "此檔案未通過驗證。",
-       "hookaborted": "æ\82¨æ\89\80å\98\97試ç\9a\84ä¿®æ\94¹è¢«æ\93´å±\95套件中止。",
+       "hookaborted": "æ\82¨æ\89\80å\98\97試ç\9a\84ä¿®æ\94¹è¢«æ\93´å\85\85套件中止。",
        "illegal-filename": "不允許使用的檔案名稱。",
        "overwrite": "不允許覆蓋現有檔案。",
        "unknown-error": "發生不明錯誤。",
        "backend-fail-stream": "無法傳輸檔案 \"$1\"。",
        "backend-fail-backup": "無法備份檔案 \"$1\"。",
        "backend-fail-notexists": "檔案 $1 不存在。",
-       "backend-fail-hashes": "無法取得檔案雜湊值(Hash)進行比較。",
+       "backend-fail-hashes": "無法取得檔案雜湊值 (Hash) 進行比較。",
        "backend-fail-notsame": "於 \"$1\" 已存在另一個不相同的檔案。",
        "backend-fail-invalidpath": "\"$1\" 不是有效的儲存路徑。",
        "backend-fail-delete": "無法刪除檔案 \"$1\"。",
        "uploadstash-refresh": "更新檔案清單",
        "invalid-chunk-offset": "無效區塊位置",
        "img-auth-accessdenied": "拒絕存取",
-       "img-auth-nopathinfo": "缺少 PATH_INFO 參。\n您的伺服器環境未傳遞此資訊,\n您可能使用 CGI-based 的伺服器,不支援 img_auth。\n請參考 https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization。",
+       "img-auth-nopathinfo": "缺少 PATH_INFO 參。\n您的伺服器環境未傳遞此資訊,\n您可能使用 CGI-based 的伺服器,不支援 img_auth。\n請參考 https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization。",
        "img-auth-notindir": "已設定的上傳目錄清單中不存在您指定的路徑。",
        "img-auth-badtitle": "無法使用 \"$1\" 建立有效的標題。",
        "img-auth-nologinnWL": "您尚未登入,且 \"$1\" 並未在允許清單上。",
        "mostlinkedtemplates": "被引用最多的頁面",
        "mostcategories": "最多分類的頁面",
        "mostimages": "被連結最多的檔案",
-       "mostinterwikis": "最多 Interwiki 連結的頁面",
+       "mostinterwikis": "最多網際 Wiki 連結的頁面",
        "mostrevisions": "最多修訂的頁面",
        "prefixindex": "所有頁面與字首",
        "prefixindex-namespace": "所有含字首的頁面 ($1 命名空間)",
        "pager-older-n": "較舊 $1 筆",
        "suppress": "監督",
        "querypage-disabled": "此特殊頁面因考量效能問題已被停用。",
+       "apihelp": "API 說明",
+       "apihelp-no-such-module": "查無模組 \"$1\"。",
        "booksources": "圖書資源",
        "booksources-search-legend": "尋找圖書資源",
        "booksources-isbn": "國際標準書號:",
        "deletereasonotherlist": "其它原因",
        "deletereason-dropdown": "* 常見的刪除原因\n** 濫發廣告訊息\n** 破壞\n** 侵犯版權\n** 作者請求\n** 損壞的重新導向連結",
        "delete-edit-reasonlist": "編輯刪除原因",
-       "delete-toobig": "這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除此類頁面的動作已經被限制,以防止在{{SITENAME}}上的意外擾亂。",
-       "delete-warning-toobig": "這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除它可能會擾亂{{SITENAME}}的資料庫操作;在繼續此動作前請小心。",
+       "delete-toobig": "此頁面含有大量的編輯歷史,超過 $1 次修訂。\n已限制刪除此類頁面的動作,以避免意外中斷 {{SITENAME}} 的運作。",
+       "delete-warning-toobig": "此頁面含有大量的編輯歷史,超過 $1 次修訂。\n刪除該頁面可能會中斷 {{SITENAME}} 的資料庫運作;\n請小心執行此動作。",
        "deleteprotected": "此頁面已受保護,您無法刪除此頁面。",
        "deleting-backlinks-warning": "<strong>警告:</strong>您正要刪除的頁面有[[Special:WhatLinksHere/{{FULLPAGENAME}}|其他頁面]]連結或引用。",
        "rollback": "還原編輯",
        "revertpage-nouser": "已還隱藏使用者的編輯為最後 {{GENDER:$1|[[User:$1|$1]]}} 修訂的版本",
        "rollback-success": "已還原 $1 做的編輯;\n更變回最後由 $2 修訂的版本。",
        "sessionfailure-title": "連線階段失敗",
-       "sessionfailure": "似乎您的登入會話有問題;\n為了防止會話劫持,這個操作已經被取消。\n請返回先前的頁面,重新載入該頁面,然後重試。",
+       "sessionfailure": "您的登入連線階段似乎有問題,\n為了預防連線階段受到劫持攻擊,此動作已經被取消。\n請返回上一頁,重新讀取該頁面再試一次。",
        "protectlogpage": "保護日誌",
        "protectlogtext": "以下為變更頁面保護的清單。\n請參考 [[Special:ProtectedPages|受保護頁面清單]] 檢視目前受保護頁面。",
        "protectedarticle": "已保護 \"[[$1]]\"",
        "month": "截止月份:",
        "year": "截止年份:",
        "sp-contributions-newbies": "只顯示新帳號的貢獻",
-       "sp-contributions-newbies-sub": "新",
+       "sp-contributions-newbies-sub": "新帳號的貢獻",
        "sp-contributions-newbies-title": "新帳號的使用者貢獻",
        "sp-contributions-blocklog": "封鎖記錄",
        "sp-contributions-suppresslog": "已禁止顯示的使用者貢獻",
        "sp-contributions-talk": "對話",
        "sp-contributions-userrights": "使用者權限管理",
        "sp-contributions-blocked-notice": "此使用者目前已被封鎖。\n以下為最近的封鎖紀錄以供參考:",
-       "sp-contributions-blocked-notice-anon": "此 IP 位址目前已被封鎖。\n以下為最近的封鎖錄以供參考:",
+       "sp-contributions-blocked-notice-anon": "此 IP 位址目前已被封鎖。\n以下為最近的封鎖錄以供參考:",
        "sp-contributions-search": "搜尋貢獻",
        "sp-contributions-username": "IP 位址或使用者名稱:",
        "sp-contributions-toponly": "只顯示最新修訂的編輯",
        "ip_range_invalid": "無效的 IP 範圍。",
        "ip_range_toolarge": "不允許封鎖範圍大於 /$1。",
        "proxyblocker": "代理伺服器封鎖器",
-       "proxyblockreason": "因您的 IP 位址是開放代理伺服器,已被封鎖。\n請聯繫您的網服務供應商或您所在組織的技術支援,告知他們此嚴重的安全性問題。",
+       "proxyblockreason": "因您的 IP 位址是開放代理伺服器,已被封鎖。\n請聯繫您的網服務供應商或您所在組織的技術支援,告知他們此嚴重的安全性問題。",
        "sorbsreason": "您的 IP 位址在 {{SITENAME}} 使用的 DNSBL 列為開放代理伺服器。",
        "sorbs_create_account_reason": "您連線到 {{SITENAME}} 的 IP 位址被 DNSBL 列為開放代理伺服器。\n您不能建立帳號。",
        "xffblockreason": "您的 IP 位址使用 X-Forwarded-For 標頭,您或您使用的代理伺服器已被封鎖。\n封鎖的原因為:$1",
        "tooltip-pt-mycontris": "您的貢獻清單",
        "tooltip-pt-login": "儘管非必要,仍建議您登入。",
        "tooltip-pt-logout": "登出",
+       "tooltip-pt-createaccount": "我們會鼓勵您建立一個帳號並且登入,即使這不是必要的動作。",
        "tooltip-ca-talk": "有關頁面內容的討論",
        "tooltip-ca-edit": "您可以編輯此頁,請在儲存之前先預覽。",
        "tooltip-ca-addsection": "開始一個新章節",
        "tooltip-n-randompage": "隨機進入一個頁面",
        "tooltip-n-help": "尋求協助的地方",
        "tooltip-t-whatlinkshere": "列出所有連結此頁面的頁面",
-       "tooltip-t-recentchangeslinked": "此頁面連結到其他頁面的最近變更",
+       "tooltip-t-recentchangeslinked": "此頁面連結到其他頁面的近期變更",
        "tooltip-feed-rss": "訂閱此頁面的 RSS feed",
        "tooltip-feed-atom": "訂閱此頁面的 Atom feed",
        "tooltip-t-contributions": "此使用者的貢獻清單",
        "tooltip-t-emailuser": "傳送電子郵件給這個使用者",
+       "tooltip-t-info": "更多關於此頁面的資訊",
        "tooltip-t-upload": "上傳檔案",
        "tooltip-t-specialpages": "全部特殊頁面的清單",
        "tooltip-t-print": "此頁面的可列印版本",
        "pageinfo-lasttime": "最近編輯日期",
        "pageinfo-edits": "編輯總次數",
        "pageinfo-authors": "作者總數",
-       "pageinfo-recent-edits": "最近編輯次數 (過去$1內)",
+       "pageinfo-recent-edits": "最近編輯次數 (過去 $1 內)",
        "pageinfo-recent-authors": "最近作者數",
        "pageinfo-magic-words": "魔術{{PLURAL:$1|字}} ($1)",
-       "pageinfo-hidden-categories": "隱藏分類($1)",
+       "pageinfo-hidden-categories": "隱藏分類 ($1)",
        "pageinfo-templates": "引用樣版 ($1)",
        "pageinfo-transclusions": "頁面被引用於 ($1)",
        "pageinfo-toolboxlink": "頁面資訊",
        "markaspatrolledtext": "標記此頁面為已巡查",
        "markedaspatrolled": "己標記為已巡查",
        "markedaspatrolledtext": "已標記選擇的修訂 [[:$1]] 為已巡查。",
-       "rcpatroldisabled": "最近變更巡查已停用",
+       "rcpatroldisabled": "近期變更巡查已停用",
        "rcpatroldisabledtext": "最新變更巡查的功能目前已停用。",
        "markedaspatrollederror": "無法標記為已巡查",
        "markedaspatrollederrortext": "您需指定要標記為已巡查的修訂。",
        "metadata-help": "此檔案包含額外的資訊,可能由數位相機或掃描機所建立的。\n若修改此檔案,部份資訊將無法保留。",
        "metadata-expand": "顯示詳細資料",
        "metadata-collapse": "隱藏詳細資料",
-       "metadata-fields": "在本訊息中所列出的 EXIF 元數據域將包含在圖片顯示頁面,當元數據表損壞時只顯示以下訊息。\n其他的元數據預設為隱藏。\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-fields": "在本訊息中所列出的 EXIF 詮釋資料域將包含在圖片顯示頁面,當詮釋資料表損壞時只顯示以下訊息。\n其他的詮釋資料預設為隱藏。\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "寬度",
        "exif-imagelength": "高度",
        "exif-bitspersample": "每像素位元",
        "exif-samplesperpixel": "像素數量",
        "exif-planarconfiguration": "資料排列",
        "exif-ycbcrsubsampling": "黃色轉洋紅二次抽樣比率",
-       "exif-ycbcrpositioning": "黃色和洋紅配置",
+       "exif-ycbcrpositioning": "亮度與彩度偏移",
        "exif-xresolution": "水平解析度",
        "exif-yresolution": "垂直解析度",
        "exif-stripoffsets": "影像資料位置",
        "exif-rating": "評分 (共 5 分)",
        "exif-rightscertificate": "版權管理證書",
        "exif-copyrighted": "版權狀態",
-       "exif-copyrightowner": "ç\89\88æ¬\8aæ\8c\81有人",
+       "exif-copyrightowner": "ç\89\88æ¬\8aæ\89\80有人",
        "exif-usageterms": "使用條款",
        "exif-webstatement": "線上版權聲明",
        "exif-originaldocumentid": "原始文件唯一識別碼",
        "monthsall": "全部",
        "confirmemail": "確認電子郵件位址",
        "confirmemail_noemail": "您尚未於 [[Special:Preferences|偏好設定]] 輸入一個有效的電子郵件位址。",
-       "confirmemail_text": "{{SITENAME}}è¦\81æ±\82æ\82¨å\9c¨ä½¿ç\94¨é\83µä»¶å\8a\9fè\83½ä¹\8bå\89\8dé©\97è­\89æ\82¨ç\9a\84é\83µç®±ä½\8då\9d\80ã\80\82\né»\9eé\81¸ä»¥ä¸\8bæ\8c\89é\88\95å\8f¯å\90\91æ\82¨ç\9a\84é\83µç®±å\82³é\80\81ä¸\80å°\81確èª\8dé\83µä»¶ã\80\82該é\83µä»¶å\8c\85å\90«æ\9c\89ä¸\80è¡\8c代碼é\80£çµ\90ï¼\9b\nè«\8bå\9c¨æ\82¨ç\9a\84ç\80\8f覽å\99¨ä¸­è¼\89å\85¥æ­¤é\80£çµ\90以確èª\8dæ\82¨ç\9a\84é\83µç®±位址是有效的。",
+       "confirmemail_text": "{{SITENAME}}è¦\81æ±\82æ\82¨å\9c¨ä½¿ç\94¨é\83µä»¶å\8a\9fè\83½ä¹\8bå\89\8dé©\97è­\89æ\82¨ç\9a\84é\9b»å­\90é\83µä»¶ä½\8då\9d\80ã\80\82\né»\9eé\81¸ä»¥ä¸\8bæ\8c\89é\88\95å\8f¯å\90\91æ\82¨ç\9a\84é\9b»å­\90é\83µä»¶å\82³é\80\81ä¸\80å°\81確èª\8dé\83µä»¶ã\80\82該é\83µä»¶å\8c\85å\90«æ\9c\89ä¸\80è¡\8c代碼é\80£çµ\90ï¼\9b\nè«\8bå\9c¨æ\82¨ç\9a\84ç\80\8f覽å\99¨ä¸­è¼\89å\85¥æ­¤é\80£çµ\90以確èª\8dæ\82¨ç\9a\84é\9b»å­\90é\83µä»¶位址是有效的。",
        "confirmemail_pending": "確認碼已傳送至您的電子郵件,\n若您才剛建立好您的帳號,可能需要稍後幾分鐘才能收到。\n若沒有收到,請再重新申請一次確認碼。",
        "confirmemail_send": "電子郵件寄送確認代碼",
        "confirmemail_sent": "已寄出確認電子郵件。",
-       "confirmemail_oncreate": "一個確認代碼已經被傳送到您的郵箱。該代碼並不要求您進行登入,\n但若您要啟用在此 wiki 上的任何基於電子郵件的功能,您必須先提交此代碼。",
-       "confirmemail_sendfailed": "{{SITENAME}}ç\84¡æ³\95å\82³é\80\81確èª\8dé\83µä»¶ï¼\8cè«\8b檢æ\9f¥é\83µç®±位址是否包含非法字元。\n\n郵件傳送員回應: $1",
+       "confirmemail_oncreate": "確認代碼已傳送至您的電子郵件位址。\n登入動作不需要使用此代碼,但開啟在 Wiki 中任何以電子郵件為基礎的功能會需要先提供此代碼。",
+       "confirmemail_sendfailed": "{{SITENAME}}ç\84¡æ³\95å\82³é\80\81確èª\8dé\83µä»¶ï¼\8cè«\8b檢æ\9f¥é\9b»å­\90é\83µä»¶位址是否包含非法字元。\n\n郵件傳送員回應: $1",
        "confirmemail_invalid": "無效的確認碼,該代碼可能已經過期。",
        "confirmemail_needlogin": "請 $1 以確認您的電子郵件地址。",
-       "confirmemail_success": "æ\82¨ç\9a\84é\83µç®±已經被確認。您現在可以[[Special:UserLogin|登入]]並使用此網站了。",
+       "confirmemail_success": "æ\82¨ç\9a\84é\9b»å­\90é\83µä»¶已經被確認。您現在可以[[Special:UserLogin|登入]]並使用此網站了。",
        "confirmemail_loggedin": "已確認您的電子郵件地址。",
        "confirmemail_subject": "{{SITENAME}} 電子郵件地址確認",
        "confirmemail_body": "不明人士 (可能是您自己,來自 IP 位址 $1)  已在 {{SITENAME}} 註冊了一個帳號 \"$2\" 並使用了此電子郵件位址。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
        "confirmemail_body_changed": "不明人士 (可能是您自己,來自 IP 位址 $1)  已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件位址更改至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
        "confirmemail_body_set": "不明人士 (可能是您自己,來自 IP 位址 $1)  已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件位址設定至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
-       "confirmemail_invalidated": "已取消電子郵件址確認",
+       "confirmemail_invalidated": "已取消電子郵件址確認",
        "invalidateemail": "取消電子郵件確認",
        "scarytranscludedisabled": "[Interwiki 轉換代碼不可用]",
        "scarytranscludefailed": "[樣版 $1 讀取失敗]",
        "version-extensions": "已安裝的擴充套件",
        "version-skins": "已安裝的外觀",
        "version-specialpages": "特殊頁面",
-       "version-parserhooks": "解析器連結(Hook)",
+       "version-parserhooks": "解析器連結 (Hook)",
        "version-variables": "變數",
        "version-antispam": "垃圾訊息防止",
        "version-other": "其他",
        "version-mediahandlers": "媒體處理器",
-       "version-hooks": "連結(Hooks)",
+       "version-hooks": "連結 (Hooks)",
        "version-parser-extensiontags": "解析器擴充標籤",
        "version-parser-function-hooks": "語法函數連結",
        "version-hook-name": "連結名稱",
        "redirect-file": "檔案名稱",
        "redirect-not-exists": "查無值",
        "fileduplicatesearch": "搜尋重覆檔案",
-       "fileduplicatesearch-summary": "依據雜湊值(Hash)來搜尋重複的檔案。",
+       "fileduplicatesearch-summary": "依據雜湊值 (Hash) 來搜尋重複的檔案。",
        "fileduplicatesearch-legend": "搜尋重覆",
        "fileduplicatesearch-filename": "檔案名稱:",
        "fileduplicatesearch-submit": "搜尋",
        "specialpages-group-maintenance": "維護報表",
        "specialpages-group-other": "其它特殊頁面",
        "specialpages-group-login": "登入 / 建立帳號",
-       "specialpages-group-changes": "最近變更與日誌",
+       "specialpages-group-changes": "近期變更與日誌",
        "specialpages-group-media": "媒體上傳與報表",
        "specialpages-group-users": "使用者與權限",
        "specialpages-group-highuse": "常用頁面",
        "tag-filter-submit": "搜尋",
        "tag-list-wrapper": "([[Special:Tags|標籤]]:$2)",
        "tags-title": "標籤",
-       "tags-intro": "這個頁面列示出在軟件中已標示的編輯,以及它們的解釋。",
+       "tags-intro": "此頁面列出所有可用來標示編輯的標籤,以及這些標籤的含意。",
        "tags-tag": "標籤名稱",
        "tags-display-header": "在更改清單中的出現方式",
        "tags-description-header": "完整含意說明",
        "mediastatistics-header-text": "純文字",
        "mediastatistics-header-executable": "可執行",
        "mediastatistics-header-archive": "已壓縮格式",
+       "json-warn-trailing-comma": "已移除 $1 個 JSON 結尾的{{PLURAL:$1|逗號|逗號}}",
        "json-error-unknown": "JSON 發生問題。錯誤:$1",
        "json-error-depth": "已超出堆疊深度限制",
        "json-error-state-mismatch": "無效或格式不正確的 JSON",
index 0a10279..d62cd4c 100644 (file)
@@ -388,6 +388,7 @@ $specialPageAliases = array(
        'Allmessages'               => array( 'AllMessages' ),
        'AllMyUploads'              => array( 'AllMyUploads', 'AllMyFiles' ),
        'Allpages'                  => array( 'AllPages' ),
+       'ApiHelp'                   => array( 'ApiHelp' ),
        'Ancientpages'              => array( 'AncientPages' ),
        'Badtitle'                  => array( 'Badtitle' ),
        'Blankpage'                 => array( 'BlankPage' ),
@@ -536,7 +537,7 @@ $preloadedMessages = array(
        'accesskey-ca-history',
        'accesskey-ca-nstab-main',
        'accesskey-ca-talk',
-       'accesskey-ca-view',
+       'accesskey-ca-viewsource',
        'accesskey-n-currentevents',
        'accesskey-n-help',
        'accesskey-n-mainpage-description',
@@ -545,15 +546,20 @@ $preloadedMessages = array(
        'accesskey-n-recentchanges',
        'accesskey-p-logo',
        'accesskey-pt-login',
+       'accesskey-pt-createaccount',
        'accesskey-search',
        'accesskey-search-fulltext',
        'accesskey-search-go',
+       'accesskey-t-info',
        'accesskey-t-permalink',
+       'accesskey-t-print',
        'accesskey-t-recentchangeslinked',
        'accesskey-t-specialpages',
        'accesskey-t-whatlinkshere',
        'actions',
        'anonnotice',
+       'brackets',
+       'comma-separator',
        'currentevents',
        'currentevents-url',
        'disclaimerpage',
@@ -575,7 +581,6 @@ $preloadedMessages = array(
        'navigation',
        'nav-login-createaccount',
        'nstab-main',
-       'nstab-talk',
        'opensearch-desc',
        'pagecategories',
        'pagecategorieslink',
@@ -597,6 +602,7 @@ $preloadedMessages = array(
        'search',
        'searcharticle',
        'searchbutton',
+       'searchsuggest-search',
        'sidebar',
        'navigation-heading',
        'site-atom-feed',
@@ -609,7 +615,7 @@ $preloadedMessages = array(
        'tooltip-ca-history',
        'tooltip-ca-nstab-main',
        'tooltip-ca-talk',
-       'tooltip-ca-view',
+       'tooltip-ca-viewsource',
        'tooltip-n-currentevents',
        'tooltip-n-help',
        'tooltip-n-mainpage-description',
@@ -617,13 +623,14 @@ $preloadedMessages = array(
        'tooltip-n-randompage',
        'tooltip-n-recentchanges',
        'tooltip-p-logo',
-       'tooltip-p-navigation',
-       'tooltip-p-tb',
        'tooltip-pt-login',
+       'tooltip-pt-createaccount',
        'tooltip-search',
        'tooltip-search-fulltext',
        'tooltip-search-go',
+       'tooltip-t-info',
        'tooltip-t-permalink',
+       'tooltip-t-print',
        'tooltip-t-recentchangeslinked',
        'tooltip-t-specialpages',
        'tooltip-t-whatlinkshere',
@@ -634,5 +641,6 @@ $preloadedMessages = array(
        'viewcount',
        'views',
        'whatlinkshere',
+       'word-separator',
 );
 
diff --git a/languages/messages/MessagesSes.php b/languages/messages/MessagesSes.php
new file mode 100644 (file)
index 0000000..9d9e009
--- /dev/null
@@ -0,0 +1,10 @@
+<?php
+/** Koyraboro Senni
+ *
+ * To improve a translation please visit https://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ */
+
+$fallback = 'fr';
index 51f2cac..25ecc09 100644 (file)
@@ -54,18 +54,18 @@ if ( isset( $options['d'] ) ) {
        }
 }
 
-$useReadline = function_exists( 'readline_add_history' )
+$__useReadline = function_exists( 'readline_add_history' )
        && Maintenance::posix_isatty( 0 /*STDIN*/ );
 
-if ( $useReadline ) {
-       $historyFile = isset( $_ENV['HOME'] ) ?
+if ( $__useReadline ) {
+       $__historyFile = isset( $_ENV['HOME'] ) ?
                "{$_ENV['HOME']}/.mweval_history" : "$IP/maintenance/.mweval_history";
-       readline_read_history( $historyFile );
+       readline_read_history( $__historyFile );
 }
 
-$e = null; // PHP exception
-while ( ( $line = Maintenance::readconsole() ) !== false ) {
-       if ( $e && !preg_match( '/^(exit|die);?$/', $line ) ) {
+$__e = null; // PHP exception
+while ( ( $__line = Maintenance::readconsole() ) !== false ) {
+       if ( $__e && !preg_match( '/^(exit|die);?$/', $__line ) ) {
                // Internal state may be corrupted or fatals may occur later due
                // to some object not being set. Don't drop out of eval in case
                // lines were being pasted in (which would then get dumped to the shell).
@@ -73,23 +73,23 @@ while ( ( $line = Maintenance::readconsole() ) !== false ) {
                echo "Exception was thrown before; please restart eval.php\n";
                continue;
        }
-       if ( $useReadline ) {
-               readline_add_history( $line );
-               readline_write_history( $historyFile );
+       if ( $__useReadline ) {
+               readline_add_history( $__line );
+               readline_write_history( $__historyFile );
        }
        try {
-               $val = eval( $line . ";" );
-       } catch ( Exception $e ) {
-               echo "Caught exception " . get_class( $e ) .
-                       ": {$e->getMessage()}\n" . $e->getTraceAsString() . "\n";
+               $__val = eval( $__line . ";" );
+       } catch ( Exception $__e ) {
+               echo "Caught exception " . get_class( $__e ) .
+                       ": {$__e->getMessage()}\n" . $__e->getTraceAsString() . "\n";
                continue;
        }
-       if ( wfIsHHVM() || is_null( $val ) ) {
+       if ( wfIsHHVM() || is_null( $__val ) ) {
                echo "\n";
-       } elseif ( is_string( $val ) || is_numeric( $val ) ) {
-               echo "$val\n";
+       } elseif ( is_string( $__val ) || is_numeric( $__val ) ) {
+               echo "$__val\n";
        } else {
-               var_dump( $val );
+               var_dump( $__val );
        }
 }
 
index b8dc554..a9f7d8b 100644 (file)
@@ -38,16 +38,19 @@ class ShowJobs extends Maintenance {
                parent::__construct();
                $this->mDescription = "Show number of jobs waiting in master database";
                $this->addOption( 'group', 'Show number of jobs per job type' );
-               $this->addOption(
-                       'list',
-                       'Show a complete list of all jobs in a machine-readable format, instead of statistics'
-               );
+               $this->addOption( 'list',
+                       'Show a list of all jobs in a machine-readable format, instead of statistics' );
+               $this->addOption( 'type', 'Only show/count jobs of a given type', false, true );
        }
 
        public function execute() {
+               $filterType = $this->getOption( 'type', '' );
                $group = JobQueueGroup::singleton();
                if ( $this->hasOption( 'list' ) ) {
                        foreach ( $group->getQueueTypes() as $type ) {
+                               if ( $filterType != '' && $type != $filterType ) {
+                                       continue;
+                               }
                                $queue = $group->get( $type );
                                foreach ( $queue->getAllQueuedJobs() as $job ) {
                                        $this->output( $job->toString() . " status=unclaimed\n" );
@@ -58,6 +61,9 @@ class ShowJobs extends Maintenance {
                        }
                } elseif ( $this->hasOption( 'group' ) ) {
                        foreach ( $group->getQueueTypes() as $type ) {
+                               if ( $filterType != '' && $type != $filterType ) {
+                                       continue;
+                               }
                                $queue = $group->get( $type );
                                $delayed = $queue->getDelayedCount();
                                $pending = $queue->getSize();
@@ -75,6 +81,9 @@ class ShowJobs extends Maintenance {
                } else {
                        $count = 0;
                        foreach ( $group->getQueueTypes() as $type ) {
+                               if ( $filterType != '' && $type != $filterType ) {
+                                       continue;
+                               }
                                $count += $group->get( $type )->getSize();
                        }
                        $this->output( "$count\n" );
index 53759a6..acc937e 100644 (file)
@@ -772,6 +772,17 @@ return array(
                'raw' => true,
                'targets' => array( 'desktop', 'mobile' ),
        ),
+       'mediawiki.apihelp' => array(
+               'styles' => 'resources/src/mediawiki/mediawiki.apihelp.css',
+               'targets' => array( 'desktop' ),
+               'dependencies' => array(
+                       'mediawiki.hlist',
+               ),
+       ),
+       'mediawiki.apipretty' => array(
+               'styles' => 'resources/src/mediawiki/mediawiki.apipretty.css',
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
        'mediawiki.api' => array(
                'scripts' => 'resources/src/mediawiki.api/mediawiki.api.js',
                'dependencies' => 'mediawiki.util',
@@ -1573,11 +1584,11 @@ return array(
                ),
                'skinScripts' => array(
                        'default' => 'resources/lib/oojs-ui/oojs-ui-apex.js',
-                       'minerva' => 'resources/lib/oojs-ui/oojs-ui-minerva.js',
+                       'minerva' => 'resources/lib/oojs-ui/oojs-ui-mediawiki.js',
                ),
                'skinStyles' => array(
                        'default' => 'resources/lib/oojs-ui/oojs-ui-apex.svg.css',
-                       'minerva' => 'resources/lib/oojs-ui/oojs-ui-minerva.svg.css',
+                       'minerva' => 'resources/lib/oojs-ui/oojs-ui-mediawiki.svg.css',
                ),
                'messages' => array(
                        'ooui-outline-control-move-down',
index cc11aed..45e19ac 100644 (file)
  * For more information, please refer to <http://unlicense.org/>
  */
 
+/* global ActiveXObject: false */
+/* jshint browser: true */
+
 (function() {
     'use strict';
 
     var
     /* jStorage version */
-        JSTORAGE_VERSION = '0.4.10',
+        JSTORAGE_VERSION = '0.4.12',
 
         /* detect a dollar object or create one if not found */
         $ = window.jQuery || window.$ || (window.$ = {}),
@@ -58,7 +61,7 @@
         };
 
     // Break if no JSON support was found
-    if (!('parse' in JSON) || !('stringify' in JSON)) {
+    if (typeof JSON.parse !== 'function' || typeof JSON.stringify !== 'function') {
         throw new Error('No JSON support found, include //cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js to page');
     }
 
             return;
         }
         var pubelm,
-            _pubsubCurrent = _pubsub_last;
+            _pubsubCurrent = _pubsub_last,
+            needFired = [];
 
         for (i = len = _storage.__jstorage_meta.PubSub.length - 1; i >= 0; i--) {
             pubelm = _storage.__jstorage_meta.PubSub[i];
             if (pubelm[0] > _pubsub_last) {
                 _pubsubCurrent = pubelm[0];
-                _fireSubscribers(pubelm[1], pubelm[2]);
+                needFired.unshift(pubelm);
             }
         }
 
+        for (i = needFired.length - 1; i >= 0; i--) {
+            _fireSubscribers(needFired[i][1], needFired[i][2]);
+        }
+
         _pubsub_last = _pubsubCurrent;
     }
 
         switch (l) {
             case 3:
                 h ^= (str.charCodeAt(i + 2) & 0xff) << 16;
+                /* falls through */
             case 2:
                 h ^= (str.charCodeAt(i + 1) & 0xff) << 8;
+                /* falls through */
             case 1:
                 h ^= (str.charCodeAt(i) & 0xff);
                 h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));
     // Initialize jStorage
     _init();
 
-})();
\ No newline at end of file
+})();
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/add.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/add.png
deleted file mode 100644 (file)
index 730d102..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/add.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/advanced.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/advanced.png
deleted file mode 100644 (file)
index 514ff1d..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/advanced.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/alert.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/alert.png
deleted file mode 100644 (file)
index e98a14a..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/alert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/arched-arrow-ltr.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/arched-arrow-ltr.png
deleted file mode 100644 (file)
index 88db108..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/arched-arrow-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/arched-arrow-rtl.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/arched-arrow-rtl.png
deleted file mode 100644 (file)
index 0afcbfa..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/arched-arrow-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/check.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/check.png
deleted file mode 100644 (file)
index 9a2c9db..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/check.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/clear.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/clear.png
deleted file mode 100644 (file)
index 51a33ff..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/clear.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/close.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/close.png
deleted file mode 100644 (file)
index 4eedfbc..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/close.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/code.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/code.png
deleted file mode 100644 (file)
index ee58c9a..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/code.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/collapse.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/collapse.png
deleted file mode 100644 (file)
index 353ac79..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/collapse.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/comment.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/comment.png
deleted file mode 100644 (file)
index 265a3e4..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/comment.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/expand.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/expand.png
deleted file mode 100644 (file)
index 9073d24..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/expand.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/help.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/help.png
deleted file mode 100644 (file)
index b80df00..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/help.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/info.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/info.png
deleted file mode 100644 (file)
index eb0fb46..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/info.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/link.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/link.png
deleted file mode 100644 (file)
index 2a087a4..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/link.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/menu.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/menu.png
deleted file mode 100644 (file)
index 0a78119..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/menu.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/move-ltr.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/move-ltr.png
deleted file mode 100644 (file)
index fc4cd39..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/move-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/move-rtl.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/move-rtl.png
deleted file mode 100644 (file)
index dbce05e..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/move-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/picture.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/picture.png
deleted file mode 100644 (file)
index 2043424..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/picture.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/remove.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/remove.png
deleted file mode 100644 (file)
index 9dc34b8..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/remove.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/search.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/search.png
deleted file mode 100644 (file)
index 39d3ab8..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/search.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/settings.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/settings.png
deleted file mode 100644 (file)
index dd2706b..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/settings.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/tag.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/tag.png
deleted file mode 100644 (file)
index 8e100fc..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/tag.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/icons/window.png b/resources/lib/oojs-ui/dist/themes/apex/images/icons/window.png
deleted file mode 100644 (file)
index db726a1..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/icons/window.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/indicators/alert.png b/resources/lib/oojs-ui/dist/themes/apex/images/indicators/alert.png
deleted file mode 100644 (file)
index 5bf0827..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/indicators/alert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-down.png b/resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-down.png
deleted file mode 100644 (file)
index 6574725..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-down.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-ltr.png b/resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-ltr.png
deleted file mode 100644 (file)
index 7c84397..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-rtl.png b/resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-rtl.png
deleted file mode 100644 (file)
index 5bf9064..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-up.png b/resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-up.png
deleted file mode 100644 (file)
index 1a05ade..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/indicators/arrow-up.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/indicators/required.png b/resources/lib/oojs-ui/dist/themes/apex/images/indicators/required.png
deleted file mode 100644 (file)
index 45eb03b..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/indicators/required.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/apex/images/textures/transparency.png b/resources/lib/oojs-ui/dist/themes/apex/images/textures/transparency.png
deleted file mode 100644 (file)
index 1843f27..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/apex/images/textures/transparency.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/add-constructive.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/add-constructive.png
deleted file mode 100644 (file)
index 53d6441..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/add-constructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/add-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/add-invert.png
deleted file mode 100644 (file)
index d6144e3..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/add-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/add.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/add.png
deleted file mode 100644 (file)
index 730d102..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/add.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/advanced-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/advanced-invert.png
deleted file mode 100644 (file)
index e074515..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/advanced-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/advanced.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/advanced.png
deleted file mode 100644 (file)
index 514ff1d..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/advanced.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/alert-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/alert-invert.png
deleted file mode 100644 (file)
index 5440113..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/alert-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/alert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/alert.png
deleted file mode 100644 (file)
index e98a14a..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/alert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png
deleted file mode 100644 (file)
index 8a07140..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-ltr.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-ltr.png
deleted file mode 100644 (file)
index 88db108..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png
deleted file mode 100644 (file)
index c6cbec1..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-rtl.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-rtl.png
deleted file mode 100644 (file)
index 0afcbfa..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/arched-arrow-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/check-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/check-invert.png
deleted file mode 100644 (file)
index 1ff6790..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/check-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/check-primary.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/check-primary.png
deleted file mode 100644 (file)
index 7566598..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/check-primary.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/check.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/check.png
deleted file mode 100644 (file)
index 9a2c9db..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/check.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/clear-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/clear-invert.png
deleted file mode 100644 (file)
index 5668e12..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/clear-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/clear.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/clear.png
deleted file mode 100644 (file)
index 51a33ff..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/clear.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/close-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/close-invert.png
deleted file mode 100644 (file)
index 7b76ffe..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/close-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/close.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/close.png
deleted file mode 100644 (file)
index 4eedfbc..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/close.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/code-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/code-invert.png
deleted file mode 100644 (file)
index 23c5983..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/code-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/code.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/code.png
deleted file mode 100644 (file)
index ee58c9a..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/code.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/collapse-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/collapse-invert.png
deleted file mode 100644 (file)
index a9d0d33..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/collapse-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/collapse.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/collapse.png
deleted file mode 100644 (file)
index 353ac79..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/collapse.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/comment-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/comment-invert.png
deleted file mode 100644 (file)
index 0ed3528..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/comment-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/comment.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/comment.png
deleted file mode 100644 (file)
index 265a3e4..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/comment.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/expand-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/expand-invert.png
deleted file mode 100644 (file)
index 05f7138..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/expand-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/expand.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/expand.png
deleted file mode 100644 (file)
index 9073d24..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/expand.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/help-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/help-invert.png
deleted file mode 100644 (file)
index 185c1a2..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/help-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/help.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/help.png
deleted file mode 100644 (file)
index b80df00..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/help.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/info-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/info-invert.png
deleted file mode 100644 (file)
index 83b00a2..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/info-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/info.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/info.png
deleted file mode 100644 (file)
index eb0fb46..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/info.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/link-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/link-invert.png
deleted file mode 100644 (file)
index d920459..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/link-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/link.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/link.png
deleted file mode 100644 (file)
index 2a087a4..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/link.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/menu-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/menu-invert.png
deleted file mode 100644 (file)
index 0400c19..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/menu-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/menu.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/menu.png
deleted file mode 100644 (file)
index 0a78119..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/menu.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-ltr-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-ltr-invert.png
deleted file mode 100644 (file)
index 7c9bdc1..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-ltr.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-ltr.png
deleted file mode 100644 (file)
index fc4cd39..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-rtl-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-rtl-invert.png
deleted file mode 100644 (file)
index e97d37b..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-rtl.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-rtl.png
deleted file mode 100644 (file)
index dbce05e..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/move-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/picture-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/picture-invert.png
deleted file mode 100644 (file)
index d6dc62c..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/picture-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/picture.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/picture.png
deleted file mode 100644 (file)
index 2043424..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/picture.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/remove-destructive.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/remove-destructive.png
deleted file mode 100644 (file)
index 8b6799f..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/remove-destructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/remove-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/remove-invert.png
deleted file mode 100644 (file)
index 3343de8..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/remove-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/remove.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/remove.png
deleted file mode 100644 (file)
index 9dc34b8..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/remove.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/search-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/search-invert.png
deleted file mode 100644 (file)
index 3e15daf..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/search-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/search.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/search.png
deleted file mode 100644 (file)
index 39d3ab8..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/search.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/settings-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/settings-invert.png
deleted file mode 100644 (file)
index 17b4379..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/settings-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/settings.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/settings.png
deleted file mode 100644 (file)
index dd2706b..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/settings.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/tag-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/tag-invert.png
deleted file mode 100644 (file)
index c233429..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/tag-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/tag.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/tag.png
deleted file mode 100644 (file)
index 8e100fc..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/tag.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/window-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/window-invert.png
deleted file mode 100644 (file)
index 1c6ed1f..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/window-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/window.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/window.png
deleted file mode 100644 (file)
index db726a1..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/icons/window.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/alert-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/alert-invert.png
deleted file mode 100644 (file)
index 28c8704..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/alert-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/alert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/alert.png
deleted file mode 100644 (file)
index 5bf0827..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/alert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-down-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-down-invert.png
deleted file mode 100644 (file)
index 226eb5c..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-down-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-down.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-down.png
deleted file mode 100644 (file)
index 9a418c9..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-down.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-ltr-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-ltr-invert.png
deleted file mode 100644 (file)
index a348495..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-ltr.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-ltr.png
deleted file mode 100644 (file)
index bfed7d2..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-rtl-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-rtl-invert.png
deleted file mode 100644 (file)
index 5080ea5..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-rtl.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-rtl.png
deleted file mode 100644 (file)
index 0639809..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-up-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-up-invert.png
deleted file mode 100644 (file)
index 0474926..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-up-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-up.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-up.png
deleted file mode 100644 (file)
index ac9f0b5..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/arrow-up.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/required-invert.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/required-invert.png
deleted file mode 100644 (file)
index 614c6e8..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/required-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/required.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/required.png
deleted file mode 100644 (file)
index 45eb03b..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/indicators/required.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/mediawiki/images/textures/transparency.png b/resources/lib/oojs-ui/dist/themes/mediawiki/images/textures/transparency.png
deleted file mode 100644 (file)
index 1843f27..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/mediawiki/images/textures/transparency.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/minerva/images/icons/check-invert.png b/resources/lib/oojs-ui/dist/themes/minerva/images/icons/check-invert.png
deleted file mode 100644 (file)
index 9be50a6..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/minerva/images/icons/check-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/dist/themes/minerva/images/icons/check.png b/resources/lib/oojs-ui/dist/themes/minerva/images/icons/check.png
deleted file mode 100644 (file)
index 654a034..0000000
Binary files a/resources/lib/oojs-ui/dist/themes/minerva/images/icons/check.png and /dev/null differ
index 564b75b..4b35bc6 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (26dadbc60f)
+ * OOjs UI v0.1.0-pre (0d358b167a)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-10-06T16:03:50Z
+ * Date: 2014-10-17T23:41:15Z
  */
 /* @noflip */
 .oo-ui-rtl {
        z-index: 4;
 }
 .oo-ui-popupTool .oo-ui-popupWidget {
+       /* @noflip */
        margin-left: 1.25em;
        font-size: 0.8em;
 }
 }
 .oo-ui-popupWidget {
        position: absolute;
+       /* @noflip */
+       left: 0;
 }
 .oo-ui-popupWidget-popup {
        position: relative;
        display: block;
        position: absolute;
        top: 0;
+       /* @noflip */
+       left: 0;
        background-repeat: no-repeat;
 }
 .oo-ui-popupWidget-head {
        padding: 0;
        background: none;
 }
-.oo-ui-window-overlay {
+.oo-ui-window-overlay,
+.oo-ui-window-inner-overlay {
        position: absolute;
        top: 0;
+       /* @noflip */
        left: 0;
 }
 .oo-ui-window-isolated,
        z-index: 1;
        bottom: 0;
 }
-.oo-ui-dialog-content > .oo-ui-window-overlay {
+.oo-ui-dialog-content > .oo-ui-window-inner-overlay {
        z-index: 3;
 }
 .oo-ui-dialog-content > .oo-ui-window-body {
index 0f9701c..65ec878 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (26dadbc60f)
+ * OOjs UI v0.1.0-pre (0d358b167a)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-10-06T16:03:39Z
+ * Date: 2014-10-17T23:41:06Z
  */
 /* Instantiation */
 
diff --git a/resources/lib/oojs-ui/oojs-ui-apex.rtl.css b/resources/lib/oojs-ui/oojs-ui-apex.rtl.css
deleted file mode 100644 (file)
index 7dd7b61..0000000
+++ /dev/null
@@ -1,1929 +0,0 @@
-/*!
- * OOjs UI v0.1.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-09-11T19:39:50Z
- */
-/*
- * Blank theme mixins.
- *
- * Base styles invoke these mixins at the end of their definitions. Override these mixins to add
- * additional rules to the base styles.
- */
-/*
- * Base styles.
- *
- * Themes should include this file after defining their variables and mixins.
- */
-/* @noflip */
-.oo-ui-rtl {
-  direction: rtl;
-}
-/* @noflip */
-.oo-ui-ltr {
-  direction: ltr;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button {
-  cursor: pointer;
-  display: inline-block;
-  vertical-align: middle;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  display: none;
-}
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-buttonElement-frameless {
-  display: inline-block;
-  position: relative;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  display: inline-block;
-  vertical-align: top;
-  text-align: center;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button {
-  color: #333;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-right: 0;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  margin-left: -0.75em;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  opacity: 0.8;
-  width: 1.9em;
-  height: 1.9em;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  /* Don't animate opacities for now, causes wiggling in Chrome (bug 63020) */
-  /*.oo-ui-transition(opacity 200ms);*/
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon,
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-iconElement-icon {
-  opacity: 1;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-  color: #000;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #333;
-  margin-right: 0.25em;
-}
-.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #087ecc;
-}
-.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #76ab36;
-}
-.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #d45353;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #ccc;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  margin: 0.1em 0;
-  padding: 0.2em 0.8em;
-  border-radius: 0.3em;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
-  border: 1px #c9c9c9 solid;
-  -webkit-transition: border-color 100ms ease-in-out;
-  -moz-transition: border-color 100ms ease-in-out;
-  -ms-transition: border-color 100ms ease-in-out;
-  -o-transition: border-color 100ms ease-in-out;
-  transition: border-color 100ms ease-in-out;
-  background: #eeeeee;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
-  background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:focus {
-  border-color: #aaa;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  line-height: 1.9em;
-}
-.oo-ui-buttonElement-framed.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
-  color: black;
-  border-color: #c9c9c9;
-  background: #eeeeee;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
-}
-.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-right: -0.5em;
-  margin-left: -0.5em;
-}
-.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-right: -0.5em;
-  margin-left: 0.3em;
-}
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button {
-  border: solid 1px #a6cee1;
-  background: #cde7f4;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#eaf4fa', endColorstr='#b0d9ee');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eaf4fa), color-stop(100%, #b0d9ee));
-  background-image: -webkit-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: -moz-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: -ms-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: -o-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-}
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button:focus {
-  border-color: #9dc2d4;
-}
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  border: solid 1px #a6cee1;
-  background: #cde7f4;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
-  background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-}
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button {
-  border: solid 1px #b8d892;
-  background: #daf0be;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0fbe1', endColorstr='#c3e59a');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f0fbe1), color-stop(100%, #c3e59a));
-  background-image: -webkit-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: -moz-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: -ms-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: -o-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-}
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus {
-  border-color: #adcb89;
-}
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  border: solid 1px #b8d892;
-  background: #daf0be;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#c3e59a', endColorstr='#f0fbe1');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #c3e59a), color-stop(100%, #f0fbe1));
-  background-image: -webkit-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: -moz-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: -ms-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: -o-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-}
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button {
-  color: #d45353;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  opacity: 0.5;
-  box-shadow: none;
-  color: #333;
-  background: #eee;
-  border-color: #ccc;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button:focus,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:focus,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:focus {
-  border-color: #ccc;
-  box-shadow: none;
-}
-.oo-ui-clippableElement-clippable {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
-  overflow-y: hidden;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  width: 100%;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
-  padding: 2em;
-}
-.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 3em;
-  overflow-y: auto;
-}
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  left: 0;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  padding: 1.5em;
-}
-.oo-ui-bookletLayout-outlinePanel {
-  border-left: solid 1px #ddd;
-}
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25);
-}
-.oo-ui-fieldLayout {
-  margin-bottom: 1em;
-}
-.oo-ui-fieldLayout:before,
-.oo-ui-fieldLayout:after {
-  content: " ";
-  display: table;
-}
-.oo-ui-fieldLayout:after {
-  clear: both;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  display: block;
-  float: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  display: block;
-  float: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  text-align: left;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-  display: inline-block;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-  z-index: 1;
-}
-.oo-ui-fieldLayout:last-child {
-  margin-bottom: 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  padding-top: 0.5em;
-  margin-left: 5%;
-  width: 35%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  width: 60%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-  padding: 0.75em 0.5em 0.5em 0.5em;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  padding: 0.5em 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-  padding: 0.5em 0;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-top: 0.25em;
-}
-.oo-ui-fieldLayout-disabled .oo-ui-labelElement-label {
-  color: #ccc;
-}
-.oo-ui-fieldsetLayout {
-  position: relative;
-  margin: 0;
-  padding: 0;
-  border: none;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-  display: block;
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
-  display: inline-block;
-}
-.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
-  margin-top: 2em;
-}
-.oo-ui-fieldsetLayout > .oo-ui-labelElement-label {
-  font-size: 1.5em;
-  margin-bottom: 0.5em;
-  padding: 0.25em 0;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label {
-  padding-right: 1.75em;
-  line-height: 1.33em;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-  right: 0;
-  top: 0.25em;
-  width: 2em;
-  height: 2em;
-}
-.oo-ui-gridLayout {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-}
-.oo-ui-panelLayout {
-  position: relative;
-}
-.oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-.oo-ui-panelLayout-expanded {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-}
-.oo-ui-panelLayout-padded {
-  padding: 1.25em;
-}
-.oo-ui-stackLayout > .oo-ui-panelLayout {
-  display: none;
-}
-.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-  display: block;
-  position: relative;
-}
-.oo-ui-popupTool .oo-ui-popupWidget-popup,
-.oo-ui-popupTool .oo-ui-popupWidget-anchor {
-  z-index: 4;
-}
-.oo-ui-popupTool .oo-ui-popupWidget {
-  margin-right: 1.25em;
-  font-size: 0.8em;
-}
-.oo-ui-toolGroup {
-  display: inline-block;
-  vertical-align: middle;
-  margin: 0.3em;
-  border-radius: 0.25em;
-  border: solid 1px transparent;
-  -webkit-transition: border-color 300ms ease-in-out;
-  -moz-transition: border-color 300ms ease-in-out;
-  -ms-transition: border-color 300ms ease-in-out;
-  -o-transition: border-color 300ms ease-in-out;
-  transition: border-color 300ms ease-in-out;
-}
-.oo-ui-toolGroup-empty {
-  display: none;
-}
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-toolGroup.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-toolGroup.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #000;
-}
-.oo-ui-barToolGroup > .oo-ui-iconElement-icon,
-.oo-ui-barToolGroup > .oo-ui-labelElement-label {
-  display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool {
-  display: inline-block;
-  position: relative;
-  vertical-align: top;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-barToolGroup .oo-ui-tool-title,
-.oo-ui-barToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
-  cursor: pointer;
-}
-.oo-ui-barToolGroup .oo-ui-tool {
-  margin: -1px -1px -1px 0;
-  border: solid 1px transparent;
-}
-.oo-ui-barToolGroup .oo-ui-tool:first-child {
-  border-top-right-radius: 0.25em;
-  border-bottom-right-radius: 0.25em;
-}
-.oo-ui-barToolGroup .oo-ui-tool:last-child {
-  margin-left: -1px;
-  border-top-left-radius: 0.25em;
-  border-bottom-left-radius: 0.25em;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  height: 1.5em;
-  padding: 0.25em;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  height: 1.5em;
-  width: 1.5em;
-  opacity: 0.8;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled {
-  border-color: rgba(0, 0, 0, 0.2);
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-  background: #f8fbfd;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
-  border-right-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.8;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 1;
-}
-.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-popupToolGroup {
-  position: relative;
-  height: 2em;
-  min-width: 2.5em;
-}
-.oo-ui-popupToolGroup-handle {
-  display: block;
-  cursor: pointer;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-  cursor: default;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  display: none;
-  position: absolute;
-  z-index: 4;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconElement-icon {
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-  display: block;
-}
-.oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools {
-  right: 0;
-}
-.oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools {
-  left: 0;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
-  min-width: 3.5em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  top: 0;
-  width: 2em;
-  height: 2em;
-  opacity: 0.8;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  right: 0.25em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  line-height: 2.6em;
-  font-size: 0.8em;
-  margin: 0 1em;
-}
-.oo-ui-popupToolGroup-header {
-  line-height: 2.6em;
-  font-size: 0.8em;
-  margin: 0 0.6em;
-  font-weight: bold;
-}
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-  background: #f8fbfd;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-}
-.oo-ui-popupToolGroup.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-right: 3em;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-left: 2.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  top: 2em;
-  margin: 0 -1px;
-  border: solid 1px #ccc;
-  background-color: white;
-  box-shadow: 0 0.25em 1em rgba(0, 0, 0, 0.25);
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  height: 2em;
-  width: 2em;
-  margin-left: 0.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  line-height: 2em;
-  font-size: 0.8em;
-}
-.oo-ui-listToolGroup .oo-ui-tool {
-  display: inline-block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em;
-}
-.oo-ui-listToolGroup.oo-ui-popupToolGroup-active {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.oo-ui-listToolGroup .oo-ui-tool {
-  border: solid 1px transparent;
-  margin: -1px 0;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  padding-left: 0.5em;
-}
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
-  border-color: rgba(0, 0, 0, 0.1);
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-  background: #f8fbfd;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-}
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
-  border-top-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.8;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 1;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #ccc;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-listToolGroup.oo-ui-widget-disabled {
-  color: #ccc;
-}
-.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
-.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-menuToolGroup {
-  border-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-menuToolGroup .oo-ui-tool {
-  display: block;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-image: none;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-image: /* @embed */ url(images/icons/check.svg);
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-  min-width: 8em;
-}
-.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em 0 0.25em 0;
-}
-.oo-ui-menuToolGroup.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.oo-ui-menuToolGroup.oo-ui-popupToolGroup-active {
-  border-color: rgba(0, 0, 0, 0.25);
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  padding: 0 0.25em 0 1em;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
-  background-color: #e1f3ff;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #ccc;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-menuToolGroup.oo-ui-widget-disabled {
-  color: #ccc;
-  border-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
-.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-toolbar {
-  clear: both;
-}
-.oo-ui-toolbar-bar {
-  line-height: 1em;
-}
-.oo-ui-toolbar-actions {
-  float: left;
-}
-.oo-ui-toolbar-tools {
-  display: inline;
-}
-.oo-ui-toolbar-tools,
-.oo-ui-toolbar-actions,
-.oo-ui-toolbar-shadow {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-toolbar-actions .oo-ui-popupWidget {
-  -webkit-touch-callout: default;
-  -webkit-user-select: all;
-  -moz-user-select: all;
-  -ms-user-select: all;
-  user-select: all;
-}
-.oo-ui-toolbar-shadow {
-  background-position: right top;
-  background-repeat: repeat-x;
-  position: absolute;
-  width: 100%;
-  pointer-events: none;
-}
-.oo-ui-toolbar-bar {
-  border-bottom: solid 1px #ccc;
-  background: #f8fbfd;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#f1f7fb');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f1f7fb));
-  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: -moz-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: -ms-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: -o-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-}
-.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
-  border: none;
-  background: none;
-}
-.oo-ui-toolbar-shadow {
-  background-image: /* @embed */ url(images/toolbar-shadow.png);
-  bottom: -9px;
-  height: 9px;
-  opacity: 0.125;
-  -webkit-transition: opacity 500ms ease-in-out;
-  -moz-transition: opacity 500ms ease-in-out;
-  -ms-transition: opacity 500ms ease-in-out;
-  -o-transition: opacity 500ms ease-in-out;
-  transition: opacity 500ms ease-in-out;
-}
-.oo-ui-optionWidget {
-  position: relative;
-  display: block;
-  cursor: pointer;
-  padding: 0.5em 3em 0.5em 2em;
-  border: none;
-}
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-  display: block;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-}
-.oo-ui-optionWidget-highlighted {
-  background-color: #e1f3ff;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-  line-height: 1.5em;
-}
-.oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected {
-  background-color: #a7dcff;
-}
-.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed {
-  background-color: #a7dcff;
-}
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  color: #ccc;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  top: 50%;
-  width: 2em;
-  height: 2em;
-  margin-top: -1em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon {
-  right: 0.5em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  left: 0.5em;
-}
-.oo-ui-buttonSelectWidget {
-  display: inline-block;
-  white-space: nowrap;
-  border-radius: 0.3em;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  border-radius: 0;
-  margin-right: -1px;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonElement-button {
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-  margin-right: 0;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonElement-button {
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-.oo-ui-buttonOptionWidget {
-  display: inline-block;
-  padding: 0;
-  background-color: transparent;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  position: relative;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  position: static;
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  height: 1.9em;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  height: 1.9em;
-  margin-top: 0;
-}
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed,
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted {
-  background-color: transparent;
-}
-.oo-ui-labelWidget {
-  display: inline-block;
-  padding: 0.5em 0;
-}
-.oo-ui-iconWidget {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  line-height: 2.5em;
-  height: 1.9em;
-  width: 1.9em;
-  opacity: 0.8;
-}
-.oo-ui-iconWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-.oo-ui-indicatorWidget {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  line-height: 2.5em;
-  height: 1.9em;
-  width: 1.9em;
-  opacity: 0.8;
-}
-.oo-ui-indicatorWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-.oo-ui-buttonWidget {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonGroupWidget {
-  display: inline-block;
-  white-space: nowrap;
-  border-radius: 0.3em;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  border-radius: 0;
-  margin-bottom: -1px;
-  margin-right: -1px;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button {
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-  margin-right: 0;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button {
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-.oo-ui-toggleSwitchWidget {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle;
-  overflow: hidden;
-  cursor: pointer;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  -webkit-transform: translateZ(0px);
-  -moz-transform: translateZ(0px);
-  -ms-transform: translateZ(0px);
-  -o-transform: translateZ(0px);
-  transform: translateZ(0px);
-  height: 2em;
-  width: 4em;
-  border-radius: 1em;
-  box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
-  border: solid 1px #ccc;
-  background: #eeeeee;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-.oo-ui-toggleSwitchWidget-grip {
-  position: absolute;
-  display: block;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: none;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  opacity: 0.5;
-}
-.oo-ui-toggleSwitchWidget-grip {
-  top: 0.25em;
-  right: 0.25em;
-  width: 1.5em;
-  height: 1.5em;
-  margin-top: -1px;
-  border-radius: 1em;
-  box-shadow: 0 0.1em 0.25em rgba(0, 0, 0, 0.1);
-  border: 1px #c9c9c9 solid;
-  -webkit-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  -moz-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  -ms-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  -o-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  background: #eeeeee;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
-  background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover,
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover .oo-ui-toggleSwitchWidget-grip {
-  border-color: #aaa;
-}
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  border-radius: 1em;
-  box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
-  -webkit-transition: opacity 200ms ease-in-out;
-  -moz-transition: opacity 200ms ease-in-out;
-  -ms-transition: opacity 200ms ease-in-out;
-  -o-transition: opacity 200ms ease-in-out;
-  transition: opacity 200ms ease-in-out;
-  background: #cde7f4;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
-  background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-}
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-glow {
-  opacity: 1;
-}
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-  right: 2.25em;
-  margin-right: -2px;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: block;
-  opacity: 0;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-  right: 0.25em;
-  margin-right: 0;
-}
-.oo-ui-popupWidget-popup {
-  position: absolute;
-  overflow: hidden;
-  z-index: 1;
-}
-.oo-ui-popupWidget-anchor {
-  display: none;
-  z-index: 1;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-  display: block;
-  position: absolute;
-  background-repeat: no-repeat;
-}
-.oo-ui-popupWidget-head {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  float: left;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-  float: right;
-  cursor: default;
-}
-.oo-ui-popupWidget-body {
-  clear: both;
-  overflow: hidden;
-}
-.oo-ui-popupWidget-popup {
-  border: solid 1px #ccc;
-  border-radius: 0.25em;
-  background-color: #fff;
-  box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2);
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
-  margin-top: 7px;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-  width: 15px;
-  height: 8px;
-  margin-right: -7px;
-  background-image: /* @embed */ url(images/anchor.svg);
-}
-.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup {
-  -webkit-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  -moz-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  -ms-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  -o-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-}
-.oo-ui-popupWidget-head {
-  height: 2.5em;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  margin: 0.25em;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-  margin: 0.75em 1em;
-}
-.oo-ui-popupWidget-body {
-  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
-}
-.oo-ui-popupWidget-body-padded {
-  padding: 0 1em;
-}
-.oo-ui-popupButtonWidget {
-  position: relative;
-}
-.oo-ui-popupButtonWidget .oo-ui-popupWidget {
-  position: absolute;
-  right: 1em;
-  cursor: auto;
-}
-.oo-ui-textInputWidget {
-  position: relative;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  width: 20em;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  display: inline-block;
-  width: 100%;
-  resize: none;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  top: 0;
-  height: 100%;
-  background-repeat: no-repeat;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon {
-  right: 0;
-}
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  padding: 0.5em;
-  font-size: 1em;
-  font-family: sans-serif;
-  background-color: #fff;
-  border: solid 1px #ccc;
-  box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
-  border-radius: 0.25em;
-  -webkit-transition: border-color 200ms, box-shadow 200ms;
-  -moz-transition: border-color 200ms, box-shadow 200ms;
-  -ms-transition: border-color 200ms, box-shadow 200ms;
-  -o-transition: border-color 200ms, box-shadow 200ms;
-  transition: border-color 200ms, box-shadow 200ms;
-}
-.oo-ui-textInputWidget-decorated input,
-.oo-ui-textInputWidget-decorated textarea {
-  padding-right: 2em;
-}
-.oo-ui-textInputWidget-icon {
-  width: 2em;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
-  outline: none;
-  border-color: #a7dcff;
-  box-shadow: 0 0 0.3em #a7dcff, 0 0 0 white;
-}
-.oo-ui-textInputWidget input[readonly],
-.oo-ui-textInputWidget textarea[readonly] {
-  color: #777;
-  text-shadow: 0 1px 1px #fff;
-}
-.oo-ui-textInputWidget-pending input,
-.oo-ui-textInputWidget-pending textarea {
-  background-color: transparent;
-}
-.oo-ui-textInputWidget.oo-ui-widget-disabled input,
-.oo-ui-textInputWidget.oo-ui-widget-disabled input:focus,
-.oo-ui-textInputWidget.oo-ui-widget-disabled textarea,
-.oo-ui-textInputWidget.oo-ui-widget-disabled textarea:focus {
-  color: #ccc;
-  text-shadow: 0 1px 1px #fff;
-  border-color: #ddd;
-  background-color: #f3f3f3;
-}
-.oo-ui-textInputWidget .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget .oo-ui-indicatorElement-indicator {
-  opacity: 0.8;
-}
-.oo-ui-textInputWidget.oo-ui-iconElement input,
-.oo-ui-textInputWidget.oo-ui-iconElement textarea {
-  padding-right: 2em;
-}
-.oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  width: 2em;
-  background-position: left center;
-}
-.oo-ui-textInputWidget.oo-ui-indicatorElement input,
-.oo-ui-textInputWidget.oo-ui-indicatorElement textarea {
-  padding-left: 1.5em;
-}
-.oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  width: 1.5em;
-  background-position: right center;
-}
-.oo-ui-menuWidget {
-  position: absolute;
-  background: #fff;
-  margin-top: -1px;
-  border: solid 1px #ccc;
-  border-radius: 0 0 0.25em 0.25em;
-  box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2);
-}
-.oo-ui-menuWidget input {
-  position: absolute;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-  opacity: 0;
-}
-.oo-ui-menuItemWidget {
-  position: relative;
-}
-.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
-  display: block;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted,
-.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected {
-  background-color: #e1f3ff;
-}
-.oo-ui-menuSectionItemWidget {
-  cursor: default;
-  padding: 0.33em 0.75em;
-  color: #888;
-}
-.oo-ui-inlineMenuWidget {
-  position: relative;
-  display: inline-block;
-  margin: 0.25em 0;
-  min-width: 20em;
-}
-.oo-ui-inlineMenuWidget-handle {
-  width: 100%;
-  display: inline-block;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
-  z-index: 1;
-  width: 100%;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  cursor: default;
-}
-.oo-ui-inlineMenuWidget-handle {
-  height: 2.5em;
-  border: solid 1px rgba(0, 0, 0, 0.1);
-  border-radius: 0.25em;
-}
-.oo-ui-inlineMenuWidget-handle:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  right: 0.25em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  line-height: 2.5em;
-  margin: 0 0.5em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  top: 0;
-  width: 2.5em;
-  height: 2.5em;
-  opacity: 0.8;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  color: #ccc;
-  text-shadow: 0 1px 1px #fff;
-  border-color: #ddd;
-  background-color: #f3f3f3;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
-  opacity: 0.2;
-}
-.oo-ui-inlineMenuWidget.oo-ui-iconElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  margin-right: 3em;
-}
-.oo-ui-inlineMenuWidget.oo-ui-indicatorElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  margin-left: 2em;
-}
-.oo-ui-outlineItemWidget {
-  position: relative;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-  font-size: 1.1em;
-  padding: 0.75em;
-}
-.oo-ui-outlineItemWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-  padding-left: 1.5em;
-}
-.oo-ui-outlineItemWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  opacity: 0.5;
-}
-.oo-ui-outlineItemWidget-level-0 {
-  padding-right: 3.5em;
-}
-.oo-ui-outlineItemWidget-level-0 .oo-ui-iconElement-icon {
-  right: 1em;
-}
-.oo-ui-outlineItemWidget-level-1 {
-  padding-right: 5em;
-}
-.oo-ui-outlineItemWidget-level-1 .oo-ui-iconElement-icon {
-  right: 2.5em;
-}
-.oo-ui-outlineItemWidget-level-2 {
-  padding-right: 6.5em;
-}
-.oo-ui-outlineItemWidget-level-2 .oo-ui-iconElement-icon {
-  right: 4em;
-}
-.oo-ui-selectWidget-depressed .oo-ui-outlineItemWidget.oo-ui-optionWidget-selected {
-  background-color: #a7dcff;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
-}
-.oo-ui-outlineItemWidget.oo-ui-flaggedElement-important {
-  font-weight: bold;
-}
-.oo-ui-outlineItemWidget.oo-ui-flaggedElement-placeholder {
-  font-style: italic;
-}
-.oo-ui-outlineItemWidget.oo-ui-flaggedElement-empty .oo-ui-iconElement-icon {
-  opacity: 0.5;
-}
-.oo-ui-outlineItemWidget.oo-ui-flaggedElement-empty .oo-ui-labelElement-label {
-  color: #777;
-}
-.oo-ui-outlineControlsWidget {
-  height: 3em;
-  background-color: #fff;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  float: right;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-  float: right;
-  background-position: left center;
-  background-repeat: no-repeat;
-}
-.oo-ui-outlineControlsWidget-items {
-  float: right;
-}
-.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
-  float: right;
-}
-.oo-ui-outlineControlsWidget-movers {
-  float: left;
-}
-.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-  float: left;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  height: 2em;
-  margin: 0.5em;
-  padding: 0;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-  width: 1.5em;
-  height: 2em;
-  margin: 0.5em 0.5em 0.5em 0;
-  opacity: 0.2;
-}
-.oo-ui-outlineControlsWidget-items {
-  margin-right: 0;
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget {
-  z-index: 1;
-  min-width: 20em;
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget-handle {
-  border: solid 1px rgba(0, 0, 0, 0.1);
-  border-radius: 0.25em;
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget-handle:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget.oo-ui-widget-disabled .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget-empty .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  cursor: default;
-  opacity: 0.2;
-}
-.oo-ui-searchWidget-query {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  width: 100%;
-}
-.oo-ui-searchWidget-results {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  left: 0;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.oo-ui-searchWidget-query {
-  height: 4em;
-  padding: 0 1em;
-  box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.2);
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  margin: 0.75em 0;
-}
-.oo-ui-searchWidget-results {
-  top: 4em;
-  padding: 1em;
-  line-height: 0;
-}
-.oo-ui-window {
-  line-height: 1em;
-  /* Content div takes focus when opened, so hide outline */
-}
-.oo-ui-window-frame {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-window-frame > iframe {
-  width: 100%;
-  height: 100%;
-  margin: 0;
-  padding: 0;
-}
-.oo-ui-window-content:focus {
-  outline: none;
-}
-.oo-ui-window-head,
-.oo-ui-window-foot {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-window-body {
-  margin: 0;
-  padding: 0;
-  background: none;
-}
-.oo-ui-window-overlay {
-  position: absolute;
-  top: 0;
-  right: 0;
-}
-.oo-ui-window-isolated {
-  background-color: transparent;
-  background-image: none;
-  font-family: sans-serif;
-  font-size: 0.8em;
-}
-.oo-ui-dialog-content > .oo-ui-window-head,
-.oo-ui-dialog-content > .oo-ui-window-body,
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  position: absolute;
-  right: 0;
-  left: 0;
-  overflow: hidden;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-dialog-content > .oo-ui-window-head {
-  z-index: 1;
-  top: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-body {
-  z-index: 2;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  z-index: 1;
-  bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-overlay {
-  z-index: 3;
-}
-.oo-ui-dialog-content > .oo-ui-window-body {
-  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
-}
-.oo-ui-messageDialog-actions-horizontal {
-  display: table;
-  table-layout: fixed;
-  width: 100%;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  display: table-cell;
-  width: 1%;
-}
-.oo-ui-messageDialog-actions-vertical {
-  display: block;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  display: block;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget {
-  position: relative;
-  text-align: center;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  display: block;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-  position: relative;
-  top: auto;
-  bottom: auto;
-  display: inline;
-  white-space: nowrap;
-}
-.oo-ui-messageDialog-content .oo-ui-window-body {
-  box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
-}
-.oo-ui-messageDialog-title,
-.oo-ui-messageDialog-message {
-  display: block;
-  text-align: center;
-  padding-top: 0.5em;
-}
-.oo-ui-messageDialog-title {
-  font-size: 1.5em;
-  line-height: 1em;
-  color: #000;
-}
-.oo-ui-messageDialog-message {
-  font-size: 0.9em;
-  line-height: 1.25em;
-  color: #666;
-}
-.oo-ui-messageDialog-message-verbose {
-  font-size: 1.1em;
-  line-height: 1.5em;
-  text-align: right;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  border-left: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-  border-left-width: 0;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  border-bottom: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-  border-bottom-width: 0;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-  text-align: center;
-  line-height: 3.4em;
-  padding: 0 2em;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-  font-weight: bold;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-.oo-ui-processDialog-location {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.oo-ui-processDialog-title {
-  display: inline;
-  padding: 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
-  white-space: nowrap;
-}
-.oo-ui-processDialog-actions-safe,
-.oo-ui-processDialog-actions-primary {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-processDialog-actions-safe {
-  right: 0;
-}
-.oo-ui-processDialog-actions-primary {
-  left: 0;
-}
-.oo-ui-processDialog-errors {
-  display: none;
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-  z-index: 2;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.oo-ui-processDialog-content .oo-ui-window-head {
-  height: 3.4em;
-}
-.oo-ui-processDialog-content .oo-ui-window-body {
-  top: 3.4em;
-  box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
-}
-.oo-ui-processDialog-navigation {
-  position: relative;
-  height: 3.4em;
-  padding: 0 1em;
-}
-.oo-ui-processDialog-location {
-  padding: 0.75em 0;
-  height: 1.9em;
-  cursor: default;
-  text-align: center;
-}
-.oo-ui-processDialog-title {
-  font-weight: bold;
-  line-height: 1.9em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  padding-top: 0.75em;
-  padding-bottom: 0.75em;
-  min-width: 1.9em;
-  min-height: 1.9em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labelElement-label {
-  line-height: 1.9em;
-  padding: 0 1em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconElement-icon {
-  position: absolute;
-  margin-top: -0.125em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed {
-  margin: 0.75em 0.75em 0.75em 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  padding: 0;
-  vertical-align: middle;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed {
-  margin: 0.75em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  /* Adjust for border so text aligns with title */
-  margin: -1px;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-  font-weight: bold;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  right: 0.5em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-  padding-right: 2.25em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  left: 0.5em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-  padding-left: 2.25em;
-}
-.oo-ui-processDialog > .oo-ui-window-frame {
-  min-height: 5em;
-}
-.oo-ui-processDialog-errors {
-  background-color: rgba(255, 255, 255, 0.9);
-  padding: 3em 3em 1.5em 3em;
-  text-align: center;
-}
-.oo-ui-processDialog-errors .oo-ui-buttonWidget {
-  margin: 2em 1em 2em 1em;
-}
-.oo-ui-processDialog-errors-title {
-  font-size: 1.5em;
-  color: #000;
-  margin-bottom: 2em;
-}
-.oo-ui-processDialog-error {
-  text-align: right;
-  margin: 1em;
-  padding: 1em;
-  border: solid 1px #ff9e9e;
-  background-color: #fff7f7;
-  border-radius: 0.25em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  position: fixed;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
-  width: auto;
-  height: auto;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  padding: 1em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
-  position: fixed;
-  left: 0;
-  right: 0;
-  margin: auto;
-  overflow: hidden;
-  max-width: 100%;
-  max-height: 100%;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame > iframe {
-  width: 100%;
-  height: 100%;
-}
-.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
-  width: 100%;
-  height: 100%;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  background-color: rgba(255, 255, 255, 0.5);
-  opacity: 0;
-  -webkit-transition: opacity 250ms ease-in-out;
-  -moz-transition: opacity 250ms ease-in-out;
-  -ms-transition: opacity 250ms ease-in-out;
-  -o-transition: opacity 250ms ease-in-out;
-  transition: opacity 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-  top: 1em;
-  bottom: 1em;
-  background-color: #fff;
-  -webkit-transform: scale(0.5);
-  -moz-transform: scale(0.5);
-  -ms-transform: scale(0.5);
-  -o-transform: scale(0.5);
-  transform: scale(0.5);
-  -webkit-transition: all 250ms ease-in-out;
-  -moz-transition: all 250ms ease-in-out;
-  -ms-transition: all 250ms ease-in-out;
-  -o-transition: all 250ms ease-in-out;
-  transition: all 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
-  opacity: 1;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
-  -webkit-transform: scale(1);
-  -moz-transform: scale(1);
-  -ms-transform: scale(1);
-  -o-transform: scale(1);
-  transform: scale(1);
-}
-.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
-  border: solid 1px #ccc;
-  border-radius: 0.5em;
-  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
-}
index 63e20d2..0d64a22 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (26dadbc60f)
+ * OOjs UI v0.1.0-pre (0d358b167a)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-10-06T16:03:50Z
+ * Date: 2014-10-17T23:41:15Z
  */
 /* @noflip */
 .oo-ui-rtl {
        z-index: 4;
 }
 .oo-ui-popupTool .oo-ui-popupWidget {
+       /* @noflip */
        margin-left: 1.25em;
        font-size: 0.8em;
 }
 }
 .oo-ui-popupWidget {
        position: absolute;
+       /* @noflip */
+       left: 0;
 }
 .oo-ui-popupWidget-popup {
        position: relative;
        display: block;
        position: absolute;
        top: 0;
+       /* @noflip */
+       left: 0;
        background-repeat: no-repeat;
 }
 .oo-ui-popupWidget-head {
        padding: 0;
        background: none;
 }
-.oo-ui-window-overlay {
+.oo-ui-window-overlay,
+.oo-ui-window-inner-overlay {
        position: absolute;
        top: 0;
+       /* @noflip */
        left: 0;
 }
 .oo-ui-window-isolated,
        z-index: 1;
        bottom: 0;
 }
-.oo-ui-dialog-content > .oo-ui-window-overlay {
+.oo-ui-dialog-content > .oo-ui-window-inner-overlay {
        z-index: 3;
 }
 .oo-ui-dialog-content > .oo-ui-window-body {
diff --git a/resources/lib/oojs-ui/oojs-ui-apex.svg.rtl.css b/resources/lib/oojs-ui/oojs-ui-apex.svg.rtl.css
deleted file mode 100644 (file)
index 4ea3271..0000000
+++ /dev/null
@@ -1,2079 +0,0 @@
-/*!
- * OOjs UI v0.1.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-09-24T23:21:42Z
- */
-/* @noflip */
-.oo-ui-rtl {
-  direction: rtl;
-}
-/* @noflip */
-.oo-ui-ltr {
-  direction: ltr;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button {
-  cursor: pointer;
-  display: inline-block;
-  vertical-align: middle;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  display: none;
-}
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-buttonElement-frameless {
-  display: inline-block;
-  position: relative;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  display: inline-block;
-  vertical-align: top;
-  text-align: center;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button {
-  color: #333;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-right: 0;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  margin-left: -0.75em;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  opacity: 0.8;
-  width: 1.9em;
-  height: 1.9em;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  /* Don't animate opacities for now, causes wiggling in Chrome (bug 63020) */
-  /*.oo-ui-transition(opacity 200ms);*/
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon,
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-iconElement-icon {
-  opacity: 1;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-  color: #000;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #333;
-  margin-right: 0.25em;
-}
-.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #087ecc;
-}
-.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #76ab36;
-}
-.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #d45353;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #ccc;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  margin: 0.1em 0;
-  padding: 0.2em 0.8em;
-  border-radius: 0.3em;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
-  border: 1px #c9c9c9 solid;
-  -webkit-transition: border-color 100ms ease-in-out;
-  -moz-transition: border-color 100ms ease-in-out;
-  -ms-transition: border-color 100ms ease-in-out;
-  -o-transition: border-color 100ms ease-in-out;
-  transition: border-color 100ms ease-in-out;
-  background: #eeeeee;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
-  background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:focus {
-  border-color: #aaa;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  line-height: 1.9em;
-}
-.oo-ui-buttonElement-framed.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
-  color: black;
-  border-color: #c9c9c9;
-  background: #eeeeee;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
-}
-.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-right: -0.5em;
-  margin-left: -0.5em;
-}
-.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-right: -0.5em;
-  margin-left: 0.3em;
-}
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button {
-  border: solid 1px #a6cee1;
-  background: #cde7f4;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#eaf4fa', endColorstr='#b0d9ee');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eaf4fa), color-stop(100%, #b0d9ee));
-  background-image: -webkit-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: -moz-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: -ms-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: -o-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-}
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button:focus {
-  border-color: #9dc2d4;
-}
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  border: solid 1px #a6cee1;
-  background: #cde7f4;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
-  background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-}
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button {
-  border: solid 1px #b8d892;
-  background: #daf0be;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0fbe1', endColorstr='#c3e59a');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f0fbe1), color-stop(100%, #c3e59a));
-  background-image: -webkit-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: -moz-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: -ms-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: -o-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-}
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus {
-  border-color: #adcb89;
-}
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  border: solid 1px #b8d892;
-  background: #daf0be;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#c3e59a', endColorstr='#f0fbe1');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #c3e59a), color-stop(100%, #f0fbe1));
-  background-image: -webkit-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: -moz-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: -ms-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: -o-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-}
-.oo-ui-buttonElement-framed.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button {
-  color: #d45353;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  opacity: 0.5;
-  box-shadow: none;
-  color: #333;
-  background: #eee;
-  border-color: #ccc;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button:focus,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:focus,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:focus {
-  border-color: #ccc;
-  box-shadow: none;
-}
-.oo-ui-clippableElement-clippable {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
-  overflow-y: hidden;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  width: 100%;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
-  padding: 2em;
-}
-.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 3em;
-  overflow-y: auto;
-}
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  left: 0;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  padding: 1.5em;
-}
-.oo-ui-bookletLayout-outlinePanel {
-  border-left: solid 1px #ddd;
-}
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25);
-}
-.oo-ui-fieldLayout {
-  margin-bottom: 1em;
-}
-.oo-ui-fieldLayout:before,
-.oo-ui-fieldLayout:after {
-  content: " ";
-  display: table;
-}
-.oo-ui-fieldLayout:after {
-  clear: both;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  display: block;
-  float: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  display: block;
-  float: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  text-align: left;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-  display: inline-block;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-  z-index: 1;
-}
-.oo-ui-fieldLayout .oo-ui-fieldLayout-help {
-  float: left;
-}
-.oo-ui-fieldLayout .oo-ui-fieldLayout-help-content {
-  padding: 0.5em 0.75em;
-}
-.oo-ui-fieldLayout:last-child {
-  margin-bottom: 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  padding-top: 0.5em;
-  margin-left: 5%;
-  width: 35%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  width: 60%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-  padding: 0.75em 0.5em 0.5em 0.5em;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  padding: 0.5em 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-  padding: 0.5em 0;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-top: 0.25em;
-}
-.oo-ui-fieldLayout-disabled .oo-ui-labelElement-label {
-  color: #ccc;
-}
-.oo-ui-fieldsetLayout {
-  position: relative;
-  margin: 0;
-  padding: 0;
-  border: none;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-  display: block;
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
-  display: inline-block;
-}
-.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
-  margin-top: 2em;
-}
-.oo-ui-fieldsetLayout > .oo-ui-labelElement-label {
-  font-size: 1.5em;
-  margin-bottom: 0.5em;
-  padding: 0.25em 0;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label {
-  padding-right: 1.75em;
-  line-height: 1.33em;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-  right: 0;
-  top: 0.25em;
-  width: 2em;
-  height: 2em;
-}
-.oo-ui-gridLayout {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-}
-.oo-ui-panelLayout {
-  position: relative;
-}
-.oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-.oo-ui-panelLayout-expanded {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-}
-.oo-ui-panelLayout-padded {
-  padding: 1.25em;
-}
-.oo-ui-stackLayout > .oo-ui-panelLayout {
-  display: none;
-}
-.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-  display: block;
-  position: relative;
-}
-.oo-ui-popupTool .oo-ui-popupWidget-popup,
-.oo-ui-popupTool .oo-ui-popupWidget-anchor {
-  z-index: 4;
-}
-.oo-ui-popupTool .oo-ui-popupWidget {
-  margin-right: 1.25em;
-  font-size: 0.8em;
-}
-.oo-ui-toolGroup {
-  display: inline-block;
-  vertical-align: middle;
-  margin: 0.3em;
-  border-radius: 0.25em;
-  border: solid 1px transparent;
-  -webkit-transition: border-color 300ms ease-in-out;
-  -moz-transition: border-color 300ms ease-in-out;
-  -ms-transition: border-color 300ms ease-in-out;
-  -o-transition: border-color 300ms ease-in-out;
-  transition: border-color 300ms ease-in-out;
-}
-.oo-ui-toolGroup-empty {
-  display: none;
-}
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-toolGroup.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-toolGroup.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #000;
-}
-.oo-ui-barToolGroup > .oo-ui-iconElement-icon,
-.oo-ui-barToolGroup > .oo-ui-labelElement-label {
-  display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool {
-  display: inline-block;
-  position: relative;
-  vertical-align: top;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-barToolGroup .oo-ui-tool-title,
-.oo-ui-barToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
-  cursor: pointer;
-}
-.oo-ui-barToolGroup .oo-ui-tool {
-  margin: -1px -1px -1px 0;
-  border: solid 1px transparent;
-}
-.oo-ui-barToolGroup .oo-ui-tool:first-child {
-  border-top-right-radius: 0.25em;
-  border-bottom-right-radius: 0.25em;
-}
-.oo-ui-barToolGroup .oo-ui-tool:last-child {
-  margin-left: -1px;
-  border-top-left-radius: 0.25em;
-  border-bottom-left-radius: 0.25em;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  height: 1.5em;
-  padding: 0.25em;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  height: 1.5em;
-  width: 1.5em;
-  opacity: 0.8;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled {
-  border-color: rgba(0, 0, 0, 0.2);
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-  background: #f8fbfd;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
-  border-right-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.8;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 1;
-}
-.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-popupToolGroup {
-  position: relative;
-  height: 2em;
-  min-width: 2.5em;
-}
-.oo-ui-popupToolGroup-handle {
-  display: block;
-  cursor: pointer;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-  cursor: default;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  display: none;
-  position: absolute;
-  z-index: 4;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconElement-icon {
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-  display: block;
-}
-.oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools {
-  right: 0;
-}
-.oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools {
-  left: 0;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
-  min-width: 3.5em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  top: 0;
-  width: 2em;
-  height: 2em;
-  opacity: 0.8;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  right: 0.25em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  line-height: 2.6em;
-  font-size: 0.8em;
-  margin: 0 1em;
-}
-.oo-ui-popupToolGroup-header {
-  line-height: 2.6em;
-  font-size: 0.8em;
-  margin: 0 0.6em;
-  font-weight: bold;
-}
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-  background: #f8fbfd;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-}
-.oo-ui-popupToolGroup.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-right: 3em;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-left: 2.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  top: 2em;
-  margin: 0 -1px;
-  border: solid 1px #ccc;
-  background-color: white;
-  box-shadow: 0 0.25em 1em rgba(0, 0, 0, 0.25);
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  height: 2em;
-  width: 2em;
-  margin-left: 0.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  line-height: 2em;
-  font-size: 0.8em;
-}
-.oo-ui-listToolGroup .oo-ui-tool {
-  display: inline-block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em;
-}
-.oo-ui-listToolGroup.oo-ui-popupToolGroup-active {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.oo-ui-listToolGroup .oo-ui-tool {
-  border: solid 1px transparent;
-  margin: -1px 0;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  padding-left: 0.5em;
-}
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
-  border-color: rgba(0, 0, 0, 0.1);
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-  background: #f8fbfd;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-}
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
-  border-top-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.8;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 1;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #ccc;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-listToolGroup.oo-ui-widget-disabled {
-  color: #ccc;
-}
-.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
-.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-menuToolGroup {
-  border-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-menuToolGroup .oo-ui-tool {
-  display: block;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-  min-width: 8em;
-}
-.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em 0 0.25em 0;
-}
-.oo-ui-menuToolGroup.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.oo-ui-menuToolGroup.oo-ui-popupToolGroup-active {
-  border-color: rgba(0, 0, 0, 0.25);
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  padding: 0 0.25em 0 1em;
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-image: none;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-image: /* @embed */ url(themes/apex/images/icons/check.svg);
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
-  background-color: #e1f3ff;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #ccc;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-menuToolGroup.oo-ui-widget-disabled {
-  color: #ccc;
-  border-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
-.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-toolbar {
-  clear: both;
-}
-.oo-ui-toolbar-bar {
-  line-height: 1em;
-}
-.oo-ui-toolbar-actions {
-  float: left;
-}
-.oo-ui-toolbar-tools {
-  display: inline;
-}
-.oo-ui-toolbar-tools,
-.oo-ui-toolbar-actions,
-.oo-ui-toolbar-shadow {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-toolbar-actions .oo-ui-popupWidget {
-  -webkit-touch-callout: default;
-  -webkit-user-select: all;
-  -moz-user-select: all;
-  -ms-user-select: all;
-  user-select: all;
-}
-.oo-ui-toolbar-shadow {
-  background-position: right top;
-  background-repeat: repeat-x;
-  position: absolute;
-  width: 100%;
-  pointer-events: none;
-}
-.oo-ui-toolbar-bar {
-  border-bottom: solid 1px #ccc;
-  background: #f8fbfd;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#f1f7fb');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f1f7fb));
-  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: -moz-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: -ms-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: -o-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-}
-.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
-  border: none;
-  background: none;
-}
-.oo-ui-toolbar-shadow {
-  /* @embed */
-  background-image: /* @embed */ url(themes/apex/images/toolbar-shadow.png);
-  bottom: -9px;
-  height: 9px;
-  opacity: 0.125;
-  -webkit-transition: opacity 500ms ease-in-out;
-  -moz-transition: opacity 500ms ease-in-out;
-  -ms-transition: opacity 500ms ease-in-out;
-  -o-transition: opacity 500ms ease-in-out;
-  transition: opacity 500ms ease-in-out;
-}
-.oo-ui-optionWidget {
-  position: relative;
-  display: block;
-  cursor: pointer;
-  padding: 0.5em 3em 0.5em 2em;
-  border: none;
-}
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-  display: block;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-}
-.oo-ui-optionWidget-highlighted {
-  background-color: #e1f3ff;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-  line-height: 1.5em;
-}
-.oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected {
-  background-color: #a7dcff;
-}
-.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed {
-  background-color: #a7dcff;
-}
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  color: #ccc;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  top: 50%;
-  width: 2em;
-  height: 2em;
-  margin-top: -1em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon {
-  right: 0.5em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  left: 0.5em;
-}
-.oo-ui-buttonSelectWidget {
-  display: inline-block;
-  white-space: nowrap;
-  border-radius: 0.3em;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  border-radius: 0;
-  margin-right: -1px;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonElement-button {
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-  margin-right: 0;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonElement-button {
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-.oo-ui-buttonOptionWidget {
-  display: inline-block;
-  padding: 0;
-  background-color: transparent;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  position: relative;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  position: static;
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  height: 1.9em;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  height: 1.9em;
-  margin-top: 0;
-}
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed,
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted {
-  background-color: transparent;
-}
-.oo-ui-labelWidget {
-  display: inline-block;
-  padding: 0.5em 0;
-}
-.oo-ui-iconWidget {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  line-height: 2.5em;
-  height: 1.9em;
-  width: 1.9em;
-  opacity: 0.8;
-}
-.oo-ui-iconWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-.oo-ui-indicatorWidget {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  line-height: 2.5em;
-  height: 1.9em;
-  width: 1.9em;
-  opacity: 0.8;
-}
-.oo-ui-indicatorWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-.oo-ui-buttonWidget {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonGroupWidget {
-  display: inline-block;
-  white-space: nowrap;
-  border-radius: 0.3em;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  border-radius: 0;
-  margin-bottom: -1px;
-  margin-right: -1px;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button {
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-  margin-right: 0;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button {
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-.oo-ui-toggleSwitchWidget {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle;
-  overflow: hidden;
-  cursor: pointer;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  -webkit-transform: translateZ(0px);
-  -moz-transform: translateZ(0px);
-  -ms-transform: translateZ(0px);
-  -o-transform: translateZ(0px);
-  transform: translateZ(0px);
-  height: 2em;
-  width: 4em;
-  border-radius: 1em;
-  box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
-  border: solid 1px #ccc;
-  background: #eeeeee;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-.oo-ui-toggleSwitchWidget-grip {
-  position: absolute;
-  display: block;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: none;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  opacity: 0.5;
-}
-.oo-ui-toggleSwitchWidget-grip {
-  top: 0.25em;
-  right: 0.25em;
-  width: 1.5em;
-  height: 1.5em;
-  margin-top: -1px;
-  border-radius: 1em;
-  box-shadow: 0 0.1em 0.25em rgba(0, 0, 0, 0.1);
-  border: 1px #c9c9c9 solid;
-  -webkit-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  -moz-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  -ms-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  -o-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  background: #eeeeee;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
-  background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover,
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover .oo-ui-toggleSwitchWidget-grip {
-  border-color: #aaa;
-}
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  border-radius: 1em;
-  box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
-  -webkit-transition: opacity 200ms ease-in-out;
-  -moz-transition: opacity 200ms ease-in-out;
-  -ms-transition: opacity 200ms ease-in-out;
-  -o-transition: opacity 200ms ease-in-out;
-  transition: opacity 200ms ease-in-out;
-  background: #cde7f4;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
-  background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-}
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-glow {
-  opacity: 1;
-}
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-  right: 2.25em;
-  margin-right: -2px;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: block;
-  opacity: 0;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-  right: 0.25em;
-  margin-right: 0;
-}
-.oo-ui-actionWidget.oo-ui-pendingElement-pending {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-.oo-ui-popupWidget-popup {
-  position: absolute;
-  overflow: hidden;
-  z-index: 1;
-}
-.oo-ui-popupWidget-anchor {
-  display: none;
-  z-index: 1;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-  display: block;
-  position: absolute;
-  background-repeat: no-repeat;
-}
-.oo-ui-popupWidget-head {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  float: left;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-  float: right;
-  cursor: default;
-}
-.oo-ui-popupWidget-body {
-  clear: both;
-  overflow: hidden;
-}
-.oo-ui-popupWidget-popup {
-  border: solid 1px #ccc;
-  border-radius: 0.25em;
-  background-color: #fff;
-  box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2);
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
-  margin-top: 7px;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before,
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after {
-  content: "";
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-style: solid;
-  border-color: transparent;
-  border-top: 0;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before {
-  bottom: -8px;
-  right: 11px;
-  border-bottom-color: #aaa;
-  border-width: 7px;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after {
-  bottom: -8px;
-  right: 12px;
-  border-bottom-color: #fff;
-  border-width: 6px;
-}
-.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup {
-  -webkit-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  -moz-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  -ms-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  -o-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-}
-.oo-ui-popupWidget-head {
-  height: 2.5em;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  margin: 0.25em;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-  margin: 0.75em 1em;
-}
-.oo-ui-popupWidget-body {
-  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
-}
-.oo-ui-popupWidget-body-padded {
-  padding: 0 1em;
-}
-.oo-ui-popupButtonWidget {
-  position: relative;
-}
-.oo-ui-popupButtonWidget .oo-ui-popupWidget {
-  position: absolute;
-  right: 1em;
-  cursor: auto;
-}
-.oo-ui-popupButtonWidget > .oo-ui-popupWidget {
-  margin-right: -1em;
-}
-.oo-ui-textInputWidget {
-  position: relative;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  width: 20em;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  display: inline-block;
-  width: 100%;
-  resize: none;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending input,
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending textarea {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  top: 0;
-  height: 100%;
-  background-repeat: no-repeat;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon {
-  right: 0;
-}
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  padding: 0.5em;
-  font-size: 1em;
-  font-family: sans-serif;
-  background-color: #fff;
-  border: solid 1px #ccc;
-  box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
-  border-radius: 0.25em;
-  -webkit-transition: border-color 200ms, box-shadow 200ms;
-  -moz-transition: border-color 200ms, box-shadow 200ms;
-  -ms-transition: border-color 200ms, box-shadow 200ms;
-  -o-transition: border-color 200ms, box-shadow 200ms;
-  transition: border-color 200ms, box-shadow 200ms;
-}
-.oo-ui-textInputWidget-decorated input,
-.oo-ui-textInputWidget-decorated textarea {
-  padding-right: 2em;
-}
-.oo-ui-textInputWidget-icon {
-  width: 2em;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
-  outline: none;
-  border-color: #a7dcff;
-  box-shadow: 0 0 0.3em #a7dcff, 0 0 0 white;
-}
-.oo-ui-textInputWidget input[readonly],
-.oo-ui-textInputWidget textarea[readonly] {
-  color: #777;
-  text-shadow: 0 1px 1px #fff;
-}
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending input,
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending textarea {
-  background-color: transparent;
-}
-.oo-ui-textInputWidget.oo-ui-widget-disabled input,
-.oo-ui-textInputWidget.oo-ui-widget-disabled input:focus,
-.oo-ui-textInputWidget.oo-ui-widget-disabled textarea,
-.oo-ui-textInputWidget.oo-ui-widget-disabled textarea:focus {
-  color: #ccc;
-  text-shadow: 0 1px 1px #fff;
-  border-color: #ddd;
-  background-color: #f3f3f3;
-}
-.oo-ui-textInputWidget .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget .oo-ui-indicatorElement-indicator {
-  opacity: 0.8;
-}
-.oo-ui-textInputWidget.oo-ui-iconElement input,
-.oo-ui-textInputWidget.oo-ui-iconElement textarea {
-  padding-right: 2em;
-}
-.oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  width: 2em;
-  background-position: left center;
-}
-.oo-ui-textInputWidget.oo-ui-indicatorElement input,
-.oo-ui-textInputWidget.oo-ui-indicatorElement textarea {
-  padding-left: 1.5em;
-}
-.oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  width: 1.5em;
-  background-position: right center;
-}
-.oo-ui-menuWidget {
-  position: absolute;
-  background: #fff;
-  margin-top: -1px;
-  border: solid 1px #ccc;
-  border-radius: 0 0 0.25em 0.25em;
-  box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2);
-}
-.oo-ui-menuWidget input {
-  position: absolute;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-  opacity: 0;
-}
-.oo-ui-menuItemWidget {
-  position: relative;
-}
-.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
-  display: block;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted,
-.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected {
-  background-color: #e1f3ff;
-}
-.oo-ui-menuSectionItemWidget {
-  cursor: default;
-  padding: 0.33em 0.75em;
-  color: #888;
-}
-.oo-ui-inlineMenuWidget {
-  position: relative;
-  display: inline-block;
-  margin: 0.25em 0;
-  min-width: 20em;
-}
-.oo-ui-inlineMenuWidget-handle {
-  width: 100%;
-  display: inline-block;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
-  z-index: 1;
-  width: 100%;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  cursor: default;
-}
-.oo-ui-inlineMenuWidget-handle {
-  height: 2.5em;
-  border: solid 1px rgba(0, 0, 0, 0.1);
-  border-radius: 0.25em;
-}
-.oo-ui-inlineMenuWidget-handle:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  right: 0.25em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  line-height: 2.5em;
-  margin: 0 0.5em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  top: 0;
-  width: 2.5em;
-  height: 2.5em;
-  opacity: 0.8;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  color: #ccc;
-  text-shadow: 0 1px 1px #fff;
-  border-color: #ddd;
-  background-color: #f3f3f3;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
-  opacity: 0.2;
-}
-.oo-ui-inlineMenuWidget.oo-ui-iconElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  margin-right: 3em;
-}
-.oo-ui-inlineMenuWidget.oo-ui-indicatorElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  margin-left: 2em;
-}
-.oo-ui-outlineItemWidget {
-  position: relative;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-  font-size: 1.1em;
-  padding: 0.75em;
-}
-.oo-ui-outlineItemWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-  padding-left: 1.5em;
-}
-.oo-ui-outlineItemWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  opacity: 0.5;
-}
-.oo-ui-outlineItemWidget-level-0 {
-  padding-right: 3.5em;
-}
-.oo-ui-outlineItemWidget-level-0 .oo-ui-iconElement-icon {
-  right: 1em;
-}
-.oo-ui-outlineItemWidget-level-1 {
-  padding-right: 5em;
-}
-.oo-ui-outlineItemWidget-level-1 .oo-ui-iconElement-icon {
-  right: 2.5em;
-}
-.oo-ui-outlineItemWidget-level-2 {
-  padding-right: 6.5em;
-}
-.oo-ui-outlineItemWidget-level-2 .oo-ui-iconElement-icon {
-  right: 4em;
-}
-.oo-ui-selectWidget-depressed .oo-ui-outlineItemWidget.oo-ui-optionWidget-selected {
-  background-color: #a7dcff;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
-}
-.oo-ui-outlineItemWidget.oo-ui-flaggedElement-important {
-  font-weight: bold;
-}
-.oo-ui-outlineItemWidget.oo-ui-flaggedElement-placeholder {
-  font-style: italic;
-}
-.oo-ui-outlineItemWidget.oo-ui-flaggedElement-empty .oo-ui-iconElement-icon {
-  opacity: 0.5;
-}
-.oo-ui-outlineItemWidget.oo-ui-flaggedElement-empty .oo-ui-labelElement-label {
-  color: #777;
-}
-.oo-ui-outlineControlsWidget {
-  height: 3em;
-  background-color: #fff;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  float: right;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-  float: right;
-  background-position: left center;
-  background-repeat: no-repeat;
-}
-.oo-ui-outlineControlsWidget-items {
-  float: right;
-}
-.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
-  float: right;
-}
-.oo-ui-outlineControlsWidget-movers {
-  float: left;
-}
-.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-  float: left;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  height: 2em;
-  margin: 0.5em;
-  padding: 0;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-  width: 1.5em;
-  height: 2em;
-  margin: 0.5em 0.5em 0.5em 0;
-  opacity: 0.2;
-}
-.oo-ui-outlineControlsWidget-items {
-  margin-right: 0;
-}
-.oo-ui-comboBoxWidget {
-  display: inline-block;
-  position: relative;
-  min-width: 20em;
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget {
-  width: 100%;
-  z-index: 1;
-}
-.oo-ui-comboBoxWidget-handle {
-  border: solid 1px rgba(0, 0, 0, 0.1);
-  border-radius: 0.25em;
-}
-.oo-ui-comboBoxWidget-handle:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.oo-ui-comboBoxWidget.oo-ui-widget-disabled .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
-.oo-ui-comboBoxWidget-empty .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  cursor: default;
-  opacity: 0.2;
-}
-.oo-ui-searchWidget-query {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  width: 100%;
-}
-.oo-ui-searchWidget-results {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  left: 0;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.oo-ui-searchWidget-query {
-  height: 4em;
-  padding: 0 1em;
-  box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.2);
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  margin: 0.75em 0;
-}
-.oo-ui-searchWidget-results {
-  top: 4em;
-  padding: 1em;
-  line-height: 0;
-}
-.oo-ui-window {
-  line-height: 1em;
-}
-.oo-ui-window-frame {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-window-frame > iframe {
-  width: 100%;
-  height: 100%;
-  margin: 0;
-  padding: 0;
-}
-.oo-ui-window-content:focus {
-  outline: none;
-}
-.oo-ui-window-head,
-.oo-ui-window-foot {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-window-body {
-  margin: 0;
-  padding: 0;
-  background: none;
-}
-.oo-ui-window-overlay {
-  position: absolute;
-  top: 0;
-  right: 0;
-}
-.oo-ui-window-isolated {
-  background-color: transparent;
-  background-image: none;
-  font-family: sans-serif;
-  font-size: 0.8em;
-}
-.oo-ui-dialog-content > .oo-ui-window-head,
-.oo-ui-dialog-content > .oo-ui-window-body,
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  position: absolute;
-  right: 0;
-  left: 0;
-  overflow: hidden;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-dialog-content > .oo-ui-window-head {
-  z-index: 1;
-  top: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-head.oo-ui-pendingElement-pending {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-.oo-ui-dialog-content > .oo-ui-window-body {
-  z-index: 2;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  z-index: 1;
-  bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-overlay {
-  z-index: 3;
-}
-.oo-ui-dialog-content > .oo-ui-window-body {
-  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
-}
-.oo-ui-messageDialog-actions-horizontal {
-  display: table;
-  table-layout: fixed;
-  width: 100%;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  display: table-cell;
-  width: 1%;
-}
-.oo-ui-messageDialog-actions-vertical {
-  display: block;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  display: block;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget {
-  position: relative;
-  text-align: center;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  display: block;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-  position: relative;
-  top: auto;
-  bottom: auto;
-  display: inline;
-  white-space: nowrap;
-}
-.oo-ui-messageDialog-content .oo-ui-window-body {
-  box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
-}
-.oo-ui-messageDialog-title,
-.oo-ui-messageDialog-message {
-  display: block;
-  text-align: center;
-  padding-top: 0.5em;
-}
-.oo-ui-messageDialog-title {
-  font-size: 1.5em;
-  line-height: 1em;
-  color: #000;
-}
-.oo-ui-messageDialog-message {
-  font-size: 0.9em;
-  line-height: 1.25em;
-  color: #666;
-}
-.oo-ui-messageDialog-message-verbose {
-  font-size: 1.1em;
-  line-height: 1.5em;
-  text-align: right;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  border-left: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-  border-left-width: 0;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  border-bottom: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-  border-bottom-width: 0;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-  text-align: center;
-  line-height: 3.4em;
-  padding: 0 2em;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-  font-weight: bold;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-.oo-ui-processDialog-location {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.oo-ui-processDialog-title {
-  display: inline;
-  padding: 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
-  white-space: nowrap;
-}
-.oo-ui-processDialog-actions-safe,
-.oo-ui-processDialog-actions-primary {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-processDialog-actions-safe {
-  right: 0;
-}
-.oo-ui-processDialog-actions-primary {
-  left: 0;
-}
-.oo-ui-processDialog-errors {
-  display: none;
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-  z-index: 2;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.oo-ui-processDialog-content .oo-ui-window-head {
-  height: 3.4em;
-}
-.oo-ui-processDialog-content .oo-ui-window-body {
-  top: 3.4em;
-  box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
-}
-.oo-ui-processDialog-navigation {
-  position: relative;
-  height: 3.4em;
-  padding: 0 1em;
-}
-.oo-ui-processDialog-location {
-  padding: 0.75em 0;
-  height: 1.9em;
-  cursor: default;
-  text-align: center;
-}
-.oo-ui-processDialog-title {
-  font-weight: bold;
-  line-height: 1.9em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  padding-top: 0.75em;
-  padding-bottom: 0.75em;
-  min-width: 1.9em;
-  min-height: 1.9em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labelElement-label {
-  line-height: 1.9em;
-  padding: 0 1em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconElement-icon {
-  position: absolute;
-  margin-top: -0.125em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed {
-  margin: 0.75em 0.75em 0.75em 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  padding: 0;
-  vertical-align: middle;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed {
-  margin: 0.75em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  /* Adjust for border so text aligns with title */
-  margin: -1px;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-  font-weight: bold;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  right: 0.5em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-  padding-right: 2.25em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  left: 0.5em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-  padding-left: 2.25em;
-}
-.oo-ui-processDialog > .oo-ui-window-frame {
-  min-height: 5em;
-}
-.oo-ui-processDialog-errors {
-  background-color: rgba(255, 255, 255, 0.9);
-  padding: 3em 3em 1.5em 3em;
-  text-align: center;
-}
-.oo-ui-processDialog-errors .oo-ui-buttonWidget {
-  margin: 2em 1em 2em 1em;
-}
-.oo-ui-processDialog-errors-title {
-  font-size: 1.5em;
-  color: #000;
-  margin-bottom: 2em;
-}
-.oo-ui-processDialog-error {
-  text-align: right;
-  margin: 1em;
-  padding: 1em;
-  border: solid 1px #ff9e9e;
-  background-color: #fff7f7;
-  border-radius: 0.25em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  position: fixed;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
-  width: auto;
-  height: auto;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  padding: 1em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
-  position: absolute;
-  left: 0;
-  right: 0;
-  margin: auto;
-  overflow: hidden;
-  max-width: 100%;
-  max-height: 100%;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame > iframe {
-  width: 100%;
-  height: 100%;
-}
-.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
-  width: 100%;
-  height: 100%;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  background-color: rgba(255, 255, 255, 0.5);
-  opacity: 0;
-  -webkit-transition: opacity 250ms ease-in-out;
-  -moz-transition: opacity 250ms ease-in-out;
-  -ms-transition: opacity 250ms ease-in-out;
-  -o-transition: opacity 250ms ease-in-out;
-  transition: opacity 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-  top: 1em;
-  bottom: 1em;
-  background-color: #fff;
-  -webkit-transform: scale(0.5);
-  -moz-transform: scale(0.5);
-  -ms-transform: scale(0.5);
-  -o-transform: scale(0.5);
-  transform: scale(0.5);
-  -webkit-transition: all 250ms ease-in-out;
-  -moz-transition: all 250ms ease-in-out;
-  -ms-transition: all 250ms ease-in-out;
-  -o-transition: all 250ms ease-in-out;
-  transition: all 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
-  opacity: 1;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
-  -webkit-transform: scale(1);
-  -moz-transform: scale(1);
-  -ms-transform: scale(1);
-  -o-transform: scale(1);
-  transform: scale(1);
-}
-.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
-  border: solid 1px #ccc;
-  border-radius: 0.5em;
-  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
-}
-
-.oo-ui-icon-add {
-  background-image: /* @embed */ url(themes/apex/images/icons/add.svg);
-}
-.oo-ui-icon-advanced {
-  background-image: /* @embed */ url(themes/apex/images/icons/advanced.svg);
-}
-.oo-ui-icon-alert {
-  background-image: /* @embed */ url(themes/apex/images/icons/alert.svg);
-}
-.oo-ui-icon-check {
-  background-image: /* @embed */ url(themes/apex/images/icons/check.svg);
-}
-.oo-ui-icon-clear {
-  background-image: /* @embed */ url(themes/apex/images/icons/clear.svg);
-}
-.oo-ui-icon-close {
-  background-image: /* @embed */ url(themes/apex/images/icons/close.svg);
-}
-.oo-ui-icon-code {
-  background-image: /* @embed */ url(themes/apex/images/icons/code.svg);
-}
-.oo-ui-icon-collapse {
-  background-image: /* @embed */ url(themes/apex/images/icons/collapse.svg);
-}
-.oo-ui-icon-comment {
-  background-image: /* @embed */ url(themes/apex/images/icons/comment.svg);
-}
-.oo-ui-icon-expand {
-  background-image: /* @embed */ url(themes/apex/images/icons/expand.svg);
-}
-.oo-ui-icon-help {
-  background-image: /* @embed */ url(themes/apex/images/icons/help.svg);
-}
-.oo-ui-icon-info {
-  background-image: /* @embed */ url(themes/apex/images/icons/info.svg);
-}
-.oo-ui-icon-link {
-  background-image: /* @embed */ url(themes/apex/images/icons/link.svg);
-}
-.oo-ui-icon-menu {
-  background-image: /* @embed */ url(themes/apex/images/icons/menu.svg);
-}
-.oo-ui-icon-next {
-  background-image: /* @embed */ url(themes/apex/images/icons/move-rtl.svg);
-}
-.oo-ui-icon-picture {
-  background-image: /* @embed */ url(themes/apex/images/icons/picture.svg);
-}
-.oo-ui-icon-previous {
-  background-image: /* @embed */ url(themes/apex/images/icons/move-ltr.svg);
-}
-.oo-ui-icon-redo {
-  background-image: /* @embed */ url(themes/apex/images/icons/arched-arrow-rtl.svg);
-}
-.oo-ui-icon-remove {
-  background-image: /* @embed */ url(themes/apex/images/icons/remove.svg);
-}
-.oo-ui-icon-search {
-  background-image: /* @embed */ url(themes/apex/images/icons/search.svg);
-}
-.oo-ui-icon-settings {
-  background-image: /* @embed */ url(themes/apex/images/icons/settings.svg);
-}
-.oo-ui-icon-tag {
-  background-image: /* @embed */ url(themes/apex/images/icons/tag.svg);
-}
-.oo-ui-icon-undo {
-  background-image: /* @embed */ url(themes/apex/images/icons/arched-arrow-ltr.svg);
-}
-.oo-ui-icon-window {
-  background-image: /* @embed */ url(themes/apex/images/icons/window.svg);
-}
-.oo-ui-indicator-alert {
-  background-image: /* @embed */ url(themes/apex/images/indicators/alert.svg);
-}
-.oo-ui-indicator-up {
-  background-image: /* @embed */ url(themes/apex/images/indicators/arrow-up.svg);
-}
-.oo-ui-indicator-down {
-  background-image: /* @embed */ url(themes/apex/images/indicators/arrow-down.svg);
-}
-.oo-ui-indicator-next {
-  background-image: /* @embed */ url(themes/apex/images/indicators/arrow-rtl.svg);
-}
-.oo-ui-indicator-previous {
-  background-image: /* @embed */ url(themes/apex/images/indicators/arrow-ltr.svg);
-}
-.oo-ui-indicator-required {
-  background-image: /* @embed */ url(themes/apex/images/indicators/required.svg);
-}
-.oo-ui-texture-pending {
-  background-image: /* @embed */ url(themes/apex/images/textures/pending.svg);
-}
-.oo-ui-texture-transparency {
-  background-image: /* @embed */ url(themes/apex/images/textures/transparency.svg);
-}
-@-webkit-keyframes oo-ui-animate-texture-pending {
-  from {
-    background-position: 100% 0%;
-  }
-  to {
-    background-position: 0% 0%;
-  }
-}
-@keyframes oo-ui-animate-pending {
-  from {
-    background-position: 100% 0%;
-  }
-  to {
-    background-position: 0% 0%;
-  }
-}
-.oo-ui-texture-pending {
-  background-position: 100% 0%;
-  -webkit-animation: oo-ui-animate-texture-pending 30s linear 0 infinite;
-  animation: oo-ui-animate-texture-pending 30s linear 0 infinite;
-}
index 48526fa..0132f4c 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (26dadbc60f)
+ * OOjs UI v0.1.0-pre (0d358b167a)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-10-06T16:03:50Z
+ * Date: 2014-10-17T23:41:15Z
  */
 /* @noflip */
 .oo-ui-rtl {
        z-index: 4;
 }
 .oo-ui-popupTool .oo-ui-popupWidget {
+       /* @noflip */
        margin-left: 1.25em;
        font-size: 0.8em;
 }
 }
 .oo-ui-toolbar-bar {
        border-bottom: solid 1px #cccccc;
+       background: #ffffff;
 }
 .oo-ui-toolbar-bar .oo-ui-toolbar-bar {
        border: none;
 }
 .oo-ui-popupWidget {
        position: absolute;
+       /* @noflip */
+       left: 0;
 }
 .oo-ui-popupWidget-popup {
        position: relative;
        display: block;
        position: absolute;
        top: 0;
+       /* @noflip */
+       left: 0;
        background-repeat: no-repeat;
 }
 .oo-ui-popupWidget-head {
        overflow-x: hidden;
        overflow-y: auto;
 }
+.oo-ui-searchWidget-query {
+       height: 2.4em;
+       top: 1px;
+}
+.oo-ui-searchWidget-query .oo-ui-textInputWidget input {
+       border-width: 1px 0;
+}
+.oo-ui-searchWidget-results {
+       top: 2.2em;
+       bottom: 0.2em;
+       line-height: 0;
+}
 .oo-ui-window {
        line-height: 1em;
 }
        padding: 0;
        background: none;
 }
-.oo-ui-window-overlay {
+.oo-ui-window-overlay,
+.oo-ui-window-inner-overlay {
        position: absolute;
        top: 0;
+       /* @noflip */
        left: 0;
 }
 .oo-ui-window-isolated,
        z-index: 1;
        bottom: 0;
 }
-.oo-ui-dialog-content > .oo-ui-window-overlay {
+.oo-ui-dialog-content > .oo-ui-window-inner-overlay {
        z-index: 3;
 }
 .oo-ui-dialog-content > .oo-ui-window-body {
index d485b23..1e536c8 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (26dadbc60f)
+ * OOjs UI v0.1.0-pre (0d358b167a)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-10-06T16:03:39Z
+ * Date: 2014-10-17T23:41:06Z
  */
 /**
  * @class
@@ -40,8 +40,8 @@ OO.ui.MediaWikiTheme.prototype.getElementClasses = function ( element ) {
                // Parent method
                classes = OO.ui.MediaWikiTheme.super.prototype.getElementClasses.call( this, element );
 
-       if ( element.isFramed && element.hasFlag ) {
-               if ( element.isFramed() ) {
+       if ( element.supports( [ 'isFramed', 'isDisabled', 'hasFlag' ] ) ) {
+               if ( element.isFramed() && !element.isDisabled() ) {
                        if (
                                element.hasFlag( 'primary' ) ||
                                element.hasFlag( 'constructive' ) ||
diff --git a/resources/lib/oojs-ui/oojs-ui-mediawiki.rtl.css b/resources/lib/oojs-ui/oojs-ui-mediawiki.rtl.css
deleted file mode 100644 (file)
index e2acb0f..0000000
+++ /dev/null
@@ -1,1997 +0,0 @@
-/*!
- * OOjs UI v0.1.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-09-24T23:21:42Z
- */
-/* @noflip */
-.oo-ui-rtl {
-  direction: rtl;
-}
-/* @noflip */
-.oo-ui-ltr {
-  direction: ltr;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button {
-  cursor: pointer;
-  display: inline-block;
-  vertical-align: middle;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  display: none;
-}
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-buttonElement-frameless {
-  display: inline-block;
-  position: relative;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  display: inline-block;
-  vertical-align: top;
-  text-align: center;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button {
-  font-weight: bold;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-right: 0;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  margin-left: -0.75em;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  width: 2.2em;
-  height: 2.2em;
-}
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  opacity: 0.2;
-}
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #ddd;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  margin-right: 0.25em;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #757575;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #444444;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-  color: #598ad1;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #777777;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-buttonElement-active > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #015ccc;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-  color: #00c697;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #777777;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #008c6d;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-  color: #e81915;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #777777;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #a7170f;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  margin: 0.1em 0;
-  padding: 0.3em 1.2em;
-  border-radius: 0.3em;
-  -webkit-transition: background 0.1s ease-in-out, color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
-  -moz-transition: background 0.1s ease-in-out, color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
-  -ms-transition: background 0.1s ease-in-out, color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
-  -o-transition: background 0.1s ease-in-out, color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
-  transition: background 0.1s ease-in-out, color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  line-height: 2.2em;
-}
-.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-right: -0.5em;
-  margin-left: -0.5em;
-}
-.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-right: -0.5em;
-  margin-left: 0.3em;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-  color: #ddd;
-  background: #fff;
-  border: solid 1px #cdcdcd;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
-  color: #757575;
-  background-color: #fff;
-  border: solid 1px #cdcdcd;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus {
-  box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2), 0 0.1em 0 0 rgba(0, 0, 0, 0.2);
-  border-color: #aaa;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  background-color: #d0d0d0;
-  border-color: #d0d0d0;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button {
-  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.2);
-  color: #fff;
-  background-color: #0274ff;
-  border-color: #0274ff;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button:focus {
-  box-shadow: inset 0 -0.2em 0 0 #015ccc, 0 0.1em 0 0 rgba(0, 0, 0, 0.1);
-  border-bottom-color: #015ccc;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  background-color: #015ccc;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button {
-  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.2);
-  color: #fff;
-  background-color: #00af89;
-  border-color: #00af89;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus {
-  box-shadow: inset 0 -0.2em 0 0 #008c6d, 0 0.1em 0 0 rgba(0, 0, 0, 0.1);
-  border-bottom-color: #008c6d;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  background-color: #008c6d;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button {
-  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.2);
-  color: #fff;
-  background-color: #d11d13;
-  border-color: #d11d13;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus {
-  box-shadow: inset 0 -0.2em 0 0 #a7170f, 0 0.1em 0 0 rgba(0, 0, 0, 0.1);
-  border-bottom-color: #a7170f;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  background-color: #a7170f;
-}
-.oo-ui-clippableElement-clippable {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
-  overflow-y: hidden;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  width: 100%;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
-  padding: 2em;
-}
-.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 3em;
-  overflow-y: auto;
-}
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  left: 0;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  padding: 1.5em;
-}
-.oo-ui-bookletLayout-outlinePanel {
-  border-left: solid 1px #ddd;
-}
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25);
-}
-.oo-ui-fieldLayout {
-  margin-bottom: 1em;
-}
-.oo-ui-fieldLayout:before,
-.oo-ui-fieldLayout:after {
-  content: " ";
-  display: table;
-}
-.oo-ui-fieldLayout:after {
-  clear: both;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  display: block;
-  float: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  display: block;
-  float: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  text-align: left;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-  display: inline-block;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-  z-index: 1;
-}
-.oo-ui-fieldLayout .oo-ui-fieldLayout-help {
-  float: left;
-}
-.oo-ui-fieldLayout .oo-ui-fieldLayout-help-content {
-  padding: 0.5em 0.75em;
-}
-.oo-ui-fieldLayout:last-child {
-  margin-bottom: 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  padding-top: 0.5em;
-  margin-left: 5%;
-  width: 35%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  width: 60%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-  padding: 0.75em 0.5em 0.5em 0.5em;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  padding: 0.5em 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-  padding: 0.5em 0;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-top: 0.25em;
-}
-.oo-ui-fieldLayout-disabled .oo-ui-labelElement-label {
-  color: #ccc;
-}
-.oo-ui-fieldsetLayout {
-  position: relative;
-  margin: 0;
-  padding: 0;
-  border: none;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-  display: block;
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
-  display: inline-block;
-}
-.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
-  margin-top: 2em;
-}
-.oo-ui-fieldsetLayout > .oo-ui-labelElement-label {
-  font-size: 1.5em;
-  margin-bottom: 0.5em;
-  padding: 0.25em 0;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label {
-  padding-right: 1.75em;
-  line-height: 1.33em;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-  right: 0;
-  top: 0.25em;
-  width: 2em;
-  height: 2em;
-}
-.oo-ui-gridLayout {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-}
-.oo-ui-panelLayout {
-  position: relative;
-}
-.oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-.oo-ui-panelLayout-expanded {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-}
-.oo-ui-panelLayout-padded {
-  padding: 1.25em;
-}
-.oo-ui-stackLayout > .oo-ui-panelLayout {
-  display: none;
-}
-.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-  display: block;
-  position: relative;
-}
-.oo-ui-popupTool .oo-ui-popupWidget-popup,
-.oo-ui-popupTool .oo-ui-popupWidget-anchor {
-  z-index: 4;
-}
-.oo-ui-popupTool .oo-ui-popupWidget {
-  margin-right: 1.25em;
-  font-size: 0.8em;
-}
-.oo-ui-toolGroup {
-  display: inline-block;
-  vertical-align: middle;
-  margin: 0.3em;
-}
-.oo-ui-toolGroup-empty {
-  display: none;
-}
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-toolGroup.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #000;
-}
-.oo-ui-barToolGroup > .oo-ui-iconElement-icon,
-.oo-ui-barToolGroup > .oo-ui-labelElement-label {
-  display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool {
-  display: inline-block;
-  position: relative;
-  vertical-align: top;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-barToolGroup .oo-ui-tool-title,
-.oo-ui-barToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
-  cursor: pointer;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  height: 1.5em;
-  padding: 0.25em;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  height: 1.5em;
-  width: 1.5em;
-  opacity: 0.8;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled {
-  background-color: #eee;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.8;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 1;
-}
-.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-popupToolGroup {
-  position: relative;
-  height: 2em;
-  min-width: 2.5em;
-}
-.oo-ui-popupToolGroup-handle {
-  display: block;
-  cursor: pointer;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-  cursor: default;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  display: none;
-  position: absolute;
-  z-index: 4;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconElement-icon {
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-  display: block;
-}
-.oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools {
-  right: 0;
-}
-.oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools {
-  left: 0;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
-  min-width: 3.5em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  top: 0;
-  width: 2em;
-  height: 2em;
-  opacity: 0.8;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  right: 0.25em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  line-height: 2.6em;
-  font-size: 0.8em;
-  margin: 0 1em;
-}
-.oo-ui-popupToolGroup-header {
-  line-height: 2.6em;
-  font-size: 0.8em;
-  margin: 0 0.6em;
-  font-weight: bold;
-}
-.oo-ui-popupToolGroup.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-right: 3em;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-left: 2.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  top: 2em;
-  background-color: white;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  height: 2em;
-  width: 2em;
-  margin-left: 0.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  line-height: 2em;
-  font-size: 0.8em;
-}
-.oo-ui-listToolGroup .oo-ui-tool {
-  display: inline-block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-listToolGroup .oo-ui-tool {
-  padding: 0 0.25em;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  padding-left: 0.5em;
-}
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
-  background-color: #eee;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #ccc;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-listToolGroup.oo-ui-widget-disabled {
-  color: #ccc;
-}
-.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
-.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em 0 0.25em 0;
-  border: 1px solid #aaa;
-  box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2), 0 0.1em 0 0 rgba(0, 0, 0, 0.2);
-}
-.oo-ui-menuToolGroup {
-  border: solid 1px #ccc;
-  border-radius: 0.1em;
-}
-.oo-ui-menuToolGroup .oo-ui-tool {
-  display: block;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-  min-width: 8em;
-}
-.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
-  margin-right: -1px;
-  padding: 0.25em 0 0.25em 0;
-  border: 1px solid #aaa;
-  box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2), 0 0.1em 0 0 rgba(0, 0, 0, 0.2);
-}
-.oo-ui-menuToolGroup.oo-ui-widget-enabled:hover {
-  border-color: #aaa;
-}
-.oo-ui-menuToolGroup.oo-ui-popupToolGroup-active {
-  border-color: #aaa;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  padding: 0 0.25em 0 1em;
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-image: none;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/check.svg);
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
-  background-color: #e1f3ff;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #ccc;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-menuToolGroup.oo-ui-widget-disabled {
-  color: #ccc;
-  border-color: #ccc;
-}
-.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
-.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-toolbar {
-  clear: both;
-}
-.oo-ui-toolbar-bar {
-  line-height: 1em;
-}
-.oo-ui-toolbar-actions {
-  float: left;
-}
-.oo-ui-toolbar-tools {
-  display: inline;
-}
-.oo-ui-toolbar-tools,
-.oo-ui-toolbar-actions,
-.oo-ui-toolbar-shadow {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-toolbar-actions .oo-ui-popupWidget {
-  -webkit-touch-callout: default;
-  -webkit-user-select: all;
-  -moz-user-select: all;
-  -ms-user-select: all;
-  user-select: all;
-}
-.oo-ui-toolbar-shadow {
-  background-position: right top;
-  background-repeat: repeat-x;
-  position: absolute;
-  width: 100%;
-  pointer-events: none;
-}
-.oo-ui-toolbar-bar {
-  border-bottom: solid 1px #ccc;
-}
-.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
-  border: none;
-  background: none;
-}
-.oo-ui-toolbar-shadow {
-  display: none;
-}
-.oo-ui-selectWidget {
-  border-radius: 0.3em;
-}
-.oo-ui-selectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  border-radius: 0;
-  margin-right: -1px;
-}
-.oo-ui-selectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonElement-button {
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-  margin-right: 0;
-}
-.oo-ui-selectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonElement-button {
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-.oo-ui-optionWidget {
-  position: relative;
-  display: block;
-  cursor: pointer;
-  padding: 0.5em 3em 0.5em 2em;
-  border: none;
-}
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-  display: block;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-}
-.oo-ui-optionWidget-highlighted {
-  background-color: #eee;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-  line-height: 1.5em;
-}
-.oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected {
-  background-color: #a7dcff;
-}
-.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed {
-  background-color: #a7dcff;
-}
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  color: #ccc;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  top: 50%;
-  width: 2em;
-  height: 2em;
-  margin-top: -1em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon {
-  right: 0.5em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  left: 0.5em;
-}
-.oo-ui-buttonSelectWidget {
-  display: inline-block;
-  white-space: nowrap;
-  border-radius: 0.3em;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  border-radius: 0;
-  margin-right: -1px;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonElement-button {
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-  margin-right: 0;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonElement-button {
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-.oo-ui-buttonOptionWidget {
-  display: inline-block;
-  padding: 0;
-  background-color: transparent;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  position: relative;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  position: static;
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  height: 2.2em;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  height: 2.2em;
-  margin-top: 0;
-}
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed,
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted {
-  background-color: transparent;
-}
-.oo-ui-labelWidget {
-  display: inline-block;
-}
-.oo-ui-iconWidget {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  line-height: 2.5em;
-  height: 2.2em;
-  width: 2.2em;
-}
-.oo-ui-iconWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-.oo-ui-indicatorWidget {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  line-height: 2.5em;
-  height: 2.2em;
-  width: 2.2em;
-}
-.oo-ui-indicatorWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-.oo-ui-buttonWidget {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonGroupWidget {
-  display: inline-block;
-  white-space: nowrap;
-  border-radius: 0.3em;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  border-radius: 0;
-  margin-bottom: -1px;
-  margin-right: -1px;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button {
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-  margin-right: 0;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button {
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-.oo-ui-toggleSwitchWidget {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle;
-  overflow: hidden;
-  cursor: pointer;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  -webkit-transform: translateZ(0px);
-  -moz-transform: translateZ(0px);
-  -ms-transform: translateZ(0px);
-  -o-transform: translateZ(0px);
-  transform: translateZ(0px);
-  height: 2em;
-  width: 4em;
-  border-radius: 1em;
-  border: 1px #ddd solid;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-.oo-ui-toggleSwitchWidget-grip {
-  position: absolute;
-  display: block;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: none;
-}
-.oo-ui-toggleSwitchWidget-grip {
-  top: 0.25em;
-  right: 0.25em;
-  width: 1.5em;
-  height: 1.5em;
-  margin-top: -1px;
-  border-radius: 1em;
-  border: 1px #ddd solid;
-  background-color: #f7f7f7;
-  -webkit-transition: right 0.1s ease-in-out, margin-right 0.1s ease-in-out;
-  -moz-transition: right 0.1s ease-in-out, margin-right 0.1s ease-in-out;
-  -ms-transition: right 0.1s ease-in-out, margin-right 0.1s ease-in-out;
-  -o-transition: right 0.1s ease-in-out, margin-right 0.1s ease-in-out;
-  transition: right 0.1s ease-in-out, margin-right 0.1s ease-in-out;
-}
-.oo-ui-toggleSwitchWidget-glow {
-  border-radius: 1em;
-  background-color: #f7f7f7;
-  -webkit-transition: background-color 0.1s ease-in-out;
-  -moz-transition: background-color 0.1s ease-in-out;
-  -ms-transition: background-color 0.1s ease-in-out;
-  -o-transition: background-color 0.1s ease-in-out;
-  transition: background-color 0.1s ease-in-out;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-  right: 2.25em;
-  margin-right: -2px;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: block;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-  right: 0.25em;
-  margin-right: 0;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled {
-  border: 1px #ccc solid;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover {
-  border-color: #aaa;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled .oo-ui-toggleSwitchWidget-grip {
-  background-color: #fff;
-  border-color: #aaa;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-glow {
-  background-color: #d0d0d0;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  background-color: #fff;
-}
-.oo-ui-actionWidget.oo-ui-pendingElement-pending {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-.oo-ui-popupWidget-popup {
-  position: absolute;
-  overflow: hidden;
-  z-index: 1;
-}
-.oo-ui-popupWidget-anchor {
-  display: none;
-  z-index: 1;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-  display: block;
-  position: absolute;
-  background-repeat: no-repeat;
-}
-.oo-ui-popupWidget-head {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  float: left;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-  float: right;
-  cursor: default;
-}
-.oo-ui-popupWidget-body {
-  clear: both;
-  overflow: hidden;
-}
-.oo-ui-popupWidget-popup {
-  border: solid 1px #aaa;
-  border-radius: 0.2em;
-  background-color: #fff;
-  box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2);
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
-  margin-top: 7px;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before,
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after {
-  content: "";
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-style: solid;
-  border-color: transparent;
-  border-top: 0;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before {
-  bottom: -8px;
-  right: 11px;
-  border-bottom-color: #888;
-  border-width: 13px;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after {
-  bottom: -8px;
-  right: 12px;
-  border-bottom-color: #fff;
-  border-width: 12px;
-}
-.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup {
-  -webkit-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  -moz-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  -ms-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  -o-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-}
-.oo-ui-popupWidget-head {
-  height: 2.5em;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  margin: 0.25em;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-  margin: 0.75em 1em;
-}
-.oo-ui-popupWidget-body {
-  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
-}
-.oo-ui-popupWidget-body-padded {
-  padding: 0 1em;
-}
-.oo-ui-popupButtonWidget {
-  position: relative;
-}
-.oo-ui-popupButtonWidget .oo-ui-popupWidget {
-  position: absolute;
-  right: 1em;
-  cursor: auto;
-}
-.oo-ui-popupButtonWidget > .oo-ui-popupWidget {
-  margin-right: -1em;
-}
-.oo-ui-textInputWidget {
-  position: relative;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  width: 20em;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  display: inline-block;
-  width: 100%;
-  resize: none;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending input,
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending textarea {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  top: 0;
-  height: 100%;
-  background-repeat: no-repeat;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon {
-  right: 0;
-}
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  padding: 0.5em 0.9em 0.5em 0.5em;
-  margin: 0;
-  font-size: 1em;
-  font-family: sans-serif;
-  background-color: #fff;
-  border: solid 1px #ccc;
-  box-shadow: inset 0 0 0 0 #0274FF;
-  border-radius: 0.1em;
-  -webkit-transition: box-shadow 0.1s;
-  -moz-transition: box-shadow 0.1s;
-  -ms-transition: box-shadow 0.1s;
-  -o-transition: box-shadow 0.1s;
-  transition: box-shadow 0.1s;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-textInputWidget-decorated input,
-.oo-ui-textInputWidget-decorated textarea {
-  padding-right: 2em;
-}
-.oo-ui-textInputWidget-icon {
-  width: 2em;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
-  outline: none;
-  border-color: #aaa;
-  box-shadow: inset 0.4em 0 0 0 #0274ff;
-}
-.oo-ui-textInputWidget input[readonly],
-.oo-ui-textInputWidget textarea[readonly] {
-  color: #777;
-  text-shadow: 0 1px 1px #fff;
-}
-.oo-ui-textInputWidget input[readonly]:focus,
-.oo-ui-textInputWidget textarea[readonly]:focus {
-  box-shadow: inset 0.4em 0 0 0 #ccc;
-}
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending input,
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending textarea {
-  background-color: transparent;
-}
-.oo-ui-textInputWidget.oo-ui-widget-disabled input,
-.oo-ui-textInputWidget.oo-ui-widget-disabled input:focus,
-.oo-ui-textInputWidget.oo-ui-widget-disabled textarea,
-.oo-ui-textInputWidget.oo-ui-widget-disabled textarea:focus {
-  color: #ccc;
-  text-shadow: 0 1px 1px #fff;
-  border-color: #ddd;
-  background-color: #f3f3f3;
-}
-.oo-ui-textInputWidget.oo-ui-iconElement input,
-.oo-ui-textInputWidget.oo-ui-iconElement textarea {
-  padding-right: 2.4em;
-}
-.oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  right: 0.4em;
-  width: 2em;
-  height: 100%;
-  background-position: left center;
-}
-.oo-ui-textInputWidget.oo-ui-indicatorElement input,
-.oo-ui-textInputWidget.oo-ui-indicatorElement textarea {
-  padding-left: 2.2em;
-}
-.oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  width: 1.6em;
-  height: 100%;
-  background-position: right center;
-}
-.oo-ui-menuWidget {
-  position: absolute;
-  background: #fff;
-  margin-top: -1px;
-  border: solid 1px #aaa;
-  border-radius: 0 0 0.1em 0.1em;
-  padding-bottom: 0.25em;
-  box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2), 0 0.1em 0 0 rgba(0, 0, 0, 0.2);
-}
-.oo-ui-menuWidget input {
-  position: absolute;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-  opacity: 0;
-}
-.oo-ui-menuItemWidget {
-  position: relative;
-}
-.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
-  display: block;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted,
-.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected {
-  background-color: #eee;
-}
-.oo-ui-menuSectionItemWidget {
-  cursor: default;
-  padding: 0.33em 0.75em;
-  color: #888;
-}
-.oo-ui-inlineMenuWidget {
-  position: relative;
-  display: inline-block;
-  margin: 0.25em 0;
-  min-width: 20em;
-}
-.oo-ui-inlineMenuWidget-handle {
-  width: 100%;
-  display: inline-block;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
-  z-index: 1;
-  width: 100%;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  cursor: default;
-}
-.oo-ui-inlineMenuWidget-handle {
-  height: 2.5em;
-  border: solid 1px #ccc;
-  border-radius: 0.1em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  right: 0.25em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  line-height: 2.5em;
-  margin: 0 1em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  top: 0;
-  width: 2.5em;
-  height: 2.5em;
-}
-.oo-ui-inlineMenuWidget:hover .oo-ui-inlineMenuWidget-handle {
-  border-color: #aaa;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  color: #ccc;
-  text-shadow: 0 1px 1px #fff;
-  border-color: #ddd;
-  background-color: #f3f3f3;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
-  opacity: 0.2;
-}
-.oo-ui-inlineMenuWidget.oo-ui-iconElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  margin-right: 3em;
-}
-.oo-ui-inlineMenuWidget.oo-ui-indicatorElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  margin-left: 2em;
-}
-.oo-ui-inlineMenuWidget .oo-ui-selectWidget {
-  border-top-color: #fff;
-}
-.oo-ui-outlineItemWidget {
-  position: relative;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  float: right;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-  float: right;
-  background-position: left center;
-  background-repeat: no-repeat;
-}
-.oo-ui-outlineControlsWidget-items {
-  float: right;
-}
-.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
-  float: right;
-}
-.oo-ui-outlineControlsWidget-movers {
-  float: left;
-}
-.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-  float: left;
-}
-.oo-ui-comboBoxWidget {
-  display: inline-block;
-  position: relative;
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget {
-  width: 100%;
-  z-index: 1;
-}
-.oo-ui-comboBoxWidget .oo-ui-textInputWidget input,
-.oo-ui-comboBoxWidget .oo-ui-textInputWidget textarea {
-  height: 2.35em;
-}
-.oo-ui-comboBoxWidget .oo-ui-textInputWidget.oo-ui-indicatorElement {
-  padding-left: 2.2em;
-}
-.oo-ui-comboBoxWidget .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  width: 2.2em;
-  background-position: center center;
-  border: solid 1px #ccc;
-  border-right: none;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-searchWidget-query {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  width: 100%;
-}
-.oo-ui-searchWidget-results {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  left: 0;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.oo-ui-window {
-  line-height: 1em;
-}
-.oo-ui-window-frame {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-window-frame > iframe {
-  width: 100%;
-  height: 100%;
-  margin: 0;
-  padding: 0;
-}
-.oo-ui-window-content:focus {
-  outline: none;
-}
-.oo-ui-window-head,
-.oo-ui-window-foot {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-window-body {
-  margin: 0;
-  padding: 0;
-  background: none;
-}
-.oo-ui-window-overlay {
-  position: absolute;
-  top: 0;
-  right: 0;
-}
-.oo-ui-window-isolated {
-  background: transparent;
-  font-family: sans-serif;
-  font-size: 0.8em;
-}
-.oo-ui-dialog-content > .oo-ui-window-head,
-.oo-ui-dialog-content > .oo-ui-window-body,
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  position: absolute;
-  right: 0;
-  left: 0;
-  overflow: hidden;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-dialog-content > .oo-ui-window-head {
-  z-index: 1;
-  top: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-head.oo-ui-pendingElement-pending {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-.oo-ui-dialog-content > .oo-ui-window-body {
-  z-index: 2;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  z-index: 1;
-  bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-overlay {
-  z-index: 3;
-}
-.oo-ui-dialog-content > .oo-ui-window-body {
-  box-shadow: 0 0 1px 0 #aaa;
-}
-.oo-ui-messageDialog-actions-horizontal {
-  display: table;
-  table-layout: fixed;
-  width: 100%;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  display: table-cell;
-  width: 1%;
-}
-.oo-ui-messageDialog-actions-vertical {
-  display: block;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  display: block;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget {
-  position: relative;
-  text-align: center;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  display: block;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-  position: relative;
-  top: auto;
-  bottom: auto;
-  display: inline;
-  white-space: nowrap;
-}
-.oo-ui-messageDialog-title,
-.oo-ui-messageDialog-message {
-  display: block;
-  text-align: center;
-  padding-top: 0.5em;
-}
-.oo-ui-messageDialog-title {
-  font-size: 1.5em;
-  line-height: 1em;
-  color: #000;
-}
-.oo-ui-messageDialog-message {
-  font-size: 0.9em;
-  line-height: 1.25em;
-  color: #666;
-}
-.oo-ui-messageDialog-message-verbose {
-  font-size: 1.1em;
-  line-height: 1.5em;
-  text-align: right;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  border-left: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-  border-left-width: 0;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  border-bottom: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-  border-bottom-width: 0;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-  text-align: center;
-  line-height: 3.4em;
-  padding: 0 2em;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-  font-weight: bold;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-.oo-ui-processDialog-location {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.oo-ui-processDialog-title {
-  display: inline;
-  padding: 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
-  white-space: nowrap;
-}
-.oo-ui-processDialog-actions-safe,
-.oo-ui-processDialog-actions-primary {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-processDialog-actions-safe {
-  right: 0;
-}
-.oo-ui-processDialog-actions-primary {
-  left: 0;
-}
-.oo-ui-processDialog-errors {
-  display: none;
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-  z-index: 2;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.oo-ui-processDialog-content .oo-ui-window-head {
-  height: 3.4em;
-}
-.oo-ui-processDialog-content .oo-ui-window-body {
-  top: 3.4em;
-  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
-}
-.oo-ui-processDialog-navigation {
-  position: relative;
-  height: 3.4em;
-  padding: 0 1em;
-}
-.oo-ui-processDialog-location {
-  padding: 0.75em 0;
-  height: 1.9em;
-  cursor: default;
-  text-align: center;
-}
-.oo-ui-processDialog-title {
-  font-weight: bold;
-  line-height: 1.9em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  padding-top: 0.75em;
-  padding-bottom: 0.75em;
-  min-width: 1.9em;
-  min-height: 1.9em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labelElement-label {
-  line-height: 1.9em;
-  padding: 0 1em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconElement-icon {
-  position: absolute;
-  margin-top: -0.125em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed {
-  margin: 0.75em 0.75em 0.75em 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  padding: 0;
-  vertical-align: middle;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed {
-  margin: 0.75em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  /* Adjust for border so text aligns with title */
-  margin: -1px;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-  font-weight: bold;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  right: 0.5em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-  padding-right: 2.25em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  left: 0.5em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-  padding-left: 2.25em;
-}
-.oo-ui-processDialog > .oo-ui-window-frame {
-  min-height: 5em;
-}
-.oo-ui-processDialog-errors {
-  background-color: rgba(255, 255, 255, 0.9);
-  padding: 3em 3em 1.5em 3em;
-  text-align: center;
-}
-.oo-ui-processDialog-errors .oo-ui-buttonWidget {
-  margin: 2em 1em 2em 1em;
-}
-.oo-ui-processDialog-errors-title {
-  font-size: 1.5em;
-  color: #000;
-  margin-bottom: 2em;
-}
-.oo-ui-processDialog-error {
-  text-align: right;
-  margin: 1em;
-  padding: 1em;
-  border: solid 1px #ff9e9e;
-  background-color: #fff7f7;
-  border-radius: 0.25em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  position: fixed;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
-  width: auto;
-  height: auto;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  padding: 1em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
-  position: absolute;
-  left: 0;
-  right: 0;
-  margin: auto;
-  overflow: hidden;
-  max-width: 100%;
-  max-height: 100%;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame > iframe {
-  width: 100%;
-  height: 100%;
-}
-.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
-  width: 100%;
-  height: 100%;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  background-color: rgba(255, 255, 255, 0.5);
-  opacity: 0;
-  -webkit-transition: opacity 250ms ease-in-out;
-  -moz-transition: opacity 250ms ease-in-out;
-  -ms-transition: opacity 250ms ease-in-out;
-  -o-transition: opacity 250ms ease-in-out;
-  transition: opacity 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-  top: 1em;
-  bottom: 1em;
-  background-color: #fff;
-  -webkit-transform: scale(0.5);
-  -moz-transform: scale(0.5);
-  -ms-transform: scale(0.5);
-  -o-transform: scale(0.5);
-  transform: scale(0.5);
-  -webkit-transition: all 250ms ease-in-out;
-  -moz-transition: all 250ms ease-in-out;
-  -ms-transition: all 250ms ease-in-out;
-  -o-transition: all 250ms ease-in-out;
-  transition: all 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
-  opacity: 1;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
-  -webkit-transform: scale(1);
-  -moz-transform: scale(1);
-  -ms-transform: scale(1);
-  -o-transform: scale(1);
-  transform: scale(1);
-}
-.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
-  border: solid 1px #aaa;
-  border-radius: 0.2em;
-  box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-icon-add {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/add.png);
-}
-.oo-ui-image-invert .oo-ui-icon-add,
-.oo-ui-image-invert.oo-ui-icon-add {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/add-invert.png);
-}
-.oo-ui-icon-advanced {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/advanced.png);
-}
-.oo-ui-image-invert .oo-ui-icon-advanced,
-.oo-ui-image-invert.oo-ui-icon-advanced {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/advanced-invert.png);
-}
-.oo-ui-icon-alert {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/alert.png);
-}
-.oo-ui-image-invert .oo-ui-icon-alert,
-.oo-ui-image-invert.oo-ui-icon-alert {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/alert-invert.png);
-}
-.oo-ui-icon-check {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/check.png);
-}
-.oo-ui-image-invert .oo-ui-icon-check,
-.oo-ui-image-invert.oo-ui-icon-check {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/check-invert.png);
-}
-.oo-ui-icon-clear {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/clear.png);
-}
-.oo-ui-image-invert .oo-ui-icon-clear,
-.oo-ui-image-invert.oo-ui-icon-clear {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/clear-invert.png);
-}
-.oo-ui-icon-close {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/close.png);
-}
-.oo-ui-image-invert .oo-ui-icon-close,
-.oo-ui-image-invert.oo-ui-icon-close {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/close-invert.png);
-}
-.oo-ui-icon-code {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/code.png);
-}
-.oo-ui-image-invert .oo-ui-icon-code,
-.oo-ui-image-invert.oo-ui-icon-code {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/code-invert.png);
-}
-.oo-ui-icon-collapse {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/collapse.png);
-}
-.oo-ui-image-invert .oo-ui-icon-collapse,
-.oo-ui-image-invert.oo-ui-icon-collapse {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/collapse-invert.png);
-}
-.oo-ui-icon-comment {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/comment.png);
-}
-.oo-ui-image-invert .oo-ui-icon-comment,
-.oo-ui-image-invert.oo-ui-icon-comment {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/comment-invert.png);
-}
-.oo-ui-icon-expand {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/expand.png);
-}
-.oo-ui-image-invert .oo-ui-icon-expand,
-.oo-ui-image-invert.oo-ui-icon-expand {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/expand-invert.png);
-}
-.oo-ui-icon-help {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/help.png);
-}
-.oo-ui-image-invert .oo-ui-icon-help,
-.oo-ui-image-invert.oo-ui-icon-help {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/help-invert.png);
-}
-.oo-ui-icon-info {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/info.png);
-}
-.oo-ui-image-invert .oo-ui-icon-info,
-.oo-ui-image-invert.oo-ui-icon-info {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/info-invert.png);
-}
-.oo-ui-icon-link {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/link.png);
-}
-.oo-ui-image-invert .oo-ui-icon-link,
-.oo-ui-image-invert.oo-ui-icon-link {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/link-invert.png);
-}
-.oo-ui-icon-menu {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/menu.png);
-}
-.oo-ui-image-invert .oo-ui-icon-menu,
-.oo-ui-image-invert.oo-ui-icon-menu {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/menu-invert.png);
-}
-.oo-ui-icon-next {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/move-rtl.png);
-}
-.oo-ui-image-invert .oo-ui-icon-next,
-.oo-ui-image-invert.oo-ui-icon-next {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/move-rtl-invert.png);
-}
-.oo-ui-icon-picture {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/picture.png);
-}
-.oo-ui-image-invert .oo-ui-icon-picture,
-.oo-ui-image-invert.oo-ui-icon-picture {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/picture-invert.png);
-}
-.oo-ui-icon-previous {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/move-ltr.png);
-}
-.oo-ui-image-invert .oo-ui-icon-previous,
-.oo-ui-image-invert.oo-ui-icon-previous {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/move-ltr-invert.png);
-}
-.oo-ui-icon-redo {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/arched-arrow-rtl.png);
-}
-.oo-ui-image-invert .oo-ui-icon-redo,
-.oo-ui-image-invert.oo-ui-icon-redo {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/arched-arrow-rtl-invert.png);
-}
-.oo-ui-icon-remove {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/remove.png);
-}
-.oo-ui-image-invert .oo-ui-icon-remove,
-.oo-ui-image-invert.oo-ui-icon-remove {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/remove-invert.png);
-}
-.oo-ui-icon-search {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/search.png);
-}
-.oo-ui-image-invert .oo-ui-icon-search,
-.oo-ui-image-invert.oo-ui-icon-search {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/search-invert.png);
-}
-.oo-ui-icon-settings {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/settings.png);
-}
-.oo-ui-image-invert .oo-ui-icon-settings,
-.oo-ui-image-invert.oo-ui-icon-settings {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/settings-invert.png);
-}
-.oo-ui-icon-tag {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/tag.png);
-}
-.oo-ui-image-invert .oo-ui-icon-tag,
-.oo-ui-image-invert.oo-ui-icon-tag {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/tag-invert.png);
-}
-.oo-ui-icon-undo {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/arched-arrow-ltr.png);
-}
-.oo-ui-image-invert .oo-ui-icon-undo,
-.oo-ui-image-invert.oo-ui-icon-undo {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/arched-arrow-ltr-invert.png);
-}
-.oo-ui-icon-window {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/window.png);
-}
-.oo-ui-image-invert .oo-ui-icon-window,
-.oo-ui-image-invert.oo-ui-icon-window {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/window-invert.png);
-}
-.oo-ui-indicator-alert {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/alert.png);
-}
-.oo-ui-image-invert .oo-ui-indicator-alert,
-.oo-ui-image-invert.oo-ui-indicator-alert {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/alert-invert.png);
-}
-.oo-ui-indicator-up {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-up.png);
-}
-.oo-ui-image-invert .oo-ui-indicator-up,
-.oo-ui-image-invert.oo-ui-indicator-up {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-up-invert.png);
-}
-.oo-ui-indicator-down {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-down.png);
-}
-.oo-ui-image-invert .oo-ui-indicator-down,
-.oo-ui-image-invert.oo-ui-indicator-down {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-down-invert.png);
-}
-.oo-ui-indicator-next {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-rtl.png);
-}
-.oo-ui-image-invert .oo-ui-indicator-next,
-.oo-ui-image-invert.oo-ui-indicator-next {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-rtl-invert.png);
-}
-.oo-ui-indicator-previous {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-ltr.png);
-}
-.oo-ui-image-invert .oo-ui-indicator-previous,
-.oo-ui-image-invert.oo-ui-indicator-previous {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-ltr-invert.png);
-}
-.oo-ui-indicator-required {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/required.png);
-}
-.oo-ui-image-invert .oo-ui-indicator-required,
-.oo-ui-image-invert.oo-ui-indicator-required {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/required-invert.png);
-}
-.oo-ui-texture-pending {
-  background-image: /* @embed */ url(themes/mediawiki/images/textures/pending.gif);
-}
-.oo-ui-texture-transparency {
-  background-image: /* @embed */ url(themes/mediawiki/images/textures/transparency.png);
-}
-.oo-ui-image-invert .oo-ui-texture-transparency,
-.oo-ui-image-invert.oo-ui-texture-transparency {
-  background-image: /* @embed */ url(themes/mediawiki/images/textures/transparency-invert.png);
-}
index 513c801..1725196 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (26dadbc60f)
+ * OOjs UI v0.1.0-pre (0d358b167a)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-10-06T16:03:50Z
+ * Date: 2014-10-17T23:41:15Z
  */
 /* @noflip */
 .oo-ui-rtl {
        z-index: 4;
 }
 .oo-ui-popupTool .oo-ui-popupWidget {
+       /* @noflip */
        margin-left: 1.25em;
        font-size: 0.8em;
 }
 }
 .oo-ui-toolbar-bar {
        border-bottom: solid 1px #cccccc;
+       background: #ffffff;
 }
 .oo-ui-toolbar-bar .oo-ui-toolbar-bar {
        border: none;
 }
 .oo-ui-popupWidget {
        position: absolute;
+       /* @noflip */
+       left: 0;
 }
 .oo-ui-popupWidget-popup {
        position: relative;
        display: block;
        position: absolute;
        top: 0;
+       /* @noflip */
+       left: 0;
        background-repeat: no-repeat;
 }
 .oo-ui-popupWidget-head {
        overflow-x: hidden;
        overflow-y: auto;
 }
+.oo-ui-searchWidget-query {
+       height: 2.4em;
+       top: 1px;
+}
+.oo-ui-searchWidget-query .oo-ui-textInputWidget input {
+       border-width: 1px 0;
+}
+.oo-ui-searchWidget-results {
+       top: 2.2em;
+       bottom: 0.2em;
+       line-height: 0;
+}
 .oo-ui-window {
        line-height: 1em;
 }
        padding: 0;
        background: none;
 }
-.oo-ui-window-overlay {
+.oo-ui-window-overlay,
+.oo-ui-window-inner-overlay {
        position: absolute;
        top: 0;
+       /* @noflip */
        left: 0;
 }
 .oo-ui-window-isolated,
        z-index: 1;
        bottom: 0;
 }
-.oo-ui-dialog-content > .oo-ui-window-overlay {
+.oo-ui-dialog-content > .oo-ui-window-inner-overlay {
        z-index: 3;
 }
 .oo-ui-dialog-content > .oo-ui-window-body {
diff --git a/resources/lib/oojs-ui/oojs-ui-mediawiki.svg.rtl.css b/resources/lib/oojs-ui/oojs-ui-mediawiki.svg.rtl.css
deleted file mode 100644 (file)
index 17d89ec..0000000
+++ /dev/null
@@ -1,1997 +0,0 @@
-/*!
- * OOjs UI v0.1.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-09-24T23:21:42Z
- */
-/* @noflip */
-.oo-ui-rtl {
-  direction: rtl;
-}
-/* @noflip */
-.oo-ui-ltr {
-  direction: ltr;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button {
-  cursor: pointer;
-  display: inline-block;
-  vertical-align: middle;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  display: none;
-}
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-buttonElement-frameless {
-  display: inline-block;
-  position: relative;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  display: inline-block;
-  vertical-align: top;
-  text-align: center;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button {
-  font-weight: bold;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-right: 0;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  margin-left: -0.75em;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  width: 2.2em;
-  height: 2.2em;
-}
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  opacity: 0.2;
-}
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #ddd;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  margin-right: 0.25em;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #757575;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #444444;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-  color: #598ad1;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #777777;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-buttonElement-active > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #015ccc;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-  color: #00c697;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #777777;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #008c6d;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-  color: #e81915;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #777777;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  color: #a7170f;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  margin: 0.1em 0;
-  padding: 0.3em 1.2em;
-  border-radius: 0.3em;
-  -webkit-transition: background 0.1s ease-in-out, color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
-  -moz-transition: background 0.1s ease-in-out, color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
-  -ms-transition: background 0.1s ease-in-out, color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
-  -o-transition: background 0.1s ease-in-out, color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
-  transition: background 0.1s ease-in-out, color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  line-height: 2.2em;
-}
-.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-right: -0.5em;
-  margin-left: -0.5em;
-}
-.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-right: -0.5em;
-  margin-left: 0.3em;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-  color: #ddd;
-  background: #fff;
-  border: solid 1px #cdcdcd;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
-  color: #757575;
-  background-color: #fff;
-  border: solid 1px #cdcdcd;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus {
-  box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2), 0 0.1em 0 0 rgba(0, 0, 0, 0.2);
-  border-color: #aaa;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  background-color: #d0d0d0;
-  border-color: #d0d0d0;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button {
-  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.2);
-  color: #fff;
-  background-color: #0274ff;
-  border-color: #0274ff;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button:focus {
-  box-shadow: inset 0 -0.2em 0 0 #015ccc, 0 0.1em 0 0 rgba(0, 0, 0, 0.1);
-  border-bottom-color: #015ccc;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  background-color: #015ccc;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button {
-  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.2);
-  color: #fff;
-  background-color: #00af89;
-  border-color: #00af89;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus {
-  box-shadow: inset 0 -0.2em 0 0 #008c6d, 0 0.1em 0 0 rgba(0, 0, 0, 0.1);
-  border-bottom-color: #008c6d;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  background-color: #008c6d;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button {
-  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.2);
-  color: #fff;
-  background-color: #d11d13;
-  border-color: #d11d13;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus {
-  box-shadow: inset 0 -0.2em 0 0 #a7170f, 0 0.1em 0 0 rgba(0, 0, 0, 0.1);
-  border-bottom-color: #a7170f;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  background-color: #a7170f;
-}
-.oo-ui-clippableElement-clippable {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
-  overflow-y: hidden;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  width: 100%;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
-  padding: 2em;
-}
-.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 3em;
-  overflow-y: auto;
-}
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  left: 0;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  padding: 1.5em;
-}
-.oo-ui-bookletLayout-outlinePanel {
-  border-left: solid 1px #ddd;
-}
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25);
-}
-.oo-ui-fieldLayout {
-  margin-bottom: 1em;
-}
-.oo-ui-fieldLayout:before,
-.oo-ui-fieldLayout:after {
-  content: " ";
-  display: table;
-}
-.oo-ui-fieldLayout:after {
-  clear: both;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  display: block;
-  float: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  display: block;
-  float: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  text-align: left;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-  display: inline-block;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-  z-index: 1;
-}
-.oo-ui-fieldLayout .oo-ui-fieldLayout-help {
-  float: left;
-}
-.oo-ui-fieldLayout .oo-ui-fieldLayout-help-content {
-  padding: 0.5em 0.75em;
-}
-.oo-ui-fieldLayout:last-child {
-  margin-bottom: 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  padding-top: 0.5em;
-  margin-left: 5%;
-  width: 35%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  width: 60%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-  padding: 0.75em 0.5em 0.5em 0.5em;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  padding: 0.5em 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-  padding: 0.5em 0;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-top: 0.25em;
-}
-.oo-ui-fieldLayout-disabled .oo-ui-labelElement-label {
-  color: #ccc;
-}
-.oo-ui-fieldsetLayout {
-  position: relative;
-  margin: 0;
-  padding: 0;
-  border: none;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-  display: block;
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
-  display: inline-block;
-}
-.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
-  margin-top: 2em;
-}
-.oo-ui-fieldsetLayout > .oo-ui-labelElement-label {
-  font-size: 1.5em;
-  margin-bottom: 0.5em;
-  padding: 0.25em 0;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label {
-  padding-right: 1.75em;
-  line-height: 1.33em;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-  right: 0;
-  top: 0.25em;
-  width: 2em;
-  height: 2em;
-}
-.oo-ui-gridLayout {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-}
-.oo-ui-panelLayout {
-  position: relative;
-}
-.oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-.oo-ui-panelLayout-expanded {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-}
-.oo-ui-panelLayout-padded {
-  padding: 1.25em;
-}
-.oo-ui-stackLayout > .oo-ui-panelLayout {
-  display: none;
-}
-.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-  display: block;
-  position: relative;
-}
-.oo-ui-popupTool .oo-ui-popupWidget-popup,
-.oo-ui-popupTool .oo-ui-popupWidget-anchor {
-  z-index: 4;
-}
-.oo-ui-popupTool .oo-ui-popupWidget {
-  margin-right: 1.25em;
-  font-size: 0.8em;
-}
-.oo-ui-toolGroup {
-  display: inline-block;
-  vertical-align: middle;
-  margin: 0.3em;
-}
-.oo-ui-toolGroup-empty {
-  display: none;
-}
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-toolGroup.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #000;
-}
-.oo-ui-barToolGroup > .oo-ui-iconElement-icon,
-.oo-ui-barToolGroup > .oo-ui-labelElement-label {
-  display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool {
-  display: inline-block;
-  position: relative;
-  vertical-align: top;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-barToolGroup .oo-ui-tool-title,
-.oo-ui-barToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
-  cursor: pointer;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  height: 1.5em;
-  padding: 0.25em;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  height: 1.5em;
-  width: 1.5em;
-  opacity: 0.8;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled {
-  background-color: #eee;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.8;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 1;
-}
-.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-popupToolGroup {
-  position: relative;
-  height: 2em;
-  min-width: 2.5em;
-}
-.oo-ui-popupToolGroup-handle {
-  display: block;
-  cursor: pointer;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-  cursor: default;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  display: none;
-  position: absolute;
-  z-index: 4;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconElement-icon {
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-  display: block;
-}
-.oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools {
-  right: 0;
-}
-.oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools {
-  left: 0;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
-  min-width: 3.5em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  top: 0;
-  width: 2em;
-  height: 2em;
-  opacity: 0.8;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  right: 0.25em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  line-height: 2.6em;
-  font-size: 0.8em;
-  margin: 0 1em;
-}
-.oo-ui-popupToolGroup-header {
-  line-height: 2.6em;
-  font-size: 0.8em;
-  margin: 0 0.6em;
-  font-weight: bold;
-}
-.oo-ui-popupToolGroup.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-right: 3em;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-left: 2.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  top: 2em;
-  background-color: white;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  height: 2em;
-  width: 2em;
-  margin-left: 0.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  line-height: 2em;
-  font-size: 0.8em;
-}
-.oo-ui-listToolGroup .oo-ui-tool {
-  display: inline-block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-listToolGroup .oo-ui-tool {
-  padding: 0 0.25em;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  padding-left: 0.5em;
-}
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
-  background-color: #eee;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #ccc;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-listToolGroup.oo-ui-widget-disabled {
-  color: #ccc;
-}
-.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
-.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em 0 0.25em 0;
-  border: 1px solid #aaa;
-  box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2), 0 0.1em 0 0 rgba(0, 0, 0, 0.2);
-}
-.oo-ui-menuToolGroup {
-  border: solid 1px #ccc;
-  border-radius: 0.1em;
-}
-.oo-ui-menuToolGroup .oo-ui-tool {
-  display: block;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-  min-width: 8em;
-}
-.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
-  margin-right: -1px;
-  padding: 0.25em 0 0.25em 0;
-  border: 1px solid #aaa;
-  box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2), 0 0.1em 0 0 rgba(0, 0, 0, 0.2);
-}
-.oo-ui-menuToolGroup.oo-ui-widget-enabled:hover {
-  border-color: #aaa;
-}
-.oo-ui-menuToolGroup.oo-ui-popupToolGroup-active {
-  border-color: #aaa;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  padding: 0 0.25em 0 1em;
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-image: none;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/check.svg);
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
-  background-color: #e1f3ff;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #ccc;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-menuToolGroup.oo-ui-widget-disabled {
-  color: #ccc;
-  border-color: #ccc;
-}
-.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
-.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon {
-  opacity: 0.2;
-}
-.oo-ui-toolbar {
-  clear: both;
-}
-.oo-ui-toolbar-bar {
-  line-height: 1em;
-}
-.oo-ui-toolbar-actions {
-  float: left;
-}
-.oo-ui-toolbar-tools {
-  display: inline;
-}
-.oo-ui-toolbar-tools,
-.oo-ui-toolbar-actions,
-.oo-ui-toolbar-shadow {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-toolbar-actions .oo-ui-popupWidget {
-  -webkit-touch-callout: default;
-  -webkit-user-select: all;
-  -moz-user-select: all;
-  -ms-user-select: all;
-  user-select: all;
-}
-.oo-ui-toolbar-shadow {
-  background-position: right top;
-  background-repeat: repeat-x;
-  position: absolute;
-  width: 100%;
-  pointer-events: none;
-}
-.oo-ui-toolbar-bar {
-  border-bottom: solid 1px #ccc;
-}
-.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
-  border: none;
-  background: none;
-}
-.oo-ui-toolbar-shadow {
-  display: none;
-}
-.oo-ui-selectWidget {
-  border-radius: 0.3em;
-}
-.oo-ui-selectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  border-radius: 0;
-  margin-right: -1px;
-}
-.oo-ui-selectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonElement-button {
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-  margin-right: 0;
-}
-.oo-ui-selectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonElement-button {
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-.oo-ui-optionWidget {
-  position: relative;
-  display: block;
-  cursor: pointer;
-  padding: 0.5em 3em 0.5em 2em;
-  border: none;
-}
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-  display: block;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-}
-.oo-ui-optionWidget-highlighted {
-  background-color: #eee;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-  line-height: 1.5em;
-}
-.oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected {
-  background-color: #a7dcff;
-}
-.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed {
-  background-color: #a7dcff;
-}
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  color: #ccc;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  top: 50%;
-  width: 2em;
-  height: 2em;
-  margin-top: -1em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon {
-  right: 0.5em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  left: 0.5em;
-}
-.oo-ui-buttonSelectWidget {
-  display: inline-block;
-  white-space: nowrap;
-  border-radius: 0.3em;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  border-radius: 0;
-  margin-right: -1px;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonElement-button {
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-  margin-right: 0;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonElement-button {
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-.oo-ui-buttonOptionWidget {
-  display: inline-block;
-  padding: 0;
-  background-color: transparent;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  position: relative;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  position: static;
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  height: 2.2em;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  height: 2.2em;
-  margin-top: 0;
-}
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed,
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted {
-  background-color: transparent;
-}
-.oo-ui-labelWidget {
-  display: inline-block;
-}
-.oo-ui-iconWidget {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  line-height: 2.5em;
-  height: 2.2em;
-  width: 2.2em;
-}
-.oo-ui-iconWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-.oo-ui-indicatorWidget {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  line-height: 2.5em;
-  height: 2.2em;
-  width: 2.2em;
-}
-.oo-ui-indicatorWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-.oo-ui-buttonWidget {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonGroupWidget {
-  display: inline-block;
-  white-space: nowrap;
-  border-radius: 0.3em;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  border-radius: 0;
-  margin-bottom: -1px;
-  margin-right: -1px;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button {
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-  margin-right: 0;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button {
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-.oo-ui-toggleSwitchWidget {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle;
-  overflow: hidden;
-  cursor: pointer;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  -webkit-transform: translateZ(0px);
-  -moz-transform: translateZ(0px);
-  -ms-transform: translateZ(0px);
-  -o-transform: translateZ(0px);
-  transform: translateZ(0px);
-  height: 2em;
-  width: 4em;
-  border-radius: 1em;
-  border: 1px #ddd solid;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-.oo-ui-toggleSwitchWidget-grip {
-  position: absolute;
-  display: block;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: none;
-}
-.oo-ui-toggleSwitchWidget-grip {
-  top: 0.25em;
-  right: 0.25em;
-  width: 1.5em;
-  height: 1.5em;
-  margin-top: -1px;
-  border-radius: 1em;
-  border: 1px #ddd solid;
-  background-color: #f7f7f7;
-  -webkit-transition: right 0.1s ease-in-out, margin-right 0.1s ease-in-out;
-  -moz-transition: right 0.1s ease-in-out, margin-right 0.1s ease-in-out;
-  -ms-transition: right 0.1s ease-in-out, margin-right 0.1s ease-in-out;
-  -o-transition: right 0.1s ease-in-out, margin-right 0.1s ease-in-out;
-  transition: right 0.1s ease-in-out, margin-right 0.1s ease-in-out;
-}
-.oo-ui-toggleSwitchWidget-glow {
-  border-radius: 1em;
-  background-color: #f7f7f7;
-  -webkit-transition: background-color 0.1s ease-in-out;
-  -moz-transition: background-color 0.1s ease-in-out;
-  -ms-transition: background-color 0.1s ease-in-out;
-  -o-transition: background-color 0.1s ease-in-out;
-  transition: background-color 0.1s ease-in-out;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-  right: 2.25em;
-  margin-right: -2px;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: block;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-  right: 0.25em;
-  margin-right: 0;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled {
-  border: 1px #ccc solid;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover {
-  border-color: #aaa;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled .oo-ui-toggleSwitchWidget-grip {
-  background-color: #fff;
-  border-color: #aaa;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-glow {
-  background-color: #d0d0d0;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  background-color: #fff;
-}
-.oo-ui-actionWidget.oo-ui-pendingElement-pending {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-.oo-ui-popupWidget-popup {
-  position: absolute;
-  overflow: hidden;
-  z-index: 1;
-}
-.oo-ui-popupWidget-anchor {
-  display: none;
-  z-index: 1;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-  display: block;
-  position: absolute;
-  background-repeat: no-repeat;
-}
-.oo-ui-popupWidget-head {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  float: left;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-  float: right;
-  cursor: default;
-}
-.oo-ui-popupWidget-body {
-  clear: both;
-  overflow: hidden;
-}
-.oo-ui-popupWidget-popup {
-  border: solid 1px #aaa;
-  border-radius: 0.2em;
-  background-color: #fff;
-  box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2);
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
-  margin-top: 7px;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before,
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after {
-  content: "";
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-style: solid;
-  border-color: transparent;
-  border-top: 0;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before {
-  bottom: -8px;
-  right: 11px;
-  border-bottom-color: #888;
-  border-width: 13px;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after {
-  bottom: -8px;
-  right: 12px;
-  border-bottom-color: #fff;
-  border-width: 12px;
-}
-.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup {
-  -webkit-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  -moz-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  -ms-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  -o-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-  transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-}
-.oo-ui-popupWidget-head {
-  height: 2.5em;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  margin: 0.25em;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-  margin: 0.75em 1em;
-}
-.oo-ui-popupWidget-body {
-  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
-}
-.oo-ui-popupWidget-body-padded {
-  padding: 0 1em;
-}
-.oo-ui-popupButtonWidget {
-  position: relative;
-}
-.oo-ui-popupButtonWidget .oo-ui-popupWidget {
-  position: absolute;
-  right: 1em;
-  cursor: auto;
-}
-.oo-ui-popupButtonWidget > .oo-ui-popupWidget {
-  margin-right: -1em;
-}
-.oo-ui-textInputWidget {
-  position: relative;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  width: 20em;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  display: inline-block;
-  width: 100%;
-  resize: none;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending input,
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending textarea {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  top: 0;
-  height: 100%;
-  background-repeat: no-repeat;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon {
-  right: 0;
-}
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  padding: 0.5em 0.9em 0.5em 0.5em;
-  margin: 0;
-  font-size: 1em;
-  font-family: sans-serif;
-  background-color: #fff;
-  border: solid 1px #ccc;
-  box-shadow: inset 0 0 0 0 #0274FF;
-  border-radius: 0.1em;
-  -webkit-transition: box-shadow 0.1s;
-  -moz-transition: box-shadow 0.1s;
-  -ms-transition: box-shadow 0.1s;
-  -o-transition: box-shadow 0.1s;
-  transition: box-shadow 0.1s;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-textInputWidget-decorated input,
-.oo-ui-textInputWidget-decorated textarea {
-  padding-right: 2em;
-}
-.oo-ui-textInputWidget-icon {
-  width: 2em;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
-  outline: none;
-  border-color: #aaa;
-  box-shadow: inset 0.4em 0 0 0 #0274ff;
-}
-.oo-ui-textInputWidget input[readonly],
-.oo-ui-textInputWidget textarea[readonly] {
-  color: #777;
-  text-shadow: 0 1px 1px #fff;
-}
-.oo-ui-textInputWidget input[readonly]:focus,
-.oo-ui-textInputWidget textarea[readonly]:focus {
-  box-shadow: inset 0.4em 0 0 0 #ccc;
-}
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending input,
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending textarea {
-  background-color: transparent;
-}
-.oo-ui-textInputWidget.oo-ui-widget-disabled input,
-.oo-ui-textInputWidget.oo-ui-widget-disabled input:focus,
-.oo-ui-textInputWidget.oo-ui-widget-disabled textarea,
-.oo-ui-textInputWidget.oo-ui-widget-disabled textarea:focus {
-  color: #ccc;
-  text-shadow: 0 1px 1px #fff;
-  border-color: #ddd;
-  background-color: #f3f3f3;
-}
-.oo-ui-textInputWidget.oo-ui-iconElement input,
-.oo-ui-textInputWidget.oo-ui-iconElement textarea {
-  padding-right: 2.4em;
-}
-.oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  right: 0.4em;
-  width: 2em;
-  height: 100%;
-  background-position: left center;
-}
-.oo-ui-textInputWidget.oo-ui-indicatorElement input,
-.oo-ui-textInputWidget.oo-ui-indicatorElement textarea {
-  padding-left: 2.2em;
-}
-.oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  width: 1.6em;
-  height: 100%;
-  background-position: right center;
-}
-.oo-ui-menuWidget {
-  position: absolute;
-  background: #fff;
-  margin-top: -1px;
-  border: solid 1px #aaa;
-  border-radius: 0 0 0.1em 0.1em;
-  padding-bottom: 0.25em;
-  box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2), 0 0.1em 0 0 rgba(0, 0, 0, 0.2);
-}
-.oo-ui-menuWidget input {
-  position: absolute;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-  opacity: 0;
-}
-.oo-ui-menuItemWidget {
-  position: relative;
-}
-.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
-  display: block;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted,
-.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected {
-  background-color: #eee;
-}
-.oo-ui-menuSectionItemWidget {
-  cursor: default;
-  padding: 0.33em 0.75em;
-  color: #888;
-}
-.oo-ui-inlineMenuWidget {
-  position: relative;
-  display: inline-block;
-  margin: 0.25em 0;
-  min-width: 20em;
-}
-.oo-ui-inlineMenuWidget-handle {
-  width: 100%;
-  display: inline-block;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
-  z-index: 1;
-  width: 100%;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  cursor: default;
-}
-.oo-ui-inlineMenuWidget-handle {
-  height: 2.5em;
-  border: solid 1px #ccc;
-  border-radius: 0.1em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  right: 0.25em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  line-height: 2.5em;
-  margin: 0 1em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  top: 0;
-  width: 2.5em;
-  height: 2.5em;
-}
-.oo-ui-inlineMenuWidget:hover .oo-ui-inlineMenuWidget-handle {
-  border-color: #aaa;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  color: #ccc;
-  text-shadow: 0 1px 1px #fff;
-  border-color: #ddd;
-  background-color: #f3f3f3;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
-  opacity: 0.2;
-}
-.oo-ui-inlineMenuWidget.oo-ui-iconElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  margin-right: 3em;
-}
-.oo-ui-inlineMenuWidget.oo-ui-indicatorElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  margin-left: 2em;
-}
-.oo-ui-inlineMenuWidget .oo-ui-selectWidget {
-  border-top-color: #fff;
-}
-.oo-ui-outlineItemWidget {
-  position: relative;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  float: right;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-  float: right;
-  background-position: left center;
-  background-repeat: no-repeat;
-}
-.oo-ui-outlineControlsWidget-items {
-  float: right;
-}
-.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
-  float: right;
-}
-.oo-ui-outlineControlsWidget-movers {
-  float: left;
-}
-.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-  float: left;
-}
-.oo-ui-comboBoxWidget {
-  display: inline-block;
-  position: relative;
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget {
-  width: 100%;
-  z-index: 1;
-}
-.oo-ui-comboBoxWidget .oo-ui-textInputWidget input,
-.oo-ui-comboBoxWidget .oo-ui-textInputWidget textarea {
-  height: 2.35em;
-}
-.oo-ui-comboBoxWidget .oo-ui-textInputWidget.oo-ui-indicatorElement {
-  padding-left: 2.2em;
-}
-.oo-ui-comboBoxWidget .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  width: 2.2em;
-  background-position: center center;
-  border: solid 1px #ccc;
-  border-right: none;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-searchWidget-query {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  width: 100%;
-}
-.oo-ui-searchWidget-results {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  left: 0;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.oo-ui-window {
-  line-height: 1em;
-}
-.oo-ui-window-frame {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-window-frame > iframe {
-  width: 100%;
-  height: 100%;
-  margin: 0;
-  padding: 0;
-}
-.oo-ui-window-content:focus {
-  outline: none;
-}
-.oo-ui-window-head,
-.oo-ui-window-foot {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-window-body {
-  margin: 0;
-  padding: 0;
-  background: none;
-}
-.oo-ui-window-overlay {
-  position: absolute;
-  top: 0;
-  right: 0;
-}
-.oo-ui-window-isolated {
-  background: transparent;
-  font-family: sans-serif;
-  font-size: 0.8em;
-}
-.oo-ui-dialog-content > .oo-ui-window-head,
-.oo-ui-dialog-content > .oo-ui-window-body,
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  position: absolute;
-  right: 0;
-  left: 0;
-  overflow: hidden;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-dialog-content > .oo-ui-window-head {
-  z-index: 1;
-  top: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-head.oo-ui-pendingElement-pending {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-.oo-ui-dialog-content > .oo-ui-window-body {
-  z-index: 2;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  z-index: 1;
-  bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-overlay {
-  z-index: 3;
-}
-.oo-ui-dialog-content > .oo-ui-window-body {
-  box-shadow: 0 0 1px 0 #aaa;
-}
-.oo-ui-messageDialog-actions-horizontal {
-  display: table;
-  table-layout: fixed;
-  width: 100%;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  display: table-cell;
-  width: 1%;
-}
-.oo-ui-messageDialog-actions-vertical {
-  display: block;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  display: block;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget {
-  position: relative;
-  text-align: center;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  display: block;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-  position: relative;
-  top: auto;
-  bottom: auto;
-  display: inline;
-  white-space: nowrap;
-}
-.oo-ui-messageDialog-title,
-.oo-ui-messageDialog-message {
-  display: block;
-  text-align: center;
-  padding-top: 0.5em;
-}
-.oo-ui-messageDialog-title {
-  font-size: 1.5em;
-  line-height: 1em;
-  color: #000;
-}
-.oo-ui-messageDialog-message {
-  font-size: 0.9em;
-  line-height: 1.25em;
-  color: #666;
-}
-.oo-ui-messageDialog-message-verbose {
-  font-size: 1.1em;
-  line-height: 1.5em;
-  text-align: right;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  border-left: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-  border-left-width: 0;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  border-bottom: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-  border-bottom-width: 0;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-  text-align: center;
-  line-height: 3.4em;
-  padding: 0 2em;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-  font-weight: bold;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-.oo-ui-processDialog-location {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.oo-ui-processDialog-title {
-  display: inline;
-  padding: 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
-  white-space: nowrap;
-}
-.oo-ui-processDialog-actions-safe,
-.oo-ui-processDialog-actions-primary {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-processDialog-actions-safe {
-  right: 0;
-}
-.oo-ui-processDialog-actions-primary {
-  left: 0;
-}
-.oo-ui-processDialog-errors {
-  display: none;
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-  z-index: 2;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.oo-ui-processDialog-content .oo-ui-window-head {
-  height: 3.4em;
-}
-.oo-ui-processDialog-content .oo-ui-window-body {
-  top: 3.4em;
-  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
-}
-.oo-ui-processDialog-navigation {
-  position: relative;
-  height: 3.4em;
-  padding: 0 1em;
-}
-.oo-ui-processDialog-location {
-  padding: 0.75em 0;
-  height: 1.9em;
-  cursor: default;
-  text-align: center;
-}
-.oo-ui-processDialog-title {
-  font-weight: bold;
-  line-height: 1.9em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  padding-top: 0.75em;
-  padding-bottom: 0.75em;
-  min-width: 1.9em;
-  min-height: 1.9em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labelElement-label {
-  line-height: 1.9em;
-  padding: 0 1em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconElement-icon {
-  position: absolute;
-  margin-top: -0.125em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed {
-  margin: 0.75em 0.75em 0.75em 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  padding: 0;
-  vertical-align: middle;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed {
-  margin: 0.75em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  /* Adjust for border so text aligns with title */
-  margin: -1px;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-  font-weight: bold;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  right: 0.5em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-  padding-right: 2.25em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  left: 0.5em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-  padding-left: 2.25em;
-}
-.oo-ui-processDialog > .oo-ui-window-frame {
-  min-height: 5em;
-}
-.oo-ui-processDialog-errors {
-  background-color: rgba(255, 255, 255, 0.9);
-  padding: 3em 3em 1.5em 3em;
-  text-align: center;
-}
-.oo-ui-processDialog-errors .oo-ui-buttonWidget {
-  margin: 2em 1em 2em 1em;
-}
-.oo-ui-processDialog-errors-title {
-  font-size: 1.5em;
-  color: #000;
-  margin-bottom: 2em;
-}
-.oo-ui-processDialog-error {
-  text-align: right;
-  margin: 1em;
-  padding: 1em;
-  border: solid 1px #ff9e9e;
-  background-color: #fff7f7;
-  border-radius: 0.25em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  position: fixed;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
-  width: auto;
-  height: auto;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  padding: 1em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
-  position: absolute;
-  left: 0;
-  right: 0;
-  margin: auto;
-  overflow: hidden;
-  max-width: 100%;
-  max-height: 100%;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame > iframe {
-  width: 100%;
-  height: 100%;
-}
-.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
-  width: 100%;
-  height: 100%;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  background-color: rgba(255, 255, 255, 0.5);
-  opacity: 0;
-  -webkit-transition: opacity 250ms ease-in-out;
-  -moz-transition: opacity 250ms ease-in-out;
-  -ms-transition: opacity 250ms ease-in-out;
-  -o-transition: opacity 250ms ease-in-out;
-  transition: opacity 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-  top: 1em;
-  bottom: 1em;
-  background-color: #fff;
-  -webkit-transform: scale(0.5);
-  -moz-transform: scale(0.5);
-  -ms-transform: scale(0.5);
-  -o-transform: scale(0.5);
-  transform: scale(0.5);
-  -webkit-transition: all 250ms ease-in-out;
-  -moz-transition: all 250ms ease-in-out;
-  -ms-transition: all 250ms ease-in-out;
-  -o-transition: all 250ms ease-in-out;
-  transition: all 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
-  opacity: 1;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
-  -webkit-transform: scale(1);
-  -moz-transform: scale(1);
-  -ms-transform: scale(1);
-  -o-transform: scale(1);
-  transform: scale(1);
-}
-.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
-  border: solid 1px #aaa;
-  border-radius: 0.2em;
-  box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-icon-add {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/add.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-add,
-.oo-ui-image-invert.oo-ui-icon-add {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/add-invert.svg);
-}
-.oo-ui-icon-advanced {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/advanced.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-advanced,
-.oo-ui-image-invert.oo-ui-icon-advanced {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/advanced-invert.svg);
-}
-.oo-ui-icon-alert {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/alert.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-alert,
-.oo-ui-image-invert.oo-ui-icon-alert {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/alert-invert.svg);
-}
-.oo-ui-icon-check {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/check.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-check,
-.oo-ui-image-invert.oo-ui-icon-check {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/check-invert.svg);
-}
-.oo-ui-icon-clear {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/clear.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-clear,
-.oo-ui-image-invert.oo-ui-icon-clear {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/clear-invert.svg);
-}
-.oo-ui-icon-close {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/close.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-close,
-.oo-ui-image-invert.oo-ui-icon-close {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/close-invert.svg);
-}
-.oo-ui-icon-code {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/code.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-code,
-.oo-ui-image-invert.oo-ui-icon-code {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/code-invert.svg);
-}
-.oo-ui-icon-collapse {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/collapse.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-collapse,
-.oo-ui-image-invert.oo-ui-icon-collapse {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/collapse-invert.svg);
-}
-.oo-ui-icon-comment {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/comment.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-comment,
-.oo-ui-image-invert.oo-ui-icon-comment {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/comment-invert.svg);
-}
-.oo-ui-icon-expand {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/expand.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-expand,
-.oo-ui-image-invert.oo-ui-icon-expand {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/expand-invert.svg);
-}
-.oo-ui-icon-help {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/help.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-help,
-.oo-ui-image-invert.oo-ui-icon-help {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/help-invert.svg);
-}
-.oo-ui-icon-info {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/info.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-info,
-.oo-ui-image-invert.oo-ui-icon-info {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/info-invert.svg);
-}
-.oo-ui-icon-link {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/link.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-link,
-.oo-ui-image-invert.oo-ui-icon-link {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/link-invert.svg);
-}
-.oo-ui-icon-menu {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/menu.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-menu,
-.oo-ui-image-invert.oo-ui-icon-menu {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/menu-invert.svg);
-}
-.oo-ui-icon-next {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/move-rtl.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-next,
-.oo-ui-image-invert.oo-ui-icon-next {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/move-rtl-invert.svg);
-}
-.oo-ui-icon-picture {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/picture.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-picture,
-.oo-ui-image-invert.oo-ui-icon-picture {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/picture-invert.svg);
-}
-.oo-ui-icon-previous {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/move-ltr.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-previous,
-.oo-ui-image-invert.oo-ui-icon-previous {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/move-ltr-invert.svg);
-}
-.oo-ui-icon-redo {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/arched-arrow-rtl.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-redo,
-.oo-ui-image-invert.oo-ui-icon-redo {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/arched-arrow-rtl-invert.svg);
-}
-.oo-ui-icon-remove {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/remove.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-remove,
-.oo-ui-image-invert.oo-ui-icon-remove {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/remove-invert.svg);
-}
-.oo-ui-icon-search {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/search.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-search,
-.oo-ui-image-invert.oo-ui-icon-search {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/search-invert.svg);
-}
-.oo-ui-icon-settings {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/settings.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-settings,
-.oo-ui-image-invert.oo-ui-icon-settings {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/settings-invert.svg);
-}
-.oo-ui-icon-tag {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/tag.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-tag,
-.oo-ui-image-invert.oo-ui-icon-tag {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/tag-invert.svg);
-}
-.oo-ui-icon-undo {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/arched-arrow-ltr.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-undo,
-.oo-ui-image-invert.oo-ui-icon-undo {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/arched-arrow-ltr-invert.svg);
-}
-.oo-ui-icon-window {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/window.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-window,
-.oo-ui-image-invert.oo-ui-icon-window {
-  background-image: /* @embed */ url(themes/mediawiki/images/icons/window-invert.svg);
-}
-.oo-ui-indicator-alert {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/alert.svg);
-}
-.oo-ui-image-invert .oo-ui-indicator-alert,
-.oo-ui-image-invert.oo-ui-indicator-alert {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/alert-invert.svg);
-}
-.oo-ui-indicator-up {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-up.svg);
-}
-.oo-ui-image-invert .oo-ui-indicator-up,
-.oo-ui-image-invert.oo-ui-indicator-up {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-up-invert.svg);
-}
-.oo-ui-indicator-down {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-down.svg);
-}
-.oo-ui-image-invert .oo-ui-indicator-down,
-.oo-ui-image-invert.oo-ui-indicator-down {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-down-invert.svg);
-}
-.oo-ui-indicator-next {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-rtl.svg);
-}
-.oo-ui-image-invert .oo-ui-indicator-next,
-.oo-ui-image-invert.oo-ui-indicator-next {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-rtl-invert.svg);
-}
-.oo-ui-indicator-previous {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-ltr.svg);
-}
-.oo-ui-image-invert .oo-ui-indicator-previous,
-.oo-ui-image-invert.oo-ui-indicator-previous {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/arrow-ltr-invert.svg);
-}
-.oo-ui-indicator-required {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/required.svg);
-}
-.oo-ui-image-invert .oo-ui-indicator-required,
-.oo-ui-image-invert.oo-ui-indicator-required {
-  background-image: /* @embed */ url(themes/mediawiki/images/indicators/required-invert.svg);
-}
-.oo-ui-texture-pending {
-  background-image: /* @embed */ url(themes/mediawiki/images/textures/pending.gif);
-}
-.oo-ui-texture-transparency {
-  background-image: /* @embed */ url(themes/mediawiki/images/textures/transparency.svg);
-}
-.oo-ui-image-invert .oo-ui-texture-transparency,
-.oo-ui-image-invert.oo-ui-texture-transparency {
-  background-image: /* @embed */ url(themes/mediawiki/images/textures/transparency-invert.svg);
-}
diff --git a/resources/lib/oojs-ui/oojs-ui-minerva.css b/resources/lib/oojs-ui/oojs-ui-minerva.css
deleted file mode 100644 (file)
index 73cdbab..0000000
+++ /dev/null
@@ -1,1374 +0,0 @@
-/*!
- * OOjs UI v0.1.0-pre (26dadbc60f)
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-10-06T16:03:50Z
- */
-/* @noflip */
-.oo-ui-rtl {
-       direction: rtl;
-}
-/* @noflip */
-.oo-ui-ltr {
-       direction: ltr;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button {
-       cursor: pointer;
-       display: inline-block;
-       vertical-align: middle;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       display: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       display: none;
-}
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-       cursor: default;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       display: inline-block;
-       vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
-}
-.oo-ui-buttonElement-frameless {
-       display: inline-block;
-       position: relative;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-       display: inline-block;
-       vertical-align: top;
-       text-align: center;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-       cursor: default;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       margin-left: 0;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       margin-right: -0.75em;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       width: 3.35em;
-       height: 3.35em;
-       background-size: 2em auto;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       margin-left: 0.25em;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       line-height: 1.9em;
-}
-.oo-ui-clippableElement-clippable {
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
-       overflow-y: hidden;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-       width: 100%;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
-       overflow-y: auto;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
-       padding: 2em;
-}
-.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 3em;
-       overflow-y: auto;
-}
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-       position: absolute;
-       bottom: 0;
-       left: 0;
-       right: 0;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-       padding: 0 0 1em;
-}
-.oo-ui-fieldLayout {
-       margin-bottom: 1em;
-}
-.oo-ui-fieldLayout:before,
-.oo-ui-fieldLayout:after {
-       content: " ";
-       display: table;
-}
-.oo-ui-fieldLayout:after {
-       clear: both;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-       display: block;
-       float: left;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-       display: block;
-       float: left;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-       text-align: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-       display: inline-block;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-       z-index: 1;
-}
-.oo-ui-fieldLayout .oo-ui-fieldLayout-help {
-       float: right;
-}
-.oo-ui-fieldLayout .oo-ui-fieldLayout-help-content {
-       padding: 0.5em 0.75em;
-}
-.oo-ui-fieldLayout:last-child {
-       margin-bottom: 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-       padding-top: 0.5em;
-       margin-right: 5%;
-       width: 35%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-       width: 60%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-       padding: 0.75em 0.5em 0.5em 0.5em;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-       padding: 0.5em 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-       padding: 0.5em 0;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       margin-top: 0.25em;
-}
-.oo-ui-fieldLayout-disabled .oo-ui-labelElement-label {
-       color: #cccccc;
-}
-.oo-ui-fieldsetLayout {
-       position: relative;
-       margin: 0;
-       padding: 0;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-       display: block;
-       position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
-}
-.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
-       display: inline-block;
-}
-.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
-       margin-top: 2em;
-}
-.oo-ui-fieldsetLayout > .oo-ui-labelElement-label {
-       margin-bottom: 0.5em;
-       padding: 0.25em 0;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label {
-       padding-left: 1.75em;
-       line-height: 1.33em;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-       left: 0;
-       top: 0.25em;
-       width: 2em;
-       height: 2em;
-}
-.oo-ui-gridLayout {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 0;
-}
-.oo-ui-panelLayout {
-       position: relative;
-       padding: 1em 3.35em;
-}
-.oo-ui-panelLayout-scrollable {
-       overflow-y: auto;
-}
-.oo-ui-panelLayout-expanded {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 0;
-}
-.oo-ui-stackLayout > .oo-ui-panelLayout {
-       display: none;
-}
-.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-       display: block;
-       position: relative;
-}
-.oo-ui-popupTool .oo-ui-popupWidget-popup,
-.oo-ui-popupTool .oo-ui-popupWidget-anchor {
-       z-index: 4;
-}
-.oo-ui-popupTool .oo-ui-popupWidget {
-       margin-left: 1.25em;
-       font-size: 0.8em;
-}
-.oo-ui-toolGroup {
-       display: inline-block;
-       vertical-align: middle;
-       margin: 0.3em;
-}
-.oo-ui-toolGroup-empty {
-       display: none;
-}
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       background-position: center center;
-       background-repeat: no-repeat;
-}
-.oo-ui-barToolGroup > .oo-ui-iconElement-icon,
-.oo-ui-barToolGroup > .oo-ui-labelElement-label {
-       display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool {
-       display: inline-block;
-       position: relative;
-       vertical-align: top;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-       display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-       display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-       cursor: default;
-}
-.oo-ui-barToolGroup .oo-ui-tool-title,
-.oo-ui-barToolGroup .oo-ui-tool-accel {
-       display: none;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
-       cursor: pointer;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-       height: 1.5em;
-       padding: 0.25em;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       height: 1.5em;
-       width: 1.5em;
-}
-.oo-ui-popupToolGroup {
-       position: relative;
-       height: 2em;
-       min-width: 2.5em;
-}
-.oo-ui-popupToolGroup-handle {
-       display: block;
-       cursor: pointer;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-       position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-       cursor: default;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-       display: none;
-       position: absolute;
-       z-index: 4;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconElement-icon {
-       background-repeat: no-repeat;
-       background-position: center center;
-}
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-       display: block;
-}
-.oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools {
-       left: 0;
-}
-.oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools {
-       right: 0;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-accel {
-       display: none;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
-       min-width: 3.5em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-       top: 0;
-       width: 2em;
-       height: 2em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
-       right: 0;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-       left: 0.25em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-       line-height: 2.6em;
-       font-size: 0.8em;
-       margin: 0 1em;
-}
-.oo-ui-popupToolGroup-header {
-       line-height: 2.6em;
-       font-size: 0.8em;
-       margin: 0 0.6em;
-       font-weight: bold;
-}
-.oo-ui-popupToolGroup.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-       margin-left: 3em;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-       margin-right: 2.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-       top: 2.3em;
-       margin: 0 -1px;
-       border: solid 1px #dddddd;
-       background-color: white;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       height: 2em;
-       width: 2em;
-       margin-right: 0.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-       line-height: 2em;
-       font-size: 0.8em;
-}
-.oo-ui-listToolGroup .oo-ui-tool {
-       display: inline-block;
-       width: 100%;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-       display: block;
-       cursor: pointer;
-       white-space: nowrap;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-       cursor: default;
-}
-.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
-       padding: 0.25em;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-       padding-right: 0.5em;
-}
-.oo-ui-menuToolGroup .oo-ui-tool {
-       display: block;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-       display: block;
-       cursor: pointer;
-       white-space: nowrap;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-       cursor: default;
-}
-.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-       min-width: 8em;
-}
-.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
-       padding: 0.25em 0 0.25em 0;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-       padding: 0 1em 0 0.25em;
-}
-.oo-ui-toolbar {
-       clear: both;
-}
-.oo-ui-toolbar-bar {
-       line-height: 1em;
-}
-.oo-ui-toolbar-actions {
-       float: right;
-}
-.oo-ui-toolbar-tools {
-       display: inline;
-}
-.oo-ui-toolbar-tools,
-.oo-ui-toolbar-actions,
-.oo-ui-toolbar-shadow {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-}
-.oo-ui-toolbar-actions .oo-ui-popupWidget {
-       -webkit-touch-callout: default;
-       -webkit-user-select: all;
-          -moz-user-select: all;
-           -ms-user-select: all;
-               user-select: all;
-}
-.oo-ui-toolbar-shadow {
-       background-position: left top;
-       background-repeat: repeat-x;
-       position: absolute;
-       width: 100%;
-       pointer-events: none;
-}
-.oo-ui-toolbar-bar {
-       border-bottom: solid 1px #dddddd;
-       background: white;
-}
-.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
-       border: none;
-       background: none;
-}
-.oo-ui-selectWidget {
-       margin: 0;
-       padding: 0;
-}
-.oo-ui-optionWidget {
-       position: relative;
-       display: block;
-       cursor: pointer;
-       padding: 0.8em 1em 0.8em 3.35em;
-       border: none;
-       font-weight: bold;
-}
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-       cursor: default;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-       display: block;
-       white-space: nowrap;
-       text-overflow: ellipsis;
-       overflow: hidden;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-       line-height: 1.5em;
-}
-.oo-ui-optionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-       padding-right: 1.5em;
-}
-.oo-ui-optionWidget-level-0 {
-       padding-left: 3.5em;
-}
-.oo-ui-optionWidget-level-0 .oo-ui-iconElement-icon {
-       left: 1em;
-}
-.oo-ui-optionWidget-level-1 {
-       padding-left: 5em;
-}
-.oo-ui-optionWidget-level-1 .oo-ui-iconElement-icon {
-       left: 2.5em;
-}
-.oo-ui-optionWidget-level-2 {
-       padding-left: 6.5em;
-}
-.oo-ui-optionWidget-level-2 .oo-ui-iconElement-icon {
-       left: 4em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-       position: absolute;
-       background-repeat: no-repeat;
-       background-position: center center;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-       top: 50%;
-       width: 2em;
-       height: 2em;
-       margin-top: -1em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon {
-       left: 0.5em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-       right: 0.5em;
-}
-.oo-ui-buttonSelectWidget {
-       display: inline-block;
-       white-space: nowrap;
-}
-.oo-ui-buttonOptionWidget {
-       display: inline-block;
-       padding: 0;
-       background-color: transparent;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-       position: relative;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       position: static;
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-       height: 1.9em;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       height: 1.9em;
-       margin-top: 0;
-}
-.oo-ui-labelWidget {
-       display: inline-block;
-       padding: 0.5em 0;
-}
-.oo-ui-iconWidget {
-       display: inline-block;
-       vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
-       line-height: 2.5em;
-       height: 1.9em;
-       width: 1.9em;
-       opacity: 0.8;
-}
-.oo-ui-iconWidget.oo-ui-widget-disabled {
-       opacity: 0.2;
-}
-.oo-ui-indicatorWidget {
-       display: inline-block;
-       vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
-       line-height: 2.5em;
-       height: 1.9em;
-       width: 1.9em;
-       opacity: 0.8;
-}
-.oo-ui-indicatorWidget.oo-ui-widget-disabled {
-       opacity: 0.2;
-}
-.oo-ui-buttonWidget {
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-buttonGroupWidget {
-       border-radius: 0.3em;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-       border-radius: 0;
-       margin-bottom: -1px;
-       margin-left: -1px;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button {
-       border-bottom-left-radius: 0.3em;
-       border-top-left-radius: 0.3em;
-       margin-left: 0;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button {
-       border-bottom-right-radius: 0.3em;
-       border-top-right-radius: 0.3em;
-}
-.oo-ui-toggleSwitchWidget {
-       position: relative;
-       display: inline-block;
-       vertical-align: middle;
-       overflow: hidden;
-       cursor: pointer;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-       -webkit-transform: translateZ(0px);
-          -moz-transform: translateZ(0px);
-           -ms-transform: translateZ(0px);
-            -o-transform: translateZ(0px);
-               transform: translateZ(0px);
-       height: 2em;
-       width: 4em;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-       cursor: default;
-}
-.oo-ui-toggleSwitchWidget-grip {
-       position: absolute;
-       display: block;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-       position: absolute;
-       top: 0;
-       bottom: 0;
-       right: 0;
-       left: 0;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-       display: none;
-}
-.oo-ui-toggleSwitchWidget-grip {
-       top: 0.25em;
-       left: 0.25em;
-       width: 1.5em;
-       height: 1.5em;
-       margin-top: -1px;
-       -webkit-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-          -moz-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-           -ms-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-            -o-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-               transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-}
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-       -webkit-transition: opacity 200ms ease-in-out;
-          -moz-transition: opacity 200ms ease-in-out;
-           -ms-transition: opacity 200ms ease-in-out;
-            -o-transition: opacity 200ms ease-in-out;
-               transition: opacity 200ms ease-in-out;
-}
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-       left: 2.25em;
-       margin-left: -2px;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-       left: 0.25em;
-       margin-left: 0;
-}
-.oo-ui-popupWidget {
-       position: absolute;
-}
-.oo-ui-popupWidget-popup {
-       position: relative;
-       overflow: hidden;
-       z-index: 1;
-}
-.oo-ui-popupWidget-anchor {
-       display: none;
-       z-index: 1;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-       display: block;
-       position: absolute;
-       top: 0;
-       background-repeat: no-repeat;
-}
-.oo-ui-popupWidget-head {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-       float: right;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-       float: left;
-       cursor: default;
-}
-.oo-ui-popupWidget-body {
-       clear: both;
-       overflow: hidden;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
-       margin-top: 7px;
-}
-.oo-ui-popupWidget-head {
-       height: 2.5em;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-       margin: 0.25em;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-       margin: 0.75em 1em;
-}
-.oo-ui-popupWidget-body-padded {
-       padding: 0 1em;
-}
-.oo-ui-popupButtonWidget {
-       position: relative;
-}
-.oo-ui-popupButtonWidget .oo-ui-popupWidget {
-       position: absolute;
-       cursor: auto;
-}
-.oo-ui-lookupInputWidget-menu {
-       background-color: #ffffff;
-}
-.oo-ui-textInputWidget {
-       position: relative;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-       display: inline-block;
-       width: 100%;
-       resize: none;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-       position: absolute;
-       top: 0;
-       height: 100%;
-       background-repeat: no-repeat;
-       cursor: pointer;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon {
-       left: 0;
-}
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-       right: 0;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-       padding: 0.8em 1em;
-}
-.oo-ui-menuWidget {
-       position: absolute;
-       background: white;
-       border: solid 1px #dddddd;
-}
-.oo-ui-menuWidget input {
-       position: absolute;
-       width: 0;
-       height: 0;
-       overflow: hidden;
-       opacity: 0;
-}
-.oo-ui-menuItemWidget {
-       position: relative;
-}
-.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
-       display: none;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-       background-color: transparent;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
-       display: block;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-       background: #347bff;
-       color: #ffffff;
-}
-.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
-       background-size: 24px auto;
-}
-.oo-ui-menuSectionItemWidget {
-       cursor: default;
-       font-weight: normal;
-       color: #777777;
-       border: none;
-}
-.oo-ui-inlineMenuWidget {
-       position: relative;
-       display: inline-block;
-       margin: 0.25em 0;
-       min-width: 20em;
-}
-.oo-ui-inlineMenuWidget-handle {
-       width: 100%;
-       display: inline-block;
-       cursor: pointer;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-       position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
-}
-.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
-       z-index: 1;
-       width: 100%;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-       cursor: default;
-}
-.oo-ui-inlineMenuWidget-handle {
-       height: 2.5em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-       top: 0;
-       width: 2.5em;
-       height: 2.5em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator {
-       right: 0;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-       left: 0.25em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-       line-height: 2.5em;
-       margin: 0 0.5em;
-}
-.oo-ui-inlineMenuWidget.oo-ui-iconElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-       margin-left: 3em;
-}
-.oo-ui-inlineMenuWidget.oo-ui-indicatorElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-       margin-right: 2em;
-}
-.oo-ui-outlineItemWidget {
-       position: relative;
-       cursor: pointer;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-       padding: 0.75em;
-}
-.oo-ui-outlineControlsWidget {
-       height: 3em;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-       float: left;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-       float: left;
-       background-position: right center;
-       background-repeat: no-repeat;
-}
-.oo-ui-outlineControlsWidget-items {
-       float: left;
-}
-.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
-       float: left;
-}
-.oo-ui-outlineControlsWidget-movers {
-       float: right;
-}
-.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-       float: right;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-       height: 2em;
-       margin: 0.5em;
-       padding: 0;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-       width: 1.5em;
-       height: 2em;
-       margin: 0.5em 0 0.5em 0.5em;
-}
-.oo-ui-outlineControlsWidget-items {
-       margin-left: 0;
-}
-.oo-ui-comboBoxWidget {
-       display: inline-block;
-       position: relative;
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget {
-       width: 100%;
-       z-index: 1;
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget {
-       min-width: 20em;
-}
-.oo-ui-searchWidget-query {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-       width: 100%;
-}
-.oo-ui-searchWidget-results {
-       position: absolute;
-       bottom: 0;
-       left: 0;
-       right: 0;
-       overflow-x: hidden;
-       overflow-y: auto;
-}
-.oo-ui-searchWidget-query {
-       height: 4em;
-       padding: 0 1em;
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-       margin: 0.75em 0;
-}
-.oo-ui-searchWidget-results {
-       top: 4em;
-       padding: 1em;
-       line-height: 0;
-}
-.oo-ui-window {
-       line-height: 1em;
-}
-.oo-ui-window-frame {
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-window-frame > iframe {
-       width: 100%;
-       height: 100%;
-       margin: 0;
-       padding: 0;
-}
-.oo-ui-window-content:focus {
-       outline: none;
-}
-.oo-ui-window-head,
-.oo-ui-window-foot {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-}
-.oo-ui-window-body {
-       margin: 0;
-       padding: 0;
-       background: none;
-}
-.oo-ui-window-overlay {
-       position: absolute;
-       top: 0;
-       left: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-head,
-.oo-ui-dialog-content > .oo-ui-window-body,
-.oo-ui-dialog-content > .oo-ui-window-foot {
-       position: absolute;
-       left: 0;
-       right: 0;
-       overflow: hidden;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-dialog-content > .oo-ui-window-head {
-       z-index: 1;
-       top: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-body {
-       z-index: 2;
-       top: 0;
-       bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-foot {
-       z-index: 1;
-       bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-overlay {
-       z-index: 3;
-}
-.oo-ui-messageDialog-actions-horizontal {
-       display: table;
-       table-layout: fixed;
-       width: 100%;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-       display: table-cell;
-       width: 1%;
-}
-.oo-ui-messageDialog-actions-vertical {
-       display: block;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-       display: block;
-       overflow: hidden;
-       text-overflow: ellipsis;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget {
-       position: relative;
-       text-align: center;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
-       display: block;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-       position: relative;
-       top: auto;
-       bottom: auto;
-       display: inline;
-       white-space: nowrap;
-}
-.oo-ui-messageDialog-title,
-.oo-ui-messageDialog-message {
-       display: block;
-       text-align: center;
-       padding-top: 0.5em;
-}
-.oo-ui-messageDialog-title {
-       font-size: 1.5em;
-       line-height: 1em;
-       color: #000000;
-}
-.oo-ui-messageDialog-message {
-       font-size: 0.9em;
-       line-height: 1.25em;
-       color: #666666;
-}
-.oo-ui-messageDialog-message-verbose {
-       font-size: 1.1em;
-       line-height: 1.5em;
-       text-align: left;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-       border-right: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-       border-right-width: 0;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-       border-bottom: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-       border-bottom-width: 0;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-       text-align: center;
-       line-height: 3.4em;
-       padding: 0 2em;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-       background-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
-       background-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
-       background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
-       background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-       font-weight: bold;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-       background-color: rgba(118, 171, 54, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-       background-color: rgba(118, 171, 54, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-       background-color: rgba(212, 83, 83, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
-       background-color: rgba(212, 83, 83, 0.1);
-}
-.oo-ui-processDialog-location {
-       overflow: hidden;
-       text-overflow: ellipsis;
-       white-space: nowrap;
-}
-.oo-ui-processDialog-title {
-       display: inline;
-       padding: 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
-       white-space: nowrap;
-}
-.oo-ui-processDialog-actions-safe,
-.oo-ui-processDialog-actions-primary {
-       position: absolute;
-       top: 0;
-       bottom: 0;
-}
-.oo-ui-processDialog-actions-safe {
-       left: 0;
-}
-.oo-ui-processDialog-actions-primary {
-       right: 0;
-}
-.oo-ui-processDialog-errors {
-       display: none;
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 0;
-       z-index: 2;
-       overflow-x: hidden;
-       overflow-y: auto;
-}
-.oo-ui-processDialog-content .oo-ui-window-head {
-       height: 3.35em;
-       border-bottom: 1px solid #dddddd;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-processDialog-content .oo-ui-window-body {
-       top: 3.35em;
-       padding: 2em 0;
-}
-.oo-ui-processDialog-navigation {
-       position: relative;
-       height: 3.35em;
-       padding: 0 1em;
-}
-.oo-ui-processDialog-location {
-       padding: 0.75em 0;
-       height: 1.85em;
-       cursor: default;
-       text-align: center;
-}
-.oo-ui-processDialog-title {
-       font-weight: bold;
-       line-height: 1.85em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonElement-button {
-       padding: 0.35em 0.75em;
-       min-width: 1.85em;
-       min-height: 1.85em;
-       border: 1px solid #dddddd;
-       border-radius: 4px;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labelElement-label {
-       line-height: 1.85em;
-       padding: 0 1em;
-       font-weight: bold;
-       color: #777777;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconElement-icon {
-       position: absolute;
-       margin-top: -0.125em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-       vertical-align: middle;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button {
-       border: 1px solid transparent;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label {
-       color: #d11d13;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button {
-       padding: 0.75em 0.35em;
-       border: none;
-       border-radius: 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-buttonElement-button {
-       background-color: #347bff;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-       color: #ffffff;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-       left: 0.5em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-       padding-left: 2.25em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-       right: 0.5em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-       padding-right: 2.25em;
-}
-.oo-ui-processDialog-actions-other {
-       position: absolute;
-       bottom: 1em;
-}
-.oo-ui-processDialog > .oo-ui-window-frame {
-       min-height: 5em;
-}
-.oo-ui-processDialog-errors {
-       background-color: rgba(255, 255, 255, 0.9);
-       padding: 3em 3em 1.5em 3em;
-       text-align: center;
-}
-.oo-ui-processDialog-errors .oo-ui-buttonWidget {
-       margin: 2em 1em 2em 1em;
-}
-.oo-ui-processDialog-errors-title {
-       font-size: 1.5em;
-       color: #000000;
-       margin-bottom: 2em;
-}
-.oo-ui-processDialog-error {
-       text-align: left;
-       margin: 1em;
-       padding: 1em;
-       border: solid 1px #ff9e9e;
-       background-color: #fff7f7;
-       border-radius: 0.25em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-       position: fixed;
-       width: 0;
-       height: 0;
-       overflow: hidden;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
-       width: auto;
-       height: auto;
-       top: 0;
-       right: 0;
-       bottom: 0;
-       left: 0;
-       padding: 1em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
-       position: absolute;
-       right: 0;
-       left: 0;
-       margin: auto;
-       overflow: hidden;
-       max-width: 100%;
-       max-height: 100%;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame > iframe {
-       width: 100%;
-       height: 100%;
-}
-.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
-       width: 100%;
-       height: 100%;
-       top: 0;
-       bottom: 0;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-       background-color: rgba(255, 255, 255, 0.5);
-       opacity: 0;
-       -webkit-transition: opacity 250ms ease-in-out;
-          -moz-transition: opacity 250ms ease-in-out;
-           -ms-transition: opacity 250ms ease-in-out;
-            -o-transition: opacity 250ms ease-in-out;
-               transition: opacity 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-       top: 0;
-       bottom: 0;
-       background-color: #ffffff;
-       -webkit-transform: translate3d(0, -200%, 0);
-          -moz-transform: translate3d(0, -200%, 0);
-           -ms-transform: translate3d(0, -200%, 0);
-            -o-transform: translate3d(0, -200%, 0);
-               transform: translate3d(0, -200%, 0);
-       -webkit-transition: transform 250ms ease-in-out;
-          -moz-transition: transform 250ms ease-in-out;
-           -ms-transition: transform 250ms ease-in-out;
-            -o-transition: transform 250ms ease-in-out;
-               transition: transform 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
-       opacity: 1;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
-       -webkit-transform: translate3d(0, 0, 0);
-          -moz-transform: translate3d(0, 0, 0);
-           -ms-transform: translate3d(0, 0, 0);
-            -o-transform: translate3d(0, 0, 0);
-               transform: translate3d(0, 0, 0);
-}
-.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
-       border: solid 1px #cccccc;
-       border-radius: 0.5em;
-       box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
-}
-
-.oo-ui-icon-check {
-       background-image: /* @embed */ url(themes/minerva/images/icons/check.png);
-}
-.oo-ui-image-invert .oo-ui-icon-check,
-.oo-ui-image-invert.oo-ui-icon-check {
-       background-image: /* @embed */ url(themes/minerva/images/icons/check-invert.png);
-}
diff --git a/resources/lib/oojs-ui/oojs-ui-minerva.js b/resources/lib/oojs-ui/oojs-ui-minerva.js
deleted file mode 100644 (file)
index 0f9701c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*!
- * OOjs UI v0.1.0-pre (26dadbc60f)
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-10-06T16:03:39Z
- */
-/* Instantiation */
-
-OO.ui.theme = new OO.ui.Theme();
diff --git a/resources/lib/oojs-ui/oojs-ui-minerva.rtl.css b/resources/lib/oojs-ui/oojs-ui-minerva.rtl.css
deleted file mode 100644 (file)
index e452952..0000000
+++ /dev/null
@@ -1,1381 +0,0 @@
-/*!
- * OOjs UI v0.1.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-09-11T19:39:50Z
- */
-/*
- * Blank theme mixins.
- *
- * Base styles invoke these mixins at the end of their definitions. Override these mixins to add
- * additional rules to the base styles.
- */
-/*
- * Base styles.
- *
- * Themes should include this file after defining their variables and mixins.
- */
-/* @noflip */
-.oo-ui-rtl {
-  direction: rtl;
-}
-/* @noflip */
-.oo-ui-ltr {
-  direction: ltr;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button {
-  cursor: pointer;
-  display: inline-block;
-  vertical-align: middle;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  display: none;
-}
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-buttonElement-frameless {
-  display: inline-block;
-  position: relative;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  display: inline-block;
-  vertical-align: top;
-  text-align: center;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-right: 0;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  margin-left: -0.75em;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  width: 3.35em;
-  height: 3.35em;
-  background-size: 2em auto;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  margin-right: 0.25em;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  line-height: 1.9em;
-}
-.oo-ui-clippableElement-clippable {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
-  overflow-y: hidden;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  width: 100%;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
-  padding: 2em;
-}
-.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 3em;
-  overflow-y: auto;
-}
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  left: 0;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  padding: 0 0 1em;
-}
-.oo-ui-fieldLayout {
-  margin-bottom: 1em;
-}
-.oo-ui-fieldLayout:before,
-.oo-ui-fieldLayout:after {
-  content: " ";
-  display: table;
-}
-.oo-ui-fieldLayout:after {
-  clear: both;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  display: block;
-  float: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  display: block;
-  float: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  text-align: left;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-  display: inline-block;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-  z-index: 1;
-}
-.oo-ui-fieldLayout:last-child {
-  margin-bottom: 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  padding-top: 0.5em;
-  margin-left: 5%;
-  width: 35%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  width: 60%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-  padding: 0.75em 0.5em 0.5em 0.5em;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  padding: 0.5em 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-  padding: 0.5em 0;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-top: 0.25em;
-}
-.oo-ui-fieldLayout-disabled .oo-ui-labelElement-label {
-  color: #ccc;
-}
-.oo-ui-fieldsetLayout {
-  position: relative;
-  margin: 0;
-  padding: 0;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-  display: block;
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
-  display: inline-block;
-}
-.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
-  margin-top: 2em;
-}
-.oo-ui-fieldsetLayout > .oo-ui-labelElement-label {
-  margin-bottom: 0.5em;
-  padding: 0.25em 0;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label {
-  padding-right: 1.75em;
-  line-height: 1.33em;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-  right: 0;
-  top: 0.25em;
-  width: 2em;
-  height: 2em;
-}
-.oo-ui-gridLayout {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-}
-.oo-ui-panelLayout {
-  position: relative;
-  padding: 1em 3.35em;
-}
-.oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-.oo-ui-panelLayout-expanded {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-}
-.oo-ui-stackLayout > .oo-ui-panelLayout {
-  display: none;
-}
-.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-  display: block;
-  position: relative;
-}
-.oo-ui-popupTool .oo-ui-popupWidget-popup,
-.oo-ui-popupTool .oo-ui-popupWidget-anchor {
-  z-index: 4;
-}
-.oo-ui-popupTool .oo-ui-popupWidget {
-  margin-right: 1.25em;
-  font-size: 0.8em;
-}
-.oo-ui-toolGroup {
-  display: inline-block;
-  vertical-align: middle;
-  margin: 0.3em;
-}
-.oo-ui-toolGroup-empty {
-  display: none;
-}
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-barToolGroup > .oo-ui-iconElement-icon,
-.oo-ui-barToolGroup > .oo-ui-labelElement-label {
-  display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool {
-  display: inline-block;
-  position: relative;
-  vertical-align: top;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-barToolGroup .oo-ui-tool-title,
-.oo-ui-barToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
-  cursor: pointer;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  height: 1.5em;
-  padding: 0.25em;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  height: 1.5em;
-  width: 1.5em;
-}
-.oo-ui-popupToolGroup {
-  position: relative;
-  height: 2em;
-  min-width: 2.5em;
-}
-.oo-ui-popupToolGroup-handle {
-  display: block;
-  cursor: pointer;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-  cursor: default;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  display: none;
-  position: absolute;
-  z-index: 4;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconElement-icon {
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-  display: block;
-}
-.oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools {
-  right: 0;
-}
-.oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools {
-  left: 0;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
-  min-width: 3.5em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  top: 0;
-  width: 2em;
-  height: 2em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  right: 0.25em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  line-height: 2.6em;
-  font-size: 0.8em;
-  margin: 0 1em;
-}
-.oo-ui-popupToolGroup-header {
-  line-height: 2.6em;
-  font-size: 0.8em;
-  margin: 0 0.6em;
-  font-weight: bold;
-}
-.oo-ui-popupToolGroup.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-right: 3em;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-left: 2.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  top: 2.3em;
-  margin: 0 -1px;
-  border: solid 1px #dddddd;
-  background-color: white;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  height: 2em;
-  width: 2em;
-  margin-left: 0.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  line-height: 2em;
-  font-size: 0.8em;
-}
-.oo-ui-listToolGroup .oo-ui-tool {
-  display: inline-block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  padding-left: 0.5em;
-}
-.oo-ui-menuToolGroup .oo-ui-tool {
-  display: block;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-image: none;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-image: /* @embed */ url(images/icons/check.svg);
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-  min-width: 8em;
-}
-.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em 0 0.25em 0;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  padding: 0 0.25em 0 1em;
-}
-.oo-ui-toolbar {
-  clear: both;
-}
-.oo-ui-toolbar-bar {
-  line-height: 1em;
-}
-.oo-ui-toolbar-actions {
-  float: left;
-}
-.oo-ui-toolbar-tools {
-  display: inline;
-}
-.oo-ui-toolbar-tools,
-.oo-ui-toolbar-actions,
-.oo-ui-toolbar-shadow {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-toolbar-actions .oo-ui-popupWidget {
-  -webkit-touch-callout: default;
-  -webkit-user-select: all;
-  -moz-user-select: all;
-  -ms-user-select: all;
-  user-select: all;
-}
-.oo-ui-toolbar-shadow {
-  background-position: right top;
-  background-repeat: repeat-x;
-  position: absolute;
-  width: 100%;
-  pointer-events: none;
-}
-.oo-ui-toolbar-bar {
-  border-bottom: solid 1px #dddddd;
-  background: white;
-}
-.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
-  border: none;
-  background: none;
-}
-.oo-ui-selectWidget {
-  margin: 0;
-  padding: 0;
-}
-.oo-ui-optionWidget {
-  position: relative;
-  display: block;
-  cursor: pointer;
-  padding: 0.8em 3.35em 0.8em 1em;
-  border: none;
-  font-weight: bold;
-}
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-  display: block;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-  line-height: 1.5em;
-}
-.oo-ui-optionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-  padding-left: 1.5em;
-}
-.oo-ui-optionWidget-level-0 {
-  padding-right: 3.5em;
-}
-.oo-ui-optionWidget-level-0 .oo-ui-iconElement-icon {
-  right: 1em;
-}
-.oo-ui-optionWidget-level-1 {
-  padding-right: 5em;
-}
-.oo-ui-optionWidget-level-1 .oo-ui-iconElement-icon {
-  right: 2.5em;
-}
-.oo-ui-optionWidget-level-2 {
-  padding-right: 6.5em;
-}
-.oo-ui-optionWidget-level-2 .oo-ui-iconElement-icon {
-  right: 4em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  top: 50%;
-  width: 2em;
-  height: 2em;
-  margin-top: -1em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon {
-  right: 0.5em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  left: 0.5em;
-}
-.oo-ui-buttonSelectWidget {
-  display: inline-block;
-  white-space: nowrap;
-}
-.oo-ui-buttonOptionWidget {
-  display: inline-block;
-  padding: 0;
-  background-color: transparent;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  position: relative;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  position: static;
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  height: 1.9em;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  height: 1.9em;
-  margin-top: 0;
-}
-.oo-ui-labelWidget {
-  display: inline-block;
-  padding: 0.5em 0;
-}
-.oo-ui-iconWidget {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  line-height: 2.5em;
-  height: 1.9em;
-  width: 1.9em;
-  opacity: 0.8;
-}
-.oo-ui-iconWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-.oo-ui-indicatorWidget {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  line-height: 2.5em;
-  height: 1.9em;
-  width: 1.9em;
-  opacity: 0.8;
-}
-.oo-ui-indicatorWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-.oo-ui-buttonWidget {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonGroupWidget {
-  border-radius: 0.3em;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  border-radius: 0;
-  margin-bottom: -1px;
-  margin-right: -1px;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button {
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-  margin-right: 0;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button {
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-.oo-ui-toggleSwitchWidget {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle;
-  overflow: hidden;
-  cursor: pointer;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  -webkit-transform: translateZ(0px);
-  -moz-transform: translateZ(0px);
-  -ms-transform: translateZ(0px);
-  -o-transform: translateZ(0px);
-  transform: translateZ(0px);
-  height: 2em;
-  width: 4em;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-.oo-ui-toggleSwitchWidget-grip {
-  position: absolute;
-  display: block;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: none;
-}
-.oo-ui-toggleSwitchWidget-grip {
-  top: 0.25em;
-  right: 0.25em;
-  width: 1.5em;
-  height: 1.5em;
-  margin-top: -1px;
-  -webkit-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  -moz-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  -ms-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  -o-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-}
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  -webkit-transition: opacity 200ms ease-in-out;
-  -moz-transition: opacity 200ms ease-in-out;
-  -ms-transition: opacity 200ms ease-in-out;
-  -o-transition: opacity 200ms ease-in-out;
-  transition: opacity 200ms ease-in-out;
-}
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-  right: 2.25em;
-  margin-right: -2px;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-  right: 0.25em;
-  margin-right: 0;
-}
-.oo-ui-popupWidget-popup {
-  position: absolute;
-  overflow: hidden;
-  z-index: 1;
-}
-.oo-ui-popupWidget-anchor {
-  display: none;
-  z-index: 1;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-  display: block;
-  position: absolute;
-  background-repeat: no-repeat;
-}
-.oo-ui-popupWidget-head {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  float: left;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-  float: right;
-  cursor: default;
-}
-.oo-ui-popupWidget-body {
-  clear: both;
-  overflow: hidden;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
-  margin-top: 7px;
-}
-.oo-ui-popupWidget-head {
-  height: 2.5em;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  margin: 0.25em;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-  margin: 0.75em 1em;
-}
-.oo-ui-popupWidget-body-padded {
-  padding: 0 1em;
-}
-.oo-ui-popupButtonWidget {
-  position: relative;
-}
-.oo-ui-popupButtonWidget .oo-ui-popupWidget {
-  position: absolute;
-  right: 1em;
-  cursor: auto;
-}
-.oo-ui-lookupInputWidget-menu {
-  background-color: #fff;
-}
-.oo-ui-textInputWidget {
-  position: relative;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  display: inline-block;
-  width: 100%;
-  resize: none;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  top: 0;
-  height: 100%;
-  background-repeat: no-repeat;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon {
-  right: 0;
-}
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  padding: .8em 1em;
-}
-.oo-ui-menuWidget {
-  position: absolute;
-  background: white;
-  border: solid 1px #dddddd;
-}
-.oo-ui-menuWidget input {
-  position: absolute;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-  opacity: 0;
-}
-.oo-ui-menuItemWidget {
-  position: relative;
-}
-.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
-  display: block;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background: #347bff;
-  color: #ffffff;
-}
-.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
-  background-size: 24px auto;
-}
-.oo-ui-menuSectionItemWidget {
-  cursor: default;
-  font-weight: normal;
-  color: #777777;
-  border: none;
-}
-.oo-ui-inlineMenuWidget {
-  position: relative;
-  display: inline-block;
-  margin: 0.25em 0;
-  min-width: 20em;
-}
-.oo-ui-inlineMenuWidget-handle {
-  width: 100%;
-  display: inline-block;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
-  z-index: 1;
-  width: 100%;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  cursor: default;
-}
-.oo-ui-inlineMenuWidget-handle {
-  height: 2.5em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  top: 0;
-  width: 2.5em;
-  height: 2.5em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  right: 0.25em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  line-height: 2.5em;
-  margin: 0 0.5em;
-}
-.oo-ui-inlineMenuWidget.oo-ui-iconElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  margin-right: 3em;
-}
-.oo-ui-inlineMenuWidget.oo-ui-indicatorElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  margin-left: 2em;
-}
-.oo-ui-outlineItemWidget {
-  position: relative;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-  padding: 0.75em;
-}
-.oo-ui-outlineControlsWidget {
-  height: 3em;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  float: right;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-  float: right;
-  background-position: left center;
-  background-repeat: no-repeat;
-}
-.oo-ui-outlineControlsWidget-items {
-  float: right;
-}
-.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
-  float: right;
-}
-.oo-ui-outlineControlsWidget-movers {
-  float: left;
-}
-.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-  float: left;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  height: 2em;
-  margin: 0.5em;
-  padding: 0;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-  width: 1.5em;
-  height: 2em;
-  margin: 0.5em 0.5em 0.5em 0;
-}
-.oo-ui-outlineControlsWidget-items {
-  margin-right: 0;
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget {
-  z-index: 1;
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget > .oo-ui-selectWidget {
-  min-width: 20em;
-}
-.oo-ui-searchWidget-query {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  width: 100%;
-}
-.oo-ui-searchWidget-results {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  left: 0;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.oo-ui-searchWidget-query {
-  height: 4em;
-  padding: 0 1em;
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  margin: 0.75em 0;
-}
-.oo-ui-searchWidget-results {
-  top: 4em;
-  padding: 1em;
-  line-height: 0;
-}
-.oo-ui-window {
-  line-height: 1em;
-  /* Content div takes focus when opened, so hide outline */
-}
-.oo-ui-window-frame {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-window-frame > iframe {
-  width: 100%;
-  height: 100%;
-  margin: 0;
-  padding: 0;
-}
-.oo-ui-window-content:focus {
-  outline: none;
-}
-.oo-ui-window-head,
-.oo-ui-window-foot {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-window-body {
-  margin: 0;
-  padding: 0;
-  background: none;
-}
-.oo-ui-window-overlay {
-  position: absolute;
-  top: 0;
-  right: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-head,
-.oo-ui-dialog-content > .oo-ui-window-body,
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  position: absolute;
-  right: 0;
-  left: 0;
-  overflow: hidden;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-dialog-content > .oo-ui-window-head {
-  z-index: 1;
-  top: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-body {
-  z-index: 2;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  z-index: 1;
-  bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-overlay {
-  z-index: 3;
-}
-.oo-ui-messageDialog-actions-horizontal {
-  display: table;
-  table-layout: fixed;
-  width: 100%;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  display: table-cell;
-  width: 1%;
-}
-.oo-ui-messageDialog-actions-vertical {
-  display: block;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  display: block;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget {
-  position: relative;
-  text-align: center;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  display: block;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-  position: relative;
-  top: auto;
-  bottom: auto;
-  display: inline;
-  white-space: nowrap;
-}
-.oo-ui-messageDialog-title,
-.oo-ui-messageDialog-message {
-  display: block;
-  text-align: center;
-  padding-top: 0.5em;
-}
-.oo-ui-messageDialog-title {
-  font-size: 1.5em;
-  line-height: 1em;
-  color: #000;
-}
-.oo-ui-messageDialog-message {
-  font-size: 0.9em;
-  line-height: 1.25em;
-  color: #666;
-}
-.oo-ui-messageDialog-message-verbose {
-  font-size: 1.1em;
-  line-height: 1.5em;
-  text-align: right;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  border-left: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-  border-left-width: 0;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  border-bottom: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-  border-bottom-width: 0;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-  text-align: center;
-  line-height: 3.4em;
-  padding: 0 2em;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-  font-weight: bold;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-.oo-ui-processDialog-location {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.oo-ui-processDialog-title {
-  display: inline;
-  padding: 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
-  white-space: nowrap;
-}
-.oo-ui-processDialog-actions-safe,
-.oo-ui-processDialog-actions-primary {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-processDialog-actions-safe {
-  right: 0;
-}
-.oo-ui-processDialog-actions-primary {
-  left: 0;
-}
-.oo-ui-processDialog-errors {
-  display: none;
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-  z-index: 2;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.oo-ui-processDialog-content .oo-ui-window-head {
-  height: 3.35em;
-  border-bottom: 1px solid #dddddd;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-processDialog-content .oo-ui-window-body {
-  top: 3.35em;
-  padding: 2em 0;
-}
-.oo-ui-processDialog-navigation {
-  position: relative;
-  height: 3.35em;
-  padding: 0 1em;
-}
-.oo-ui-processDialog-location {
-  padding: 0.75em 0;
-  height: 1.85em;
-  cursor: default;
-  text-align: center;
-}
-.oo-ui-processDialog-title {
-  font-weight: bold;
-  line-height: 1.85em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  padding: 0.35em 0.75em;
-  min-width: 1.85em;
-  min-height: 1.85em;
-  border: 1px solid #dddddd;
-  border-radius: 4px;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labelElement-label {
-  line-height: 1.85em;
-  padding: 0 1em;
-  font-weight: bold;
-  color: #777777;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconElement-icon {
-  position: absolute;
-  margin-top: -0.125em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  vertical-align: middle;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button {
-  border: 1px solid transparent;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label {
-  color: #d11d13;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  padding: 0.75em 0.35em;
-  border: none;
-  border-radius: 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-buttonElement-button {
-  background-color: #347bff;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-  color: #ffffff;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  right: 0.5em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-  padding-right: 2.25em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  left: 0.5em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-  padding-left: 2.25em;
-}
-.oo-ui-processDialog-actions-other {
-  position: absolute;
-  bottom: 1em;
-}
-.oo-ui-processDialog > .oo-ui-window-frame {
-  min-height: 5em;
-}
-.oo-ui-processDialog-errors {
-  background-color: rgba(255, 255, 255, 0.9);
-  padding: 3em 3em 1.5em 3em;
-  text-align: center;
-}
-.oo-ui-processDialog-errors .oo-ui-buttonWidget {
-  margin: 2em 1em 2em 1em;
-}
-.oo-ui-processDialog-errors-title {
-  font-size: 1.5em;
-  color: #000;
-  margin-bottom: 2em;
-}
-.oo-ui-processDialog-error {
-  text-align: right;
-  margin: 1em;
-  padding: 1em;
-  border: solid 1px #ff9e9e;
-  background-color: #fff7f7;
-  border-radius: 0.25em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  position: fixed;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
-  width: auto;
-  height: auto;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  padding: 1em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
-  position: fixed;
-  left: 0;
-  right: 0;
-  margin: auto;
-  overflow: hidden;
-  max-width: 100%;
-  max-height: 100%;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame > iframe {
-  width: 100%;
-  height: 100%;
-}
-.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
-  width: 100%;
-  height: 100%;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  background-color: rgba(255, 255, 255, 0.5);
-  opacity: 0;
-  -webkit-transition: opacity 250ms ease-in-out;
-  -moz-transition: opacity 250ms ease-in-out;
-  -ms-transition: opacity 250ms ease-in-out;
-  -o-transition: opacity 250ms ease-in-out;
-  transition: opacity 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-  top: 0;
-  bottom: 0;
-  background-color: #fff;
-  -webkit-transform: translate3d(0, -200%, 0);
-  -moz-transform: translate3d(0, -200%, 0);
-  -ms-transform: translate3d(0, -200%, 0);
-  -o-transform: translate3d(0, -200%, 0);
-  transform: translate3d(0, -200%, 0);
-  -webkit-transition: transform 250ms ease-in-out;
-  -moz-transition: transform 250ms ease-in-out;
-  -ms-transition: transform 250ms ease-in-out;
-  -o-transition: transform 250ms ease-in-out;
-  transition: transform 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
-  opacity: 1;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
-  -webkit-transform: translate3d(0, 0, 0);
-  -moz-transform: translate3d(0, 0, 0);
-  -ms-transform: translate3d(0, 0, 0);
-  -o-transform: translate3d(0, 0, 0);
-  transform: translate3d(0, 0, 0);
-}
-.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
-  border: solid 1px #ccc;
-  border-radius: 0.5em;
-  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
-}
-
-/*
- * Blank theme mixins.
- *
- * Base styles invoke these mixins at the end of their definitions. Override these mixins to add
- * additional rules to the base styles.
- */
-.oo-ui-icon-check {
-  background-image: /* @embed */ url(themes/minerva/images/icons/check.png);
-  background: #347bff;
-}
diff --git a/resources/lib/oojs-ui/oojs-ui-minerva.svg.css b/resources/lib/oojs-ui/oojs-ui-minerva.svg.css
deleted file mode 100644 (file)
index a283479..0000000
+++ /dev/null
@@ -1,1374 +0,0 @@
-/*!
- * OOjs UI v0.1.0-pre (26dadbc60f)
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-10-06T16:03:50Z
- */
-/* @noflip */
-.oo-ui-rtl {
-       direction: rtl;
-}
-/* @noflip */
-.oo-ui-ltr {
-       direction: ltr;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button {
-       cursor: pointer;
-       display: inline-block;
-       vertical-align: middle;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       display: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       display: none;
-}
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-       cursor: default;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       display: inline-block;
-       vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
-}
-.oo-ui-buttonElement-frameless {
-       display: inline-block;
-       position: relative;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-       display: inline-block;
-       vertical-align: top;
-       text-align: center;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-       cursor: default;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       margin-left: 0;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       margin-right: -0.75em;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       width: 3.35em;
-       height: 3.35em;
-       background-size: 2em auto;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       margin-left: 0.25em;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       line-height: 1.9em;
-}
-.oo-ui-clippableElement-clippable {
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
-       overflow-y: hidden;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-       width: 100%;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
-       overflow-y: auto;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
-       padding: 2em;
-}
-.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 3em;
-       overflow-y: auto;
-}
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-       position: absolute;
-       bottom: 0;
-       left: 0;
-       right: 0;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-       padding: 0 0 1em;
-}
-.oo-ui-fieldLayout {
-       margin-bottom: 1em;
-}
-.oo-ui-fieldLayout:before,
-.oo-ui-fieldLayout:after {
-       content: " ";
-       display: table;
-}
-.oo-ui-fieldLayout:after {
-       clear: both;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-       display: block;
-       float: left;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-       display: block;
-       float: left;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-       text-align: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-       display: inline-block;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-       z-index: 1;
-}
-.oo-ui-fieldLayout .oo-ui-fieldLayout-help {
-       float: right;
-}
-.oo-ui-fieldLayout .oo-ui-fieldLayout-help-content {
-       padding: 0.5em 0.75em;
-}
-.oo-ui-fieldLayout:last-child {
-       margin-bottom: 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-       padding-top: 0.5em;
-       margin-right: 5%;
-       width: 35%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-       width: 60%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-       padding: 0.75em 0.5em 0.5em 0.5em;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-       padding: 0.5em 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-       padding: 0.5em 0;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       margin-top: 0.25em;
-}
-.oo-ui-fieldLayout-disabled .oo-ui-labelElement-label {
-       color: #cccccc;
-}
-.oo-ui-fieldsetLayout {
-       position: relative;
-       margin: 0;
-       padding: 0;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-       display: block;
-       position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
-}
-.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
-       display: inline-block;
-}
-.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
-       margin-top: 2em;
-}
-.oo-ui-fieldsetLayout > .oo-ui-labelElement-label {
-       margin-bottom: 0.5em;
-       padding: 0.25em 0;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label {
-       padding-left: 1.75em;
-       line-height: 1.33em;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-       left: 0;
-       top: 0.25em;
-       width: 2em;
-       height: 2em;
-}
-.oo-ui-gridLayout {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 0;
-}
-.oo-ui-panelLayout {
-       position: relative;
-       padding: 1em 3.35em;
-}
-.oo-ui-panelLayout-scrollable {
-       overflow-y: auto;
-}
-.oo-ui-panelLayout-expanded {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 0;
-}
-.oo-ui-stackLayout > .oo-ui-panelLayout {
-       display: none;
-}
-.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-       display: block;
-       position: relative;
-}
-.oo-ui-popupTool .oo-ui-popupWidget-popup,
-.oo-ui-popupTool .oo-ui-popupWidget-anchor {
-       z-index: 4;
-}
-.oo-ui-popupTool .oo-ui-popupWidget {
-       margin-left: 1.25em;
-       font-size: 0.8em;
-}
-.oo-ui-toolGroup {
-       display: inline-block;
-       vertical-align: middle;
-       margin: 0.3em;
-}
-.oo-ui-toolGroup-empty {
-       display: none;
-}
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       background-position: center center;
-       background-repeat: no-repeat;
-}
-.oo-ui-barToolGroup > .oo-ui-iconElement-icon,
-.oo-ui-barToolGroup > .oo-ui-labelElement-label {
-       display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool {
-       display: inline-block;
-       position: relative;
-       vertical-align: top;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-       display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-       display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-       cursor: default;
-}
-.oo-ui-barToolGroup .oo-ui-tool-title,
-.oo-ui-barToolGroup .oo-ui-tool-accel {
-       display: none;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
-       cursor: pointer;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-       height: 1.5em;
-       padding: 0.25em;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       height: 1.5em;
-       width: 1.5em;
-}
-.oo-ui-popupToolGroup {
-       position: relative;
-       height: 2em;
-       min-width: 2.5em;
-}
-.oo-ui-popupToolGroup-handle {
-       display: block;
-       cursor: pointer;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-       position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-       cursor: default;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-       display: none;
-       position: absolute;
-       z-index: 4;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconElement-icon {
-       background-repeat: no-repeat;
-       background-position: center center;
-}
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-       display: block;
-}
-.oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools {
-       left: 0;
-}
-.oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools {
-       right: 0;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-accel {
-       display: none;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
-       min-width: 3.5em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-       top: 0;
-       width: 2em;
-       height: 2em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
-       right: 0;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-       left: 0.25em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-       line-height: 2.6em;
-       font-size: 0.8em;
-       margin: 0 1em;
-}
-.oo-ui-popupToolGroup-header {
-       line-height: 2.6em;
-       font-size: 0.8em;
-       margin: 0 0.6em;
-       font-weight: bold;
-}
-.oo-ui-popupToolGroup.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-       margin-left: 3em;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-       margin-right: 2.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-       top: 2.3em;
-       margin: 0 -1px;
-       border: solid 1px #dddddd;
-       background-color: white;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       height: 2em;
-       width: 2em;
-       margin-right: 0.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-       line-height: 2em;
-       font-size: 0.8em;
-}
-.oo-ui-listToolGroup .oo-ui-tool {
-       display: inline-block;
-       width: 100%;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-       display: block;
-       cursor: pointer;
-       white-space: nowrap;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-       cursor: default;
-}
-.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
-       padding: 0.25em;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-       padding-right: 0.5em;
-}
-.oo-ui-menuToolGroup .oo-ui-tool {
-       display: block;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-       display: block;
-       cursor: pointer;
-       white-space: nowrap;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-       cursor: default;
-}
-.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-       min-width: 8em;
-}
-.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
-       padding: 0.25em 0 0.25em 0;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-       padding: 0 1em 0 0.25em;
-}
-.oo-ui-toolbar {
-       clear: both;
-}
-.oo-ui-toolbar-bar {
-       line-height: 1em;
-}
-.oo-ui-toolbar-actions {
-       float: right;
-}
-.oo-ui-toolbar-tools {
-       display: inline;
-}
-.oo-ui-toolbar-tools,
-.oo-ui-toolbar-actions,
-.oo-ui-toolbar-shadow {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-}
-.oo-ui-toolbar-actions .oo-ui-popupWidget {
-       -webkit-touch-callout: default;
-       -webkit-user-select: all;
-          -moz-user-select: all;
-           -ms-user-select: all;
-               user-select: all;
-}
-.oo-ui-toolbar-shadow {
-       background-position: left top;
-       background-repeat: repeat-x;
-       position: absolute;
-       width: 100%;
-       pointer-events: none;
-}
-.oo-ui-toolbar-bar {
-       border-bottom: solid 1px #dddddd;
-       background: white;
-}
-.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
-       border: none;
-       background: none;
-}
-.oo-ui-selectWidget {
-       margin: 0;
-       padding: 0;
-}
-.oo-ui-optionWidget {
-       position: relative;
-       display: block;
-       cursor: pointer;
-       padding: 0.8em 1em 0.8em 3.35em;
-       border: none;
-       font-weight: bold;
-}
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-       cursor: default;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-       display: block;
-       white-space: nowrap;
-       text-overflow: ellipsis;
-       overflow: hidden;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-       line-height: 1.5em;
-}
-.oo-ui-optionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-       padding-right: 1.5em;
-}
-.oo-ui-optionWidget-level-0 {
-       padding-left: 3.5em;
-}
-.oo-ui-optionWidget-level-0 .oo-ui-iconElement-icon {
-       left: 1em;
-}
-.oo-ui-optionWidget-level-1 {
-       padding-left: 5em;
-}
-.oo-ui-optionWidget-level-1 .oo-ui-iconElement-icon {
-       left: 2.5em;
-}
-.oo-ui-optionWidget-level-2 {
-       padding-left: 6.5em;
-}
-.oo-ui-optionWidget-level-2 .oo-ui-iconElement-icon {
-       left: 4em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-       position: absolute;
-       background-repeat: no-repeat;
-       background-position: center center;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-       top: 50%;
-       width: 2em;
-       height: 2em;
-       margin-top: -1em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon {
-       left: 0.5em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-       right: 0.5em;
-}
-.oo-ui-buttonSelectWidget {
-       display: inline-block;
-       white-space: nowrap;
-}
-.oo-ui-buttonOptionWidget {
-       display: inline-block;
-       padding: 0;
-       background-color: transparent;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-       position: relative;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       position: static;
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-       height: 1.9em;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       height: 1.9em;
-       margin-top: 0;
-}
-.oo-ui-labelWidget {
-       display: inline-block;
-       padding: 0.5em 0;
-}
-.oo-ui-iconWidget {
-       display: inline-block;
-       vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
-       line-height: 2.5em;
-       height: 1.9em;
-       width: 1.9em;
-       opacity: 0.8;
-}
-.oo-ui-iconWidget.oo-ui-widget-disabled {
-       opacity: 0.2;
-}
-.oo-ui-indicatorWidget {
-       display: inline-block;
-       vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
-       line-height: 2.5em;
-       height: 1.9em;
-       width: 1.9em;
-       opacity: 0.8;
-}
-.oo-ui-indicatorWidget.oo-ui-widget-disabled {
-       opacity: 0.2;
-}
-.oo-ui-buttonWidget {
-       display: inline-block;
-       vertical-align: middle;
-}
-.oo-ui-buttonGroupWidget {
-       border-radius: 0.3em;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-       border-radius: 0;
-       margin-bottom: -1px;
-       margin-left: -1px;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button {
-       border-bottom-left-radius: 0.3em;
-       border-top-left-radius: 0.3em;
-       margin-left: 0;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button {
-       border-bottom-right-radius: 0.3em;
-       border-top-right-radius: 0.3em;
-}
-.oo-ui-toggleSwitchWidget {
-       position: relative;
-       display: inline-block;
-       vertical-align: middle;
-       overflow: hidden;
-       cursor: pointer;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-       -webkit-transform: translateZ(0px);
-          -moz-transform: translateZ(0px);
-           -ms-transform: translateZ(0px);
-            -o-transform: translateZ(0px);
-               transform: translateZ(0px);
-       height: 2em;
-       width: 4em;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-       cursor: default;
-}
-.oo-ui-toggleSwitchWidget-grip {
-       position: absolute;
-       display: block;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-       position: absolute;
-       top: 0;
-       bottom: 0;
-       right: 0;
-       left: 0;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-       display: none;
-}
-.oo-ui-toggleSwitchWidget-grip {
-       top: 0.25em;
-       left: 0.25em;
-       width: 1.5em;
-       height: 1.5em;
-       margin-top: -1px;
-       -webkit-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-          -moz-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-           -ms-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-            -o-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-               transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-}
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-       -webkit-transition: opacity 200ms ease-in-out;
-          -moz-transition: opacity 200ms ease-in-out;
-           -ms-transition: opacity 200ms ease-in-out;
-            -o-transition: opacity 200ms ease-in-out;
-               transition: opacity 200ms ease-in-out;
-}
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-       left: 2.25em;
-       margin-left: -2px;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-       left: 0.25em;
-       margin-left: 0;
-}
-.oo-ui-popupWidget {
-       position: absolute;
-}
-.oo-ui-popupWidget-popup {
-       position: relative;
-       overflow: hidden;
-       z-index: 1;
-}
-.oo-ui-popupWidget-anchor {
-       display: none;
-       z-index: 1;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-       display: block;
-       position: absolute;
-       top: 0;
-       background-repeat: no-repeat;
-}
-.oo-ui-popupWidget-head {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-       float: right;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-       float: left;
-       cursor: default;
-}
-.oo-ui-popupWidget-body {
-       clear: both;
-       overflow: hidden;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
-       margin-top: 7px;
-}
-.oo-ui-popupWidget-head {
-       height: 2.5em;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-       margin: 0.25em;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-       margin: 0.75em 1em;
-}
-.oo-ui-popupWidget-body-padded {
-       padding: 0 1em;
-}
-.oo-ui-popupButtonWidget {
-       position: relative;
-}
-.oo-ui-popupButtonWidget .oo-ui-popupWidget {
-       position: absolute;
-       cursor: auto;
-}
-.oo-ui-lookupInputWidget-menu {
-       background-color: #ffffff;
-}
-.oo-ui-textInputWidget {
-       position: relative;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-       display: inline-block;
-       width: 100%;
-       resize: none;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-       position: absolute;
-       top: 0;
-       height: 100%;
-       background-repeat: no-repeat;
-       cursor: pointer;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon {
-       left: 0;
-}
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-       right: 0;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-       padding: 0.8em 1em;
-}
-.oo-ui-menuWidget {
-       position: absolute;
-       background: white;
-       border: solid 1px #dddddd;
-}
-.oo-ui-menuWidget input {
-       position: absolute;
-       width: 0;
-       height: 0;
-       overflow: hidden;
-       opacity: 0;
-}
-.oo-ui-menuItemWidget {
-       position: relative;
-}
-.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
-       display: none;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-       background-color: transparent;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
-       display: block;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-       background: #347bff;
-       color: #ffffff;
-}
-.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
-       background-size: 24px auto;
-}
-.oo-ui-menuSectionItemWidget {
-       cursor: default;
-       font-weight: normal;
-       color: #777777;
-       border: none;
-}
-.oo-ui-inlineMenuWidget {
-       position: relative;
-       display: inline-block;
-       margin: 0.25em 0;
-       min-width: 20em;
-}
-.oo-ui-inlineMenuWidget-handle {
-       width: 100%;
-       display: inline-block;
-       cursor: pointer;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-       position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
-}
-.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
-       z-index: 1;
-       width: 100%;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-       cursor: default;
-}
-.oo-ui-inlineMenuWidget-handle {
-       height: 2.5em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-       top: 0;
-       width: 2.5em;
-       height: 2.5em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator {
-       right: 0;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-       left: 0.25em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-       line-height: 2.5em;
-       margin: 0 0.5em;
-}
-.oo-ui-inlineMenuWidget.oo-ui-iconElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-       margin-left: 3em;
-}
-.oo-ui-inlineMenuWidget.oo-ui-indicatorElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-       margin-right: 2em;
-}
-.oo-ui-outlineItemWidget {
-       position: relative;
-       cursor: pointer;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-       padding: 0.75em;
-}
-.oo-ui-outlineControlsWidget {
-       height: 3em;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-       float: left;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-       float: left;
-       background-position: right center;
-       background-repeat: no-repeat;
-}
-.oo-ui-outlineControlsWidget-items {
-       float: left;
-}
-.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
-       float: left;
-}
-.oo-ui-outlineControlsWidget-movers {
-       float: right;
-}
-.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-       float: right;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-       height: 2em;
-       margin: 0.5em;
-       padding: 0;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-       width: 1.5em;
-       height: 2em;
-       margin: 0.5em 0 0.5em 0.5em;
-}
-.oo-ui-outlineControlsWidget-items {
-       margin-left: 0;
-}
-.oo-ui-comboBoxWidget {
-       display: inline-block;
-       position: relative;
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget {
-       width: 100%;
-       z-index: 1;
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget {
-       min-width: 20em;
-}
-.oo-ui-searchWidget-query {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-       width: 100%;
-}
-.oo-ui-searchWidget-results {
-       position: absolute;
-       bottom: 0;
-       left: 0;
-       right: 0;
-       overflow-x: hidden;
-       overflow-y: auto;
-}
-.oo-ui-searchWidget-query {
-       height: 4em;
-       padding: 0 1em;
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-       margin: 0.75em 0;
-}
-.oo-ui-searchWidget-results {
-       top: 4em;
-       padding: 1em;
-       line-height: 0;
-}
-.oo-ui-window {
-       line-height: 1em;
-}
-.oo-ui-window-frame {
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-window-frame > iframe {
-       width: 100%;
-       height: 100%;
-       margin: 0;
-       padding: 0;
-}
-.oo-ui-window-content:focus {
-       outline: none;
-}
-.oo-ui-window-head,
-.oo-ui-window-foot {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-}
-.oo-ui-window-body {
-       margin: 0;
-       padding: 0;
-       background: none;
-}
-.oo-ui-window-overlay {
-       position: absolute;
-       top: 0;
-       left: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-head,
-.oo-ui-dialog-content > .oo-ui-window-body,
-.oo-ui-dialog-content > .oo-ui-window-foot {
-       position: absolute;
-       left: 0;
-       right: 0;
-       overflow: hidden;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-dialog-content > .oo-ui-window-head {
-       z-index: 1;
-       top: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-body {
-       z-index: 2;
-       top: 0;
-       bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-foot {
-       z-index: 1;
-       bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-overlay {
-       z-index: 3;
-}
-.oo-ui-messageDialog-actions-horizontal {
-       display: table;
-       table-layout: fixed;
-       width: 100%;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-       display: table-cell;
-       width: 1%;
-}
-.oo-ui-messageDialog-actions-vertical {
-       display: block;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-       display: block;
-       overflow: hidden;
-       text-overflow: ellipsis;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget {
-       position: relative;
-       text-align: center;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
-       display: block;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-       position: relative;
-       top: auto;
-       bottom: auto;
-       display: inline;
-       white-space: nowrap;
-}
-.oo-ui-messageDialog-title,
-.oo-ui-messageDialog-message {
-       display: block;
-       text-align: center;
-       padding-top: 0.5em;
-}
-.oo-ui-messageDialog-title {
-       font-size: 1.5em;
-       line-height: 1em;
-       color: #000000;
-}
-.oo-ui-messageDialog-message {
-       font-size: 0.9em;
-       line-height: 1.25em;
-       color: #666666;
-}
-.oo-ui-messageDialog-message-verbose {
-       font-size: 1.1em;
-       line-height: 1.5em;
-       text-align: left;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-       border-right: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-       border-right-width: 0;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-       border-bottom: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-       border-bottom-width: 0;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-       text-align: center;
-       line-height: 3.4em;
-       padding: 0 2em;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-       background-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
-       background-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
-       background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
-       background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-       font-weight: bold;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-       background-color: rgba(118, 171, 54, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-       background-color: rgba(118, 171, 54, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-       background-color: rgba(212, 83, 83, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
-       background-color: rgba(212, 83, 83, 0.1);
-}
-.oo-ui-processDialog-location {
-       overflow: hidden;
-       text-overflow: ellipsis;
-       white-space: nowrap;
-}
-.oo-ui-processDialog-title {
-       display: inline;
-       padding: 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
-       white-space: nowrap;
-}
-.oo-ui-processDialog-actions-safe,
-.oo-ui-processDialog-actions-primary {
-       position: absolute;
-       top: 0;
-       bottom: 0;
-}
-.oo-ui-processDialog-actions-safe {
-       left: 0;
-}
-.oo-ui-processDialog-actions-primary {
-       right: 0;
-}
-.oo-ui-processDialog-errors {
-       display: none;
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 0;
-       z-index: 2;
-       overflow-x: hidden;
-       overflow-y: auto;
-}
-.oo-ui-processDialog-content .oo-ui-window-head {
-       height: 3.35em;
-       border-bottom: 1px solid #dddddd;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
-.oo-ui-processDialog-content .oo-ui-window-body {
-       top: 3.35em;
-       padding: 2em 0;
-}
-.oo-ui-processDialog-navigation {
-       position: relative;
-       height: 3.35em;
-       padding: 0 1em;
-}
-.oo-ui-processDialog-location {
-       padding: 0.75em 0;
-       height: 1.85em;
-       cursor: default;
-       text-align: center;
-}
-.oo-ui-processDialog-title {
-       font-weight: bold;
-       line-height: 1.85em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonElement-button {
-       padding: 0.35em 0.75em;
-       min-width: 1.85em;
-       min-height: 1.85em;
-       border: 1px solid #dddddd;
-       border-radius: 4px;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labelElement-label {
-       line-height: 1.85em;
-       padding: 0 1em;
-       font-weight: bold;
-       color: #777777;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconElement-icon {
-       position: absolute;
-       margin-top: -0.125em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-       vertical-align: middle;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button {
-       border: 1px solid transparent;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label {
-       color: #d11d13;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button {
-       padding: 0.75em 0.35em;
-       border: none;
-       border-radius: 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-buttonElement-button {
-       background-color: #347bff;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-       color: #ffffff;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-       left: 0.5em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-       padding-left: 2.25em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-       right: 0.5em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-       padding-right: 2.25em;
-}
-.oo-ui-processDialog-actions-other {
-       position: absolute;
-       bottom: 1em;
-}
-.oo-ui-processDialog > .oo-ui-window-frame {
-       min-height: 5em;
-}
-.oo-ui-processDialog-errors {
-       background-color: rgba(255, 255, 255, 0.9);
-       padding: 3em 3em 1.5em 3em;
-       text-align: center;
-}
-.oo-ui-processDialog-errors .oo-ui-buttonWidget {
-       margin: 2em 1em 2em 1em;
-}
-.oo-ui-processDialog-errors-title {
-       font-size: 1.5em;
-       color: #000000;
-       margin-bottom: 2em;
-}
-.oo-ui-processDialog-error {
-       text-align: left;
-       margin: 1em;
-       padding: 1em;
-       border: solid 1px #ff9e9e;
-       background-color: #fff7f7;
-       border-radius: 0.25em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-       position: fixed;
-       width: 0;
-       height: 0;
-       overflow: hidden;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
-       width: auto;
-       height: auto;
-       top: 0;
-       right: 0;
-       bottom: 0;
-       left: 0;
-       padding: 1em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
-       position: absolute;
-       right: 0;
-       left: 0;
-       margin: auto;
-       overflow: hidden;
-       max-width: 100%;
-       max-height: 100%;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame > iframe {
-       width: 100%;
-       height: 100%;
-}
-.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
-       width: 100%;
-       height: 100%;
-       top: 0;
-       bottom: 0;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-       background-color: rgba(255, 255, 255, 0.5);
-       opacity: 0;
-       -webkit-transition: opacity 250ms ease-in-out;
-          -moz-transition: opacity 250ms ease-in-out;
-           -ms-transition: opacity 250ms ease-in-out;
-            -o-transition: opacity 250ms ease-in-out;
-               transition: opacity 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-       top: 0;
-       bottom: 0;
-       background-color: #ffffff;
-       -webkit-transform: translate3d(0, -200%, 0);
-          -moz-transform: translate3d(0, -200%, 0);
-           -ms-transform: translate3d(0, -200%, 0);
-            -o-transform: translate3d(0, -200%, 0);
-               transform: translate3d(0, -200%, 0);
-       -webkit-transition: transform 250ms ease-in-out;
-          -moz-transition: transform 250ms ease-in-out;
-           -ms-transition: transform 250ms ease-in-out;
-            -o-transition: transform 250ms ease-in-out;
-               transition: transform 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
-       opacity: 1;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
-       -webkit-transform: translate3d(0, 0, 0);
-          -moz-transform: translate3d(0, 0, 0);
-           -ms-transform: translate3d(0, 0, 0);
-            -o-transform: translate3d(0, 0, 0);
-               transform: translate3d(0, 0, 0);
-}
-.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
-       border: solid 1px #cccccc;
-       border-radius: 0.5em;
-       box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
-}
-
-.oo-ui-icon-check {
-       background-image: /* @embed */ url(themes/minerva/images/icons/check.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-check,
-.oo-ui-image-invert.oo-ui-icon-check {
-       background-image: /* @embed */ url(themes/minerva/images/icons/check-invert.svg);
-}
diff --git a/resources/lib/oojs-ui/oojs-ui-minerva.svg.rtl.css b/resources/lib/oojs-ui/oojs-ui-minerva.svg.rtl.css
deleted file mode 100644 (file)
index 513f2a7..0000000
+++ /dev/null
@@ -1,1381 +0,0 @@
-/*!
- * OOjs UI v0.1.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-09-24T23:21:42Z
- */
-/* @noflip */
-.oo-ui-rtl {
-  direction: rtl;
-}
-/* @noflip */
-.oo-ui-ltr {
-  direction: ltr;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button {
-  cursor: pointer;
-  display: inline-block;
-  vertical-align: middle;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  display: none;
-}
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-buttonElement-frameless {
-  display: inline-block;
-  position: relative;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  display: inline-block;
-  vertical-align: top;
-  text-align: center;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-right: 0;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  margin-left: -0.75em;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-iconElement .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  width: 3.35em;
-  height: 3.35em;
-  background-size: 2em auto;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  margin-right: 0.25em;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  line-height: 1.9em;
-}
-.oo-ui-clippableElement-clippable {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
-  overflow-y: hidden;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  width: 100%;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
-  padding: 2em;
-}
-.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 3em;
-  overflow-y: auto;
-}
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  left: 0;
-}
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  padding: 0 0 1em;
-}
-.oo-ui-fieldLayout {
-  margin-bottom: 1em;
-}
-.oo-ui-fieldLayout:before,
-.oo-ui-fieldLayout:after {
-  content: " ";
-  display: table;
-}
-.oo-ui-fieldLayout:after {
-  clear: both;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  display: block;
-  float: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  display: block;
-  float: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  text-align: left;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-  display: inline-block;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-  z-index: 1;
-}
-.oo-ui-fieldLayout .oo-ui-fieldLayout-help {
-  float: left;
-}
-.oo-ui-fieldLayout .oo-ui-fieldLayout-help-content {
-  padding: 0.5em 0.75em;
-}
-.oo-ui-fieldLayout:last-child {
-  margin-bottom: 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
-  padding-top: 0.5em;
-  margin-left: 5%;
-  width: 35%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  width: 60%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
-  padding: 0.75em 0.5em 0.5em 0.5em;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  padding: 0.5em 0;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
-  padding: 0.5em 0;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-top: 0.25em;
-}
-.oo-ui-fieldLayout-disabled .oo-ui-labelElement-label {
-  color: #ccc;
-}
-.oo-ui-fieldsetLayout {
-  position: relative;
-  margin: 0;
-  padding: 0;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-  display: block;
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
-  display: inline-block;
-}
-.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
-  margin-top: 2em;
-}
-.oo-ui-fieldsetLayout > .oo-ui-labelElement-label {
-  margin-bottom: 0.5em;
-  padding: 0.25em 0;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label {
-  padding-right: 1.75em;
-  line-height: 1.33em;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-  right: 0;
-  top: 0.25em;
-  width: 2em;
-  height: 2em;
-}
-.oo-ui-gridLayout {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-}
-.oo-ui-panelLayout {
-  position: relative;
-  padding: 1em 3.35em;
-}
-.oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-.oo-ui-panelLayout-expanded {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-}
-.oo-ui-stackLayout > .oo-ui-panelLayout {
-  display: none;
-}
-.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-  display: block;
-  position: relative;
-}
-.oo-ui-popupTool .oo-ui-popupWidget-popup,
-.oo-ui-popupTool .oo-ui-popupWidget-anchor {
-  z-index: 4;
-}
-.oo-ui-popupTool .oo-ui-popupWidget {
-  margin-right: 1.25em;
-  font-size: 0.8em;
-}
-.oo-ui-toolGroup {
-  display: inline-block;
-  vertical-align: middle;
-  margin: 0.3em;
-}
-.oo-ui-toolGroup-empty {
-  display: none;
-}
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-barToolGroup > .oo-ui-iconElement-icon,
-.oo-ui-barToolGroup > .oo-ui-labelElement-label {
-  display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool {
-  display: inline-block;
-  position: relative;
-  vertical-align: top;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  display: block;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: none;
-}
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-barToolGroup .oo-ui-tool-title,
-.oo-ui-barToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
-  cursor: pointer;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  height: 1.5em;
-  padding: 0.25em;
-}
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  height: 1.5em;
-  width: 1.5em;
-}
-.oo-ui-popupToolGroup {
-  position: relative;
-  height: 2em;
-  min-width: 2.5em;
-}
-.oo-ui-popupToolGroup-handle {
-  display: block;
-  cursor: pointer;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-  cursor: default;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  display: none;
-  position: absolute;
-  z-index: 4;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconElement-icon {
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-  display: block;
-}
-.oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools {
-  right: 0;
-}
-.oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools {
-  left: 0;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
-  min-width: 3.5em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  top: 0;
-  width: 2em;
-  height: 2em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  right: 0.25em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  line-height: 2.6em;
-  font-size: 0.8em;
-  margin: 0 1em;
-}
-.oo-ui-popupToolGroup-header {
-  line-height: 2.6em;
-  font-size: 0.8em;
-  margin: 0 0.6em;
-  font-weight: bold;
-}
-.oo-ui-popupToolGroup.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-right: 3em;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-left: 2.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  top: 2.3em;
-  margin: 0 -1px;
-  border: solid 1px #dddddd;
-  background-color: white;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  height: 2em;
-  width: 2em;
-  margin-left: 0.25em;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  line-height: 2em;
-  font-size: 0.8em;
-}
-.oo-ui-listToolGroup .oo-ui-tool {
-  display: inline-block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em;
-}
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  padding-left: 0.5em;
-}
-.oo-ui-menuToolGroup .oo-ui-tool {
-  display: block;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  display: block;
-  cursor: pointer;
-  white-space: nowrap;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-  min-width: 8em;
-}
-.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em 0 0.25em 0;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  padding: 0 0.25em 0 1em;
-}
-.oo-ui-toolbar {
-  clear: both;
-}
-.oo-ui-toolbar-bar {
-  line-height: 1em;
-}
-.oo-ui-toolbar-actions {
-  float: left;
-}
-.oo-ui-toolbar-tools {
-  display: inline;
-}
-.oo-ui-toolbar-tools,
-.oo-ui-toolbar-actions,
-.oo-ui-toolbar-shadow {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-toolbar-actions .oo-ui-popupWidget {
-  -webkit-touch-callout: default;
-  -webkit-user-select: all;
-  -moz-user-select: all;
-  -ms-user-select: all;
-  user-select: all;
-}
-.oo-ui-toolbar-shadow {
-  background-position: right top;
-  background-repeat: repeat-x;
-  position: absolute;
-  width: 100%;
-  pointer-events: none;
-}
-.oo-ui-toolbar-bar {
-  border-bottom: solid 1px #dddddd;
-  background: white;
-}
-.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
-  border: none;
-  background: none;
-}
-.oo-ui-selectWidget {
-  margin: 0;
-  padding: 0;
-}
-.oo-ui-optionWidget {
-  position: relative;
-  display: block;
-  cursor: pointer;
-  padding: 0.8em 3.35em 0.8em 1em;
-  border: none;
-  font-weight: bold;
-}
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-  display: block;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-  line-height: 1.5em;
-}
-.oo-ui-optionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-  padding-left: 1.5em;
-}
-.oo-ui-optionWidget-level-0 {
-  padding-right: 3.5em;
-}
-.oo-ui-optionWidget-level-0 .oo-ui-iconElement-icon {
-  right: 1em;
-}
-.oo-ui-optionWidget-level-1 {
-  padding-right: 5em;
-}
-.oo-ui-optionWidget-level-1 .oo-ui-iconElement-icon {
-  right: 2.5em;
-}
-.oo-ui-optionWidget-level-2 {
-  padding-right: 6.5em;
-}
-.oo-ui-optionWidget-level-2 .oo-ui-iconElement-icon {
-  right: 4em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  top: 50%;
-  width: 2em;
-  height: 2em;
-  margin-top: -1em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon {
-  right: 0.5em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  left: 0.5em;
-}
-.oo-ui-buttonSelectWidget {
-  display: inline-block;
-  white-space: nowrap;
-}
-.oo-ui-buttonOptionWidget {
-  display: inline-block;
-  padding: 0;
-  background-color: transparent;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  position: relative;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  position: static;
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  height: 1.9em;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  height: 1.9em;
-  margin-top: 0;
-}
-.oo-ui-labelWidget {
-  display: inline-block;
-  padding: 0.5em 0;
-}
-.oo-ui-iconWidget {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  line-height: 2.5em;
-  height: 1.9em;
-  width: 1.9em;
-  opacity: 0.8;
-}
-.oo-ui-iconWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-.oo-ui-indicatorWidget {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  line-height: 2.5em;
-  height: 1.9em;
-  width: 1.9em;
-  opacity: 0.8;
-}
-.oo-ui-indicatorWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-.oo-ui-buttonWidget {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonGroupWidget {
-  border-radius: 0.3em;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  border-radius: 0;
-  margin-bottom: -1px;
-  margin-right: -1px;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button {
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-  margin-right: 0;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button {
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-.oo-ui-toggleSwitchWidget {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle;
-  overflow: hidden;
-  cursor: pointer;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  -webkit-transform: translateZ(0px);
-  -moz-transform: translateZ(0px);
-  -ms-transform: translateZ(0px);
-  -o-transform: translateZ(0px);
-  transform: translateZ(0px);
-  height: 2em;
-  width: 4em;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-.oo-ui-toggleSwitchWidget-grip {
-  position: absolute;
-  display: block;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: none;
-}
-.oo-ui-toggleSwitchWidget-grip {
-  top: 0.25em;
-  right: 0.25em;
-  width: 1.5em;
-  height: 1.5em;
-  margin-top: -1px;
-  -webkit-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  -moz-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  -ms-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  -o-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-  transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-}
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  -webkit-transition: opacity 200ms ease-in-out;
-  -moz-transition: opacity 200ms ease-in-out;
-  -ms-transition: opacity 200ms ease-in-out;
-  -o-transition: opacity 200ms ease-in-out;
-  transition: opacity 200ms ease-in-out;
-}
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-  right: 2.25em;
-  margin-right: -2px;
-}
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-  right: 0.25em;
-  margin-right: 0;
-}
-.oo-ui-actionWidget.oo-ui-pendingElement-pending {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-.oo-ui-popupWidget-popup {
-  position: absolute;
-  overflow: hidden;
-  z-index: 1;
-}
-.oo-ui-popupWidget-anchor {
-  display: none;
-  z-index: 1;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-  display: block;
-  position: absolute;
-  background-repeat: no-repeat;
-}
-.oo-ui-popupWidget-head {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  float: left;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-  float: right;
-  cursor: default;
-}
-.oo-ui-popupWidget-body {
-  clear: both;
-  overflow: hidden;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
-  margin-top: 7px;
-}
-.oo-ui-popupWidget-head {
-  height: 2.5em;
-}
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  margin: 0.25em;
-}
-.oo-ui-popupWidget-head .oo-ui-labelElement-label {
-  margin: 0.75em 1em;
-}
-.oo-ui-popupWidget-body-padded {
-  padding: 0 1em;
-}
-.oo-ui-popupButtonWidget {
-  position: relative;
-}
-.oo-ui-popupButtonWidget .oo-ui-popupWidget {
-  position: absolute;
-  right: 1em;
-  cursor: auto;
-}
-.oo-ui-lookupInputWidget-menu {
-  background-color: #fff;
-}
-.oo-ui-textInputWidget {
-  position: relative;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  display: inline-block;
-  width: 100%;
-  resize: none;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending input,
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending textarea {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  top: 0;
-  height: 100%;
-  background-repeat: no-repeat;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon {
-  right: 0;
-}
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  padding: .8em 1em;
-}
-.oo-ui-menuWidget {
-  position: absolute;
-  background: white;
-  border: solid 1px #dddddd;
-}
-.oo-ui-menuWidget input {
-  position: absolute;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-  opacity: 0;
-}
-.oo-ui-menuItemWidget {
-  position: relative;
-}
-.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
-  display: block;
-}
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background: #347bff;
-  color: #ffffff;
-}
-.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
-  background-size: 24px auto;
-}
-.oo-ui-menuSectionItemWidget {
-  cursor: default;
-  font-weight: normal;
-  color: #777777;
-  border: none;
-}
-.oo-ui-inlineMenuWidget {
-  position: relative;
-  display: inline-block;
-  margin: 0.25em 0;
-  min-width: 20em;
-}
-.oo-ui-inlineMenuWidget-handle {
-  width: 100%;
-  display: inline-block;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  position: absolute;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
-  z-index: 1;
-  width: 100%;
-}
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  cursor: default;
-}
-.oo-ui-inlineMenuWidget-handle {
-  height: 2.5em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  top: 0;
-  width: 2.5em;
-  height: 2.5em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator {
-  left: 0;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
-  right: 0.25em;
-}
-.oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  line-height: 2.5em;
-  margin: 0 0.5em;
-}
-.oo-ui-inlineMenuWidget.oo-ui-iconElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  margin-right: 3em;
-}
-.oo-ui-inlineMenuWidget.oo-ui-indicatorElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
-  margin-left: 2em;
-}
-.oo-ui-outlineItemWidget {
-  position: relative;
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-  padding: 0.75em;
-}
-.oo-ui-outlineControlsWidget {
-  height: 3em;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  float: right;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-  float: right;
-  background-position: left center;
-  background-repeat: no-repeat;
-}
-.oo-ui-outlineControlsWidget-items {
-  float: right;
-}
-.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
-  float: right;
-}
-.oo-ui-outlineControlsWidget-movers {
-  float: left;
-}
-.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-  float: left;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  height: 2em;
-  margin: 0.5em;
-  padding: 0;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-  width: 1.5em;
-  height: 2em;
-  margin: 0.5em 0.5em 0.5em 0;
-}
-.oo-ui-outlineControlsWidget-items {
-  margin-right: 0;
-}
-.oo-ui-comboBoxWidget {
-  display: inline-block;
-  position: relative;
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget {
-  width: 100%;
-  z-index: 1;
-}
-.oo-ui-comboBoxWidget > .oo-ui-selectWidget {
-  min-width: 20em;
-}
-.oo-ui-searchWidget-query {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  width: 100%;
-}
-.oo-ui-searchWidget-results {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  left: 0;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.oo-ui-searchWidget-query {
-  height: 4em;
-  padding: 0 1em;
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  margin: 0.75em 0;
-}
-.oo-ui-searchWidget-results {
-  top: 4em;
-  padding: 1em;
-  line-height: 0;
-}
-.oo-ui-window {
-  line-height: 1em;
-}
-.oo-ui-window-frame {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-window-frame > iframe {
-  width: 100%;
-  height: 100%;
-  margin: 0;
-  padding: 0;
-}
-.oo-ui-window-content:focus {
-  outline: none;
-}
-.oo-ui-window-head,
-.oo-ui-window-foot {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.oo-ui-window-body {
-  margin: 0;
-  padding: 0;
-  background: none;
-}
-.oo-ui-window-overlay {
-  position: absolute;
-  top: 0;
-  right: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-head,
-.oo-ui-dialog-content > .oo-ui-window-body,
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  position: absolute;
-  right: 0;
-  left: 0;
-  overflow: hidden;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-dialog-content > .oo-ui-window-head {
-  z-index: 1;
-  top: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-head.oo-ui-pendingElement-pending {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-.oo-ui-dialog-content > .oo-ui-window-body {
-  z-index: 2;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  z-index: 1;
-  bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-overlay {
-  z-index: 3;
-}
-.oo-ui-messageDialog-actions-horizontal {
-  display: table;
-  table-layout: fixed;
-  width: 100%;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  display: table-cell;
-  width: 1%;
-}
-.oo-ui-messageDialog-actions-vertical {
-  display: block;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  display: block;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget {
-  position: relative;
-  text-align: center;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  display: block;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-  position: relative;
-  top: auto;
-  bottom: auto;
-  display: inline;
-  white-space: nowrap;
-}
-.oo-ui-messageDialog-title,
-.oo-ui-messageDialog-message {
-  display: block;
-  text-align: center;
-  padding-top: 0.5em;
-}
-.oo-ui-messageDialog-title {
-  font-size: 1.5em;
-  line-height: 1em;
-  color: #000;
-}
-.oo-ui-messageDialog-message {
-  font-size: 0.9em;
-  line-height: 1.25em;
-  color: #666;
-}
-.oo-ui-messageDialog-message-verbose {
-  font-size: 1.1em;
-  line-height: 1.5em;
-  text-align: right;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  border-left: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-  border-left-width: 0;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  border-bottom: solid 1px #e5e5e5;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-  border-bottom-width: 0;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-  text-align: center;
-  line-height: 3.4em;
-  padding: 0 2em;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-  font-weight: bold;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-.oo-ui-processDialog-location {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.oo-ui-processDialog-title {
-  display: inline;
-  padding: 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
-  white-space: nowrap;
-}
-.oo-ui-processDialog-actions-safe,
-.oo-ui-processDialog-actions-primary {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-processDialog-actions-safe {
-  right: 0;
-}
-.oo-ui-processDialog-actions-primary {
-  left: 0;
-}
-.oo-ui-processDialog-errors {
-  display: none;
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-  z-index: 2;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.oo-ui-processDialog-content .oo-ui-window-head {
-  height: 3.35em;
-  border-bottom: 1px solid #dddddd;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.oo-ui-processDialog-content .oo-ui-window-body {
-  top: 3.35em;
-  padding: 2em 0;
-}
-.oo-ui-processDialog-navigation {
-  position: relative;
-  height: 3.35em;
-  padding: 0 1em;
-}
-.oo-ui-processDialog-location {
-  padding: 0.75em 0;
-  height: 1.85em;
-  cursor: default;
-  text-align: center;
-}
-.oo-ui-processDialog-title {
-  font-weight: bold;
-  line-height: 1.85em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  padding: 0.35em 0.75em;
-  min-width: 1.85em;
-  min-height: 1.85em;
-  border: 1px solid #dddddd;
-  border-radius: 4px;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labelElement-label {
-  line-height: 1.85em;
-  padding: 0 1em;
-  font-weight: bold;
-  color: #777777;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconElement-icon,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconElement-icon {
-  position: absolute;
-  margin-top: -0.125em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  vertical-align: middle;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button {
-  border: 1px solid transparent;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label {
-  color: #d11d13;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  padding: 0.75em 0.35em;
-  border: none;
-  border-radius: 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-buttonElement-button {
-  background-color: #347bff;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
-  color: #ffffff;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  right: 0.5em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-  padding-right: 2.25em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  left: 0.5em;
-}
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
-  padding-left: 2.25em;
-}
-.oo-ui-processDialog-actions-other {
-  position: absolute;
-  bottom: 1em;
-}
-.oo-ui-processDialog > .oo-ui-window-frame {
-  min-height: 5em;
-}
-.oo-ui-processDialog-errors {
-  background-color: rgba(255, 255, 255, 0.9);
-  padding: 3em 3em 1.5em 3em;
-  text-align: center;
-}
-.oo-ui-processDialog-errors .oo-ui-buttonWidget {
-  margin: 2em 1em 2em 1em;
-}
-.oo-ui-processDialog-errors-title {
-  font-size: 1.5em;
-  color: #000;
-  margin-bottom: 2em;
-}
-.oo-ui-processDialog-error {
-  text-align: right;
-  margin: 1em;
-  padding: 1em;
-  border: solid 1px #ff9e9e;
-  background-color: #fff7f7;
-  border-radius: 0.25em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  position: fixed;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
-  width: auto;
-  height: auto;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  padding: 1em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
-  position: absolute;
-  left: 0;
-  right: 0;
-  margin: auto;
-  overflow: hidden;
-  max-width: 100%;
-  max-height: 100%;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame > iframe {
-  width: 100%;
-  height: 100%;
-}
-.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
-  width: 100%;
-  height: 100%;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  background-color: rgba(255, 255, 255, 0.5);
-  opacity: 0;
-  -webkit-transition: opacity 250ms ease-in-out;
-  -moz-transition: opacity 250ms ease-in-out;
-  -ms-transition: opacity 250ms ease-in-out;
-  -o-transition: opacity 250ms ease-in-out;
-  transition: opacity 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-  top: 0;
-  bottom: 0;
-  background-color: #fff;
-  -webkit-transform: translate3d(0, -200%, 0);
-  -moz-transform: translate3d(0, -200%, 0);
-  -ms-transform: translate3d(0, -200%, 0);
-  -o-transform: translate3d(0, -200%, 0);
-  transform: translate3d(0, -200%, 0);
-  -webkit-transition: transform 250ms ease-in-out;
-  -moz-transition: transform 250ms ease-in-out;
-  -ms-transition: transform 250ms ease-in-out;
-  -o-transition: transform 250ms ease-in-out;
-  transition: transform 250ms ease-in-out;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
-  opacity: 1;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
-  -webkit-transform: translate3d(0, 0, 0);
-  -moz-transform: translate3d(0, 0, 0);
-  -ms-transform: translate3d(0, 0, 0);
-  -o-transform: translate3d(0, 0, 0);
-  transform: translate3d(0, 0, 0);
-}
-.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
-  border: solid 1px #ccc;
-  border-radius: 0.5em;
-  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
-}
-
-.oo-ui-icon-check {
-  background-image: /* @embed */ url(themes/minerva/images/icons/check.svg);
-}
-.oo-ui-image-invert .oo-ui-icon-check,
-.oo-ui-image-invert.oo-ui-icon-check {
-  background-image: /* @embed */ url(themes/minerva/images/icons/check-invert.svg);
-}
index 91f1c2e..42743f5 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (26dadbc60f)
+ * OOjs UI v0.1.0-pre (0d358b167a)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-10-06T16:03:39Z
+ * Date: 2014-10-17T23:41:06Z
  */
 ( function ( OO ) {
 
@@ -701,9 +701,7 @@ OO.ui.Element = function OoUiElement( config ) {
        this.$ = config.$ || OO.ui.Element.getJQuery( document );
        this.$element = this.$( this.$.context.createElement( this.getTagName() ) );
        this.elementGroup = null;
-       this.debouncedUpdateThemeClassesHandler = OO.ui.bind(
-               this.debouncedUpdateThemeClasses, this
-       );
+       this.debouncedUpdateThemeClassesHandler = this.debouncedUpdateThemeClasses.bind( this );
        this.updateThemeClassesPending = false;
 
        // Initialization
@@ -727,7 +725,7 @@ OO.initClass( OO.ui.Element );
 /**
  * HTML tag name.
  *
- * This may be ignored if getTagName is overridden.
+ * This may be ignored if #getTagName is overridden.
  *
  * @static
  * @inheritable
@@ -865,15 +863,35 @@ OO.ui.Element.getFrameOffset = function ( from, to, offset ) {
 /**
  * Get the offset between two elements.
  *
+ * The two elements may be in a different frame, but in that case the frame $element is in must
+ * be contained in the frame $anchor is in.
+ *
  * @static
- * @param {jQuery} $from
- * @param {jQuery} $to
+ * @param {jQuery} $element Element whose position to get
+ * @param {jQuery} $anchor Element to get $element's position relative to
  * @return {Object} Translated position coordinates, containing top and left properties
  */
-OO.ui.Element.getRelativePosition = function ( $from, $to ) {
-       var from = $from.offset(),
-               to = $to.offset();
-       return { top: Math.round( from.top - to.top ), left: Math.round( from.left - to.left ) };
+OO.ui.Element.getRelativePosition = function ( $element, $anchor ) {
+       var iframe, iframePos,
+               pos = $element.offset(),
+               anchorPos = $anchor.offset(),
+               elementDocument = this.getDocument( $element ),
+               anchorDocument = this.getDocument( $anchor );
+
+       // If $element isn't in the same document as $anchor, traverse up
+       while ( elementDocument !== anchorDocument ) {
+               iframe = elementDocument.defaultView.frameElement;
+               if ( !iframe ) {
+                       throw new Error( '$element frame is not contained in $anchor frame' );
+               }
+               iframePos = $( iframe ).offset();
+               pos.left += iframePos.left;
+               pos.top += iframePos.top;
+               elementDocument = iframe.ownerDocument;
+       }
+       pos.left -= anchorPos.left;
+       pos.top -= anchorPos.top;
+       return pos;
 };
 
 /**
@@ -1086,6 +1104,26 @@ OO.ui.Element.offDOMEvent = function ( el, event, callback ) {
 
 /* Methods */
 
+/**
+ * Check if element supports one or more methods.
+ *
+ * @param {string|string[]} methods Method or list of methods to check
+ * @return boolean All methods are supported
+ */
+OO.ui.Element.prototype.supports = function ( methods ) {
+       var i, len,
+               support = 0;
+
+       methods = $.isArray( methods ) ? methods : [ methods ];
+       for ( i = 0, len = methods.length; i < len; i++ ) {
+               if ( $.isFunction( this[methods[i]] ) ) {
+                       support++;
+               }
+       }
+
+       return methods.length === support;
+};
+
 /**
  * Update the theme-provided classes.
  *
@@ -1900,29 +1938,21 @@ OO.ui.Window.prototype.initialize = function () {
        this.$head = this.$( '<div>' );
        this.$body = this.$( '<div>' );
        this.$foot = this.$( '<div>' );
-       this.$focusTrap = this.$( '<div>' ).prop( 'tabIndex', 0 );
+       this.$innerOverlay = this.$( '<div>' );
 
        // Events
-       this.$element.on( 'mousedown', OO.ui.bind( this.onMouseDown, this ) );
+       this.$element.on( 'mousedown', this.onMouseDown.bind( this ) );
 
        // Initialization
        this.$head.addClass( 'oo-ui-window-head' );
        this.$body.addClass( 'oo-ui-window-body' );
        this.$foot.addClass( 'oo-ui-window-foot' );
-       this.$focusTrap.addClass( 'oo-ui-window-focustrap' );
-       this.$content.append( this.$head, this.$body, this.$foot, this.$focusTrap );
+       this.$innerOverlay.addClass( 'oo-ui-window-inner-overlay' );
+       this.$content.append( this.$head, this.$body, this.$foot, this.$innerOverlay );
 
        return this;
 };
 
-/**
- * Called when someone tries to focus the hidden element at the end of the dialog.
- * Sends focus back to the start of the dialog.
- */
-OO.ui.Window.prototype.onFocusTrapFocused = function () {
-       this.$content.find( ':focusable:first' ).focus();
-};
-
 /**
  * Open window.
  *
@@ -1965,8 +1995,6 @@ OO.ui.Window.prototype.setup = function ( data ) {
 
        this.$element.show();
        this.visible = true;
-       this.focusTrapHandler = OO.ui.bind( this.onFocusTrapFocused, this );
-       this.$focusTrap.on( 'focus', this.focusTrapHandler );
        this.getSetupProcess( data ).execute().done( function () {
                // Force redraw by asking the browser to measure the elements' widths
                win.$element.addClass( 'oo-ui-window-setup' ).width();
@@ -2045,15 +2073,14 @@ OO.ui.Window.prototype.teardown = function ( data ) {
        var win = this,
                deferred = $.Deferred();
 
-       this.getTeardownProcess( data ).execute().done( OO.ui.bind( function () {
+       this.getTeardownProcess( data ).execute().done( function () {
                // Force redraw by asking the browser to measure the elements' widths
                win.$element.removeClass( 'oo-ui-window-setup' ).width();
                win.$content.removeClass( 'oo-ui-window-content-setup' ).width();
                win.$element.hide();
-               this.$focusTrap.off( 'focus', this.focusTrapHandler );
                win.visible = false;
                deferred.resolve();
-       }, this ) );
+       } );
 
        return deferred.promise();
 };
@@ -2386,7 +2413,7 @@ OO.ui.Dialog.prototype.initialize = function () {
 
        // Events
        if ( this.constructor.static.escapable ) {
-               this.$document.on( 'keydown', OO.ui.bind( this.onDocumentKeyDown, this ) );
+               this.$document.on( 'keydown', this.onDocumentKeyDown.bind( this ) );
        }
 
        // Initialization
@@ -2426,7 +2453,7 @@ OO.ui.Dialog.prototype.detachActions = function () {
 OO.ui.Dialog.prototype.executeAction = function ( action ) {
        this.pushPending();
        return this.getActionProcess( action ).execute()
-               .always( OO.ui.bind( this.popPending, this ) );
+               .always( this.popPending.bind( this ) );
 };
 
 /**
@@ -2498,10 +2525,10 @@ OO.ui.WindowManager = function OoUiWindowManager( config ) {
        this.$ariaHidden = null;
        this.requestedSize = null;
        this.onWindowResizeTimeout = null;
-       this.onWindowResizeHandler = OO.ui.bind( this.onWindowResize, this );
-       this.afterWindowResizeHandler = OO.ui.bind( this.afterWindowResize, this );
-       this.onWindowMouseWheelHandler = OO.ui.bind( this.onWindowMouseWheel, this );
-       this.onDocumentKeyDownHandler = OO.ui.bind( this.onDocumentKeyDown, this );
+       this.onWindowResizeHandler = this.onWindowResize.bind( this );
+       this.afterWindowResizeHandler = this.afterWindowResize.bind( this );
+       this.onWindowMouseWheelHandler = this.onWindowMouseWheel.bind( this );
+       this.onDocumentKeyDownHandler = this.onDocumentKeyDown.bind( this );
 
        // Initialization
        this.$element
@@ -2615,8 +2642,10 @@ OO.ui.WindowManager.prototype.afterWindowResize = function () {
  *
  * @param {jQuery.Event} e Mouse wheel event
  */
-OO.ui.WindowManager.prototype.onWindowMouseWheel = function () {
-       return false;
+OO.ui.WindowManager.prototype.onWindowMouseWheel = function ( e ) {
+       // Kill all events in the parent window if the child window is isolated,
+       // or if the event didn't come from the child window
+       return !( this.shouldIsolate() || !$.contains( this.getCurrentWindow().$frame[0], e.target ) );
 };
 
 /**
@@ -2634,8 +2663,9 @@ OO.ui.WindowManager.prototype.onDocumentKeyDown = function ( e ) {
                case OO.ui.Keys.UP:
                case OO.ui.Keys.RIGHT:
                case OO.ui.Keys.DOWN:
-                       // Prevent any key events that might cause scrolling
-                       return false;
+                       // Kill all events in the parent window if the child window is isolated,
+                       // or if the event didn't come from the child window
+                       return !( this.shouldIsolate() || !$.contains( this.getCurrentWindow().$frame[0], e.target ) );
        }
 };
 
@@ -2877,7 +2907,7 @@ OO.ui.WindowManager.prototype.closeWindow = function ( win, data ) {
        var manager = this,
                preparing = [],
                closing = $.Deferred(),
-               opened = this.opened;
+               opened;
 
        // Argument handling
        if ( typeof win === 'string' ) {
@@ -2914,6 +2944,7 @@ OO.ui.WindowManager.prototype.closeWindow = function ( win, data ) {
                        manager.closing = closing;
                        manager.preparingToClose = null;
                        manager.emit( 'closing', win, closing, data );
+                       opened = manager.opened;
                        manager.opened = null;
                        opened.resolve( closing.promise(), data );
                        setTimeout( function () {
@@ -2995,7 +3026,7 @@ OO.ui.WindowManager.prototype.removeWindows = function ( names ) {
                if ( !win ) {
                        throw new Error( 'Cannot remove window' );
                }
-               promises.push( this.closeWindow( name ).then( OO.ui.bind( cleanup, null, name, win ) ) );
+               promises.push( this.closeWindow( name ).then( cleanup.bind( null, name, win ) ) );
        }
 
        return $.when.apply( $, promises );
@@ -3562,8 +3593,8 @@ OO.ui.ButtonElement = function OoUiButtonElement( config ) {
        this.tabIndex = null;
        this.accessKey = null;
        this.active = false;
-       this.onMouseUpHandler = OO.ui.bind( this.onMouseUp, this );
-       this.onMouseDownHandler = OO.ui.bind( this.onMouseDown, this );
+       this.onMouseUpHandler = this.onMouseUp.bind( this );
+       this.onMouseDownHandler = this.onMouseDown.bind( this );
 
        // Initialization
        this.$element.addClass( 'oo-ui-buttonElement' );
@@ -3850,7 +3881,7 @@ OO.ui.GroupElement.prototype.aggregate = function ( events ) {
  *
  * Adding an existing item (by value) will move it.
  *
- * @param {OO.ui.Element[]} items Item
+ * @param {OO.ui.Element[]} items Items
  * @param {number} [index] Index to insert items at
  * @chainable
  */
@@ -4732,8 +4763,8 @@ OO.ui.ClippableElement = function OoUiClippableElement( config ) {
        this.$clippableWindow = null;
        this.idealWidth = null;
        this.idealHeight = null;
-       this.onClippableContainerScrollHandler = OO.ui.bind( this.clip, this );
-       this.onClippableWindowResizeHandler = OO.ui.bind( this.clip, this );
+       this.onClippableContainerScrollHandler = this.clip.bind( this );
+       this.onClippableWindowResizeHandler = this.clip.bind( this );
 
        // Initialization
        this.setClippableElement( config.$clippable || this.$element );
@@ -5201,7 +5232,7 @@ OO.ui.Toolbar = function OoUiToolbar( toolFactory, toolGroupFactory, config ) {
        // Events
        this.$element
                .add( this.$bar ).add( this.$group ).add( this.$actions )
-               .on( 'mousedown touchstart', OO.ui.bind( this.onPointerDown, this ) );
+               .on( 'mousedown touchstart', this.onPointerDown.bind( this ) );
 
        // Initialization
        this.$group.addClass( 'oo-ui-toolbar-tools' );
@@ -5413,14 +5444,14 @@ OO.ui.ToolGroup = function OoUiToolGroup( toolbar, config ) {
        this.exclude = config.exclude || [];
        this.promote = config.promote || [];
        this.demote = config.demote || [];
-       this.onCapturedMouseUpHandler = OO.ui.bind( this.onCapturedMouseUp, this );
+       this.onCapturedMouseUpHandler = this.onCapturedMouseUp.bind( this );
 
        // Events
        this.$element.on( {
-               'mousedown touchstart': OO.ui.bind( this.onPointerDown, this ),
-               'mouseup touchend': OO.ui.bind( this.onPointerUp, this ),
-               mouseover: OO.ui.bind( this.onMouseOver, this ),
-               mouseout: OO.ui.bind( this.onMouseOut, this )
+               'mousedown touchstart': this.onPointerDown.bind( this ),
+               'mouseup touchend': this.onPointerUp.bind( this ),
+               mouseover: this.onMouseOver.bind( this ),
+               mouseout: this.onMouseOut.bind( this )
        } );
        this.toolbar.getToolFactory().connect( this, { register: 'onToolFactoryRegister' } );
        this.aggregate( { disable: 'itemDisable' } );
@@ -6073,7 +6104,7 @@ OO.ui.ProcessDialog.prototype.attachActions = function () {
  */
 OO.ui.ProcessDialog.prototype.executeAction = function ( action ) {
        OO.ui.ProcessDialog.super.prototype.executeAction.call( this, action )
-               .fail( OO.ui.bind( this.showErrors, this ) );
+               .fail( this.showErrors.bind( this ) );
 };
 
 /**
@@ -6182,7 +6213,7 @@ OO.ui.BookletLayout = function OoUiBookletLayout( config ) {
        }
        if ( this.autoFocus ) {
                // Event 'focus' does not bubble, but 'focusin' does
-               this.stackLayout.onDOMEvent( 'focusin', OO.ui.bind( this.onStackLayoutFocus, this ) );
+               this.stackLayout.onDOMEvent( 'focusin', this.onStackLayoutFocus.bind( this ) );
        }
 
        // Initialization
@@ -6569,18 +6600,18 @@ OO.ui.BookletLayout.prototype.updateOutlineWidget = function () {
  *    scanning for a specific label in a form with many fields
  *  - right: Label is before the field and aligned toward it, best for forms the user is very
  *    familiar with and will tab through field checking quickly to verify which field they are in
- *  - top: Label is before the field and above it, best for when the use will need to fill out all
+ *  - top: Label is before the field and above it, best for when the user will need to fill out all
  *    fields from top to bottom in a form with few fields
  *  - inline: Label is after the field and aligned toward it, best for small boolean fields like
  *    checkboxes or radio buttons
  *
  * @constructor
- * @param {OO.ui.Widget} field Field widget
+ * @param {OO.ui.Widget} fieldWidget Field widget
  * @param {Object} [config] Configuration options
  * @cfg {string} [align='left'] Alignment mode, either 'left', 'right', 'top' or 'inline'
  * @cfg {string} [help] Explanatory text shown as a '?' icon.
  */
-OO.ui.FieldLayout = function OoUiFieldLayout( field, config ) {
+OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) {
        // Config initialization
        config = $.extend( { align: 'left' }, config );
 
@@ -6592,7 +6623,7 @@ OO.ui.FieldLayout = function OoUiFieldLayout( field, config ) {
 
        // Properties
        this.$field = this.$( '<div>' );
-       this.field = field;
+       this.fieldWidget = fieldWidget;
        this.align = null;
        if ( config.help ) {
                this.popupButtonWidget = new OO.ui.PopupButtonWidget( {
@@ -6613,17 +6644,17 @@ OO.ui.FieldLayout = function OoUiFieldLayout( field, config ) {
        }
 
        // Events
-       if ( this.field instanceof OO.ui.InputWidget ) {
-               this.$label.on( 'click', OO.ui.bind( this.onLabelClick, this ) );
+       if ( this.fieldWidget instanceof OO.ui.InputWidget ) {
+               this.$label.on( 'click', this.onLabelClick.bind( this ) );
        }
-       this.field.connect( this, { disable: 'onFieldDisable' } );
+       this.fieldWidget.connect( this, { disable: 'onFieldDisable' } );
 
        // Initialization
        this.$element.addClass( 'oo-ui-fieldLayout' );
        this.$field
                .addClass( 'oo-ui-fieldLayout-field' )
-               .toggleClass( 'oo-ui-fieldLayout-disable', this.field.isDisabled() )
-               .append( this.field.$element );
+               .toggleClass( 'oo-ui-fieldLayout-disable', this.fieldWidget.isDisabled() )
+               .append( this.fieldWidget.$element );
        this.setAlignment( config.align );
 };
 
@@ -6649,7 +6680,7 @@ OO.ui.FieldLayout.prototype.onFieldDisable = function ( value ) {
  * @param {jQuery.Event} e Mouse click event
  */
 OO.ui.FieldLayout.prototype.onLabelClick = function () {
-       this.field.simulateLabelClick();
+       this.fieldWidget.simulateLabelClick();
        return false;
 };
 
@@ -6659,7 +6690,7 @@ OO.ui.FieldLayout.prototype.onLabelClick = function () {
  * @return {OO.ui.Widget} Field widget
  */
 OO.ui.FieldLayout.prototype.getField = function () {
-       return this.field;
+       return this.fieldWidget;
 };
 
 /**
@@ -6680,17 +6711,16 @@ OO.ui.FieldLayout.prototype.setAlignment = function ( value ) {
                } else {
                        this.$element.append( this.$help, this.$label, this.$field );
                }
-               // Set classes
+               // Set classes. The following classes can be used here:
+               // * oo-ui-fieldLayout-align-left
+               // * oo-ui-fieldLayout-align-right
+               // * oo-ui-fieldLayout-align-top
+               // * oo-ui-fieldLayout-align-inline
                if ( this.align ) {
                        this.$element.removeClass( 'oo-ui-fieldLayout-align-' + this.align );
                }
+               this.$element.addClass( 'oo-ui-fieldLayout-align-' + value );
                this.align = value;
-               // The following classes can be used here:
-               // oo-ui-fieldLayout-align-left
-               // oo-ui-fieldLayout-align-right
-               // oo-ui-fieldLayout-align-top
-               // oo-ui-fieldLayout-align-inline
-               this.$element.addClass( 'oo-ui-fieldLayout-align-' + this.align );
        }
 
        return this;
@@ -6709,7 +6739,6 @@ OO.ui.FieldLayout.prototype.setAlignment = function ( value ) {
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string} [icon] Symbolic icon name
  * @cfg {OO.ui.FieldLayout[]} [items] Items to add
  */
 OO.ui.FieldsetLayout = function OoUiFieldsetLayout( config ) {
@@ -6740,10 +6769,6 @@ OO.mixinClass( OO.ui.FieldsetLayout, OO.ui.IconElement );
 OO.mixinClass( OO.ui.FieldsetLayout, OO.ui.LabelElement );
 OO.mixinClass( OO.ui.FieldsetLayout, OO.ui.GroupElement );
 
-/* Static Properties */
-
-OO.ui.FieldsetLayout.static.tagName = 'div';
-
 /**
  * Layout with an HTML form.
  *
@@ -6761,7 +6786,7 @@ OO.ui.FormLayout = function OoUiFormLayout( config ) {
        OO.ui.FormLayout.super.call( this, config );
 
        // Events
-       this.$element.on( 'submit', OO.ui.bind( this.onFormSubmit, this ) );
+       this.$element.on( 'submit', this.onFormSubmit.bind( this ) );
 
        // Initialization
        this.$element.addClass( 'oo-ui-formLayout' );
@@ -6804,7 +6829,7 @@ OO.ui.FormLayout.prototype.onFormSubmit = function () {
  * @param {OO.ui.PanelLayout[]} panels Panels in the grid
  * @param {Object} [config] Configuration options
  * @cfg {number[]} [widths] Widths of columns as ratios
- * @cfg {number[]} [heights] Heights of columns as ratios
+ * @cfg {number[]} [heights] Heights of rows as ratios
  */
 OO.ui.GridLayout = function OoUiGridLayout( panels, config ) {
        var i, len, widths;
@@ -6830,10 +6855,7 @@ OO.ui.GridLayout = function OoUiGridLayout( panels, config ) {
                this.layout( config.widths || [ 1 ], config.heights || [ 1 ] );
        } else {
                // Arrange in columns by default
-               widths = [];
-               for ( i = 0, len = this.panels.length; i < len; i++ ) {
-                       widths[i] = 1;
-               }
+               widths = this.panels.map( function () { return 1; } );
                this.layout( widths, [ 1 ] );
        }
 };
@@ -6852,10 +6874,6 @@ OO.inheritClass( OO.ui.GridLayout, OO.ui.Layout );
  * @event update
  */
 
-/* Static Properties */
-
-OO.ui.GridLayout.static.tagName = 'div';
-
 /* Methods */
 
 /**
@@ -6905,27 +6923,22 @@ OO.ui.GridLayout.prototype.layout = function ( widths, heights ) {
  * @fires update
  */
 OO.ui.GridLayout.prototype.update = function () {
-       var x, y, panel,
+       var x, y, panel, width, height, dimensions,
                i = 0,
-               left = 0,
                top = 0,
-               dimensions,
-               width = 0,
-               height = 0,
+               left = 0,
                cols = this.widths.length,
                rows = this.heights.length;
 
        for ( y = 0; y < rows; y++ ) {
                height = this.heights[y];
                for ( x = 0; x < cols; x++ ) {
-                       panel = this.panels[i];
                        width = this.widths[x];
+                       panel = this.panels[i];
                        dimensions = {
                                width: Math.round( width * 100 ) + '%',
                                height: Math.round( height * 100 ) + '%',
-                               top: Math.round( top * 100 ) + '%',
-                               // HACK: Work around IE bug by setting visibility: hidden; if width or height is zero
-                               visibility: width === 0 || height === 0 ? 'hidden' : ''
+                               top: Math.round( top * 100 ) + '%'
                        };
                        // If RTL, reverse:
                        if ( OO.ui.Element.getDir( this.$.context ) === 'rtl' ) {
@@ -6933,6 +6946,10 @@ OO.ui.GridLayout.prototype.update = function () {
                        } else {
                                dimensions.left = Math.round( left * 100 ) + '%';
                        }
+                       // HACK: Work around IE bug by setting visibility: hidden; if width or height is zero
+                       if ( width === 0 || height === 0 ) {
+                               dimensions.visibility = 'hidden';
+                       }
                        panel.$element.css( dimensions );
                        i++;
                        left += width;
@@ -6954,7 +6971,7 @@ OO.ui.GridLayout.prototype.update = function () {
  * @return {OO.ui.PanelLayout} The panel at the given postion
  */
 OO.ui.GridLayout.prototype.getPanel = function ( x, y ) {
-       return this.panels[( x * this.widths.length ) + y];
+       return this.panels[ ( x * this.widths.length ) + y ];
 };
 
 /**
@@ -6971,7 +6988,11 @@ OO.ui.GridLayout.prototype.getPanel = function ( x, y ) {
  */
 OO.ui.PanelLayout = function OoUiPanelLayout( config ) {
        // Config initialization
-       config = config || {};
+       config = $.extend( {
+               scrollable: false,
+               padded: false,
+               expanded: true
+       }, config );
 
        // Parent constructor
        OO.ui.PanelLayout.super.call( this, config );
@@ -6981,12 +7002,10 @@ OO.ui.PanelLayout = function OoUiPanelLayout( config ) {
        if ( config.scrollable ) {
                this.$element.addClass( 'oo-ui-panelLayout-scrollable' );
        }
-
        if ( config.padded ) {
                this.$element.addClass( 'oo-ui-panelLayout-padded' );
        }
-
-       if ( config.expanded === undefined || config.expanded ) {
+       if ( config.expanded ) {
                this.$element.addClass( 'oo-ui-panelLayout-expanded' );
        }
 };
@@ -7344,13 +7363,13 @@ OO.ui.PopupToolGroup = function OoUiPopupToolGroup( toolbar, config ) {
        // Properties
        this.active = false;
        this.dragging = false;
-       this.onBlurHandler = OO.ui.bind( this.onBlur, this );
+       this.onBlurHandler = this.onBlur.bind( this );
        this.$handle = this.$( '<span>' );
 
        // Events
        this.$handle.on( {
-               'mousedown touchstart': OO.ui.bind( this.onHandlePointerDown, this ),
-               'mouseup touchend': OO.ui.bind( this.onHandlePointerUp, this )
+               'mousedown touchstart': this.onHandlePointerDown.bind( this ),
+               'mouseup touchend': this.onHandlePointerUp.bind( this )
        } );
 
        // Initialization
@@ -7747,9 +7766,9 @@ OO.ui.LookupInputWidget = function OoUiLookupInputWidget( input, config ) {
        this.$overlay.append( this.lookupMenu.$element );
 
        this.lookupInput.$input.on( {
-               focus: OO.ui.bind( this.onLookupInputFocus, this ),
-               blur: OO.ui.bind( this.onLookupInputBlur, this ),
-               mousedown: OO.ui.bind( this.onLookupInputMouseDown, this )
+               focus: this.onLookupInputFocus.bind( this ),
+               blur: this.onLookupInputBlur.bind( this ),
+               mousedown: this.onLookupInputMouseDown.bind( this )
        } );
        this.lookupInput.connect( this, { change: 'onLookupInputChange' } );
 
@@ -8185,7 +8204,7 @@ OO.ui.ButtonWidget = function OoUiButtonWidget( config ) {
        OO.ui.IconElement.call( this, config );
        OO.ui.IndicatorElement.call( this, config );
        OO.ui.LabelElement.call( this, config );
-       OO.ui.TitledElement.call( this, config, $.extend( {}, config, { $titled: this.$button } ) );
+       OO.ui.TitledElement.call( this, $.extend( {}, config, { $titled: this.$button } ) );
        OO.ui.FlaggedElement.call( this, config );
 
        // Properties
@@ -8195,8 +8214,8 @@ OO.ui.ButtonWidget = function OoUiButtonWidget( config ) {
 
        // Events
        this.$button.on( {
-               click: OO.ui.bind( this.onClick, this ),
-               keypress: OO.ui.bind( this.onKeyPress, this )
+               click: this.onClick.bind( this ),
+               keypress: this.onKeyPress.bind( this )
        } );
 
        // Initialization
@@ -8693,7 +8712,7 @@ OO.ui.InlineMenuWidget = function OoUiInlineMenuWidget( config ) {
        this.$handle = this.$( '<span>' );
 
        // Events
-       this.$element.on( { click: OO.ui.bind( this.onClick, this ) } );
+       this.$element.on( { click: this.onClick.bind( this ) } );
        this.menu.connect( this, { select: 'onMenuSelect' } );
 
        // Initialization
@@ -8799,7 +8818,7 @@ OO.ui.InputWidget = function OoUiInputWidget( config ) {
        this.inputFilter = config.inputFilter;
 
        // Events
-       this.$input.on( 'keydown mouseup cut paste change input select', OO.ui.bind( this.onEdit, this ) );
+       this.$input.on( 'keydown mouseup cut paste change input select', this.onEdit.bind( this ) );
 
        // Initialization
        this.$input
@@ -9000,8 +9019,6 @@ OO.ui.CheckboxInputWidget = function OoUiCheckboxInputWidget( config ) {
 
 OO.inheritClass( OO.ui.CheckboxInputWidget, OO.ui.InputWidget );
 
-/* Events */
-
 /* Methods */
 
 /**
@@ -9023,7 +9040,9 @@ OO.ui.CheckboxInputWidget.prototype.getValue = function () {
 };
 
 /**
- * Set value
+ * Set checked state of the checkbox
+ *
+ * @param {boolean} value New value
  */
 OO.ui.CheckboxInputWidget.prototype.setValue = function ( value ) {
        value = !!value;
@@ -9087,12 +9106,12 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
 
        // Events
        this.$input.on( {
-               keypress: OO.ui.bind( this.onKeyPress, this ),
-               blur: OO.ui.bind( this.setValidityFlag, this )
+               keypress: this.onKeyPress.bind( this ),
+               blur: this.setValidityFlag.bind( this )
        } );
-       this.$element.on( 'DOMNodeInsertedIntoDocument', OO.ui.bind( this.onElementAttach, this ) );
-       this.$icon.on( 'mousedown', OO.ui.bind( this.onIconMouseDown, this ) );
-       this.$indicator.on( 'mousedown', OO.ui.bind( this.onIndicatorMouseDown, this ) );
+       this.$element.on( 'DOMNodeInsertedIntoDocument', this.onElementAttach.bind( this ) );
+       this.$icon.on( 'mousedown', this.onIconMouseDown.bind( this ) );
+       this.$indicator.on( 'mousedown', this.onIndicatorMouseDown.bind( this ) );
 
        // Initialization
        this.$element
@@ -9310,9 +9329,10 @@ OO.ui.TextInputWidget.prototype.setValidation = function ( validate ) {
  * Sets the 'invalid' flag appropriately.
  */
 OO.ui.TextInputWidget.prototype.setValidityFlag = function () {
-       this.isValid().done( OO.ui.bind( function ( valid ) {
-               this.setFlags( { invalid: !valid } );
-       }, this ) );
+       var widget = this;
+       this.isValid().done( function ( valid ) {
+               widget.setFlags( { invalid: !valid } );
+       } );
 };
 
 /**
@@ -9469,13 +9489,14 @@ OO.ui.LabelWidget = function OoUiLabelWidget( config ) {
 
        // Mixin constructors
        OO.ui.LabelElement.call( this, $.extend( {}, config, { $label: this.$element } ) );
+       OO.ui.TitledElement.call( this, config );
 
        // Properties
        this.input = config.input;
 
        // Events
        if ( this.input instanceof OO.ui.InputWidget ) {
-               this.$element.on( 'click', OO.ui.bind( this.onClick, this ) );
+               this.$element.on( 'click', this.onClick.bind( this ) );
        }
 
        // Initialization
@@ -9486,6 +9507,7 @@ OO.ui.LabelWidget = function OoUiLabelWidget( config ) {
 
 OO.inheritClass( OO.ui.LabelWidget, OO.ui.Widget );
 OO.mixinClass( OO.ui.LabelWidget, OO.ui.LabelElement );
+OO.mixinClass( OO.ui.LabelWidget, OO.ui.TitledElement );
 
 /* Static Properties */
 
@@ -10021,7 +10043,7 @@ OO.ui.PopupWidget = function OoUiPopupWidget( config ) {
        this.height = config.height !== undefined ? config.height : null;
        this.align = config.align || 'center';
        this.closeButton = new OO.ui.ButtonWidget( { $: this.$, framed: false, icon: 'close' } );
-       this.onMouseDownHandler = OO.ui.bind( this.onMouseDown, this );
+       this.onMouseDownHandler = this.onMouseDown.bind( this );
 
        // Events
        this.closeButton.connect( this, { click: 'onCloseButtonClick' } );
@@ -10306,7 +10328,7 @@ OO.ui.SearchWidget = function OoUiSearchWidget( config ) {
                highlight: 'onResultsHighlight',
                select: 'onResultsSelect'
        } );
-       this.query.$input.on( 'keydown', OO.ui.bind( this.onQueryKeydown, this ) );
+       this.query.$input.on( 'keydown', this.onQueryKeydown.bind( this ) );
 
        // Initialization
        this.$query
@@ -10450,14 +10472,14 @@ OO.ui.SelectWidget = function OoUiSelectWidget( config ) {
        this.pressed = false;
        this.selecting = null;
        this.hashes = {};
-       this.onMouseUpHandler = OO.ui.bind( this.onMouseUp, this );
-       this.onMouseMoveHandler = OO.ui.bind( this.onMouseMove, this );
+       this.onMouseUpHandler = this.onMouseUp.bind( this );
+       this.onMouseMoveHandler = this.onMouseMove.bind( this );
 
        // Events
        this.$element.on( {
-               mousedown: OO.ui.bind( this.onMouseDown, this ),
-               mouseover: OO.ui.bind( this.onMouseOver, this ),
-               mouseleave: OO.ui.bind( this.onMouseLeave, this )
+               mousedown: this.onMouseDown.bind( this ),
+               mouseover: this.onMouseOver.bind( this ),
+               mouseleave: this.onMouseLeave.bind( this )
        } );
 
        // Initialization
@@ -11000,8 +11022,8 @@ OO.ui.MenuWidget = function OoUiMenuWidget( config ) {
        this.$widget = config.widget ? config.widget.$element : null;
        this.$previousFocus = null;
        this.isolated = !config.input;
-       this.onKeyDownHandler = OO.ui.bind( this.onKeyDown, this );
-       this.onDocumentMouseDownHandler = OO.ui.bind( this.onDocumentMouseDown, this );
+       this.onKeyDownHandler = this.onKeyDown.bind( this );
+       this.onDocumentMouseDownHandler = this.onDocumentMouseDown.bind( this );
 
        // Initialization
        this.$element
@@ -11190,7 +11212,9 @@ OO.ui.MenuWidget.prototype.toggle = function ( visible ) {
        visible = ( visible === undefined ? !this.visible : !!visible ) && !!this.items.length;
 
        var i, len,
-               change = visible !== this.isVisible();
+               change = visible !== this.isVisible(),
+               elementDoc = this.getElementDocument(),
+               widgetDoc = this.$widget ? this.$widget[0].ownerDocument : null;
 
        // Parent method
        OO.ui.MenuWidget.super.prototype.toggle.call( this, visible );
@@ -11214,9 +11238,15 @@ OO.ui.MenuWidget.prototype.toggle = function ( visible ) {
 
                        // Auto-hide
                        if ( this.autoHide ) {
-                               this.getElementDocument().addEventListener(
+                               elementDoc.addEventListener(
                                        'mousedown', this.onDocumentMouseDownHandler, true
                                );
+                               // Support $widget being in a different document
+                               if ( widgetDoc && widgetDoc !== elementDoc ) {
+                                       widgetDoc.addEventListener(
+                                               'mousedown', this.onDocumentMouseDownHandler, true
+                                       );
+                               }
                        }
                } else {
                        this.unbindKeyDownListener();
@@ -11224,9 +11254,15 @@ OO.ui.MenuWidget.prototype.toggle = function ( visible ) {
                                this.$previousFocus[0].focus();
                                this.$previousFocus = null;
                        }
-                       this.getElementDocument().removeEventListener(
+                       elementDoc.removeEventListener(
                                'mousedown', this.onDocumentMouseDownHandler, true
                        );
+                       // Support $widget being in a different document
+                       if ( widgetDoc && widgetDoc !== elementDoc ) {
+                               widgetDoc.removeEventListener(
+                                       'mousedown', this.onDocumentMouseDownHandler, true
+                               );
+                       }
                        this.toggleClipping( false );
                }
        }
@@ -11256,7 +11292,7 @@ OO.ui.TextInputMenuWidget = function OoUiTextInputMenuWidget( input, config ) {
        // Properties
        this.input = input;
        this.$container = config.$container || this.input.$element;
-       this.onWindowResizeHandler = OO.ui.bind( this.onWindowResize, this );
+       this.onWindowResizeHandler = this.onWindowResize.bind( this );
 
        // Initialization
        this.$element.addClass( 'oo-ui-textInputMenuWidget' );
@@ -11281,7 +11317,7 @@ OO.ui.TextInputMenuWidget.prototype.onWindowResize = function () {
  * @inheritdoc
  */
 OO.ui.TextInputMenuWidget.prototype.toggle = function ( visible ) {
-       visible = !!visible;
+       visible = visible === undefined ? !this.isVisible() : !!visible;
 
        var change = visible !== this.isVisible();
 
@@ -11313,30 +11349,14 @@ OO.ui.TextInputMenuWidget.prototype.toggle = function ( visible ) {
  * @chainable
  */
 OO.ui.TextInputMenuWidget.prototype.position = function () {
-       var frameOffset,
-               $container = this.$container,
-               dimensions = $container.offset();
+       var $container = this.$container,
+               pos = OO.ui.Element.getRelativePosition( $container, this.$element.offsetParent() );
 
        // Position under input
-       dimensions.top += $container.height();
+       pos.top += $container.height();
+       this.$element.css( pos );
 
-       // Compensate for frame position if in a different frame
-       if ( this.input.$.$iframe && this.input.$.context !== this.$element[0].ownerDocument ) {
-               frameOffset = OO.ui.Element.getRelativePosition(
-                       this.input.$.$iframe, this.$element.offsetParent()
-               );
-               dimensions.left += frameOffset.left;
-               dimensions.top += frameOffset.top;
-       } else {
-               // Fix for RTL (for some reason, no need to fix if the frameoffset is set)
-               if ( this.$element.css( 'direction' ) === 'rtl' ) {
-                       dimensions.right = this.$element.parent().position().left -
-                               $container.width() - dimensions.left;
-                       // Erase the value for 'left'
-                       delete dimensions.left;
-               }
-       }
-       this.$element.css( dimensions );
+       // Set width
        this.setIdealSize( $container.width() );
        // We updated the position, so re-evaluate the clipping state
        this.clip();
@@ -11396,7 +11416,7 @@ OO.ui.ToggleSwitchWidget = function OoUiToggleSwitchWidget( config ) {
        this.$grip = this.$( '<span>' );
 
        // Events
-       this.$element.on( 'click', OO.ui.bind( this.onClick, this ) );
+       this.$element.on( 'click', this.onClick.bind( this ) );
 
        // Initialization
        this.$glow.addClass( 'oo-ui-toggleSwitchWidget-glow' );
diff --git a/resources/lib/oojs-ui/oojs-ui.rtl.css b/resources/lib/oojs-ui/oojs-ui.rtl.css
deleted file mode 100644 (file)
index 7f1fa34..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*!
- * OOjs UI v0.1.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-09-11T19:39:50Z
- */
-/*
- * Blank theme mixins.
- *
- * Base styles invoke these mixins at the end of their definitions. Override these mixins to add
- * additional rules to the base styles.
- */
-.oo-ui-icon-add-item {
-  background-image: /* @embed */ url(images/icons/add-item.png);
-}
-.oo-ui-icon-advanced {
-  background-image: /* @embed */ url(images/icons/advanced.png);
-}
-.oo-ui-icon-alert {
-  background-image: /* @embed */ url(images/icons/alert.png);
-}
-.oo-ui-icon-check {
-  background-image: /* @embed */ url(images/icons/check.png);
-}
-.oo-ui-icon-clear {
-  background-image: /* @embed */ url(images/icons/clear.png);
-}
-.oo-ui-icon-close {
-  background-image: /* @embed */ url(images/icons/close.png);
-}
-.oo-ui-icon-code {
-  background-image: /* @embed */ url(images/icons/code.png);
-}
-.oo-ui-icon-collapse {
-  background-image: /* @embed */ url(images/icons/collapse.png);
-}
-.oo-ui-icon-comment {
-  background-image: /* @embed */ url(images/icons/comment.png);
-}
-.oo-ui-icon-expand {
-  background-image: /* @embed */ url(images/icons/expand.png);
-}
-.oo-ui-icon-help {
-  background-image: /* @embed */ url(images/icons/help.png);
-}
-.oo-ui-icon-info {
-  background-image: /* @embed */ url(images/icons/info.png);
-}
-.oo-ui-icon-link {
-  background-image: /* @embed */ url(images/icons/link.png);
-}
-.oo-ui-icon-menu {
-  background-image: /* @embed */ url(images/icons/menu.png);
-}
-.oo-ui-icon-next {
-  background-image: /* @embed */ url(images/icons/move-rtl.png);
-}
-.oo-ui-icon-picture {
-  background-image: /* @embed */ url(images/icons/picture.png);
-}
-.oo-ui-icon-previous {
-  background-image: /* @embed */ url(images/icons/move-ltr.png);
-}
-.oo-ui-icon-redo {
-  background-image: /* @embed */ url(images/icons/arched-arrow-rtl.png);
-}
-.oo-ui-icon-remove {
-  background-image: /* @embed */ url(images/icons/remove.png);
-}
-.oo-ui-icon-search {
-  background-image: /* @embed */ url(images/icons/search.png);
-}
-.oo-ui-icon-settings {
-  background-image: /* @embed */ url(images/icons/settings.png);
-}
-.oo-ui-icon-tag {
-  background-image: /* @embed */ url(images/icons/tag.png);
-}
-.oo-ui-icon-undo {
-  background-image: /* @embed */ url(images/icons/arched-arrow-ltr.png);
-}
-.oo-ui-icon-window {
-  background-image: /* @embed */ url(images/icons/window.png);
-}
-.oo-ui-indicator-alert {
-  background-image: /* @embed */ url(images/indicators/alert.png);
-}
-.oo-ui-indicator-down {
-  background-image: /* @embed */ url(images/indicators/arrow-down.png);
-}
-.oo-ui-indicator-next {
-  background-image: /* @embed */ url(images/indicators/arrow-rtl.png);
-}
-.oo-ui-indicator-previous {
-  background-image: /* @embed */ url(images/indicators/arrow-ltr.png);
-}
-.oo-ui-indicator-required {
-  background-image: /* @embed */ url(images/indicators/required.png);
-}
-.oo-ui-indicator-up {
-  background-image: /* @embed */ url(images/indicators/arrow-up.png);
-}
-.oo-ui-texture-pending {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-.oo-ui-texture-transparency {
-  background-image: /* @embed */ url(images/textures/transparency.png);
-}
diff --git a/resources/lib/oojs-ui/oojs-ui.svg.rtl.css b/resources/lib/oojs-ui/oojs-ui.svg.rtl.css
deleted file mode 100644 (file)
index 5a78d6b..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*!
- * OOjs UI v0.1.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-09-11T19:39:50Z
- */
-/*
- * Blank theme mixins.
- *
- * Base styles invoke these mixins at the end of their definitions. Override these mixins to add
- * additional rules to the base styles.
- */
-.oo-ui-icon-add-item {
-  background-image: /* @embed */ url(images/icons/add-item.svg);
-}
-.oo-ui-icon-advanced {
-  background-image: /* @embed */ url(images/icons/advanced.svg);
-}
-.oo-ui-icon-alert {
-  background-image: /* @embed */ url(images/icons/alert.svg);
-}
-.oo-ui-icon-check {
-  background-image: /* @embed */ url(images/icons/check.svg);
-}
-.oo-ui-icon-clear {
-  background-image: /* @embed */ url(images/icons/clear.svg);
-}
-.oo-ui-icon-close {
-  background-image: /* @embed */ url(images/icons/close.svg);
-}
-.oo-ui-icon-code {
-  background-image: /* @embed */ url(images/icons/code.svg);
-}
-.oo-ui-icon-collapse {
-  background-image: /* @embed */ url(images/icons/collapse.svg);
-}
-.oo-ui-icon-comment {
-  background-image: /* @embed */ url(images/icons/comment.svg);
-}
-.oo-ui-icon-expand {
-  background-image: /* @embed */ url(images/icons/expand.svg);
-}
-.oo-ui-icon-help {
-  background-image: /* @embed */ url(images/icons/help.svg);
-}
-.oo-ui-icon-info {
-  background-image: /* @embed */ url(images/icons/info.svg);
-}
-.oo-ui-icon-link {
-  background-image: /* @embed */ url(images/icons/link.svg);
-}
-.oo-ui-icon-menu {
-  background-image: /* @embed */ url(images/icons/menu.svg);
-}
-.oo-ui-icon-next {
-  background-image: /* @embed */ url(images/icons/move-rtl.svg);
-}
-.oo-ui-icon-picture {
-  background-image: /* @embed */ url(images/icons/picture.svg);
-}
-.oo-ui-icon-previous {
-  background-image: /* @embed */ url(images/icons/move-ltr.svg);
-}
-.oo-ui-icon-redo {
-  background-image: /* @embed */ url(images/icons/arched-arrow-rtl.svg);
-}
-.oo-ui-icon-remove {
-  background-image: /* @embed */ url(images/icons/remove.svg);
-}
-.oo-ui-icon-search {
-  background-image: /* @embed */ url(images/icons/search.svg);
-}
-.oo-ui-icon-settings {
-  background-image: /* @embed */ url(images/icons/settings.svg);
-}
-.oo-ui-icon-tag {
-  background-image: /* @embed */ url(images/icons/tag.svg);
-}
-.oo-ui-icon-undo {
-  background-image: /* @embed */ url(images/icons/arched-arrow-ltr.svg);
-}
-.oo-ui-icon-window {
-  background-image: /* @embed */ url(images/icons/window.svg);
-}
-.oo-ui-indicator-alert {
-  background-image: /* @embed */ url(images/indicators/alert.svg);
-}
-.oo-ui-indicator-down {
-  background-image: /* @embed */ url(images/indicators/arrow-down.svg);
-}
-.oo-ui-indicator-next {
-  background-image: /* @embed */ url(images/indicators/arrow-rtl.svg);
-}
-.oo-ui-indicator-previous {
-  background-image: /* @embed */ url(images/indicators/arrow-ltr.svg);
-}
-.oo-ui-indicator-required {
-  background-image: /* @embed */ url(images/indicators/required.svg);
-}
-.oo-ui-indicator-up {
-  background-image: /* @embed */ url(images/indicators/arrow-up.svg);
-}
-.oo-ui-texture-pending {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-.oo-ui-texture-transparency {
-  background-image: /* @embed */ url(images/textures/transparency.svg);
-}
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/add.png b/resources/lib/oojs-ui/themes/apex/images/icons/add.png
new file mode 100644 (file)
index 0000000..730d102
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/add.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/advanced.png b/resources/lib/oojs-ui/themes/apex/images/icons/advanced.png
new file mode 100644 (file)
index 0000000..514ff1d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/advanced.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/alert.png b/resources/lib/oojs-ui/themes/apex/images/icons/alert.png
new file mode 100644 (file)
index 0000000..e98a14a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/alert.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-ltr.png
new file mode 100644 (file)
index 0000000..88db108
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-rtl.png
new file mode 100644 (file)
index 0000000..0afcbfa
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/check.png b/resources/lib/oojs-ui/themes/apex/images/icons/check.png
new file mode 100644 (file)
index 0000000..9a2c9db
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/check.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/clear.png b/resources/lib/oojs-ui/themes/apex/images/icons/clear.png
new file mode 100644 (file)
index 0000000..51a33ff
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/clear.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/close.png b/resources/lib/oojs-ui/themes/apex/images/icons/close.png
new file mode 100644 (file)
index 0000000..4eedfbc
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/close.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/code.png b/resources/lib/oojs-ui/themes/apex/images/icons/code.png
new file mode 100644 (file)
index 0000000..ee58c9a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/code.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/collapse.png b/resources/lib/oojs-ui/themes/apex/images/icons/collapse.png
new file mode 100644 (file)
index 0000000..353ac79
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/collapse.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/comment.png b/resources/lib/oojs-ui/themes/apex/images/icons/comment.png
new file mode 100644 (file)
index 0000000..265a3e4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/comment.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/expand.png b/resources/lib/oojs-ui/themes/apex/images/icons/expand.png
new file mode 100644 (file)
index 0000000..9073d24
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/expand.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/help.png b/resources/lib/oojs-ui/themes/apex/images/icons/help.png
new file mode 100644 (file)
index 0000000..b80df00
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/help.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/info.png b/resources/lib/oojs-ui/themes/apex/images/icons/info.png
new file mode 100644 (file)
index 0000000..eb0fb46
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/info.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/link.png b/resources/lib/oojs-ui/themes/apex/images/icons/link.png
new file mode 100644 (file)
index 0000000..2a087a4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/link.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/menu.png b/resources/lib/oojs-ui/themes/apex/images/icons/menu.png
new file mode 100644 (file)
index 0000000..0a78119
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/menu.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/move-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/move-ltr.png
new file mode 100644 (file)
index 0000000..fc4cd39
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/move-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/move-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/move-rtl.png
new file mode 100644 (file)
index 0000000..dbce05e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/move-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/picture.png b/resources/lib/oojs-ui/themes/apex/images/icons/picture.png
new file mode 100644 (file)
index 0000000..2043424
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/picture.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/remove.png b/resources/lib/oojs-ui/themes/apex/images/icons/remove.png
new file mode 100644 (file)
index 0000000..9dc34b8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/remove.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search.png b/resources/lib/oojs-ui/themes/apex/images/icons/search.png
new file mode 100644 (file)
index 0000000..39d3ab8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/search.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/settings.png b/resources/lib/oojs-ui/themes/apex/images/icons/settings.png
new file mode 100644 (file)
index 0000000..dd2706b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/settings.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/tag.png b/resources/lib/oojs-ui/themes/apex/images/icons/tag.png
new file mode 100644 (file)
index 0000000..8e100fc
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/tag.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/window.png b/resources/lib/oojs-ui/themes/apex/images/icons/window.png
new file mode 100644 (file)
index 0000000..db726a1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/window.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/indicators/alert.png b/resources/lib/oojs-ui/themes/apex/images/indicators/alert.png
new file mode 100644 (file)
index 0000000..5bf0827
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/indicators/alert.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-down.png b/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-down.png
new file mode 100644 (file)
index 0000000..6574725
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-down.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-ltr.png b/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-ltr.png
new file mode 100644 (file)
index 0000000..7c84397
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-rtl.png b/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-rtl.png
new file mode 100644 (file)
index 0000000..5bf9064
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-up.png b/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-up.png
new file mode 100644 (file)
index 0000000..1a05ade
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-up.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/indicators/required.png b/resources/lib/oojs-ui/themes/apex/images/indicators/required.png
new file mode 100644 (file)
index 0000000..45eb03b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/indicators/required.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/textures/transparency.png b/resources/lib/oojs-ui/themes/apex/images/textures/transparency.png
new file mode 100644 (file)
index 0000000..1843f27
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/textures/transparency.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.png
new file mode 100644 (file)
index 0000000..53d6441
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.png
new file mode 100644 (file)
index 0000000..d6144e3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add.png
new file mode 100644 (file)
index 0000000..730d102
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.png
new file mode 100644 (file)
index 0000000..e074515
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.png
new file mode 100644 (file)
index 0000000..514ff1d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.png
new file mode 100644 (file)
index 0000000..5440113
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert.png
new file mode 100644 (file)
index 0000000..e98a14a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png
new file mode 100644 (file)
index 0000000..8a07140
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.png
new file mode 100644 (file)
index 0000000..88db108
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png
new file mode 100644 (file)
index 0000000..c6cbec1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.png
new file mode 100644 (file)
index 0000000..0afcbfa
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.png
new file mode 100644 (file)
index 0000000..1ff6790
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-primary.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-primary.png
new file mode 100644 (file)
index 0000000..7566598
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-primary.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check.png
new file mode 100644 (file)
index 0000000..9a2c9db
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.png
new file mode 100644 (file)
index 0000000..5668e12
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear.png
new file mode 100644 (file)
index 0000000..51a33ff
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.png
new file mode 100644 (file)
index 0000000..7b76ffe
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close.png
new file mode 100644 (file)
index 0000000..4eedfbc
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.png
new file mode 100644 (file)
index 0000000..23c5983
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code.png
new file mode 100644 (file)
index 0000000..ee58c9a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.png
new file mode 100644 (file)
index 0000000..a9d0d33
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse.png
new file mode 100644 (file)
index 0000000..353ac79
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.png
new file mode 100644 (file)
index 0000000..0ed3528
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.png
new file mode 100644 (file)
index 0000000..265a3e4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.png
new file mode 100644 (file)
index 0000000..05f7138
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand.png
new file mode 100644 (file)
index 0000000..9073d24
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-invert.png
new file mode 100644 (file)
index 0000000..185c1a2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help.png
new file mode 100644 (file)
index 0000000..b80df00
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.png
new file mode 100644 (file)
index 0000000..83b00a2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/info.png
new file mode 100644 (file)
index 0000000..eb0fb46
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/info.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-invert.png
new file mode 100644 (file)
index 0000000..d920459
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link.png
new file mode 100644 (file)
index 0000000..2a087a4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.png
new file mode 100644 (file)
index 0000000..0400c19
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.png
new file mode 100644 (file)
index 0000000..0a78119
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.png
new file mode 100644 (file)
index 0000000..7c9bdc1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr.png
new file mode 100644 (file)
index 0000000..fc4cd39
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.png
new file mode 100644 (file)
index 0000000..e97d37b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl.png
new file mode 100644 (file)
index 0000000..dbce05e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/picture-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/picture-invert.png
new file mode 100644 (file)
index 0000000..d6dc62c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/picture-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/picture.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/picture.png
new file mode 100644 (file)
index 0000000..2043424
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/picture.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/remove-destructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/remove-destructive.png
new file mode 100644 (file)
index 0000000..8b6799f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/remove-destructive.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/remove-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/remove-invert.png
new file mode 100644 (file)
index 0000000..3343de8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/remove-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/remove.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/remove.png
new file mode 100644 (file)
index 0000000..9dc34b8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/remove.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-invert.png
new file mode 100644 (file)
index 0000000..3e15daf
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search.png
new file mode 100644 (file)
index 0000000..39d3ab8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.png
new file mode 100644 (file)
index 0000000..17b4379
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings.png
new file mode 100644 (file)
index 0000000..dd2706b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.png
new file mode 100644 (file)
index 0000000..c233429
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.png
new file mode 100644 (file)
index 0000000..8e100fc
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.png
new file mode 100644 (file)
index 0000000..1c6ed1f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/window.png
new file mode 100644 (file)
index 0000000..db726a1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/window.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.png
new file mode 100644 (file)
index 0000000..28c8704
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.png
new file mode 100644 (file)
index 0000000..5bf0827
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.png
new file mode 100644 (file)
index 0000000..226eb5c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.png
new file mode 100644 (file)
index 0000000..9a418c9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.png
new file mode 100644 (file)
index 0000000..a348495
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr.png
new file mode 100644 (file)
index 0000000..bfed7d2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.png
new file mode 100644 (file)
index 0000000..5080ea5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl.png
new file mode 100644 (file)
index 0000000..0639809
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.png
new file mode 100644 (file)
index 0000000..0474926
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up.png
new file mode 100644 (file)
index 0000000..ac9f0b5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.png
new file mode 100644 (file)
index 0000000..614c6e8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required.png
new file mode 100644 (file)
index 0000000..45eb03b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/textures/transparency.png b/resources/lib/oojs-ui/themes/mediawiki/images/textures/transparency.png
new file mode 100644 (file)
index 0000000..1843f27
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/textures/transparency.png differ
diff --git a/resources/lib/oojs-ui/themes/minerva/images/icons/check-invert.svg b/resources/lib/oojs-ui/themes/minerva/images/icons/check-invert.svg
deleted file mode 100644 (file)
index 12d7f0d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="44" height="44" viewBox="0, 0, 44, 44"><style>* { fill: #FFFFFF }</style>
-    <g id="check">
-        <path id="mark" d="M41.634,12.619 L15.347,37.121 L15.163,36.923 L9.999,31.386 L2.364,23.201 L8.019,17.924 L15.655,26.119 L36.281,6.879 z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/minerva/images/icons/check.svg b/resources/lib/oojs-ui/themes/minerva/images/icons/check.svg
deleted file mode 100644 (file)
index 248c636..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="44" height="44" viewBox="0, 0, 44, 44">
-    <g id="check">
-        <path id="mark" d="M41.634,12.619 L15.347,37.121 L15.163,36.923 L9.999,31.386 L2.364,23.201 L8.019,17.924 L15.655,26.119 L36.281,6.879 z"/>
-    </g>
-</svg>
index fa7ea70..34cdf76 100644 (file)
@@ -13,7 +13,7 @@
        font-weight: bold;
        color: white;
        vertical-align: baseline;
-       text-shadow: 0 1px rgba(0, 0, 0, 0.4);
+       text-shadow: 0 1px rgba(0, 0, 0, 0.4);
 }
 
 .mw-badge-inline {
index b85c8e8..bb0642e 100644 (file)
                postWithToken: function ( tokenType, params, ajaxOptions ) {
                        var api = this;
 
-                       // Do not allow deprecated ok-callback
-                       // FIXME: Remove this check when the deprecated ok-callback is removed in #post
-                       if ( $.isFunction( ajaxOptions ) ) {
-                               ajaxOptions = undefined;
-                       }
-
                        return api.getToken( tokenType, params.assert ).then( function ( token ) {
                                params.token = token;
                                return api.post( params, ajaxOptions ).then(
index 830b02f..becb4b1 100644 (file)
@@ -203,6 +203,7 @@ a.stub {
 /**
  * Floating divs
  */
+/* @noflip */
 div.floatright {
        float: right;
        clear: right;
@@ -214,6 +215,7 @@ div.floatright p {
        font-style: italic;
 }
 
+/* @noflip */
 div.floatleft {
        float: left;
        clear: left;
index d3220cc..ec9888f 100644 (file)
 .button-colors(@bgColor) {
        background: @bgColor;
 
-       &:hover {
+       &:hover,
+       &:focus {
                // The inner bottom bevel should match the active background color.
                box-shadow: 0 1px rgba(0, 0, 0, 10%), inset 0 -3px rgba(0, 0, 0, 20%);
                border-bottom-color: mix(#000, @bgColor, 20%);
-       }
-
-       &:focus {
-               box-shadow:inset 0px 0px 0px 3px rgba(0, 0, 0, 20%);
-//             box-shadow: 0 1px rgba(0, 0, 0, 10%), inset 0 -3px rgba(0, 0, 0, 20%);
                outline: none;
                // remove outline in Firefox
                &::-moz-focus-inner {
                        border-color: transparent;
                }
-
        }
 
        &:active,
index 6b0bf99..55f2f89 100644 (file)
@@ -25,5 +25,9 @@
 
 .mw-changeslist-legend dd {
        margin-left: 1.5em;
+}
+
+.mw-changeslist-legend dt,
+.mw-changeslist-legend dd {
        line-height: 1.3em;
 }
index 1a58170..f0fb7b9 100644 (file)
        }
 }
 
-.mixin-mw-ui-anchor-styles-quiet( @mainColor ) {
-       color: @colorTextLight;
-       text-decoration: none;
-
-       &:hover {
-               color: @mainColor;
-       }
-       &:focus, &:active {
-               color: darken( @mainColor, @colorDarkenPercentage );
-       }
-}
-
 /*
 Anchors
 
@@ -42,16 +30,16 @@ having to assign it as a button type. mw-ui-anchor only changes the text color,
 with other base classes, such as mw-ui-button.
 
 Markup:
-<a href=# class="mw-ui-anchor mw-ui-progressive {$modifiers}">Progressive</a>
-<a href=# class="mw-ui-anchor mw-ui-constructive {$modifiers}">Constructive</a>
-<a href=# class="mw-ui-anchor mw-ui-destructive {$modifiers}">Destructive</a>
+<a href="#" class="mw-ui-anchor mw-ui-progressive">Progressive</a>
+<a href="#" class="mw-ui-anchor mw-ui-constructive">Constructive</a>
+<a href="#" class="mw-ui-anchor mw-ui-destructive">Destructive</a>
 
 .mw-ui-quiet - Quiet until interaction.
 
 Styleguide 6.2.
 */
 
-// Setup compound anchor selectors (such as .mw-ui-anchor.my-ui-progressive)
+// Setup compound anchor selectors (such as .mw-ui-anchor.mw-ui-progressive)
 .mw-ui-anchor {
        &.mw-ui-progressive {
                .mixin-mw-ui-anchor-styles( @colorProgressive );
@@ -65,3 +53,28 @@ Styleguide 6.2.
                .mixin-mw-ui-anchor-styles( @colorDestructive );
        }
 }
+
+/*
+Quiet anchors
+
+Use quiet anchors when they are less important and alongside other progressive/destructive/progressive
+anchors. Use of quiet anchors is not recommended on mobile/tablet due to lack of hover state.
+
+Markup:
+<a href="#" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet">Progressive</a>
+<a href="#" class="mw-ui-anchor mw-ui-constructive mw-ui-quiet">Constructive</a>
+<a href="#" class="mw-ui-anchor mw-ui-destructive mw-ui-quiet">Destructive</a>
+
+Styleguide 6.2.1.
+*/
+.mixin-mw-ui-anchor-styles-quiet( @mainColor ) {
+       color: @colorTextLight;
+       text-decoration: none;
+
+       &:hover {
+               color: @mainColor;
+       }
+       &:focus, &:active {
+               color: darken( @mainColor, @colorDarkenPercentage );
+       }
+}
index 01c481d..2512d49 100644 (file)
@@ -47,7 +47,7 @@
        // Container styling
        .button-colors(#FFF);
        border-radius: @borderRadius;
-       min-width: 70px;
+       min-width: 4em;
 
        // Ensure that buttons and inputs are nicely aligned when they have differing heights
        vertical-align: middle;
 
        // Quiet buttons
        //
-       // Use quiet buttons when they are less important and alongisde other progressive/destructive/progressive buttons.
+       // Use quiet buttons when they are less important and alongside other constructive/progressive/destructive buttons.
+       // Use of quiet buttons is not recommended on mobile/tablet due to lack of hover state.
        //
        // Markup:
        // <div>
index 826c82f..4204c29 100644 (file)
 //   <input type="checkbox" id="kss-example-5"><label for="kss-example-5">Standard checkbox</label>
 // </div>
 // <div class="mw-ui-checkbox">
-//   <input type="checkbox" id="kss-example-5-2" disabled><label for="kss-example-5-2">Disabled checkbox</label>
+//   <input type="checkbox" id="kss-example-5-checked" checked><label for="kss-example-5-checked">Standard checked checkbox</label>
+// </div>
+// <div class="mw-ui-checkbox">
+//   <input type="checkbox" id="kss-example-5-disabled" disabled><label for="kss-example-5-disabled">Disabled checkbox</label>
+// </div>
+// <div class="mw-ui-checkbox">
+//   <input type="checkbox" id="kss-example-5-disabled-checked" disabled checked><label for="kss-example-5-disabled-checked">Disabled checked checkbox</label>
 // </div>
 //
 // Styleguide 5.
@@ -42,6 +48,8 @@
                // ensure the invisible checkbox takes up the required width
                width: @checkboxSize;
                height: @checkboxSize;
+               // This is needed for Firefox mobile (See bug 71750 to workaround default Firefox stylesheet)
+               max-width: none;
 
                // the pseudo before element of the label after the checkbox now looks like a checkbox
                & + label {
diff --git a/resources/src/mediawiki/mediawiki.apihelp.css b/resources/src/mediawiki/mediawiki.apihelp.css
new file mode 100644 (file)
index 0000000..d127232
--- /dev/null
@@ -0,0 +1,86 @@
+.apihelp-header {
+       clear: both;
+       margin-bottom: 0.1em;
+}
+
+div.apihelp-linktrail {
+       font-size: smaller;
+}
+
+.apihelp-block {
+       margin-top: 0.5em;
+}
+
+.apihelp-block-head {
+       font-weight: bold;
+}
+
+.apihelp-flags {
+       font-size: smaller;
+       float: right;
+       border: 1px solid black;
+       padding: 0.25em;
+       width: 20em;
+}
+
+.apihelp-deprecated, .apihelp-flag-deprecated,
+.apihelp-flag-internal strong {
+       font-weight: bold;
+       color: red;
+}
+
+.apihelp-empty {
+       color: #888;
+}
+
+.apihelp-help-urls ul {
+       list-style-image: none;
+       list-style-type: none;
+       margin-left: 0;
+}
+
+.apihelp-parameters dl,
+.apihelp-examples dl,
+.apihelp-permissions dl {
+       margin-left: 2em;
+}
+
+.apihelp-parameters dt {
+       float: left;
+       clear: left;
+       min-width: 10em;
+       white-space: nowrap;
+       line-height: 1.5em;
+}
+
+.apihelp-parameters dt:after {
+       content: ':\A0'
+}
+
+.apihelp-parameters dd {
+       margin: 0 0 0.5em 10em;
+       line-height: 1.5em;
+}
+
+.apihelp-parameters dd p:first-child {
+       margin-top: 0;
+}
+
+.apihelp-parameters dd.info {
+       margin-left: 12em;
+       text-indent: -2em;
+}
+
+.apihelp-examples dt {
+       font-weight: normal;
+}
+
+.api-main-links {
+       text-align: center;
+}
+.api-main-links ul:before {
+       content: '[';
+}
+.api-main-links ul:after {
+       content: ']';
+}
diff --git a/resources/src/mediawiki/mediawiki.apipretty.css b/resources/src/mediawiki/mediawiki.apipretty.css
new file mode 100644 (file)
index 0000000..fe5e634
--- /dev/null
@@ -0,0 +1,11 @@
+h1.firstHeading {
+       display: none;
+}
+
+.api-pretty-header {
+       font-size: small;
+}
+
+.api-pretty-content {
+       white-space: pre-wrap;
+}
index 0bbf8fa..8ba57f6 100644 (file)
@@ -1,31 +1,15 @@
 /*!
- * .hlist fallbacks for IE 6, 7 and 8.
+ * .hlist fallbacks for IE 8.
  * @author [[User:Edokter]]
  */
 ( function ( mw, $ ) {
        var profile = $.client.profile();
 
-       if ( profile.name === 'msie' ) {
-               if ( profile.versionNumber === 8 ) {
-                       /* IE 8: Add pseudo-selector class to last-child list items */
-                       mw.hook( 'wikipage.content' ).add( function ( $content ) {
-                               $content.find( '.hlist' ).find( 'dd:last-child, dt:last-child, li:last-child' )
-                                       .addClass( 'hlist-last-child' );
-                       } );
-               }
-               else if ( profile.versionNumber <= 7 ) {
-                       /* IE 7 and below: Generate interpuncts and parentheses */
-                       mw.hook( 'wikipage.content' ).add( function ( $content ) {
-                               var $hlists = $content.find( '.hlist' );
-                               $hlists.find( 'dt:not(:last-child)' )
-                                       .append( ': ' );
-                               $hlists.find( 'dd:not(:last-child)' )
-                                       .append( '<b>·</b> ' );
-                               $hlists.find( 'li:not(:last-child)' )
-                                       .append( '<b>·</b> ' );
-                               $hlists.find( 'dl dl, dl ol, dl ul, ol dl, ol ol, ol ul, ul dl, ul ol, ul ul' )
-                                       .prepend( '( ' ).append( ') ' );
-                       } );
-               }
+       if ( profile.name === 'msie' && profile.versionNumber === 8 ) {
+               /* Add pseudo-selector class to last-child list items */
+               mw.hook( 'wikipage.content' ).add( function ( $content ) {
+                       $content.find( '.hlist' ).find( 'dd:last-child, dt:last-child, li:last-child' )
+                               .addClass( 'hlist-last-child' );
+               } );
        }
 }( mediaWiki, jQuery ) );
index 4abb4e5..e12d6ab 100644 (file)
@@ -1148,10 +1148,24 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                $this->assertEmpty( $errors, implode( "\n", $errors ) );
        }
 
+       /**
+        * @param array $matcher
+        * @param string $actual
+        * @param bool $isHtml
+        *
+        * @return bool
+        */
+       private static function tagMatch( $matcher, $actual, $isHtml = true ) {
+               $dom = PHPUnit_Util_XML::load( $actual, $isHtml );
+               $tags = PHPUnit_Util_XML::findNodes( $dom, $matcher, $isHtml );
+               return count( $tags ) > 0 && $tags[0] instanceof DOMNode;
+       }
+
        /**
         * Note: we are overriding this method to remove the deprecated error
         * @see https://bugzilla.wikimedia.org/show_bug.cgi?id=69505
         * @see https://github.com/sebastianbergmann/phpunit/issues/1292
+        * @deprecated
         *
         * @param array $matcher
         * @param string $actual
@@ -1161,10 +1175,21 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
        public static function assertTag( $matcher, $actual, $message = '', $isHtml = true ) {
                //trigger_error(__METHOD__ . ' is deprecated', E_USER_DEPRECATED);
 
-               $dom = PHPUnit_Util_XML::load( $actual, $isHtml );
-               $tags = PHPUnit_Util_XML::findNodes( $dom, $matcher, $isHtml );
-               $matched = count( $tags ) > 0 && $tags[0] instanceof DOMNode;
+               self::assertTrue( self::tagMatch( $matcher, $actual, $isHtml ), $message );
+       }
+
+       /**
+        * @see MediaWikiTestCase::assertTag
+        * @deprecated
+        *
+        * @param array $matcher
+        * @param string $actual
+        * @param string $message
+        * @param bool $isHtml
+        */
+       public static function assertNotTag( $matcher, $actual, $message = '', $isHtml = true ) {
+               //trigger_error(__METHOD__ . ' is deprecated', E_USER_DEPRECATED);
 
-               self::assertTrue( $matched, $message );
+               self::assertFalse( self::tagMatch( $matcher, $actual, $isHtml ), $message );
        }
 }
index b248d24..1974162 100644 (file)
@@ -133,6 +133,7 @@ class BlockTest extends MediaWikiLangTestCase {
                $username = 'BlockedUserToCreateAccountWith';
                $u = User::newFromName( $username );
                $u->setPassword( 'NotRandomPass' );
+               $u->setId( 14146 );
                $u->addToDatabase();
                unset( $u );
 
@@ -200,6 +201,12 @@ class BlockTest extends MediaWikiLangTestCase {
                        $oldBlock->delete();
                }
 
+               // Local perspective (blockee on current wiki)...
+               $user = User::newFromName( 'UserOnForeignWiki' );
+               $user->addToDatabase();
+               // Set user ID to match the test value
+               $this->db->update( 'user', array( 'user_id' => 14146 ), array( 'user_id' => $user->getId() ) );
+
                // Foreign perspective (blockee not on current wiki)...
                $block = new Block(
                        /* $address */ 'UserOnForeignWiki',
@@ -221,11 +228,6 @@ class BlockTest extends MediaWikiLangTestCase {
                $res = $block->insert( $this->db );
                $this->assertTrue( (bool)$res['id'], 'Block succeeded' );
 
-               // Local perspective (blockee on current wiki)...
-               $user = User::newFromName( 'UserOnForeignWiki' );
-               $user->addToDatabase();
-               // Set user ID to match the test value
-               $this->db->update( 'user', array( 'user_id' => 14146 ), array( 'user_id' => $user->getId() ) );
                $user = null; // clear
 
                $block = Block::newFromID( $res['id'] );
index 59ffb90..fbd2c31 100644 (file)
@@ -179,6 +179,18 @@ class HttpTest extends MediaWikiTestCase {
         * Constant values are from PHP 5.3.28 using cURL 7.24.0
         * @see http://php.net/manual/en/curl.constants.php
         *
+        * All constant values are present so that developers don’t need to remember
+        * to add them if added at a later date. The commented out constants were
+        * not found anywhere in the MediaWiki core code.
+        *
+        * Commented out constants that were not available in:
+        * HipHop VM 3.3.0 (rel)
+        * Compiler: heads/master-0-g08810d920dfff59e0774cf2d651f92f13a637175
+        * Repo schema: 3214fc2c684a4520485f715ee45f33f2182324b1
+        * Extension API: 20140829
+        *
+        * Commented out constants that were removed in PHP 5.6.0
+        *
         * @covers CurlHttpRequest::execute
         */
        public function provideCurlConstants() {
@@ -189,11 +201,11 @@ class HttpTest extends MediaWikiTestCase {
                        array( 'CURLAUTH_DIGEST' ),
                        array( 'CURLAUTH_GSSNEGOTIATE' ),
                        array( 'CURLAUTH_NTLM' ),
-                       array( 'CURLCLOSEPOLICY_CALLBACK' ),
-                       array( 'CURLCLOSEPOLICY_LEAST_RECENTLY_USED' ),
-                       array( 'CURLCLOSEPOLICY_LEAST_TRAFFIC' ),
-                       array( 'CURLCLOSEPOLICY_OLDEST' ),
-                       array( 'CURLCLOSEPOLICY_SLOWEST' ),
+                       // array( 'CURLCLOSEPOLICY_CALLBACK' ), // removed in PHP 5.6.0
+                       // array( 'CURLCLOSEPOLICY_LEAST_RECENTLY_USED' ), // removed in PHP 5.6.0
+                       // array( 'CURLCLOSEPOLICY_LEAST_TRAFFIC' ), // removed in PHP 5.6.0
+                       // array( 'CURLCLOSEPOLICY_OLDEST' ), // removed in PHP 5.6.0
+                       // array( 'CURLCLOSEPOLICY_SLOWEST' ), // removed in PHP 5.6.0
                        array( 'CURLE_ABORTED_BY_CALLBACK' ),
                        array( 'CURLE_BAD_CALLING_ORDER' ),
                        array( 'CURLE_BAD_CONTENT_ENCODING' ),
@@ -245,7 +257,7 @@ class HttpTest extends MediaWikiTestCase {
                        array( 'CURLE_RECV_ERROR' ),
                        array( 'CURLE_SEND_ERROR' ),
                        array( 'CURLE_SHARE_IN_USE' ),
-                       array( 'CURLE_SSH' ),
+                       // array( 'CURLE_SSH' ), // not present in HHVM 3.3.0-dev
                        array( 'CURLE_SSL_CACERT' ),
                        array( 'CURLE_SSL_CERTPROBLEM' ),
                        array( 'CURLE_SSL_CIPHER' ),
@@ -263,14 +275,14 @@ class HttpTest extends MediaWikiTestCase {
                        array( 'CURLFTPAUTH_DEFAULT' ),
                        array( 'CURLFTPAUTH_SSL' ),
                        array( 'CURLFTPAUTH_TLS' ),
-                       array( 'CURLFTPMETHOD_MULTICWD' ),
-                       array( 'CURLFTPMETHOD_NOCWD' ),
-                       array( 'CURLFTPMETHOD_SINGLECWD' ),
+                       // array( 'CURLFTPMETHOD_MULTICWD' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLFTPMETHOD_NOCWD' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLFTPMETHOD_SINGLECWD' ), // not present in HHVM 3.3.0-dev
                        array( 'CURLFTPSSL_ALL' ),
                        array( 'CURLFTPSSL_CONTROL' ),
                        array( 'CURLFTPSSL_NONE' ),
                        array( 'CURLFTPSSL_TRY' ),
-                       array( 'CURLINFO_CERTINFO' ),
+                       // array( 'CURLINFO_CERTINFO' ), // not present in HHVM 3.3.0-dev
                        array( 'CURLINFO_CONNECT_TIME' ),
                        array( 'CURLINFO_CONTENT_LENGTH_DOWNLOAD' ),
                        array( 'CURLINFO_CONTENT_LENGTH_UPLOAD' ),
@@ -285,7 +297,7 @@ class HttpTest extends MediaWikiTestCase {
                        array( 'CURLINFO_PRIVATE' ),
                        array( 'CURLINFO_REDIRECT_COUNT' ),
                        array( 'CURLINFO_REDIRECT_TIME' ),
-                       array( 'CURLINFO_REDIRECT_URL' ),
+                       // array( 'CURLINFO_REDIRECT_URL' ), // not present in HHVM 3.3.0-dev
                        array( 'CURLINFO_REQUEST_SIZE' ),
                        array( 'CURLINFO_SIZE_DOWNLOAD' ),
                        array( 'CURLINFO_SIZE_UPLOAD' ),
@@ -306,8 +318,8 @@ class HttpTest extends MediaWikiTestCase {
                        array( 'CURLOPT_BUFFERSIZE' ),
                        array( 'CURLOPT_CAINFO' ),
                        array( 'CURLOPT_CAPATH' ),
-                       array( 'CURLOPT_CERTINFO' ),
-                       array( 'CURLOPT_CLOSEPOLICY' ),
+                       // array( 'CURLOPT_CERTINFO' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLOPT_CLOSEPOLICY' ), // removed in PHP 5.6.0
                        array( 'CURLOPT_CONNECTTIMEOUT' ),
                        array( 'CURLOPT_CONNECTTIMEOUT_MS' ),
                        array( 'CURLOPT_COOKIE' ),
@@ -331,8 +343,8 @@ class HttpTest extends MediaWikiTestCase {
                        array( 'CURLOPT_FTPPORT' ),
                        array( 'CURLOPT_FTPSSLAUTH' ),
                        array( 'CURLOPT_FTP_CREATE_MISSING_DIRS' ),
-                       array( 'CURLOPT_FTP_FILEMETHOD' ),
-                       array( 'CURLOPT_FTP_SKIP_PASV_IP' ),
+                       // array( 'CURLOPT_FTP_FILEMETHOD' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLOPT_FTP_SKIP_PASV_IP' ), // not present in HHVM 3.3.0-dev
                        array( 'CURLOPT_FTP_SSL' ),
                        array( 'CURLOPT_FTP_USE_EPRT' ),
                        array( 'CURLOPT_FTP_USE_EPSV' ),
@@ -348,14 +360,14 @@ class HttpTest extends MediaWikiTestCase {
                        array( 'CURLOPT_INFILESIZE' ),
                        array( 'CURLOPT_INTERFACE' ),
                        array( 'CURLOPT_IPRESOLVE' ),
-                       array( 'CURLOPT_KEYPASSWD' ),
+                       // array( 'CURLOPT_KEYPASSWD' ), // not present in HHVM 3.3.0-dev
                        array( 'CURLOPT_KRB4LEVEL' ),
                        array( 'CURLOPT_LOW_SPEED_LIMIT' ),
                        array( 'CURLOPT_LOW_SPEED_TIME' ),
                        array( 'CURLOPT_MAXCONNECTS' ),
                        array( 'CURLOPT_MAXREDIRS' ),
-                       array( 'CURLOPT_MAX_RECV_SPEED_LARGE' ),
-                       array( 'CURLOPT_MAX_SEND_SPEED_LARGE' ),
+                       // array( 'CURLOPT_MAX_RECV_SPEED_LARGE' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLOPT_MAX_SEND_SPEED_LARGE' ), // not present in HHVM 3.3.0-dev
                        array( 'CURLOPT_NETRC' ),
                        array( 'CURLOPT_NOBODY' ),
                        array( 'CURLOPT_NOPROGRESS' ),
@@ -367,7 +379,7 @@ class HttpTest extends MediaWikiTestCase {
                        array( 'CURLOPT_POSTREDIR' ),
                        array( 'CURLOPT_PRIVATE' ),
                        array( 'CURLOPT_PROGRESSFUNCTION' ),
-                       array( 'CURLOPT_PROTOCOLS' ),
+                       // array( 'CURLOPT_PROTOCOLS' ), // not present in HHVM 3.3.0-dev
                        array( 'CURLOPT_PROXY' ),
                        array( 'CURLOPT_PROXYAUTH' ),
                        array( 'CURLOPT_PROXYPORT' ),
@@ -379,14 +391,14 @@ class HttpTest extends MediaWikiTestCase {
                        array( 'CURLOPT_RANGE' ),
                        array( 'CURLOPT_READDATA' ),
                        array( 'CURLOPT_READFUNCTION' ),
-                       array( 'CURLOPT_REDIR_PROTOCOLS' ),
+                       // array( 'CURLOPT_REDIR_PROTOCOLS' ), // not present in HHVM 3.3.0-dev
                        array( 'CURLOPT_REFERER' ),
                        array( 'CURLOPT_RESUME_FROM' ),
                        array( 'CURLOPT_RETURNTRANSFER' ),
-                       array( 'CURLOPT_SSH_AUTH_TYPES' ),
-                       array( 'CURLOPT_SSH_HOST_PUBLIC_KEY_MD5' ),
-                       array( 'CURLOPT_SSH_PRIVATE_KEYFILE' ),
-                       array( 'CURLOPT_SSH_PUBLIC_KEYFILE' ),
+                       // array( 'CURLOPT_SSH_AUTH_TYPES' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLOPT_SSH_HOST_PUBLIC_KEY_MD5' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLOPT_SSH_PRIVATE_KEYFILE' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLOPT_SSH_PUBLIC_KEYFILE' ), // not present in HHVM 3.3.0-dev
                        array( 'CURLOPT_SSLCERT' ),
                        array( 'CURLOPT_SSLCERTPASSWD' ),
                        array( 'CURLOPT_SSLCERTTYPE' ),
@@ -414,28 +426,28 @@ class HttpTest extends MediaWikiTestCase {
                        array( 'CURLOPT_VERBOSE' ),
                        array( 'CURLOPT_WRITEFUNCTION' ),
                        array( 'CURLOPT_WRITEHEADER' ),
-                       array( 'CURLPROTO_ALL' ),
-                       array( 'CURLPROTO_DICT' ),
-                       array( 'CURLPROTO_FILE' ),
-                       array( 'CURLPROTO_FTP' ),
-                       array( 'CURLPROTO_FTPS' ),
-                       array( 'CURLPROTO_HTTP' ),
-                       array( 'CURLPROTO_HTTPS' ),
-                       array( 'CURLPROTO_LDAP' ),
-                       array( 'CURLPROTO_LDAPS' ),
-                       array( 'CURLPROTO_SCP' ),
-                       array( 'CURLPROTO_SFTP' ),
-                       array( 'CURLPROTO_TELNET' ),
-                       array( 'CURLPROTO_TFTP' ),
+                       // array( 'CURLPROTO_ALL' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLPROTO_DICT' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLPROTO_FILE' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLPROTO_FTP' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLPROTO_FTPS' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLPROTO_HTTP' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLPROTO_HTTPS' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLPROTO_LDAP' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLPROTO_LDAPS' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLPROTO_SCP' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLPROTO_SFTP' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLPROTO_TELNET' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLPROTO_TFTP' ), // not present in HHVM 3.3.0-dev
                        array( 'CURLPROXY_HTTP' ),
-                       array( 'CURLPROXY_SOCKS4' ),
+                       // array( 'CURLPROXY_SOCKS4' ), // not present in HHVM 3.3.0-dev
                        array( 'CURLPROXY_SOCKS5' ),
-                       array( 'CURLSSH_AUTH_DEFAULT' ),
-                       array( 'CURLSSH_AUTH_HOST' ),
-                       array( 'CURLSSH_AUTH_KEYBOARD' ),
-                       array( 'CURLSSH_AUTH_NONE' ),
-                       array( 'CURLSSH_AUTH_PASSWORD' ),
-                       array( 'CURLSSH_AUTH_PUBLICKEY' ),
+                       // array( 'CURLSSH_AUTH_DEFAULT' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLSSH_AUTH_HOST' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLSSH_AUTH_KEYBOARD' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLSSH_AUTH_NONE' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLSSH_AUTH_PASSWORD' ), // not present in HHVM 3.3.0-dev
+                       // array( 'CURLSSH_AUTH_PUBLICKEY' ), // not present in HHVM 3.3.0-dev
                        array( 'CURLVERSION_NOW' ),
                        array( 'CURL_HTTP_VERSION_1_0' ),
                        array( 'CURL_HTTP_VERSION_1_1' ),
@@ -457,8 +469,8 @@ class HttpTest extends MediaWikiTestCase {
        }
 
        /**
-        * Added this test based on an issue experienced with hhvm where it did
-        * not define a cURL constant.
+        * Added this test based on an issue experienced with HHVM 3.3.0-dev
+        * where it did not define a cURL constant.
         *
         * @bug 70570
         * @dataProvider provideCurlConstants
diff --git a/tests/phpunit/includes/PrefixSearchTest.php b/tests/phpunit/includes/PrefixSearchTest.php
new file mode 100644 (file)
index 0000000..a33f6a6
--- /dev/null
@@ -0,0 +1,216 @@
+<?php
+/**
+ * @group Search
+ * @group Database
+ */
+class PrefixSearchTest extends MediaWikiLangTestCase {
+
+       protected function setUp() {
+               parent::setUp();
+
+               if ( !$this->isWikitextNS( NS_MAIN ) ) {
+                       $this->markTestSkipped( 'Main namespace does not support wikitext.' );
+               }
+
+               $this->insertPages();
+
+               // Avoid special pages from extensions interferring with the tests
+               $this->setMwGlobals( 'wgSpecialPages', array() );
+       }
+
+       protected function searchProvision( Array $results = null ) {
+               if ( $results === null ) {
+                       $this->setMwGlobals( 'wgHooks', array() );
+               } else {
+                       $this->setMwGlobals( 'wgHooks', array(
+                               'PrefixSearchBackend' => array(
+                                       function ( $namespaces, $search, $limit, &$srchres ) use ( $results ) {
+                                               $srchres = $results;
+                                               return false;
+                                       }
+                               ),
+                       ) );
+               }
+       }
+
+       public function insertPages() {
+               $this->insertPage( 'Sandbox' );
+               $this->insertPage( 'Bar' );
+               $this->insertPage( 'Example' );
+               $this->insertPage( 'Example Bar' );
+               $this->insertPage( 'Example Foo' );
+               $this->insertPage( 'Example Foo/Bar' );
+               $this->insertPage( 'Example/Baz' );
+
+               $this->insertPage( 'Talk:Sandbox' );
+               $this->insertPage( 'Talk:Example' );
+
+               $this->insertPage( 'User:Example' );
+       }
+
+       public static function provideSearch() {
+               return array(
+                       array( array(
+                               'Empty string',
+                               'query' => '',
+                               'results' => array(),
+                       ) ),
+                       array( array(
+                               'Main namespace with title prefix',
+                               'query' => 'Ex',
+                               'results' => array(
+                                       'Example',
+                                       'Example/Baz',
+                                       'Example Bar',
+                               ),
+                       ) ),
+                       array( array(
+                               'Talk namespace prefix',
+                               'query' => 'Talk:',
+                               'results' => array(
+                                       'Talk:Example',
+                                       'Talk:Sandbox',
+                               ),
+                       ) ),
+                       array( array(
+                               'User namespace prefix',
+                               'query' => 'User:',
+                               'results' => array(
+                                       'User:Example',
+                               ),
+                       ) ),
+                       array( array(
+                               'Special namespace prefix',
+                               'query' => 'Special:',
+                               'results' => array(
+                                       'Special:ActiveUsers',
+                                       'Special:AllMessages',
+                                       'Special:AllMyFiles',
+                               ),
+                       ) ),
+                       array( array(
+                               'Special namespace with prefix',
+                               'query' => 'Special:Un',
+                               'results' => array(
+                                       'Special:Unblock',
+                                       'Special:UncategorizedCategories',
+                                       'Special:UncategorizedFiles',
+                               ),
+                       ) ),
+                       array( array(
+                               'Special page name',
+                               'query' => 'Special:EditWatchlist',
+                               'results' => array(
+                                       'Special:EditWatchlist',
+                               ),
+                       ) ),
+                       array( array(
+                               'Special page subpages',
+                               'query' => 'Special:EditWatchlist/',
+                               'results' => array(
+                                       'Special:EditWatchlist/clear',
+                                       'Special:EditWatchlist/raw',
+                               ),
+                       ) ),
+                       array( array(
+                               'Special page subpages with prefix',
+                               'query' => 'Special:EditWatchlist/cl',
+                               'results' => array(
+                                       'Special:EditWatchlist/clear',
+                               ),
+                       ) ),
+               );
+       }
+
+       /**
+        * @dataProvider provideSearch
+        * @covers PrefixSearch::search
+        * @covers PrefixSearch::searchBackend
+        */
+       public function testSearch( Array $case ) {
+               $this->searchProvision( null );
+               $searcher = new StringPrefixSearch;
+               $results = $searcher->search( $case['query'], 3 );
+               $this->assertEquals(
+                       $case['results'],
+                       $results,
+                       $case[0]
+               );
+       }
+
+       public static function provideSearchBackend() {
+               return array(
+                       array( array(
+                               'Simple case',
+                               'provision' => array(
+                                       'Bar',
+                                       'Barcelona',
+                                       'Barbara',
+                               ),
+                               'query' => 'Bar',
+                               'results' => array(
+                                       'Bar',
+                                       'Barcelona',
+                                       'Barbara',
+                               ),
+                       ) ),
+                       array( array(
+                               'Exact match not on top (bug 70958)',
+                               'provision' => array(
+                                       'Barcelona',
+                                       'Bar',
+                                       'Barbara',
+                               ),
+                               'query' => 'Bar',
+                               'results' => array(
+                                       'Bar',
+                                       'Barcelona',
+                                       'Barbara',
+                               ),
+                       ) ),
+                       array( array(
+                               'Exact match missing (bug 70958)',
+                               'provision' => array(
+                                       'Barcelona',
+                                       'Barbara',
+                                       'Bart',
+                               ),
+                               'query' => 'Bar',
+                               'results' => array(
+                                       'Bar',
+                                       'Barcelona',
+                                       'Barbara',
+                               ),
+                       ) ),
+                       array( array(
+                               'Exact match missing and not existing',
+                               'provision' => array(
+                                       'Exile',
+                                       'Exist',
+                                       'External',
+                               ),
+                               'query' => 'Ex',
+                               'results' => array(
+                                       'Exile',
+                                       'Exist',
+                                       'External',
+                               ),
+                       ) ),
+               );
+       }
+
+       /**
+        * @dataProvider provideSearchBackend
+        * @covers PrefixSearch::searchBackend
+        */
+       public function testSearchBackend( Array $case ) {
+               $this->searchProvision( $case['provision'] );
+               $searcher = new StringPrefixSearch;
+               $results = $searcher->search( $case['query'], 3 );
+               $this->assertEquals(
+                       $case['results'],
+                       $results,
+                       $case[0]
+               );
+       }
+}
index cae0e52..a9e5be2 100644 (file)
@@ -88,9 +88,9 @@ class RequestContextTest extends MediaWikiTestCase {
                unset( $sc ); // restore previous context
 
                $info = $context->exportSession();
-               $this->assertEquals( $oInfo['ip'], $info['ip'], "Correct initial IP address." );
-               $this->assertEquals( $oInfo['headers'], $info['headers'], "Correct initial headers." );
-               $this->assertEquals( $oInfo['sessionId'], $info['sessionId'], "Correct initial session ID." );
-               $this->assertEquals( $oInfo['userId'], $info['userId'], "Correct initial user ID." );
+               $this->assertEquals( $oInfo['ip'], $info['ip'], "Correct restored IP address." );
+               $this->assertEquals( $oInfo['headers'], $info['headers'], "Correct restored headers." );
+               $this->assertEquals( $oInfo['sessionId'], $info['sessionId'], "Correct restored session ID." );
+               $this->assertEquals( $oInfo['userId'], $info['userId'], "Correct restored user ID." );
        }
 }
index 610a6ac..39822dc 100644 (file)
@@ -5,24 +5,41 @@
  * like password if we log in via the API.
  */
 class TestUser {
+       /**
+        * @deprecated Since 1.25. Use TestUser::getUser()->getName()
+        * @private
+        * @var string
+        */
        public $username;
+
+       /**
+        * @deprecated Since 1.25. Use TestUser::getPassword()
+        * @private
+        * @var string
+        */
        public $password;
-       public $email;
-       public $groups;
+
+       /**
+        * @deprecated Since 1.25. Use TestUser::getUser()
+        * @private
+        * @var User
+        */
        public $user;
 
+       private function assertNotReal() {
+               global $wgDBprefix;
+               if( $wgDBprefix !== MediaWikiTestCase::DB_PREFIX && $wgDBprefix !== MediaWikiTestCase::ORA_DB_PREFIX ) {
+                       throw new MWException( "Can't create user on real database" );
+               }
+       }
+
        public function __construct( $username, $realname = 'Real Name',
                $email = 'sample@example.com', $groups = array()
        ) {
-               $this->username = $username;
-               $this->realname = $realname;
-               $this->email = $email;
-               $this->groups = $groups;
+               $this->assertNotReal();
 
-               // don't allow user to hardcode or select passwords -- people sometimes run tests
-               // on live wikis. Sometimes we create sysop users in these tests. A sysop user with
-               // a known password would be a Bad Thing.
-               $this->password = User::randomPassword();
+               $this->username = $username;
+               $this->password = 'TestUser';
 
                $this->user = User::newFromName( $this->username );
                $this->user->load();
@@ -31,32 +48,99 @@ class TestUser {
                // But for now, we just need to create or update the user with the desired properties.
                // we particularly need the new password, since we just generated it randomly.
                // In core MediaWiki, there is no functionality to delete users, so this is the best we can do.
-               if ( !$this->user->getID() ) {
+               if ( !$this->user->isLoggedIn() ) {
                        // create the user
                        $this->user = User::createNew(
                                $this->username, array(
-                                       "email" => $this->email,
-                                       "real_name" => $this->realname
+                                       "email" => $email,
+                                       "real_name" => $realname
                                )
                        );
+
                        if ( !$this->user ) {
-                               throw new Exception( "error creating user" );
+                               throw new MWException( "Error creating TestUser " . $username );
                        }
                }
 
-               // update the user to use the new random password and other details
-               $this->user->setPassword( $this->password );
-               $this->user->setEmail( $this->email );
-               $this->user->setRealName( $this->realname );
+               // Update the user to use the password and other details
+               $change = $this->setPassword( $this->password ) ||
+                       $this->setEmail( $email ) ||
+                       $this->setRealName( $realname );
 
                // Adjust groups by adding any missing ones and removing any extras
                $currentGroups = $this->user->getGroups();
-               foreach ( array_diff( $this->groups, $currentGroups ) as $group ) {
+               foreach ( array_diff( $groups, $currentGroups ) as $group ) {
                        $this->user->addGroup( $group );
                }
-               foreach ( array_diff( $currentGroups, $this->groups ) as $group ) {
+               foreach ( array_diff( $currentGroups, $groups ) as $group ) {
                        $this->user->removeGroup( $group );
                }
-               $this->user->saveSettings();
+               if ( $change ) {
+                       $this->user->saveSettings();
+               }
+       }
+
+       /**
+        * @param string $realname
+        * @return bool
+        */
+       private function setRealName( $realname ) {
+               if ( $this->user->getRealName() !== $realname ) {
+                       $this->user->setRealName( $realname );
+                       return true;
+               }
+
+               return false;
+       }
+
+       /**
+        * @param string $email
+        * @return bool
+        */
+       private function setEmail( $email ) {
+               if ( $this->user->getEmail() !== $email ) {
+                       $this->user->setEmail( $email );
+                       return true;
+               }
+
+               return false;
+       }
+
+       /**
+        * @param string $password
+        * @return bool
+        */
+       private function setPassword( $password ) {
+               $passwordFactory = $this->user->getPasswordFactory();
+               $oldDefaultType = $passwordFactory->getDefaultType();
+
+                // B is salted MD5 (thus fast) ... we don't care about security here, this is test only
+               $passwordFactory->setDefaultType( 'B' ); // @TODO: Change this to A once that is fixed: https://gerrit.wikimedia.org/r/167523
+               $newPassword = $passwordFactory->newFromPlaintext( $password , $this->user->getPassword() );
+
+               $change = false;
+               if ( !$this->user->getPassword()->equals( $newPassword ) ) {
+                       // Password changed
+                       $this->user->setPassword( $password );
+                       $change = true;
+               }
+
+               $passwordFactory->setDefaultType( $oldDefaultType );
+
+               return $change;
+       }
+
+       /**
+        * @return User
+        */
+       public function getUser() {
+               return $this->user;
+       }
+
+       /**
+        * @return string
+        */
+       public function getPassword() {
+               return $this->password;
        }
 }
index d2400b3..49c0108 100644 (file)
@@ -403,7 +403,8 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
 
                $this->setTitle( NS_USER );
                $this->setUserPerm( '' );
-               $this->assertEquals( array( array( 'badaccess-group0' ), array( 'namespaceprotected', 'User', 'bogus' ) ),
+               $this->assertEquals( array( array( 'badaccess-group0' ),
+                               array( 'namespaceprotected', 'User', 'bogus' ) ),
                        $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
 
                $this->setTitle( NS_MEDIAWIKI );
@@ -630,7 +631,8 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
 
                $this->assertEquals( false,
                        $this->title->userCan( 'bogus', $this->user ) );
-               $this->assertEquals( array( array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n", 'bogus' ),
+               $this->assertEquals( array(
+                               array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n", 'bogus' ),
                                array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n", 'bogus' ),
                                array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n", 'bogus' ) ),
                        $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
index cc6fb11..6681c7a 100644 (file)
@@ -117,6 +117,15 @@ class ActionTest extends MediaWikiTestCase {
                $this->assertEquals( 'revisiondelete', $actionName );
        }
 
+       public function testGetActionName_whenCanNotUseWikiPage_defaultsToView() {
+               $request = new FauxRequest( array( 'action' => 'edit' ) );
+               $context = new DerivativeContext( RequestContext::getMain() );
+               $context->setRequest( $request );
+               $actionName = Action::getActionName( $context );
+
+               $this->assertEquals( 'view', $actionName );
+       }
+
        /**
         * @dataProvider actionProvider
         * @param string $requestedAction
index 780cf9e..4bf6deb 100644 (file)
 class ApiMainTest extends ApiTestCase {
 
        /**
-        * Test that the API will accept a FauxRequest and execute. The help action
-        * (default) throws a UsageException. Just validate we're getting proper XML
-        *
-        * @expectedException UsageException
+        * Test that the API will accept a FauxRequest and execute.
         */
        public function testApi() {
                $api = new ApiMain(
-                       new FauxRequest( array( 'action' => 'help', 'format' => 'xml' ) )
+                       new FauxRequest( array( 'action' => 'query', 'meta' => 'siteinfo' ) )
                );
                $api->execute();
-               $api->getPrinter()->setBufferResult( true );
-               $api->printResult( false );
-               $resp = $api->getPrinter()->getBuffer();
-
-               libxml_use_internal_errors( true );
-               $sxe = simplexml_load_string( $resp );
-               $this->assertNotInternalType( "bool", $sxe );
-               $this->assertThat( $sxe, $this->isInstanceOf( "SimpleXMLElement" ) );
+               $data = $api->getResultData();
+               $this->assertInternalType( 'array', $data );
+               $this->assertArrayHasKey( 'query', $data );
        }
 
        public static function provideAssert() {
index cd14194..811768d 100644 (file)
@@ -8,6 +8,11 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
         */
        protected $apiContext;
 
+       /**
+        * @var array
+        */
+       protected $tablesUsed = array( 'user', 'user_groups', 'user_properties' );
+
        protected function setUp() {
                global $wgServer;
 
index 13da33c..d04766b 100644 (file)
@@ -20,7 +20,7 @@ class PrefixUniquenessTest extends MediaWikiTestCase {
                        $class = get_class( $module );
 
                        $prefix = $module->getModulePrefix();
-                       if ( isset( $prefixes[$prefix] ) ) {
+                       if ( $prefix !== '' && isset( $prefixes[$prefix] ) ) {
                                $this->fail( "Module prefix '{$prefix}' is shared between {$class} and {$prefixes[$prefix]}" );
                        }
                        $prefixes[$module->getModulePrefix()] = $class;
index 5f6d53c..af77570 100644 (file)
@@ -16,15 +16,12 @@ abstract class ApiFormatTestBase extends ApiTestCase {
                $module = $data[3];
 
                $printer = $module->createPrinterByName( $format );
-               $printer->setUnescapeAmps( false );
-
-               $printer->initPrinter( false );
 
                ob_start();
+               $printer->initPrinter( false );
                $printer->execute();
-               $out = ob_get_clean();
-
                $printer->closePrinter();
+               $out = ob_get_clean();
 
                return $out;
        }
index 347cd6f..46f1b7b 100644 (file)
@@ -62,7 +62,8 @@ class ApiQueryContinue2Test extends ApiQueryContinueTestBase {
                        );
                };
                // generator + 1 prop + 1 list
-               $data = $this->query( $mk( 99, 99, true ), 1, 'g1p', false );
+               $data = $this->query( $mk( 99, 99, true ), 1, 'g1p', false ) +
+                       array( 'batchcomplete' => '' );
                $this->checkC( $data, $mk( 1, 1, true ), 6, 'g1p-11t' );
                $this->checkC( $data, $mk( 2, 2, true ), 3, 'g1p-22t' );
                $this->checkC( $data, $mk( 1, 1, false ), 6, 'g1p-11f' );
index 0379790..328d839 100644 (file)
@@ -68,7 +68,8 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                                'aplimit' => "$l",
                        );
                };
-               $data = $this->query( $mk( 99 ), 1, '1L', false );
+               $data = $this->query( $mk( 99 ), 1, '1L', false ) +
+                       array( 'batchcomplete' => '' );
 
                // 1 list
                $this->checkC( $data, $mk( 1 ), 5, '1L-1' );
@@ -95,7 +96,8 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                        );
                };
                // 2 lists
-               $data = $this->query( $mk( 99, 99 ), 1, '2L', false );
+               $data = $this->query( $mk( 99, 99 ), 1, '2L', false ) +
+                       array( 'batchcomplete' => '' );
                $this->checkC( $data, $mk( 1, 1 ), 5, '2L-11' );
                $this->checkC( $data, $mk( 2, 2 ), 3, '2L-22' );
                $this->checkC( $data, $mk( 3, 3 ), 2, '2L-33' );
@@ -119,7 +121,8 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                        );
                };
                // generator + 1 prop
-               $data = $this->query( $mk( 99, 99 ), 1, 'G1P', false );
+               $data = $this->query( $mk( 99, 99 ), 1, 'G1P', false ) +
+                       array( 'batchcomplete' => '' );
                $this->checkC( $data, $mk( 1, 1 ), 11, 'G1P-11' );
                $this->checkC( $data, $mk( 2, 2 ), 6, 'G1P-22' );
                $this->checkC( $data, $mk( 3, 3 ), 4, 'G1P-33' );
@@ -144,7 +147,8 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                        );
                };
                // generator + 2 props
-               $data = $this->query( $mk( 99, 99, 99 ), 1, 'G2P', false );
+               $data = $this->query( $mk( 99, 99, 99 ), 1, 'G2P', false ) +
+                       array( 'batchcomplete' => '' );;
                $this->checkC( $data, $mk( 1, 1, 1 ), 16, 'G2P-111' );
                $this->checkC( $data, $mk( 2, 2, 2 ), 9, 'G2P-222' );
                $this->checkC( $data, $mk( 3, 3, 3 ), 6, 'G2P-333' );
@@ -177,7 +181,8 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                        );
                };
                // generator + 1 prop + 1 list
-               $data = $this->query( $mk( 99, 99, 99 ), 1, 'G1P1L', false );
+               $data = $this->query( $mk( 99, 99, 99 ), 1, 'G1P1L', false ) +
+                       array( 'batchcomplete' => '' );
                $this->checkC( $data, $mk( 1, 1, 1 ), 11, 'G1P1L-111' );
                $this->checkC( $data, $mk( 2, 2, 2 ), 6, 'G1P1L-222' );
                $this->checkC( $data, $mk( 3, 3, 3 ), 4, 'G1P1L-333' );
@@ -214,7 +219,8 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                        );
                };
                // generator + 1 prop + 1 list
-               $data = $this->query( $mk( 99, 99, 99, 99, 99 ), 1, 'G2P2L1M', false );
+               $data = $this->query( $mk( 99, 99, 99, 99, 99 ), 1, 'G2P2L1M', false ) +
+                       array( 'batchcomplete' => '' );
                $this->checkC( $data, $mk( 1, 1, 1, 1, 1 ), 16, 'G2P2L1M-11111' );
                $this->checkC( $data, $mk( 2, 2, 2, 2, 2 ), 9, 'G2P2L1M-22222' );
                $this->checkC( $data, $mk( 3, 3, 3, 3, 3 ), 6, 'G2P2L1M-33333' );
@@ -244,7 +250,8 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                        );
                };
                // generator + 1 prop
-               $data = $this->query( $mk( 99, true, 99, true ), 1, 'G=P', false );
+               $data = $this->query( $mk( 99, true, 99, true ), 1, 'G=P', false ) +
+                       array( 'batchcomplete' => '' );
 
                $this->checkC( $data, $mk( 1, true, 1, true ), 4, 'G=P-1t1t' );
                $this->checkC( $data, $mk( 2, true, 2, true ), 2, 'G=P-2t2t' );
@@ -290,7 +297,8 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                        );
                };
                // generator + 1 list
-               $data = $this->query( $mk( 99, true, 99, true ), 1, 'G=L', false );
+               $data = $this->query( $mk( 99, true, 99, true ), 1, 'G=L', false ) +
+                       array( 'batchcomplete' => '' );
 
                $this->checkC( $data, $mk( 1, true, 1, true ), 5, 'G=L-1t1t' );
                $this->checkC( $data, $mk( 2, true, 2, true ), 3, 'G=L-2t2t' );
index 3d491e9..868d6c2 100644 (file)
@@ -57,7 +57,8 @@ class BloomCacheRedisTest extends MediaWikiTestCase {
                        'value2898',
                        'value2975'
                );
-               $this->assertEquals( $eFalsePositives, $falsePositives, "Correct number of false positives found." );
+               $this->assertEquals( $eFalsePositives, $falsePositives,
+                       "Correct number of false positives found." );
        }
 
        protected function tearDown() {
index 7171ee5..f0c829c 100644 (file)
@@ -99,6 +99,10 @@ class ORMTableTest extends MediaWikiTestCase {
 
 class PageORMTableForTesting extends ORMTable {
 
+       public function __construct() {
+               $this->fieldPrefix = 'page_';
+       }
+
        /**
         * @see ORMTable::getName
         *
@@ -138,13 +142,4 @@ class PageORMTableForTesting extends ORMTable {
                        'title' => 'str',
                );
        }
-
-       /**
-        * @see ORMTable::getFieldPrefix
-        *
-        * @return string
-        */
-       protected function getFieldPrefix() {
-               return 'page_';
-       }
 }
index c9459c9..ca31cf9 100644 (file)
@@ -150,6 +150,10 @@ class TestORMRow extends ORMRow {
 
 class TestORMTable extends ORMTable {
 
+       public function __construct() {
+               $this->fieldPrefix = 'test_';
+       }
+
        /**
         * Returns the name of the database table objects of this type are stored in.
         *
@@ -204,15 +208,4 @@ class TestORMTable extends ORMTable {
                        'time' => 'str', // TS_MW
                );
        }
-
-       /**
-        * Gets the db field prefix.
-        *
-        * @since 1.20
-        *
-        * @return string
-        */
-       protected function getFieldPrefix() {
-               return 'test_';
-       }
 }
diff --git a/tests/phpunit/includes/installer/DatabaseUpdaterTest.php b/tests/phpunit/includes/installer/DatabaseUpdaterTest.php
new file mode 100644 (file)
index 0000000..abff3e6
--- /dev/null
@@ -0,0 +1,279 @@
+<?php
+
+class DatabaseUpdaterTest extends MediaWikiTestCase {
+
+       public function testSetAppliedUpdates() {
+               $db = new FakeDatabase();
+               $dbu = new FakeDatabaseUpdater( $db );
+               $dbu->setAppliedUpdates( "test", array() );
+               $expected = "updatelist-test-" . time() . "0";
+               $actual = $db->lastInsertData['ul_key'];
+               $this->assertEquals( $expected, $actual, var_export( $db->lastInsertData, true ) );
+               $dbu->setAppliedUpdates( "test", array() );
+               $expected = "updatelist-test-" . time() . "1";
+               $actual = $db->lastInsertData['ul_key'];
+               $this->assertEquals( $expected, $actual, var_export( $db->lastInsertData, true ) );
+       }
+}
+
+class FakeDatabase extends DatabaseBase {
+       public $lastInsertTable;
+       public $lastInsertData;
+
+       function __construct() {
+       }
+
+       function clearFlag( $arg ) {
+       }
+
+       function setFlag( $arg ) {
+       }
+
+       public function insert( $table, $a, $fname = __METHOD__, $options = array() ) {
+               $this->lastInsertTable = $table;
+               $this->lastInsertData = $a;
+       }
+
+       /**
+        * Get the type of the DBMS, as it appears in $wgDBtype.
+        *
+        * @return string
+        */
+       function getType() {
+               // TODO: Implement getType() method.
+       }
+
+       /**
+        * Open a connection to the database. Usually aborts on failure
+        *
+        * @param string $server Database server host
+        * @param string $user Database user name
+        * @param string $password Database user password
+        * @param string $dbName Database name
+        * @return bool
+        * @throws DBConnectionError
+        */
+       function open( $server, $user, $password, $dbName ) {
+               // TODO: Implement open() method.
+       }
+
+       /**
+        * Fetch the next row from the given result object, in object form.
+        * Fields can be retrieved with $row->fieldname, with fields acting like
+        * member variables.
+        * If no more rows are available, false is returned.
+        *
+        * @param ResultWrapper|stdClass $res Object as returned from DatabaseBase::query(), etc.
+        * @return stdClass|bool
+        * @throws DBUnexpectedError Thrown if the database returns an error
+        */
+       function fetchObject( $res ) {
+               // TODO: Implement fetchObject() method.
+       }
+
+       /**
+        * Fetch the next row from the given result object, in associative array
+        * form. Fields are retrieved with $row['fieldname'].
+        * If no more rows are available, false is returned.
+        *
+        * @param ResultWrapper $res Result object as returned from DatabaseBase::query(), etc.
+        * @return array|bool
+        * @throws DBUnexpectedError Thrown if the database returns an error
+        */
+       function fetchRow( $res ) {
+               // TODO: Implement fetchRow() method.
+       }
+
+       /**
+        * Get the number of rows in a result object
+        *
+        * @param mixed $res A SQL result
+        * @return int
+        */
+       function numRows( $res ) {
+               // TODO: Implement numRows() method.
+       }
+
+       /**
+        * Get the number of fields in a result object
+        * @see http://www.php.net/mysql_num_fields
+        *
+        * @param mixed $res A SQL result
+        * @return int
+        */
+       function numFields( $res ) {
+               // TODO: Implement numFields() method.
+       }
+
+       /**
+        * Get a field name in a result object
+        * @see http://www.php.net/mysql_field_name
+        *
+        * @param mixed $res A SQL result
+        * @param int $n
+        * @return string
+        */
+       function fieldName( $res, $n ) {
+               // TODO: Implement fieldName() method.
+       }
+
+       /**
+        * Get the inserted value of an auto-increment row
+        *
+        * The value inserted should be fetched from nextSequenceValue()
+        *
+        * Example:
+        * $id = $dbw->nextSequenceValue( 'page_page_id_seq' );
+        * $dbw->insert( 'page', array( 'page_id' => $id ) );
+        * $id = $dbw->insertId();
+        *
+        * @return int
+        */
+       function insertId() {
+               // TODO: Implement insertId() method.
+       }
+
+       /**
+        * Change the position of the cursor in a result object
+        * @see http://www.php.net/mysql_data_seek
+        *
+        * @param mixed $res A SQL result
+        * @param int $row
+        */
+       function dataSeek( $res, $row ) {
+               // TODO: Implement dataSeek() method.
+       }
+
+       /**
+        * Get the last error number
+        * @see http://www.php.net/mysql_errno
+        *
+        * @return int
+        */
+       function lastErrno() {
+               // TODO: Implement lastErrno() method.
+       }
+
+       /**
+        * Get a description of the last error
+        * @see http://www.php.net/mysql_error
+        *
+        * @return string
+        */
+       function lastError() {
+               // TODO: Implement lastError() method.
+       }
+
+       /**
+        * mysql_fetch_field() wrapper
+        * Returns false if the field doesn't exist
+        *
+        * @param string $table Table name
+        * @param string $field Field name
+        *
+        * @return Field
+        */
+       function fieldInfo( $table, $field ) {
+               // TODO: Implement fieldInfo() method.
+       }
+
+       /**
+        * Get information about an index into an object
+        * @param string $table Table name
+        * @param string $index Index name
+        * @param string $fname Calling function name
+        * @return mixed Database-specific index description class or false if the index does not exist
+        */
+       function indexInfo( $table, $index, $fname = __METHOD__ ) {
+               // TODO: Implement indexInfo() method.
+       }
+
+       /**
+        * Get the number of rows affected by the last write query
+        * @see http://www.php.net/mysql_affected_rows
+        *
+        * @return int
+        */
+       function affectedRows() {
+               // TODO: Implement affectedRows() method.
+       }
+
+       /**
+        * Wrapper for addslashes()
+        *
+        * @param string $s String to be slashed.
+        * @return string Slashed string.
+        */
+       function strencode( $s ) {
+               // TODO: Implement strencode() method.
+       }
+
+       /**
+        * Returns a wikitext link to the DB's website, e.g.,
+        *   return "[http://www.mysql.com/ MySQL]";
+        * Should at least contain plain text, if for some reason
+        * your database has no website.
+        *
+        * @return string Wikitext of a link to the server software's web site
+        */
+       function getSoftwareLink() {
+               // TODO: Implement getSoftwareLink() method.
+       }
+
+       /**
+        * A string describing the current software version, like from
+        * mysql_get_server_info().
+        *
+        * @return string Version information from the database server.
+        */
+       function getServerVersion() {
+               // TODO: Implement getServerVersion() method.
+       }
+
+       /**
+        * Closes underlying database connection
+        * @since 1.20
+        * @return bool Whether connection was closed successfully
+        */
+       protected function closeConnection() {
+               // TODO: Implement closeConnection() method.
+       }
+
+       /**
+        * The DBMS-dependent part of query()
+        *
+        * @param string $sql SQL query.
+        * @return ResultWrapper|bool Result object to feed to fetchObject,
+        *   fetchRow, ...; or false on failure
+        */
+       protected function doQuery( $sql ) {
+               // TODO: Implement doQuery() method.
+       }
+}
+
+class FakeDatabaseUpdater extends DatabaseUpdater {
+       function __construct( $db ) {
+               $this->db = $db;
+               self::$updateCounter = 0;
+       }
+
+       /**
+        * Get an array of updates to perform on the database. Should return a
+        * multi-dimensional array. The main key is the MediaWiki version (1.12,
+        * 1.13...) with the values being arrays of updates, identical to how
+        * updaters.inc did it (for now)
+        *
+        * @return array
+        */
+       protected function getCoreUpdateList() {
+               return array();
+       }
+
+       public function canUseNewUpdatelog() {
+               return true;
+       }
+
+       public function setAppliedUpdates( $version, $updates = array() ) {
+               parent::setAppliedUpdates( $version, $updates );
+       }
+}
index 41d8dee..f23b264 100644 (file)
@@ -9,21 +9,17 @@ class UploadBaseTest extends MediaWikiTestCase {
        protected $upload;
 
        protected function setUp() {
-               global $wgHooks;
                parent::setUp();
 
                $this->upload = new UploadTestHandler;
-               $this->hooks = $wgHooks;
-               $wgHooks['InterwikiLoadPrefix'][] = function ( $prefix, &$data ) {
-                       return false;
-               };
-       }
-
-       protected function tearDown() {
-               global $wgHooks;
-               $wgHooks = $this->hooks;
 
-               parent::tearDown();
+               $this->setMwGlobals( 'wgHooks', array(
+                       'InterwikiLoadPrefix' => array(
+                               function ( $prefix, &$data ) {
+                                       return false;
+                               }
+                       ),
+               ) );
        }
 
        /**
@@ -112,22 +108,22 @@ class UploadBaseTest extends MediaWikiTestCase {
         * This method should be abstracted so we can test different settings.
         */
        public function testMaxUploadSize() {
-               global $wgMaxUploadSize;
-               $savedGlobal = $wgMaxUploadSize; // save global
-               global $wgFileExtensions;
-               $wgFileExtensions[] = 'txt';
-
-               $wgMaxUploadSize = 100;
+               $this->setMwGlobals( array(
+                       'wgMaxUploadSize' => 100,
+                       'wgFileExtensions' => array(
+                               'txt',
+                       ),
+               ) );
 
-               $filename = $this->createFileOfSize( $wgMaxUploadSize );
+               $filename = $this->createFileOfSize( 100 );
                $this->upload->initializePathInfo( basename( $filename ) . '.txt', $filename, 100 );
                $result = $this->upload->verifyUpload();
                unlink( $filename );
 
                $this->assertEquals(
-                       array( 'status' => UploadBase::OK ), $result );
-
-               $wgMaxUploadSize = $savedGlobal; // restore global
+                       array( 'status' => UploadBase::OK ),
+                       $result
+               );
        }
 
 
index 7e37534..73e4c1a 100644 (file)
@@ -6,6 +6,12 @@
 
 class MWCryptHKDFTest extends MediaWikiTestCase {
 
+       protected function setUp() {
+               parent::setUp();
+
+               $this->setMwGlobals( 'wgSecretKey', '5bf1945342e67799cb50704a7fa19ac6' );
+       }
+
        /**
         * Test basic usage works
         */
index 62dccbf..b5fc800 100644 (file)
@@ -558,7 +558,7 @@ class TestFileIterator implements Iterator {
                                                $line = trim( $line );
 
                                                if ( $line ) {
-                                                       $delayedParserTest->requireTransparentHook( $line );
+                                                       $this->delayedParserTest->requireTransparentHook( $line );
                                                }
                                        }