summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Evans <grknight@gentoo.org>2020-10-07 09:38:40 -0400
committerBrian Evans <grknight@gentoo.org>2020-10-07 09:38:40 -0400
commit1d3113c853b77fbe075b2f87f66c0153f38f4b7f (patch)
tree487cddf522d08532b30d0bf695538f78088014f8
parentAdd OAuth for API access (diff)
downloadextensions-1d3113c853b77fbe075b2f87f66c0153f38f4b7f.tar.gz
extensions-1d3113c853b77fbe075b2f87f66c0153f38f4b7f.tar.bz2
extensions-1d3113c853b77fbe075b2f87f66c0153f38f4b7f.zip
Add DisableAccount to replace EditAccount
Signed-off-by: Brian Evans <grknight@gentoo.org>
-rw-r--r--DisableAccount/.eslintrc.json11
-rw-r--r--DisableAccount/.gitignore8
-rw-r--r--DisableAccount/.gitreview5
-rw-r--r--DisableAccount/.phan/config.php3
-rw-r--r--DisableAccount/.phpcs.xml12
-rw-r--r--DisableAccount/CODE_OF_CONDUCT.md1
-rw-r--r--DisableAccount/DisableAccount.alias.php188
-rw-r--r--DisableAccount/DisableAccountLogFormatter.php12
-rw-r--r--DisableAccount/Gruntfile.js25
-rw-r--r--DisableAccount/SpecialDisableAccount.php87
-rw-r--r--DisableAccount/composer.json20
-rw-r--r--DisableAccount/extension.json36
-rw-r--r--DisableAccount/i18n/af.json18
-rw-r--r--DisableAccount/i18n/ar.json19
-rw-r--r--DisableAccount/i18n/as.json10
-rw-r--r--DisableAccount/i18n/ast.json17
-rw-r--r--DisableAccount/i18n/az.json8
-rw-r--r--DisableAccount/i18n/azb.json9
-rw-r--r--DisableAccount/i18n/ba.json19
-rw-r--r--DisableAccount/i18n/be-tarask.json19
-rw-r--r--DisableAccount/i18n/be.json13
-rw-r--r--DisableAccount/i18n/bg.json15
-rw-r--r--DisableAccount/i18n/bgn.json8
-rw-r--r--DisableAccount/i18n/bjn.json8
-rw-r--r--DisableAccount/i18n/bn.json17
-rw-r--r--DisableAccount/i18n/br.json18
-rw-r--r--DisableAccount/i18n/bs.json15
-rw-r--r--DisableAccount/i18n/ca.json16
-rw-r--r--DisableAccount/i18n/ce.json9
-rw-r--r--DisableAccount/i18n/ckb.json8
-rw-r--r--DisableAccount/i18n/cs.json18
-rw-r--r--DisableAccount/i18n/cu.json8
-rw-r--r--DisableAccount/i18n/cy.json15
-rw-r--r--DisableAccount/i18n/da.json19
-rw-r--r--DisableAccount/i18n/de.json19
-rw-r--r--DisableAccount/i18n/diq.json15
-rw-r--r--DisableAccount/i18n/dsb.json16
-rw-r--r--DisableAccount/i18n/dty.json8
-rw-r--r--DisableAccount/i18n/el.json19
-rw-r--r--DisableAccount/i18n/en-gb.json18
-rw-r--r--DisableAccount/i18n/en.json15
-rw-r--r--DisableAccount/i18n/eo.json20
-rw-r--r--DisableAccount/i18n/es-formal.json12
-rw-r--r--DisableAccount/i18n/es.json23
-rw-r--r--DisableAccount/i18n/et.json15
-rw-r--r--DisableAccount/i18n/eu.json12
-rw-r--r--DisableAccount/i18n/fa.json23
-rw-r--r--DisableAccount/i18n/fi.json20
-rw-r--r--DisableAccount/i18n/fr.json22
-rw-r--r--DisableAccount/i18n/frp.json15
-rw-r--r--DisableAccount/i18n/frr.json17
-rw-r--r--DisableAccount/i18n/fy.json10
-rw-r--r--DisableAccount/i18n/gl.json18
-rw-r--r--DisableAccount/i18n/gsw.json16
-rw-r--r--DisableAccount/i18n/gu.json16
-rw-r--r--DisableAccount/i18n/he.json18
-rw-r--r--DisableAccount/i18n/hi.json17
-rw-r--r--DisableAccount/i18n/hif-latn.json10
-rw-r--r--DisableAccount/i18n/hr.json14
-rw-r--r--DisableAccount/i18n/hsb.json16
-rw-r--r--DisableAccount/i18n/hu-formal.json8
-rw-r--r--DisableAccount/i18n/hu.json20
-rw-r--r--DisableAccount/i18n/ia.json17
-rw-r--r--DisableAccount/i18n/id.json18
-rw-r--r--DisableAccount/i18n/ig.json8
-rw-r--r--DisableAccount/i18n/inh.json8
-rw-r--r--DisableAccount/i18n/io.json9
-rw-r--r--DisableAccount/i18n/is.json8
-rw-r--r--DisableAccount/i18n/it.json19
-rw-r--r--DisableAccount/i18n/ja.json21
-rw-r--r--DisableAccount/i18n/jv.json18
-rw-r--r--DisableAccount/i18n/ka.json15
-rw-r--r--DisableAccount/i18n/kiu.json8
-rw-r--r--DisableAccount/i18n/kk-cyrl.json10
-rw-r--r--DisableAccount/i18n/km.json17
-rw-r--r--DisableAccount/i18n/kn.json15
-rw-r--r--DisableAccount/i18n/ko.json20
-rw-r--r--DisableAccount/i18n/krc.json10
-rw-r--r--DisableAccount/i18n/ksh.json17
-rw-r--r--DisableAccount/i18n/ku-latn.json8
-rw-r--r--DisableAccount/i18n/lb.json17
-rw-r--r--DisableAccount/i18n/li.json18
-rw-r--r--DisableAccount/i18n/lij.json17
-rw-r--r--DisableAccount/i18n/ln.json10
-rw-r--r--DisableAccount/i18n/lt.json20
-rw-r--r--DisableAccount/i18n/ltg.json8
-rw-r--r--DisableAccount/i18n/lzh.json12
-rw-r--r--DisableAccount/i18n/mk.json17
-rw-r--r--DisableAccount/i18n/ml.json15
-rw-r--r--DisableAccount/i18n/mr.json18
-rw-r--r--DisableAccount/i18n/ms.json18
-rw-r--r--DisableAccount/i18n/mt.json15
-rw-r--r--DisableAccount/i18n/my.json13
-rw-r--r--DisableAccount/i18n/myv.json8
-rw-r--r--DisableAccount/i18n/nb.json19
-rw-r--r--DisableAccount/i18n/nds.json11
-rw-r--r--DisableAccount/i18n/ne.json15
-rw-r--r--DisableAccount/i18n/nl-informal.json8
-rw-r--r--DisableAccount/i18n/nl.json20
-rw-r--r--DisableAccount/i18n/nn.json11
-rw-r--r--DisableAccount/i18n/oc.json10
-rw-r--r--DisableAccount/i18n/or.json12
-rw-r--r--DisableAccount/i18n/pa.json8
-rw-r--r--DisableAccount/i18n/pdc.json8
-rw-r--r--DisableAccount/i18n/pl.json20
-rw-r--r--DisableAccount/i18n/pms.json16
-rw-r--r--DisableAccount/i18n/ps.json14
-rw-r--r--DisableAccount/i18n/pt-br.json21
-rw-r--r--DisableAccount/i18n/pt.json20
-rw-r--r--DisableAccount/i18n/qqq.json21
-rw-r--r--DisableAccount/i18n/qu.json15
-rw-r--r--DisableAccount/i18n/rm.json15
-rw-r--r--DisableAccount/i18n/ro.json16
-rw-r--r--DisableAccount/i18n/roa-tara.json17
-rw-r--r--DisableAccount/i18n/ru.json19
-rw-r--r--DisableAccount/i18n/rue.json15
-rw-r--r--DisableAccount/i18n/sa.json8
-rw-r--r--DisableAccount/i18n/sah.json14
-rw-r--r--DisableAccount/i18n/sco.json10
-rw-r--r--DisableAccount/i18n/sh.json18
-rw-r--r--DisableAccount/i18n/si.json16
-rw-r--r--DisableAccount/i18n/sk.json15
-rw-r--r--DisableAccount/i18n/sl.json19
-rw-r--r--DisableAccount/i18n/sq.json15
-rw-r--r--DisableAccount/i18n/sr-ec.json21
-rw-r--r--DisableAccount/i18n/sr-el.json18
-rw-r--r--DisableAccount/i18n/stq.json14
-rw-r--r--DisableAccount/i18n/su.json13
-rw-r--r--DisableAccount/i18n/sv.json19
-rw-r--r--DisableAccount/i18n/sw.json8
-rw-r--r--DisableAccount/i18n/ta.json16
-rw-r--r--DisableAccount/i18n/te.json13
-rw-r--r--DisableAccount/i18n/tet.json8
-rw-r--r--DisableAccount/i18n/tg-cyrl.json8
-rw-r--r--DisableAccount/i18n/th.json17
-rw-r--r--DisableAccount/i18n/tl.json16
-rw-r--r--DisableAccount/i18n/tr.json19
-rw-r--r--DisableAccount/i18n/tt-cyrl.json8
-rw-r--r--DisableAccount/i18n/tyv.json9
-rw-r--r--DisableAccount/i18n/ug-arab.json8
-rw-r--r--DisableAccount/i18n/uk.json21
-rw-r--r--DisableAccount/i18n/ur.json11
-rw-r--r--DisableAccount/i18n/vep.json8
-rw-r--r--DisableAccount/i18n/vi.json18
-rw-r--r--DisableAccount/i18n/vo.json9
-rw-r--r--DisableAccount/i18n/wa.json8
-rw-r--r--DisableAccount/i18n/yi.json9
-rw-r--r--DisableAccount/i18n/yo.json9
-rw-r--r--DisableAccount/i18n/yue.json18
-rw-r--r--DisableAccount/i18n/zh-hans.json20
-rw-r--r--DisableAccount/i18n/zh-hant.json22
-rw-r--r--DisableAccount/i18n/zh-hk.json8
-rw-r--r--DisableAccount/maintenance/blockDisabledAccounts.php130
-rw-r--r--DisableAccount/package-lock.json2931
-rw-r--r--DisableAccount/package.json12
155 files changed, 5513 insertions, 0 deletions
diff --git a/DisableAccount/.eslintrc.json b/DisableAccount/.eslintrc.json
new file mode 100644
index 00000000..c47c6ae6
--- /dev/null
+++ b/DisableAccount/.eslintrc.json
@@ -0,0 +1,11 @@
+{
+ "root": true,
+ "extends": [
+ "wikimedia/client",
+ "wikimedia/jquery"
+ ],
+ "globals": {
+ "mw": false,
+ "OO": false
+ }
+}
diff --git a/DisableAccount/.gitignore b/DisableAccount/.gitignore
new file mode 100644
index 00000000..199d80b6
--- /dev/null
+++ b/DisableAccount/.gitignore
@@ -0,0 +1,8 @@
+.svn
+*~
+*.kate-swp
+.*.swp
+node_modules/
+/vendor
+composer.lock
+/.eslintcache
diff --git a/DisableAccount/.gitreview b/DisableAccount/.gitreview
new file mode 100644
index 00000000..26fc6ea9
--- /dev/null
+++ b/DisableAccount/.gitreview
@@ -0,0 +1,5 @@
+[gerrit]
+host=gerrit.wikimedia.org
+port=29418
+project=mediawiki/extensions/DisableAccount.git
+track=1
diff --git a/DisableAccount/.phan/config.php b/DisableAccount/.phan/config.php
new file mode 100644
index 00000000..76efd06d
--- /dev/null
+++ b/DisableAccount/.phan/config.php
@@ -0,0 +1,3 @@
+<?php
+
+return require __DIR__ . '/../vendor/mediawiki/mediawiki-phan-config/src/config.php';
diff --git a/DisableAccount/.phpcs.xml b/DisableAccount/.phpcs.xml
new file mode 100644
index 00000000..46162094
--- /dev/null
+++ b/DisableAccount/.phpcs.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<ruleset>
+ <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.WrongStyle" />
+ <exclude name="Squiz.Scope.MethodScope.Missing" />
+ </rule>
+ <file>.</file>
+ <arg name="extensions" value="php,inc" />
+ <arg name="encoding" value="UTF-8" />
+</ruleset>
diff --git a/DisableAccount/CODE_OF_CONDUCT.md b/DisableAccount/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..498acf76
--- /dev/null
+++ b/DisableAccount/CODE_OF_CONDUCT.md
@@ -0,0 +1 @@
+The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct).
diff --git a/DisableAccount/DisableAccount.alias.php b/DisableAccount/DisableAccount.alias.php
new file mode 100644
index 00000000..628f1eab
--- /dev/null
+++ b/DisableAccount/DisableAccount.alias.php
@@ -0,0 +1,188 @@
+<?php
+/**
+ * Aliases for Special:DisableAccount
+ *
+ * @file
+ */
+
+$specialPageAliases = [];
+
+/** English (English) */
+$specialPageAliases['en'] = [
+ 'DisableAccount' => [ 'DisableAccount' ],
+];
+
+/** Arabic (العربية) */
+$specialPageAliases['ar'] = [
+ 'DisableAccount' => [ 'تعطيل_حساب' ],
+];
+
+/** Egyptian Arabic (مصرى) */
+$specialPageAliases['arz'] = [
+ 'DisableAccount' => [ 'تعطيل_حساب' ],
+];
+
+/** Western Balochi (بلوچی رخشانی) */
+$specialPageAliases['bgn'] = [
+ 'DisableAccount' => [ 'هیسابی_غیر_پئال_کورتین' ],
+];
+
+/** Min Dong Chinese (Mìng-dĕ̤ng-ngṳ̄) */
+$specialPageAliases['cdo'] = [
+ 'DisableAccount' => [ '禁止賬戶' ],
+];
+
+/** Czech (čeština) */
+$specialPageAliases['cs'] = [
+ 'DisableAccount' => [ 'Deaktivovat_účet', 'Deaktivovat_ucet' ],
+];
+
+/** German (Deutsch) */
+$specialPageAliases['de'] = [
+ 'DisableAccount' => [ 'Benutzerkonto_deaktivieren' ],
+];
+
+/** Zazaki (Zazaki) */
+$specialPageAliases['diq'] = [
+ 'DisableAccount' => [ 'HesabiMenKe' ],
+];
+
+/** Greek (Ελληνικά) */
+$specialPageAliases['el'] = [
+ 'DisableAccount' => [ 'ΑπενεργοποίησηΛογαριασμού' ],
+];
+
+/** Esperanto (Esperanto) */
+$specialPageAliases['eo'] = [
+ 'DisableAccount' => [ 'Malŝalti_konton' ],
+];
+
+/** Persian (فارسی) */
+$specialPageAliases['fa'] = [
+ 'DisableAccount' => [ 'غیرفعال_کردن_حساب' ],
+];
+
+/** Galician (galego) */
+$specialPageAliases['gl'] = [
+ 'DisableAccount' => [ 'Desactivar_a_conta' ],
+];
+
+/** Xiang Chinese (湘语) */
+$specialPageAliases['hsn'] = [
+ 'DisableAccount' => [ '关闭账户' ],
+];
+
+/** Haitian (Kreyòl ayisyen) */
+$specialPageAliases['ht'] = [
+ 'DisableAccount' => [ 'DeaktiveKont' ],
+];
+
+/** Indonesian (Bahasa Indonesia) */
+$specialPageAliases['id'] = [
+ 'DisableAccount' => [ 'Nonaktifkan_akun', 'NonaktifkanAkun' ],
+];
+
+/** Italian (italiano) */
+$specialPageAliases['it'] = [
+ 'DisableAccount' => [ 'DisabilitaAccount' ],
+];
+
+/** Japanese (日本語) */
+$specialPageAliases['ja'] = [
+ 'DisableAccount' => [ 'アカウント無効化' ],
+];
+
+/** Khmer (ភាសាខ្មែរ) */
+$specialPageAliases['km'] = [
+ 'DisableAccount' => [ 'បិទគណនី' ],
+];
+
+/** Korean (한국어) */
+$specialPageAliases['ko'] = [
+ 'DisableAccount' => [ '계정비활성화' ],
+];
+
+/** Cornish (kernowek) */
+$specialPageAliases['kw'] = [
+ 'DisableAccount' => [ 'DialosegiAkont' ],
+];
+
+/** Luxembourgish (Lëtzebuergesch) */
+$specialPageAliases['lb'] = [
+ 'DisableAccount' => [ 'Benotzerkont_desaktivéieren' ],
+];
+
+/** Northern Luri (لۊری شومالی) */
+$specialPageAliases['lrc'] = [
+ 'DisableAccount' => [ 'ناکونئشتگأر_کئردئن_حئساڤ' ],
+];
+
+/** Macedonian (македонски) */
+$specialPageAliases['mk'] = [
+ 'DisableAccount' => [ 'ОневозможиСметка' ],
+];
+
+/** Malayalam (മലയാളം) */
+$specialPageAliases['ml'] = [
+ 'DisableAccount' => [ 'അംഗത്വംസജ്ജമല്ലാതാക്കുക' ],
+];
+
+/** Norwegian Bokmål (norsk bokmål) */
+$specialPageAliases['nb'] = [
+ 'DisableAccount' => [ 'Slå_av_konto' ],
+];
+
+/** Low Saxon (Netherlands) (Nedersaksies) */
+$specialPageAliases['nds-nl'] = [
+ 'DisableAccount' => [ 'Gebruker_uutschakelen' ],
+];
+
+/** Dutch (Nederlands) */
+$specialPageAliases['nl'] = [
+ 'DisableAccount' => [ 'GebruikerUitschakelen' ],
+];
+
+/** Brazilian Portuguese (português do Brasil) */
+$specialPageAliases['pt-br'] = [
+ 'DisableAccount' => [ 'Desativar_conta' ],
+];
+
+/** Sicilian (sicilianu) */
+$specialPageAliases['scn'] = [
+ 'DisableAccount' => [ 'DisabilitaAccount' ],
+];
+
+/** Serbian (Cyrillic script) (српски (ћирилица)‎) */
+$specialPageAliases['sr-ec'] = [
+ 'DisableAccount' => [ 'ОнемогућиНалог', 'Онемогући_налог' ],
+];
+
+/** Swedish (svenska) */
+$specialPageAliases['sv'] = [
+ 'DisableAccount' => [ 'Inaktivera_konto' ],
+];
+
+/** Turkish (Türkçe) */
+$specialPageAliases['tr'] = [
+ 'DisableAccount' => [ 'HesabıDevreDışıBırak' ],
+];
+
+/** Urdu (اردو) */
+$specialPageAliases['ur'] = [
+ 'DisableAccount' => [ 'کھاتہ_غیر_فعال' ],
+];
+
+/** Vietnamese (Tiếng Việt) */
+$specialPageAliases['vi'] = [
+ 'DisableAccount' => [ 'Tắt_tài_khoản' ],
+];
+
+/** Simplified Chinese (中文(简体)‎) */
+$specialPageAliases['zh-hans'] = [
+ 'DisableAccount' => [ '停用账户', '禁用账户' ],
+];
+
+/** Traditional Chinese (中文(繁體)‎) */
+$specialPageAliases['zh-hant'] = [
+ 'DisableAccount' => [ '停用帳號' ],
+];
diff --git a/DisableAccount/DisableAccountLogFormatter.php b/DisableAccount/DisableAccountLogFormatter.php
new file mode 100644
index 00000000..3072bbcf
--- /dev/null
+++ b/DisableAccount/DisableAccountLogFormatter.php
@@ -0,0 +1,12 @@
+<?php
+
+class DisableAccountLogFormatter extends LogFormatter {
+ protected function getMessageParameters() {
+ $params = parent::getMessageParameters();
+ if ( count( $params ) == 3 ) {
+ // Deal with old log entries which don't have this set (needed for GENDER support)
+ $params[3] = $this->entry->getTarget()->getRootText();
+ }
+ return $params;
+ }
+}
diff --git a/DisableAccount/Gruntfile.js b/DisableAccount/Gruntfile.js
new file mode 100644
index 00000000..10eaaa62
--- /dev/null
+++ b/DisableAccount/Gruntfile.js
@@ -0,0 +1,25 @@
+/* eslint-env node, es6 */
+module.exports = function ( grunt ) {
+ var conf = grunt.file.readJSON( 'extension.json' );
+
+ grunt.loadNpmTasks( 'grunt-banana-checker' );
+ grunt.loadNpmTasks( 'grunt-eslint' );
+
+ grunt.initConfig( {
+ banana: conf.MessagesDirs,
+ eslint: {
+ options: {
+ extensions: [ '.js', '.json' ],
+ cache: true
+ },
+ all: [
+ '**/*.js{,on}',
+ '!node_modules/**',
+ '!vendor/**'
+ ]
+ }
+ } );
+
+ grunt.registerTask( 'test', [ 'eslint', 'banana' ] );
+ grunt.registerTask( 'default', 'test' );
+};
diff --git a/DisableAccount/SpecialDisableAccount.php b/DisableAccount/SpecialDisableAccount.php
new file mode 100644
index 00000000..1e6d5339
--- /dev/null
+++ b/DisableAccount/SpecialDisableAccount.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * @todo This should use FormSpecialPage
+ */
+class SpecialDisableAccount extends SpecialPage {
+ function __construct() {
+ parent::__construct( 'DisableAccount', 'disableaccount' );
+ }
+
+ public function doesWrites() {
+ return true;
+ }
+
+ public function execute( $par ) {
+ $this->setHeaders();
+ $this->checkPermissions();
+
+ $formFields = [
+ 'account' => [
+ 'type' => 'text',
+ 'required' => true,
+ 'label-message' => 'disableaccount-user',
+ ],
+ 'confirm' => [
+ 'type' => 'toggle',
+ 'validation-callback' => [ __CLASS__, 'checkConfirmation' ],
+ 'label-message' => 'disableaccount-confirm',
+ ],
+ ];
+
+ $htmlForm = HTMLForm::factory( 'ooui', $formFields, $this->getContext(), 'disableaccount' );
+
+ $htmlForm->setSubmitCallback( [ __CLASS__, 'submit' ] );
+
+ $htmlForm->show();
+ }
+
+ static function checkConfirmation( $field, $allFields ) {
+ if ( $field ) {
+ return true;
+ } else {
+ return wfMessage( 'disableaccount-mustconfirm' )->parse();
+ }
+ }
+
+ static function submit( $fields, $form ) {
+ global $wgOut;
+
+ // While we're not actually turning the user into a "system" user, it
+ // has the same end result: all passwords and other authentication
+ // credentials removed or set to something invalid, email blanked,
+ // token invalidated, and existing sessions dropped. So let's just use
+ // that if possible instead of duplicating all the code.
+ if ( is_callable( 'User::newSystemUser' ) ) {
+ $user = User::newSystemUser( $fields['account'], [ 'create' => false, 'steal' => true ] );
+ if ( !$user ) {
+ return wfMessage( 'disableaccount-nosuchuser', $fields['account'] )->text();
+ }
+ } else {
+ $user = User::newFromName( $fields['account'] );
+
+ if ( !$user || $user->getId() === 0 ) {
+ return wfMessage( 'disableaccount-nosuchuser', $fields['account'] )->text();
+ }
+
+ $user->setPassword( null );
+ $user->setEmail( null );
+ $user->setToken();
+ }
+
+ $user->addGroup( 'inactive' );
+
+ $user->saveSettings();
+ $user->invalidateCache();
+
+ $logEntry = new ManualLogEntry( 'block', 'disableaccount' );
+ $logEntry->setPerformer( $form->getUser() );
+ $logEntry->setTarget( $user->getUserPage() );
+ $logEntry->setParameters( [ '4::targetUsername' => $user->getName() ] );
+ $logId = $logEntry->insert();
+ $logEntry->publish( $logId );
+
+ $wgOut->addWikiMsg( 'disableaccount-success', $user->getName() );
+
+ return true;
+ }
+}
diff --git a/DisableAccount/composer.json b/DisableAccount/composer.json
new file mode 100644
index 00000000..0971aa84
--- /dev/null
+++ b/DisableAccount/composer.json
@@ -0,0 +1,20 @@
+{
+ "require-dev": {
+ "mediawiki/mediawiki-codesniffer": "31.0.0",
+ "mediawiki/mediawiki-phan-config": "0.10.3",
+ "mediawiki/minus-x": "1.1.0",
+ "php-parallel-lint/php-console-highlighter": "0.5.0",
+ "php-parallel-lint/php-parallel-lint": "1.2.0"
+ },
+ "scripts": {
+ "fix": [
+ "minus-x fix .",
+ "phpcbf"
+ ],
+ "test": [
+ "parallel-lint . --exclude vendor --exclude node_modules",
+ "phpcs -p -s",
+ "minus-x check ."
+ ]
+ }
+}
diff --git a/DisableAccount/extension.json b/DisableAccount/extension.json
new file mode 100644
index 00000000..5fec482a
--- /dev/null
+++ b/DisableAccount/extension.json
@@ -0,0 +1,36 @@
+{
+ "@doc": "Written by Andrew Garrett, 2010-12-02",
+ "name": "Disable Account",
+ "author": [
+ "Andrew Garrett"
+ ],
+ "license-name": "GPL-2.0-or-later",
+ "requires": {
+ "MediaWiki": ">= 1.33.0"
+ },
+ "url": "https://www.mediawiki.org/wiki/Extension:DisableAccount",
+ "descriptionmsg": "disableaccount-desc",
+ "type": "other",
+ "ExtensionMessagesFiles": {
+ "DisableAccountAliases": "DisableAccount.alias.php"
+ },
+ "MessagesDirs": {
+ "DisableAccount": [
+ "i18n"
+ ]
+ },
+ "LogActionsHandlers": {
+ "block/disableaccount": "DisableAccountLogFormatter"
+ },
+ "AvailableRights": [
+ "disableaccount"
+ ],
+ "SpecialPages": {
+ "DisableAccount": "SpecialDisableAccount"
+ },
+ "AutoloadClasses": {
+ "SpecialDisableAccount": "SpecialDisableAccount.php",
+ "DisableAccountLogFormatter": "DisableAccountLogFormatter.php"
+ },
+ "manifest_version": 1
+}
diff --git a/DisableAccount/i18n/af.json b/DisableAccount/i18n/af.json
new file mode 100644
index 00000000..7eaf0ad5
--- /dev/null
+++ b/DisableAccount/i18n/af.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fwolff",
+ "Naudefj",
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "disableaccount-desc": "Stel bestuurders in staat om individuele rekeninge te deaktiveer",
+ "right-disableaccount": "Deaktiveer rekeninge",
+ "action-disableaccount": "rekeninge te deaktiveer",
+ "disableaccount": "Deaktiveer 'n gebruikerrekening",
+ "disableaccount-user": "Gebruikernaam:",
+ "disableaccount-confirm": "Deaktiveer hierdie gebruiker.\nDie gebruiker sal nie langer kan aanmeld, sy wagwoord herstel, of e-pos ontvang nie.\nAs die gebruiker tans aangeteken is, sal hy onmiddellik uitgeteken word.\n''Let daarop die aksie nie sonder die hulp van 'n administrateur omgekeer kan word nie.''",
+ "disableaccount-mustconfirm": "U moet bevestig dat u hierdie gebruiker wil deaktiveer.",
+ "disableaccount-nosuchuser": "Die gebruiker \"$1\" bestaan nie.",
+ "disableaccount-success": "Die gebruiker \"$1\" is permanent gedeaktiveer."
+}
diff --git a/DisableAccount/i18n/ar.json b/DisableAccount/i18n/ar.json
new file mode 100644
index 00000000..41eb9a2d
--- /dev/null
+++ b/DisableAccount/i18n/ar.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ciphers",
+ "OsamaK",
+ "ديفيد"
+ ]
+ },
+ "disableaccount-desc": "تسمح للإداريين بتعطيل الحسابات الفردية.",
+ "right-disableaccount": "تعطيل الحسابات",
+ "action-disableaccount": "تعطيل الحسابات",
+ "disableaccount": "تعطيل حساب مستخدم",
+ "disableaccount-user": "اسم المستخدم:",
+ "disableaccount-confirm": "تعطيل حساب المستخدم هذا. \nالمستخدم لن يكون قادرا على تسجيل الدخول، إعادة تعيين كلمة المرور الخاصة به، أو تلقي إعلامات البريد الإلكتروني. \nإذا تم تسجيل المستخدم حاليا في أي مكان، سيتم تسجيله على الفور. \n«لاحظ أن تعطيل الحساب لا يمكن عكسه دون تدخل المسؤول عن النظام».",
+ "disableaccount-mustconfirm": "يجب التأكد من أنك ترغب في تعطيل هذا الحساب.",
+ "disableaccount-nosuchuser": "حساب المستخدم \"$1\" غير موجود.",
+ "disableaccount-success": "تم تعطيل حساب المستخدم \"$1\" بشكل دائم.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|تعطيل حساب}} {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/as.json b/DisableAccount/i18n/as.json
new file mode 100644
index 00000000..3ab33f29
--- /dev/null
+++ b/DisableAccount/i18n/as.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chaipau"
+ ]
+ },
+ "disableaccount": "সদস্য একাউন্ট প্ৰতিবন্ধ কৰক",
+ "disableaccount-user": "সদস্যনাম:",
+ "disableaccount-nosuchuser": "\"$1\" নামৰ সদস্য একাউন্টৰ অস্তিত্ব নাই ।"
+}
diff --git a/DisableAccount/i18n/ast.json b/DisableAccount/i18n/ast.json
new file mode 100644
index 00000000..edd522e4
--- /dev/null
+++ b/DisableAccount/i18n/ast.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xuacu"
+ ]
+ },
+ "disableaccount-desc": "Permite que los alministradores desactiven cuentes individuales.",
+ "right-disableaccount": "Desactivar cuentes",
+ "action-disableaccount": "desactivar cuentes",
+ "disableaccount": "Desactivar una cuenta d'usuariu",
+ "disableaccount-user": "Nome d'usuariu:",
+ "disableaccount-confirm": "Desactivar esta cuenta d'usuariu.\nL'usuariu nun podrá entrar al sistema, reaniciar la contraseña o recibir avisos per corréu.\nSi l'usuariu ta conectáu n'ayuri, se-y desconectará darréu.\n''Ten en cuenta que desactivar una cuenta nun ye reversible ensin la intervención d'un alministrador del sistema.''",
+ "disableaccount-mustconfirm": "Tienes de confirmar que quies desactivar esta cuenta.",
+ "disableaccount-nosuchuser": "La cuenta d'usuariu \"$1\" nun esiste.",
+ "disableaccount-success": "La cuenta d'usuariu \"$1\" se desactivó de mou permanente.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|desactivó la cuenta}} de {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/az.json b/DisableAccount/i18n/az.json
new file mode 100644
index 00000000..de6bb216
--- /dev/null
+++ b/DisableAccount/i18n/az.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Wertuose"
+ ]
+ },
+ "disableaccount-user": "İstifadəçi adı:"
+}
diff --git a/DisableAccount/i18n/azb.json b/DisableAccount/i18n/azb.json
new file mode 100644
index 00000000..78f8786b
--- /dev/null
+++ b/DisableAccount/i18n/azb.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alp Er Tunqa",
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "disableaccount-user": "ایشلدن آدی:"
+}
diff --git a/DisableAccount/i18n/ba.json b/DisableAccount/i18n/ba.json
new file mode 100644
index 00000000..155cf0f0
--- /dev/null
+++ b/DisableAccount/i18n/ba.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Assele",
+ "Sagan",
+ "Рустам Нурыев"
+ ]
+ },
+ "disableaccount-desc": "Хакимдәргә айырым иҫәп яҙмаһын һүндерергә мөмкинлек бирә",
+ "right-disableaccount": "Иҫәп яҙыуҙарын күрһәтмәҫкә",
+ "action-disableaccount": "Иҫәп яҙыуҙарын һүндерергә",
+ "disableaccount": "Ҡатнашыусының күрһәтелмәгән иҫәп яҙыуҙары",
+ "disableaccount-user": "Ҡатнашыусы исеме",
+ "disableaccount-confirm": "Был ҡатнашыусының иҫәп яҙмаһын һүндереү.\nҠатнашыусы танылыу үтә, серһүҙен үҙгәртә һәм электрон почта аша белгертеүҙәр ала алмаясаҡ.\nӘгәр ҡатнашыусы әлеге ваҡытта танылыу үткән булһа, уның сеансы шунда уҡ өҙөләсәк.\n''Иҫәп яҙмаһын һүндереүҙе система хакимдәре ярҙамы менән генә кире алып була икәнен иҫәпкә алығыҙ.''",
+ "disableaccount-mustconfirm": "Һеҙ был иҫәп яҙмаһын һүндерергә теләүегеҙҙе раҫларға тейешһегеҙ.",
+ "disableaccount-nosuchuser": "\"$1\" иҫәп яҙмаһы юҡ.",
+ "disableaccount-success": "\"$1\" иҫәп яҙмаһы һүндерелгән.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$4|$3}} иҫәп яҙмаһын {{GENDER:$2||}} һүндерҙе ."
+}
diff --git a/DisableAccount/i18n/be-tarask.json b/DisableAccount/i18n/be-tarask.json
new file mode 100644
index 00000000..3d4cccfd
--- /dev/null
+++ b/DisableAccount/i18n/be-tarask.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "EugeneZelenko",
+ "Jim-by",
+ "Red Winged Duck"
+ ]
+ },
+ "disableaccount-desc": "Дазваляе адміністратарам адключаць індывідуальныя рахункі.",
+ "right-disableaccount": "забарона рахункаў",
+ "action-disableaccount": "адключэньне рахункаў",
+ "disableaccount": "Забараніць рахунак удзельніка",
+ "disableaccount-user": "Імя ўдзельніка:",
+ "disableaccount-confirm": "Забараніць гэты рахунак удзельніка.\nУдзельнік ня зможа ўвайсьці ў сыстэму, скінуць свой пароль ці атрымліваць абвяшчэньні па электроннай пошце. Калі ўдзельнік у цяперашні момант знаходзіцца ў сыстэме, то ён будзе аўтаматычна выведзены. ''Зьвярніце ўвагу, што забарона рахунку нельга адмяніць без дапамогі сыстэмнага адміністратара.''",
+ "disableaccount-mustconfirm": "Вы павінны пацьвердзіць, што жадаеце забараніць гэты рахунак.",
+ "disableaccount-nosuchuser": "Рахунак удзельніка «$1» не існуе.",
+ "disableaccount-success": "Рахунак удзельніка «$1» быў забаронены назаўсёды.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|адключыў|адключыла}} рахунак {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/be.json b/DisableAccount/i18n/be.json
new file mode 100644
index 00000000..3bf7b4ad
--- /dev/null
+++ b/DisableAccount/i18n/be.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yury Tarasievich"
+ ]
+ },
+ "disableaccount": "Забараніць працу ўдзельніка",
+ "disableaccount-user": "Імя:",
+ "disableaccount-confirm": "Забарона працы ўдзельніка.\nУдзельнік не зможа ўваходзіць у сістэму, мяняць свой пароль ці атрымліваць паведамленні з пляцоўкі праз эл.пошту.\nКалі ўдзельнік зараз ужо працуе ў сістэме, то яго сеанс працы будзе неадкладна спынены.\n''Заўважце, што забарона працы ўдзельніка можа быць скасаваная толькі ўдзельнікам з паўнамоцтвамі сістэмнага адміністратара.''",
+ "disableaccount-mustconfirm": "Належыць пацвердзіць забарону працы гэтага ўдзельніка.",
+ "disableaccount-nosuchuser": "Не ўдалося знайсці ўліковыя даныя ўдзельніка \"$1\".",
+ "disableaccount-success": "Праца ўдзельніка \"$1\" забаронена бестэрмінова."
+}
diff --git a/DisableAccount/i18n/bg.json b/DisableAccount/i18n/bg.json
new file mode 100644
index 00000000..c5b107d4
--- /dev/null
+++ b/DisableAccount/i18n/bg.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "DCLXVI",
+ "ShockD",
+ "Vlad5250"
+ ]
+ },
+ "disableaccount-desc": "Позволява на администраторите да деактивират отделни сметки.",
+ "right-disableaccount": "Деактивиране на сметки",
+ "action-disableaccount": "деактивиране на сметки",
+ "disableaccount": "Деактивиране на потребителска сметка",
+ "disableaccount-user": "Потребителско име:",
+ "disableaccount-nosuchuser": "Потребителската сметка „$1“ не съществува."
+}
diff --git a/DisableAccount/i18n/bgn.json b/DisableAccount/i18n/bgn.json
new file mode 100644
index 00000000..dc450fde
--- /dev/null
+++ b/DisableAccount/i18n/bgn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ibrahim khashrowdi"
+ ]
+ },
+ "disableaccount-user": "کار زورؤکین نام:"
+}
diff --git a/DisableAccount/i18n/bjn.json b/DisableAccount/i18n/bjn.json
new file mode 100644
index 00000000..e6acfa89
--- /dev/null
+++ b/DisableAccount/i18n/bjn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "J Subhi"
+ ]
+ },
+ "right-disableaccount": "Kada-kawakan aakun"
+}
diff --git a/DisableAccount/i18n/bn.json b/DisableAccount/i18n/bn.json
new file mode 100644
index 00000000..6cb81529
--- /dev/null
+++ b/DisableAccount/i18n/bn.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bellayet",
+ "Usarker",
+ "Wikitanvir"
+ ]
+ },
+ "disableaccount-desc": "প্রশাসকগণকে একক কোনো অ্যাকাউন্ট নিষ্ক্রিয় করার অনুমতি দাও।",
+ "right-disableaccount": "অ্যাকাউন্ট নিস্ক্রিয়",
+ "disableaccount": "কোন ব্যবহারকারী অ্যাকাউন্ট নিস্ক্রিয়",
+ "disableaccount-user": "ব্যবহারকারী নাম:",
+ "disableaccount-confirm": "এই ব্যবহারকারীর একাউন্টটি অচল করুন।\nব্যবহারকারী লগ ইন, পাসওয়ার্ড পুনপরিবর্তন অথবা ইমেইল গ্রহণ করতে পারবেন না।\nযদি ব্যবহারকারী এখন কোথাও লগ ইন করা থাকে, তাকে লগ আউট করা হবে।\n\"লক্ষ্য করুন: অচল করা একাউন্ট ফিরিয়ে আনা যাবে না সিস্টেম এ্যডমিনিস্ট্রেটরের হস্তক্ষেপ ছাড়া\"",
+ "disableaccount-mustconfirm": "আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনি এই অ্যাকাউন্ট নিষ্ক্রিয় করতে চান।",
+ "disableaccount-nosuchuser": "\"$1\" নামে কোনো ব্যবহারকারী অ্যাকাউন্ট নেই।",
+ "disableaccount-success": "ব্যাবহারকারী অ্যাকাউন্ট \"$1\" স্থায়ীভাবে নিষ্ক্রিয় করা হয়েছে।"
+}
diff --git a/DisableAccount/i18n/br.json b/DisableAccount/i18n/br.json
new file mode 100644
index 00000000..93461e22
--- /dev/null
+++ b/DisableAccount/i18n/br.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fohanno",
+ "Fulup"
+ ]
+ },
+ "disableaccount-desc": "Aotren a ra ar verourien da ziweredekaat ar c'hontoù hiniennel.",
+ "right-disableaccount": "Diweredekaat kontoù",
+ "action-disableaccount": "Diweredekaat ar c'hontoù",
+ "disableaccount": "Diweredekaat ur gont implijer",
+ "disableaccount-user": "Anv implijer :",
+ "disableaccount-confirm": "Diweredekaat kont an implijer-mañ.\nNe vo ket gouest an implijer da gevreañ na da adderaouekaat e c'her-tremen ken, n'hallo ket resev kemennoù dre bostel kennebeut.\nM'emañ kevreet bremañ an implijer un tu bennak e vo digevreet kerkent.\n\"Notit mat n'haller ket distreiñ war diwerekadur ur gont hep emell ur merour eus ar reizhiad.\"",
+ "disableaccount-mustconfirm": "Rankout a rit kadarnaat e fell deoc'h diweredekaat ar gont-mañ.",
+ "disableaccount-nosuchuser": "N'eus ket eus ar gont implijer \"$1\".",
+ "disableaccount-success": "Diweredekaat eo bet ar gont implijer \"$1\" da vat.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|en deus|he deus}} diweredekaet kont {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/bs.json b/DisableAccount/i18n/bs.json
new file mode 100644
index 00000000..7f905367
--- /dev/null
+++ b/DisableAccount/i18n/bs.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "CERminator"
+ ]
+ },
+ "disableaccount-desc": "Daje administratorima mogućnost da onemoguće pojedinačne račune.",
+ "right-disableaccount": "Onemogućavanje računa",
+ "disableaccount": "Onemogućavanje korisničkog računa",
+ "disableaccount-user": "Korisničko ime:",
+ "disableaccount-confirm": "Onemogući ovaj korisnički račun.\nKorisnik se neće moći prijaviti, staviti novu šifru ili primati obavještenja putem e-maila.\nAko je korisnik negdje u međuvremenu prijavljen, bit će automatski odmah odjavljen.\n''Zapamtite da se onemogućavanje računa ne može poništiti bez intervencije sistemskog administratora.''",
+ "disableaccount-mustconfirm": "Morate potvrditi da želite onemogućiti ovaj račun.",
+ "disableaccount-nosuchuser": "Korisnički račun \"$1\" ne postoji.",
+ "disableaccount-success": "Korisnički račun \"$1\" je trajno onemogućen."
+}
diff --git a/DisableAccount/i18n/ca.json b/DisableAccount/i18n/ca.json
new file mode 100644
index 00000000..a9c0cf9d
--- /dev/null
+++ b/DisableAccount/i18n/ca.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "El libre",
+ "Papapep",
+ "SMP"
+ ]
+ },
+ "right-disableaccount": "Desactivar comptes",
+ "disableaccount": "Deshabilita un compte d'usuari/a",
+ "disableaccount-user": "Nom d'usuari/a :",
+ "disableaccount-confirm": "Desactivació d'aquest compte d'usuari.\nL'usuari no podrà entrar al seu compte, recuperar la contrasenya o rebre notificacions per correu electònic.\nSi l'usuari està fent servir el compte actualment serà immediatament desconnectat.\n''Tingueu en compte que la desactivació d'un compte no és una operació reversible sense la intervenció d'algú amb accés al servidor del sistema.''",
+ "disableaccount-mustconfirm": "Has de confirmar que vols desactivar aquest compte.",
+ "disableaccount-nosuchuser": "El compte d'usuari/a \"$1\" no existeix.",
+ "disableaccount-success": "S'ha inhabilitat permanentment el compte d'usuari/a \"$1\"."
+}
diff --git a/DisableAccount/i18n/ce.json b/DisableAccount/i18n/ce.json
new file mode 100644
index 00000000..dd0894a6
--- /dev/null
+++ b/DisableAccount/i18n/ce.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Умар"
+ ]
+ },
+ "disableaccount-user": "Декъашхочун цӀе:",
+ "disableaccount-nosuchuser": "«$1» иштта декъашхочун агӀо дац."
+}
diff --git a/DisableAccount/i18n/ckb.json b/DisableAccount/i18n/ckb.json
new file mode 100644
index 00000000..c44eb20c
--- /dev/null
+++ b/DisableAccount/i18n/ckb.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Asoxor"
+ ]
+ },
+ "disableaccount-user": "ناوی بەکارهێنەری:"
+}
diff --git a/DisableAccount/i18n/cs.json b/DisableAccount/i18n/cs.json
new file mode 100644
index 00000000..f2613c5a
--- /dev/null
+++ b/DisableAccount/i18n/cs.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jkjk",
+ "Mormegil"
+ ]
+ },
+ "disableaccount-desc": "Umožňuje správcům deaktivovat jednotlivé účty",
+ "right-disableaccount": "Deaktivování účtů",
+ "action-disableaccount": "deaktivovat účty",
+ "disableaccount": "Deaktivace uživatelského účtu",
+ "disableaccount-user": "Uživatelské jméno:",
+ "disableaccount-confirm": "Deaktivovat tento uživatelský účet.\nUživatel se nebude moci přihlásit, požádat o nové heslo, ani dostávat e-mailové notifikace.\nPokud je uživatel kdekoli přihlášen, bude okamžitě odhlášen.\n''Uvědomte si, že deaktivaci účtu nelze vrátit zpět bez pomoci systémového administrátora.''",
+ "disableaccount-mustconfirm": "Musíte potvrdit, že si přejete deaktivovat tento účet.",
+ "disableaccount-nosuchuser": "Uživatelský účet „$1“ neexistuje.",
+ "disableaccount-success": "Uživatelský účet „$1“ byl natrvalo deaktivován.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|deaktivoval|deaktivovala}} účet {{GENDER:$4|uživatele|uživatelky}} $3."
+}
diff --git a/DisableAccount/i18n/cu.json b/DisableAccount/i18n/cu.json
new file mode 100644
index 00000000..ee79d21c
--- /dev/null
+++ b/DisableAccount/i18n/cu.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "ОйЛ"
+ ]
+ },
+ "disableaccount-user": "польꙃєватєлꙗ имѧ :"
+}
diff --git a/DisableAccount/i18n/cy.json b/DisableAccount/i18n/cy.json
new file mode 100644
index 00000000..c25ebbec
--- /dev/null
+++ b/DisableAccount/i18n/cy.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lloffiwr"
+ ]
+ },
+ "disableaccount-desc": "Yn caniatau i weinyddwyr analluogi cyfrifon penodol.",
+ "right-disableaccount": "Analluogi cyfrifon",
+ "disableaccount": "Analluogi cyfrif defnyddiwr",
+ "disableaccount-user": "Enw defnyddiwr:",
+ "disableaccount-confirm": "Analluogu cyfrif y defnyddiwr hwn. \nNi fydd y defnyddiwr yn gallu mewngofnodi, ailosod ei gyfrinair, na derbyn hysbysiadau e-bost. \nOs yw'r defnyddiwr wedi mewngofnodi rhywle ar hyn o bryd, bydd yn cael ei allgofnodi'n syth. \n''Noder nad oes modd gwrthdroi'r weithred o anablu cyfrif heb ymyrraeth gweinyddwr y system.''",
+ "disableaccount-mustconfirm": "Mae'n rhaid i chi gadarnhau eich bod am analluogi'r cyfrif hwn.",
+ "disableaccount-nosuchuser": "Nid oes cyfrif defnyddiwr o'r enw \"$1\" ar gael.",
+ "disableaccount-success": "Analluogwyd cyfrif y defnyddiwr \"$1\" yn barhaol."
+}
diff --git a/DisableAccount/i18n/da.json b/DisableAccount/i18n/da.json
new file mode 100644
index 00000000..4b972154
--- /dev/null
+++ b/DisableAccount/i18n/da.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Christian List",
+ "Kaare",
+ "Sarrus",
+ "Thomsen"
+ ]
+ },
+ "disableaccount-desc": "Giver administratorer mulighed for at deaktivere individuelle konti.",
+ "right-disableaccount": "Deaktivere konti",
+ "disableaccount": "Deaktivere en brugerkonto",
+ "disableaccount-user": "Brugernavn:",
+ "disableaccount-confirm": "Deaktiver denne brugerkonto.\nDenne bruger vil ikke være i stand til at logge på, nulstille sin adgangskode eller modtage e-mailnotifikationer.\nHvis brugeren er logget på et sted, vil vedkommende blive logget af øjeblikkeligt.\n''Bemærk at deaktivering af en konto ikke kan fortrydes uden en systemadministrators indgriben.''",
+ "disableaccount-mustconfirm": "Du skal bekræfte, at du ønsker at deaktivere denne konto.",
+ "disableaccount-nosuchuser": "Brugerkontoen \"$1\" findes ikke.",
+ "disableaccount-success": "Brugerkontoen \"$1\" er blevet permanent deaktiveret.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|deaktiverede kontoen}} for {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/de.json b/DisableAccount/i18n/de.json
new file mode 100644
index 00000000..0625969e
--- /dev/null
+++ b/DisableAccount/i18n/de.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Geitost",
+ "Kghbln",
+ "Metalhead64"
+ ]
+ },
+ "disableaccount-desc": "Ermöglicht die Deaktivierung einzelner Benutzerkonten",
+ "right-disableaccount": "Benutzerkonten deaktivieren",
+ "action-disableaccount": "Benutzerkonten zu deaktivieren",
+ "disableaccount": "Ein Benutzerkonto deaktivieren",
+ "disableaccount-user": "Benutzername:",
+ "disableaccount-confirm": "Deaktivieren dieses Benutzerkontos.\nDer Benutzer wird nicht mehr in der Lage sein, sich anzumelden, das Passwort zurückzusetzen oder E-Mail-Benachrichtigungen zu empfangen.\nSofern der Benutzer momentan angemeldet ist, wird er umgehend abgemeldet.\n''Es ist zu beachten, dass die Deaktivierung eines Benutzerkontos nicht mehr ohne das Eingreifen eines Systemadministrators rückgängig gemacht werden kann.''",
+ "disableaccount-mustconfirm": "Die Deaktivierung dieses Benutzerkontos muss nun bestätigt werden.",
+ "disableaccount-nosuchuser": "Das Benutzerkonto „$1“ ist nicht vorhanden.",
+ "disableaccount-success": "Das Benutzerkonto „$1“ wurde dauerhaft deaktiviert.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|deaktivierte}} das Benutzerkonto von {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/diq.json b/DisableAccount/i18n/diq.json
new file mode 100644
index 00000000..048252ab
--- /dev/null
+++ b/DisableAccount/i18n/diq.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Asmen",
+ "Erdemaslancan",
+ "Kumkumuk",
+ "Marmase",
+ "Mirzali"
+ ]
+ },
+ "right-disableaccount": "Hesaban dewre ra vece",
+ "action-disableaccount": "Hesabi dewre ra vec",
+ "disableaccount": "Yew hesabê karberi dewre ra vece",
+ "disableaccount-user": "Nameyê karberi:"
+}
diff --git a/DisableAccount/i18n/dsb.json b/DisableAccount/i18n/dsb.json
new file mode 100644
index 00000000..5b552966
--- /dev/null
+++ b/DisableAccount/i18n/dsb.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "disableaccount-desc": "Zmóžnja administratoram jadnotliwe konta znjemóžniś.",
+ "right-disableaccount": "Konta znjemóžniś",
+ "disableaccount": "Wužywarske konto znjemóžniś",
+ "disableaccount-user": "Wužywarske mě:",
+ "disableaccount-confirm": "Znjemóžni toś to wužywarske konto.\nWužywaŕ njamóžo se pśizjawiś, jogo gronidło slědk stajiś abo e-mailowe powěźeńki dostaś.\nJolic wužywaŕ jo tuchylu hynźi pśizjawjony, buźo se ned wótzjawiś.\n''Źiwaj na to, až znjemóžnjanje konto njejo rewersibelne bźez zapśimowanja systemowego administratora.''",
+ "disableaccount-mustconfirm": "Musyš wobkšuśiś, až coš toś to konto znjemóžniś.",
+ "disableaccount-nosuchuser": "Wužywaŕ konto \"$1\" njeeksistěrujo.",
+ "disableaccount-success": "Wužywarske konto \"$1\" jo se na pśecej znjemóžniło.",
+ "logentry-block-disableaccount": "$1 jo konto wužywarja {{GENDER:$4|$3}} {{GENDER:$2|znjemóžnił|znjemóžniła}}."
+}
diff --git a/DisableAccount/i18n/dty.json b/DisableAccount/i18n/dty.json
new file mode 100644
index 00000000..f2e40c9f
--- /dev/null
+++ b/DisableAccount/i18n/dty.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "राम प्रसाद जोशी"
+ ]
+ },
+ "disableaccount-mustconfirm": "तमीले यो सुनिश्चित गद्दु पडन्छ कि तमी यो खाता निस्क्रिय गद्द चाहन्छौ।"
+}
diff --git a/DisableAccount/i18n/el.json b/DisableAccount/i18n/el.json
new file mode 100644
index 00000000..0eda394a
--- /dev/null
+++ b/DisableAccount/i18n/el.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Giorgos456",
+ "Glavkos",
+ "Protnet"
+ ]
+ },
+ "disableaccount-desc": "Επιτρέπει στους διαχειριστές να απενεργοποιήσουν ατομικούς λογαριασμούς.",
+ "right-disableaccount": "Απενεργοποίηση λογαριασμών",
+ "action-disableaccount": "απενεργοποίηση λογαριασμών",
+ "disableaccount": "Απενεργοποίηση λογαριασμού χρήστη",
+ "disableaccount-user": "Όνομα χρήστη:",
+ "disableaccount-confirm": "Απενεργοποίηση αυτού του λογαριασμού χρήστη. \nΟ χρήστης δεν θα είναι σε θέση να συνδεθεί, να επαναφέρει το συνθηματικό του, ή να λαμβάνει ειδοποιήσεις μέσω ηλεκτρονικού ταχυδρομείου. \nΕάν ο χρήστης είναι συνδεδεμένος οπουδήποτε, θα αποσυνδεθεί άμεσα. \n''Να σημειωθεί ότι η απενεργοποίηση ενός λογαριασμού δεν είναι αναστρέψιμη χωρίς παρέμβαση του διαχειριστή του συστήματος.''",
+ "disableaccount-mustconfirm": "Πρέπει να επιβεβαιώσετε ότι θέλετε να απενεργοποιήσετε αυτό το λογαριασμό.",
+ "disableaccount-nosuchuser": "Ο λογαριασμός χρήστη \"$1\" δεν υπάρχει.",
+ "disableaccount-success": "Ο λογαριασμός χρήστη \"$1\" έχει απενεργοποιηθεί μόνιμα.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|απενεργοποιήσε το λογαριασμό}} από {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/en-gb.json b/DisableAccount/i18n/en-gb.json
new file mode 100644
index 00000000..6de33de7
--- /dev/null
+++ b/DisableAccount/i18n/en-gb.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Andibing",
+ "Chase me ladies, I'm the Cavalry"
+ ]
+ },
+ "disableaccount-desc": "Allows administrators to disable individual accounts",
+ "right-disableaccount": "Disable accounts",
+ "action-disableaccount": "disable accounts",
+ "disableaccount": "Disable a user account",
+ "disableaccount-user": "User name:",
+ "disableaccount-confirm": "Disable this user account.\nThe user will not be able to log in, reset their password, or receive email notifications.\nIf the user is currently logged in anywhere, they will be immediately logged out.\n''Note that disabling an account is not reversible without system administrator intervention.''",
+ "disableaccount-mustconfirm": "You must confirm that you wish to disable this account.",
+ "disableaccount-nosuchuser": "The user account \"$1\" does not exist.",
+ "disableaccount-success": "The user account \"$1\" has been permanently disabled.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|disabled the account}} of {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/en.json b/DisableAccount/i18n/en.json
new file mode 100644
index 00000000..ca84fee6
--- /dev/null
+++ b/DisableAccount/i18n/en.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": []
+ },
+ "disableaccount-desc": "Allows administrators to disable individual accounts",
+ "right-disableaccount": "Disable accounts",
+ "action-disableaccount": "disable accounts",
+ "disableaccount": "Disable a user account",
+ "disableaccount-user": "User name:",
+ "disableaccount-confirm": "Disable this user account.\nThe user will not be able to log in, reset their password, or receive email notifications.\nIf the user is currently logged in anywhere, they will be immediately logged out.\n''Note that disabling an account is not reversible without system administrator intervention.''",
+ "disableaccount-mustconfirm": "You must confirm that you wish to disable this account.",
+ "disableaccount-nosuchuser": "The user account \"$1\" does not exist.",
+ "disableaccount-success": "The user account \"$1\" has been permanently disabled.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|disabled the account}} of {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/eo.json b/DisableAccount/i18n/eo.json
new file mode 100644
index 00000000..3fb20a78
--- /dev/null
+++ b/DisableAccount/i18n/eo.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mihxil",
+ "Mirin",
+ "Robin van der Vliet",
+ "Yekrats"
+ ]
+ },
+ "disableaccount-desc": "Permesas al administrantoj forbari individuajn kontojn.",
+ "right-disableaccount": "Malŝalti kontojn",
+ "action-disableaccount": "malfunkciigi kontojn",
+ "disableaccount": "Malŝalti konton de uzanto",
+ "disableaccount-user": "Uzantnomo:",
+ "disableaccount-confirm": "Malŝalti ĉi tiun uzantkonton.\nLa uzanto ne povos saluti, reagordi sian pasvorton aŭ ricevi perretpoŝtajn sciigojn.\nSe la uzanto nun estas salutinta ie ajn, ĝi estas tuj malsalutigitota.\n''Konsciu ke malvalidigo de uzantkonto ne estas malfarebla sen helpo de sistemestro.'''",
+ "disableaccount-mustconfirm": "Vi devas konfirmi ke vi volas malŝalti ĉi tiun konton.",
+ "disableaccount-nosuchuser": "La uzantkonto \"$1\" ne ekzistas.",
+ "disableaccount-success": "La konto de uzanto \"$1\" estis ĉiame malŝaltis.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|malfunkciigis la konton}} de {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/es-formal.json b/DisableAccount/i18n/es-formal.json
new file mode 100644
index 00000000..32f956b1
--- /dev/null
+++ b/DisableAccount/i18n/es-formal.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dferg",
+ "MarcoAurelio"
+ ]
+ },
+ "disableaccount": "Deshabilitar una cuenta de usuario",
+ "disableaccount-user": "Nombre de usuario:",
+ "disableaccount-confirm": "Deshabilitar esta cuenta de usuario.\nEl usuario no podrá iniciar sesión, restablecer su contraseña o recibir notificaciones por correo electrónico.\nSi el usuario está conectado, será desconectado de inmediato.\n''Tenga en cuenta que la desactivación de una cuenta no es reversible sin intervención del administrador de sistema''.",
+ "disableaccount-mustconfirm": "Tiene usted que confirmar que desea desactivar esta cuenta."
+}
diff --git a/DisableAccount/i18n/es.json b/DisableAccount/i18n/es.json
new file mode 100644
index 00000000..1573e40f
--- /dev/null
+++ b/DisableAccount/i18n/es.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ciencia Al Poder",
+ "DJ Nietzsche",
+ "Dferg",
+ "Fitoschido",
+ "Macofe",
+ "MarcoAurelio",
+ "Sanbec"
+ ]
+ },
+ "disableaccount-desc": "Permite a los administradores desactivar cuentas individuales.",
+ "right-disableaccount": "Deshabilitar cuentas",
+ "action-disableaccount": "deshabilitar cuentas",
+ "disableaccount": "Deshabilitar una cuenta de usuario",
+ "disableaccount-user": "Nombre de usuario:",
+ "disableaccount-confirm": "Deshabilitar esta cuenta de usuario.\nEl usuario no podrá iniciar sesión, restablecer su contraseña o recibir notificaciones por correo electrónico.\nSi el usuario está conectado, será desconectado de inmediato.\n''Ten en cuenta que la desactivación de una cuenta no es reversible sin intervención de un administrador del sistema''.",
+ "disableaccount-mustconfirm": "Tienes que confirmar que quieres desactivar esta cuenta.",
+ "disableaccount-nosuchuser": "La cuenta de usuario «$1» no existe.",
+ "disableaccount-success": "La cuenta de usuario «$1» fue desactivada permanentemente.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|deshabilitó la cuenta}} de {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/et.json b/DisableAccount/i18n/et.json
new file mode 100644
index 00000000..8b2c871f
--- /dev/null
+++ b/DisableAccount/i18n/et.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Pikne"
+ ]
+ },
+ "disableaccount-desc": "Lubab administraatoritel isiklikke kontosid keelata.",
+ "right-disableaccount": "Lukustada kontosid",
+ "disableaccount": "Kasutajakonto lukustamine",
+ "disableaccount-user": "Kasutajanimi:",
+ "disableaccount-confirm": "Lukusta see kasutajakonto.\nEdaspidi ei saa kasutaja sisse logida, oma parooli lähtestada ega e-kirjatsi teateid saada.\nKui kasutaja on praegu kuskile sisse logitud, logitakse ta koheselt välja.\n''Pane tähele, et lukustatud konto uuesti kasutamiseks on tarvis süsteemiadministraatori sekkumist.''",
+ "disableaccount-mustconfirm": "Pead kinnitama, et soovid seda kontot lukustada.",
+ "disableaccount-nosuchuser": "Kasutajakontot \"$1\" pole.",
+ "disableaccount-success": "Kasutajakonto \"$1\" on jäädavalt lukustatud."
+}
diff --git a/DisableAccount/i18n/eu.json b/DisableAccount/i18n/eu.json
new file mode 100644
index 00000000..8c60a441
--- /dev/null
+++ b/DisableAccount/i18n/eu.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sator",
+ "Unai Fdz. de Betoño"
+ ]
+ },
+ "right-disableaccount": "Kontuak ezgaitu",
+ "disableaccount": "Lankide-kontua ezgaitu",
+ "disableaccount-user": "Lankide izena:",
+ "disableaccount-nosuchuser": "''$1'' erabiltzailea ez da existitzen."
+}
diff --git a/DisableAccount/i18n/fa.json b/DisableAccount/i18n/fa.json
new file mode 100644
index 00000000..2d37d9b9
--- /dev/null
+++ b/DisableAccount/i18n/fa.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "4nn1l2",
+ "Americophile",
+ "Armin1392",
+ "Ebraminio",
+ "Huji",
+ "Ladsgroup",
+ "Mjbmr"
+ ]
+ },
+ "disableaccount-desc": "به مدیران این اجازه را می‌دهد تا حساب‌های شخصی را غیرفعال کنند.",
+ "right-disableaccount": "غیرفعال کردن حساب‌ها",
+ "action-disableaccount": "غیرفعال کردن حساب",
+ "disableaccount": "غیرفعال کردن یک حساب کاربری",
+ "disableaccount-user": "نام کاربری:",
+ "disableaccount-confirm": "غیرفعال کردن این حساب کاربری.\nاین کاربر قادر به ورود به سامانه نخواهد بود، نمی‌تواند گذرواژه را تعویض کند و همچنین نمی‌تواند ایمیل دریافت کند. \nاگر این کاربر در حال حاضر وارد سامانه شده‌باشد به سرعت از سامانه خارج می‌شود.\n''توجه داشته باشید که غیرفعال کردن یک حساب کاربری بدون دخالت مدیر سامانه قابل برگشت است.''",
+ "disableaccount-mustconfirm": "شما باید تأیید کنید که مایل به غیرفعال کردن این حساب کاربری هستید.",
+ "disableaccount-nosuchuser": "حساب کاربری \"$1\" وجود ندارد.",
+ "disableaccount-success": "حساب کاربری \"$1\" برای همیشه غیرفعال شده‌است.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|حساب غیرفعال شده}} از {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/fi.json b/DisableAccount/i18n/fi.json
new file mode 100644
index 00000000..64c8d747
--- /dev/null
+++ b/DisableAccount/i18n/fi.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "01miki10",
+ "Crt",
+ "Nike",
+ "Olli"
+ ]
+ },
+ "disableaccount-desc": "Järjestelmänvalvojat voivat poistaa käytöstä yksittäisiä tilejä.",
+ "right-disableaccount": "Poistaa tunnuksia käytöstä",
+ "action-disableaccount": "poistaa tunnuksia käytöstä",
+ "disableaccount": "Käyttäjätunnuksen poistaminen käytöstä",
+ "disableaccount-user": "Käyttäjänimi:",
+ "disableaccount-confirm": "Poista käytöstä tämä käyttäjätunnus.\nKäyttäjä ei pysty kirjautumaan sisään, pyytämään uutta salasanaa tai vastaanottamaan sähköposti-ilmoituksia. \nJos käyttäjä on tällä hetkellä sisäänkirjautuneena, käyttäjä kirjataan ulos välittömästi.\n''Huomaa, että tunnuksen käytöstä poistamisen peruminen ei ole mahdollista ilman järjestelmänvalvojan toimia.''",
+ "disableaccount-mustconfirm": "Vahvista, että haluat poistaa käytöstä tämän tunnuksen.",
+ "disableaccount-nosuchuser": "Käyttäjätunnusta ”$1” ei ole olemassa.",
+ "disableaccount-success": "Käyttäjätunnus ''$1'' on poistettu käytöstä pysyvästi.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|poisti käytöstä tunnuksen}} {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/fr.json b/DisableAccount/i18n/fr.json
new file mode 100644
index 00000000..adfd60cc
--- /dev/null
+++ b/DisableAccount/i18n/fr.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cquoi",
+ "Gomoko",
+ "IAlex",
+ "Orlodrim",
+ "Peter17",
+ "Urhixidur"
+ ]
+ },
+ "disableaccount-desc": "Permet aux administrateurs de désactiver des comptes individuels.",
+ "right-disableaccount": "Désactiver des comptes",
+ "action-disableaccount": "désactiver des comptes",
+ "disableaccount": "Désactiver un compte d’utilisateur",
+ "disableaccount-user": "Nom d’utilisateur :",
+ "disableaccount-confirm": "Désactiver ce compte utilisateur.\nL’utilisateur ne pourra plus s’identifier, ni réinitialiser son mot de passe, ni recevoir des notifications par courrier électronique.\nSi l’utilisateur est actuellement identifié quelque part, il sera immédiatement déconnecté.\n''Notez que la désactivation d’un compte n’est pas réversible sans intervention d’un administrateur système.''",
+ "disableaccount-mustconfirm": "Vous devez confirmer que vous souhaitez désactiver ce compte.",
+ "disableaccount-nosuchuser": "Le compte utilisateur « $1 » n'existe pas.",
+ "disableaccount-success": "Le compte utilisateur « $1 » a été définitivement désactivé.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|a désactivé}} le compte de {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/frp.json b/DisableAccount/i18n/frp.json
new file mode 100644
index 00000000..8220e02c
--- /dev/null
+++ b/DisableAccount/i18n/frp.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "ChrisPtDe"
+ ]
+ },
+ "disableaccount-desc": "Pèrmèt ux administrators de dèsactivar des comptos endividuèls.",
+ "right-disableaccount": "Dèsactivar des comptos",
+ "disableaccount": "Dèsactivar un compto usanciér",
+ "disableaccount-user": "Nom d’utilisator :",
+ "disableaccount-confirm": "Dèsactivar cél compto usanciér.\nL’usanciér porrat pas més sè branchiér, ni tornar inicialisar son contresegno, ni recêvre des notificacions per mèssageria èlèctronica.\nSe l’usanciér est orendrêt branchiê a quârqu’un sens, serat dèbranchiê d’abôrd.\n''Notâd que la dèsactivacion d’un compto est pas revèrsibla sen entèrvencion d’un administrator sistèmo.''",
+ "disableaccount-mustconfirm": "Vos dête confirmar que vos souhètâd dèsactivar cél compto.",
+ "disableaccount-nosuchuser": "Lo compto usanciér « $1 » ègziste pas.",
+ "disableaccount-success": "Lo compto usanciér « $1 » at étâ dèsactivâ por de bon."
+}
diff --git a/DisableAccount/i18n/frr.json b/DisableAccount/i18n/frr.json
new file mode 100644
index 00000000..f67c1068
--- /dev/null
+++ b/DisableAccount/i18n/frr.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Murma174"
+ ]
+ },
+ "disableaccount-desc": "Administratooren kön enkelt brükerkontos stallei.",
+ "right-disableaccount": "Brükerkontos stallei",
+ "action-disableaccount": "brükerkontos stal tu leien",
+ "disableaccount": "Lei en brükerkonto stal",
+ "disableaccount-user": "Brükernööm:",
+ "disableaccount-confirm": "Det brükerkonto stallei.\nDi brüker koon ham do ei muar uunmelde, det paaswurd feranre of e-mail-noorachten fu.\nWan di brüker jüst uunmeldet as, woort hi ufmeldet.\n''Seenk diaram, dat bluas en '''süsteem-administraator''' det konto weder aktiwiare koon!''",
+ "disableaccount-mustconfirm": "Det stalleien faan det brükerkonto skel dü nü noch ans gudkään.",
+ "disableaccount-nosuchuser": "Det brükerkonto „$1“ jaft at ei.",
+ "disableaccount-success": "Det brükerkonto „$1“ as nü üüb düür stallaanj.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|hää}} det brükerkonto faan {{GENDER:$4|$3}} deaktiwiaret."
+}
diff --git a/DisableAccount/i18n/fy.json b/DisableAccount/i18n/fy.json
new file mode 100644
index 00000000..31435b73
--- /dev/null
+++ b/DisableAccount/i18n/fy.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "PiefPafPier",
+ "Robin van der Vliet",
+ "Robin0van0der0vliet"
+ ]
+ },
+ "disableaccount-user": "Meidochnamme:"
+}
diff --git a/DisableAccount/i18n/gl.json b/DisableAccount/i18n/gl.json
new file mode 100644
index 00000000..062a3402
--- /dev/null
+++ b/DisableAccount/i18n/gl.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Elisardojm",
+ "Toliño"
+ ]
+ },
+ "disableaccount-desc": "Permite aos administradores desactivar contas individuais.",
+ "right-disableaccount": "Desactivar contas",
+ "action-disableaccount": "deshabilitar contas",
+ "disableaccount": "Desactivar unha conta de usuario",
+ "disableaccount-user": "Nome de usuario:",
+ "disableaccount-confirm": "Desactivar esta conta de usuario.\nO usuario non poderá acceder ao sistema, restablecer o contrasinal ou recibir notificacións por correo electrónico.\nSe o usuario está conectado, sairá ao anonimato inmediatamente.\n''Teña en conta que a desactivación dunha conta non é reversible sen a intervención dun administrador do sistema.''",
+ "disableaccount-mustconfirm": "Ten que confirmar que quere desactivar esta conta.",
+ "disableaccount-nosuchuser": "A conta de usuario \"$1\" non existe.",
+ "disableaccount-success": "Esta conta de usuario, \"$1\", foi desactivada permanentemente.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|desactivou a conta}} de {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/gsw.json b/DisableAccount/i18n/gsw.json
new file mode 100644
index 00000000..178a6880
--- /dev/null
+++ b/DisableAccount/i18n/gsw.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Als-Chlämens",
+ "Als-Holder"
+ ]
+ },
+ "disableaccount-desc": "Macht's für Ammane mögli, einzelni Benutzerchonte z deaktiviere",
+ "right-disableaccount": "Benutzerkonto deaktiviere",
+ "disableaccount": "E Benutzerkonto deaktiviere",
+ "disableaccount-user": "Benutzername:",
+ "disableaccount-confirm": "Des Benutzerkonto deaktiviere.\nDr Benutzer cha sich derno nimi aamälde, cha s Passwort nimi zrucksetze oder un keini E-Mail-Benochrichtigunge me iberchuu.\nWänn dr Benutzer grad aagmäldet isch, wird er sofort abgmäldet.\n''Obacht: D Deaktivierig vun eme Benutzerkonto cha nume vun eme Syschtemadministrator ruckgängig gmacht wäre.''",
+ "disableaccount-mustconfirm": "Du muesch d Deaktivierig vu däm Benutzerkonto no bstetige.",
+ "disableaccount-nosuchuser": "Dr Benutzer „$1“ git s nit.",
+ "disableaccount-success": "S Benutzerkonto „$1“ isch fir immer deaktiviert wore."
+}
diff --git a/DisableAccount/i18n/gu.json b/DisableAccount/i18n/gu.json
new file mode 100644
index 00000000..b4f3398c
--- /dev/null
+++ b/DisableAccount/i18n/gu.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ashok modhvadia",
+ "Sushant savla"
+ ]
+ },
+ "disableaccount-desc": "પ્રબંધકોને વ્યક્તિગત ખાતાઓ નિષ્ક્રિય કરવાની પરવાનગી આપો",
+ "right-disableaccount": "ખાતું નિષ્ક્રીય બનાવો",
+ "disableaccount": "સભ્યના ખાતા પરપ્રતિબંધ મૂકો",
+ "disableaccount-user": "સભ્ય નામ:",
+ "disableaccount-confirm": "આ ખાતું નિષ્ક્રિય બનાવો.\nસભ્ય ફરી પ્રવેશ નહીં કરી શકે, તેમની ગુપ્ત સંજ્ઞા પુનઃ ગઠન કરો અથવા ઇ-મેલ સૂચના મેળવો.\nજો ત સભ્યએ આ સમયે ક્યાંયથી પણ પ્રવેશ કર્યો હશે તો તેઓ તાત્કાલીક લોગ આઉટ થઇ જશે. \n''યાદ રાખો કે નિષ્ક્રીય કરેલા ખાતાને પ્રબંધક સિવાય કોઇ શક્રીય કરી શકશે નહીં.''",
+ "disableaccount-mustconfirm": "તમારે પુષ્ટિ કરવી પડશે કે તમે ખાતાને નિષ્ક્રીય કરવા માંગો છો.",
+ "disableaccount-nosuchuser": "સભ્ય ખાતું \"$1\" અસ્તિત્વમાં નથી",
+ "disableaccount-success": "સભ્ય ખાતું \"$1\" કાયમી ધોરણે પ્રતિબંધીત કરાયું"
+}
diff --git a/DisableAccount/i18n/he.json b/DisableAccount/i18n/he.json
new file mode 100644
index 00000000..9ae127b1
--- /dev/null
+++ b/DisableAccount/i18n/he.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amire80",
+ "Guycn2"
+ ]
+ },
+ "disableaccount-desc": "אפשרות שמפעילים יבטלו חשבונות מסוימים",
+ "right-disableaccount": "השבתה (ביטול) של חשבונות",
+ "action-disableaccount": "להשבית חשבונות",
+ "disableaccount": "ביטול חשבון משתמש",
+ "disableaccount-user": "שם משתמש:",
+ "disableaccount-confirm": "כיבוי חשבון משתמש זה.\nהמשתמש לא יוכל להיכנס לחשבון, לאפס את הסיסמה, או לקבל הודעות בדואר אלקטרוני.\nאם המשתמש מחובר כעת לחשבון במקום כלשהו, הוא יוּצא מהחשבון מייד.\n'''שימו לב שביטול חשבון הוא פעולה בלתי־הפיכה ללא התערבות של מנהל מערכת.'''",
+ "disableaccount-mustconfirm": "עליכם לאשר שאתם רוצים לבטל חשבון זה.",
+ "disableaccount-nosuchuser": "חשבון המשתמש \"$1\" אינו קיים.",
+ "disableaccount-success": "חשבון המשתמש \"$1\" בוטל.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2||כיבה|כיבתה}} את החשבון של {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/hi.json b/DisableAccount/i18n/hi.json
new file mode 100644
index 00000000..392dab19
--- /dev/null
+++ b/DisableAccount/i18n/hi.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ansumang",
+ "Kumar",
+ "रोहित रावत"
+ ]
+ },
+ "disableaccount-desc": "व्यक्तिगत खातों को निष्क्रिय करने की प्रबन्धकों को अनुमति दें",
+ "right-disableaccount": "निष्क्रिय खातों",
+ "disableaccount": "कोई उपयोगकर्ता खाते को निष्क्रिय करें",
+ "disableaccount-user": "सदस्य नाम:",
+ "disableaccount-confirm": "इस प्रयोक्ता खाते को अक्षम करें:\nयह प्रयोक्ता लॉगिन करने, कूटशब्द पुनः सेट करने, या ईमेल सूचनाएं प्राप्त करने में सक्षम नहीं होगा।\nयदि प्रयोक्ता अभी कहीं लॉगिन है, तो वह तुरन्त लॉग आउट कर दिया जाएगा।\n''कृपया श्यान दें कि किसी अक्षम खाते को बिना प्रशासक के हस्तक्षेप के प्रतिवर्ती नहीं किया जा सकता।",
+ "disableaccount-mustconfirm": "आप की पुष्टि करनी होगी कि आप इस खाते को अक्षम करना चाहते हैं।",
+ "disableaccount-nosuchuser": "सदस्य के खाते \"$1\" मौजूद नहीं है।",
+ "disableaccount-success": "सदस्य खाता \"$1\" स्थायी रूप से अक्षम किया गया है।"
+}
diff --git a/DisableAccount/i18n/hif-latn.json b/DisableAccount/i18n/hif-latn.json
new file mode 100644
index 00000000..ddc569dc
--- /dev/null
+++ b/DisableAccount/i18n/hif-latn.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Thakurji"
+ ]
+ },
+ "right-disableaccount": "Sab account ke band karo",
+ "disableaccount-user": "Sadasya ke naam:",
+ "disableaccount-nosuchuser": "Sadasya account \"$1\" nai hae."
+}
diff --git a/DisableAccount/i18n/hr.json b/DisableAccount/i18n/hr.json
new file mode 100644
index 00000000..4af782a1
--- /dev/null
+++ b/DisableAccount/i18n/hr.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "SpeedyGonsales"
+ ]
+ },
+ "right-disableaccount": "Onemogući račune",
+ "disableaccount": "Onemogući suradnički račun",
+ "disableaccount-user": "Suradničko ime:",
+ "disableaccount-confirm": "Onemogućite ovaj suradnički račun. \nSuradnik neće biti u mogućnosti prijaviti se, promijeniti svoju zaporku, niti primati e-mail obavijesti. \nAko je suradnik trenutno prijavljen negdje, odmah će biti odjavljen. \n''Napominjemo da onemogućavanje računa nije reverzibilno bez intervencije administratora sustava.''",
+ "disableaccount-mustconfirm": "Morate potvrditi da želite onemogućiti ovaj račun.",
+ "disableaccount-nosuchuser": "Suradnik \"$1\" ne postoji.",
+ "disableaccount-success": "Suradnički račun \"$1\" je trajno onemogućen."
+}
diff --git a/DisableAccount/i18n/hsb.json b/DisableAccount/i18n/hsb.json
new file mode 100644
index 00000000..c6434fa7
--- /dev/null
+++ b/DisableAccount/i18n/hsb.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "disableaccount-desc": "Zmóžnja administratoram jednotliwe konta znjemóžnić",
+ "right-disableaccount": "Konta znjemóžnić",
+ "disableaccount": "Wužiwarske konto znjemóžnić",
+ "disableaccount-user": "Wužiwarske mjeno:",
+ "disableaccount-confirm": "Znjemóžń tute wužiwarske konto.\nWužiwar njemóže so přizjewić, swoje hesło wróćo stajić abo e-mejlowe zdźělenki dóstać.\nJeli wužiwar je tuchwilu druhdźe přizjewjeny, budźe so hnydom wotzjewjeć.\n''Wobkedźbuj, zo znjemóžnjenje konta njeje rewersibelne bjez zapřimowanja systemoweho administratora.''",
+ "disableaccount-mustconfirm": "Dyrbiš wobkrućić, zo chceš tute konto znjemóžnić.",
+ "disableaccount-nosuchuser": "Wužiwarske konto \"$1\" njeeksistuje.",
+ "disableaccount-success": "Wužiwarske konto \"$1\" bu na přeco znjemóžnjene.",
+ "logentry-block-disableaccount": "$1 je konto wužiwarja {{GENDER:$4|$3}} {{GENDER:$2|znjemóžnił|znjemóžniła}}."
+}
diff --git a/DisableAccount/i18n/hu-formal.json b/DisableAccount/i18n/hu-formal.json
new file mode 100644
index 00000000..e0e63207
--- /dev/null
+++ b/DisableAccount/i18n/hu-formal.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dani"
+ ]
+ },
+ "disableaccount-mustconfirm": "Meg kell erősítenie, hogy biztosan le szeretné tiltani ezt a fiókot."
+}
diff --git a/DisableAccount/i18n/hu.json b/DisableAccount/i18n/hu.json
new file mode 100644
index 00000000..cab4fbcd
--- /dev/null
+++ b/DisableAccount/i18n/hu.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bencemac",
+ "Dani",
+ "Dj",
+ "Tacsipacsi"
+ ]
+ },
+ "disableaccount-desc": "Lehetőséget biztosít az adminisztrátoroknak egyes felhasználói fiókok letiltására",
+ "right-disableaccount": "fiókok letiltása",
+ "action-disableaccount": "fiókok letiltása",
+ "disableaccount": "Felhasználói fiók letiltása",
+ "disableaccount-user": "Felhasználónév:",
+ "disableaccount-confirm": "Felhasználói fiók letiltása.\nA felhasználó nem jelentkezhet be, nem kérhet új jelszót és nem kap e-mailes értesítéseket.\nHa a felhasználó bárhol be van jelentkezve, azonnal ki lesz jelentkeztetve.\n''Figyelem: a fiók letiltása nem állítható vissza rendszeradminisztrátor közreműködése nélkül.''",
+ "disableaccount-mustconfirm": "Meg kell erősítened, hogy biztosan le szeretnéd tiltani ezt a fiókot.",
+ "disableaccount-nosuchuser": "Nem létezik „$1” nevű felhasználói fiók.",
+ "disableaccount-success": "„$1” felhasználói fiókja véglegesen le lett tiltva.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|letiltotta}} {{GENDER:$4|$3}} fiókját."
+}
diff --git a/DisableAccount/i18n/ia.json b/DisableAccount/i18n/ia.json
new file mode 100644
index 00000000..0e7731c4
--- /dev/null
+++ b/DisableAccount/i18n/ia.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "McDutchie"
+ ]
+ },
+ "disableaccount-desc": "Permitte al administratores de disactivar individual contos.",
+ "right-disableaccount": "Disactivar contos",
+ "action-disableaccount": "disactivar contos",
+ "disableaccount": "Disactivar un conto de usator",
+ "disableaccount-user": "Nomine de usator:",
+ "disableaccount-confirm": "Disactivar iste conto de usator.\nLe usator non potera aperir session, ni reinitialisar su contrasigno, ni reciper notificationes per e-mail.\nSi le usator es actualmente authenticate alicubi, su session essera immediatemente claudite.\n''Nota que le disactivation de un conto de usator non es reversibile sin intervention de un administrator del systema.''",
+ "disableaccount-mustconfirm": "Tu debe confirmar que tu vole disactivar iste conto.",
+ "disableaccount-nosuchuser": "Le conto de usator \"$1\" non existe.",
+ "disableaccount-success": "Le conto de usator \"$1\" ha essite disactivate permanentemente.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|disactivava le conto}} de {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/id.json b/DisableAccount/i18n/id.json
new file mode 100644
index 00000000..81915a3b
--- /dev/null
+++ b/DisableAccount/i18n/id.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Daud I.F. Argana",
+ "IvanLanin"
+ ]
+ },
+ "disableaccount-desc": "Memungkinkan administrator untuk menonaktifkan akun individu",
+ "right-disableaccount": "Menonaktifkan akun",
+ "action-disableaccount": "menonaktifkan akun",
+ "disableaccount": "Penonaktifan akun pengguna",
+ "disableaccount-user": "Nama pengguna:",
+ "disableaccount-confirm": "Nonaktifkan akun pengguna ini.\nPengguna tidak akan dapat masuk, menyetel ulang sandi mereka, atau menerima surel pemberitahuan.\nJika pengguna saat ini sedang masuk di mana saja, mereka akan segera dikeluarkan.\n''Perhatikan bahwa penonaktifan akun tidak dapat dibatalkan tanpa campur tangan administrator sistem.''",
+ "disableaccount-mustconfirm": "Anda harus mengonfirmasikan bahwa Anda ingin menonaktifkan akun ini.",
+ "disableaccount-nosuchuser": "Akun pengguna \"$1\" tidak ada.",
+ "disableaccount-success": "Akun pengguna \"$1\" telah dinonaktifkan secara permanen.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|menonaktifkan akun}} {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/ig.json b/DisableAccount/i18n/ig.json
new file mode 100644
index 00000000..ca8b88e2
--- /dev/null
+++ b/DisableAccount/i18n/ig.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ukabia"
+ ]
+ },
+ "disableaccount-user": "Áhà ọ'bànifé:"
+}
diff --git a/DisableAccount/i18n/inh.json b/DisableAccount/i18n/inh.json
new file mode 100644
index 00000000..98389106
--- /dev/null
+++ b/DisableAccount/i18n/inh.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Adam-Yourist"
+ ]
+ },
+ "disableaccount-user": "Доакъашхочун цIи:"
+}
diff --git a/DisableAccount/i18n/io.json b/DisableAccount/i18n/io.json
new file mode 100644
index 00000000..f211c91c
--- /dev/null
+++ b/DisableAccount/i18n/io.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joao Xavier"
+ ]
+ },
+ "disableaccount-user": "Nomo dil uzero:",
+ "disableaccount-confirm": "Nekapabligez la nuna uzerokonto.\nCa uzero ne povos facar ''log in'', modifikor lua pasovorto, o recevor avizi per e-posto.\nSe la uzero esas nun konektata ulaloke, lua sesiono finos nemediate.\n''Atencez: sen interveno da ula administrero, la nekapableso di la konto ne povos desfacesar.''"
+}
diff --git a/DisableAccount/i18n/is.json b/DisableAccount/i18n/is.json
new file mode 100644
index 00000000..488fb4f1
--- /dev/null
+++ b/DisableAccount/i18n/is.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "disableaccount-user": "Notandanafn:"
+}
diff --git a/DisableAccount/i18n/it.json b/DisableAccount/i18n/it.json
new file mode 100644
index 00000000..2b7b1e30
--- /dev/null
+++ b/DisableAccount/i18n/it.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Beta16",
+ "Nemo bis",
+ "Rosh"
+ ]
+ },
+ "disableaccount-desc": "Consente agli amministratori di disattivare singole utenze.",
+ "right-disableaccount": "Disabilitare le utenze",
+ "action-disableaccount": "disabilitare le utenze",
+ "disableaccount": "Disabilitare un'utenza",
+ "disableaccount-user": "Nome utente:",
+ "disableaccount-confirm": "Disabilitare permanentemente questa utenza.\nL'utente non sarà in grado di accedere, reimpostare la password o ricevere notifiche via email.\nTutte le attuali connessioni dell'utente saranno immediatamente terminate.\n''Si noti che la disattivazione di un'utenza non è reversibile senza l'intervento di un amministratore di sistema''.",
+ "disableaccount-mustconfirm": "Devi confermare che vuoi disabilitare questa utenza.",
+ "disableaccount-nosuchuser": "L'account utente \"$1\" non esiste.",
+ "disableaccount-success": "L'account utente \"$1\" è stato disabilitato definitivamente.",
+ "logentry-block-disableaccount": "$1 ha {{GENDER:$2|disabilitato l'utenza}} di {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/ja.json b/DisableAccount/i18n/ja.json
new file mode 100644
index 00000000..b87556ab
--- /dev/null
+++ b/DisableAccount/i18n/ja.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Otokoume",
+ "Schu",
+ "Shirayuki",
+ "Whym",
+ "青子守歌"
+ ]
+ },
+ "disableaccount-desc": "管理者が個々のアカウントを無効化できるようにする",
+ "right-disableaccount": "アカウントを無効化",
+ "action-disableaccount": "アカウントの無効化",
+ "disableaccount": "利用者アカウントを無効化",
+ "disableaccount-user": "利用者名:",
+ "disableaccount-confirm": "この利用者アカウントを無効化します。\n無効化された利用者は、ログイン、パスワードの再設定、通知メールの受信ができなくなります。\nもしこの利用者がどこかでログインしている場合、それらはただちにログアウトされます。\n''アカウントの無効化は、システム管理者の関与なしでは撤回できないことにご注意ください。''",
+ "disableaccount-mustconfirm": "このアカウントを本当に無効化しようとしているのかを確認する必要があります。",
+ "disableaccount-nosuchuser": "利用者アカウント「$1」は存在しません。",
+ "disableaccount-success": "利用者アカウント「$1」は、永久に無効化されています。",
+ "logentry-block-disableaccount": "$1 が {{GENDER:$4|$3}} のアカウントを{{GENDER:$2|無効化}}"
+}
diff --git a/DisableAccount/i18n/jv.json b/DisableAccount/i18n/jv.json
new file mode 100644
index 00000000..b9400067
--- /dev/null
+++ b/DisableAccount/i18n/jv.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Diki Ananta",
+ "Meursault2004",
+ "N219",
+ "NoiX180",
+ "Sumbukompor"
+ ]
+ },
+ "disableaccount-desc": "Nglilakaké panata kanggo nutup akun individu",
+ "right-disableaccount": "Tutup akun",
+ "disableaccount": "Nonaktifaké akun naraguna",
+ "disableaccount-user": "Jeneng naraguna:",
+ "disableaccount-mustconfirm": "Sampéyan kudu mesthèkaké yèn Sampéyan pancèn pingin matèni akun iki.",
+ "disableaccount-nosuchuser": "Akun naraguna \"$1\" ora ana.",
+ "disableaccount-success": "Akun naraguna \"$1\" wis dipatèni permanèn."
+}
diff --git a/DisableAccount/i18n/ka.json b/DisableAccount/i18n/ka.json
new file mode 100644
index 00000000..425810a1
--- /dev/null
+++ b/DisableAccount/i18n/ka.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "David1010",
+ "Dawid Deutschland"
+ ]
+ },
+ "right-disableaccount": "ანგარიშის გამორთვა",
+ "disableaccount": "მომხმარებლის ანგარიშის გამორთვა",
+ "disableaccount-user": "მომხმარებლის სახელი:",
+ "disableaccount-confirm": "ამ მომხმარებლის ანგარიშის გამორთვა.\nმომხმარებლები ვეღარ შეძლებს სისტემაში შესვლას, პაროლის აღდგენას ან ელ-ფოსტით შეტყობინებების მიღებას.\nთუკი მომხმარებელი სისტემაში შევა, იიგი მომენტალურად გასული იქნება. \n''გასათვალისწინებელია, რომ მომხმარებლის ანგარიშის გამორთვის შემთხვევაში სისტემური ადმინისტრატორი ვეღარ შეძლებს, აღადგინოს ანგარიში.''",
+ "disableaccount-mustconfirm": "თქვენ უნდა დაადასტუროთ, რომ გსურთ ამ ანგარიშის გამორთვა.",
+ "disableaccount-nosuchuser": "მომხმარებელ \"$1\" ანგარიში არ არსებობს.",
+ "disableaccount-success": "მომხმარებელ \"$1\" ანგარიში სამუდამოდ გამოირთო."
+}
diff --git a/DisableAccount/i18n/kiu.json b/DisableAccount/i18n/kiu.json
new file mode 100644
index 00000000..67019338
--- /dev/null
+++ b/DisableAccount/i18n/kiu.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mirzali"
+ ]
+ },
+ "disableaccount-user": "Namê karberi:"
+}
diff --git a/DisableAccount/i18n/kk-cyrl.json b/DisableAccount/i18n/kk-cyrl.json
new file mode 100644
index 00000000..cc87cf7c
--- /dev/null
+++ b/DisableAccount/i18n/kk-cyrl.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arystanbek"
+ ]
+ },
+ "right-disableaccount": "Аккаунтты өшіру",
+ "disableaccount": "Қатысушы аккаунттын өшіру",
+ "disableaccount-user": "Қатысушы есімі:"
+}
diff --git a/DisableAccount/i18n/km.json b/DisableAccount/i18n/km.json
new file mode 100644
index 00000000..fd8cb021
--- /dev/null
+++ b/DisableAccount/i18n/km.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "គីមស៊្រុន"
+ ]
+ },
+ "disableaccount-desc": "អនុញ្ញាតអោយអភិបាលបិទគណនីបុគ្គលណាម្នាក់",
+ "right-disableaccount": "បិទគណនី",
+ "action-disableaccount": "បិទគណនី",
+ "disableaccount": "បិទគណនីរបស់អ្នកប្រើប្រាស់",
+ "disableaccount-user": "អត្តនាម៖",
+ "disableaccount-confirm": "បិទគណនីរបស់អ្នកប្រើប្រាស់នេះ។\n\nអ្នកប្រើប្រាស់នេះនឹងមិនអាចកត់ឈ្មោះចូល ប្ដូរពាក្យសំងាត់ ឬទទួលការជូនដំណឹងតាមរយៈអ៊ីមែលបានទេ។\n\nប្រសិនបើអ្នកប្រើប្រាស់នេះបានកត់ឈ្មោះចូលនាពេលនេះ គេនឹងត្រូវអោយកត់ឈ្មោះចេញវិញជាបន្ទាន់។\n\n\"គួរកត់សំគាល់ថាការបិទគណនីមួយ មិនអាចត្រលប់វិញដោយគ្មានអន្តរាគមន៍ពីអភិបាលរបស់ប្រព័ន្ធបានទេ។\"",
+ "disableaccount-mustconfirm": "អ្នកត្រូវតែអះអាងថាអ្នកពិតជាចង់បិទគណនីនេះ។",
+ "disableaccount-nosuchuser": "គណនីអ្នកប្រើប្រាស់ \"$1\" មិនមានទេ។",
+ "disableaccount-success": "គណនីអ្នកប្រើប្រាស់ \"$1\" ត្រូវបានបិទជានិរន្ដន៍។",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|បិទគណនី}}របស់{{GENDER:$4|$3}}។"
+}
diff --git a/DisableAccount/i18n/kn.json b/DisableAccount/i18n/kn.json
new file mode 100644
index 00000000..7d1399a1
--- /dev/null
+++ b/DisableAccount/i18n/kn.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "VASANTH S.N.",
+ "రహ్మానుద్దీన్"
+ ]
+ },
+ "disableaccount-desc": "ಒಬ್ಬನ ಖಾತೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ನಿರ್ವಾಹಕರಿಗೆ ಅನುಮತಿಸುತ್ತದೆ",
+ "right-disableaccount": "ಖಾತೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು",
+ "disableaccount": "ಬಳಕೆದಾರ ಖಾತೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು",
+ "disableaccount-user": "ಬಳಕೆದಾರರ ಹೆಸರು:",
+ "disableaccount-mustconfirm": "ಈ ಖಾತೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ನೀವು ಇಚ್ಛಿಸುವುದಾದರೆ ನೀವು ದೃಢಪಡಿಸಬೇಕು",
+ "disableaccount-nosuchuser": "ಬಳಕೆದಾರ ಖಾತೆ \"$1\"ಅಸ್ತಿತ್ವದಲ್ಲಿ ಇಲ್ಲ.",
+ "disableaccount-success": "ಬಳಕೆದಾರ ಖಾತೆ\"$1\" ಯು ಖಾಯಂ ಆಗಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲ್ಪಟ್ಟಿತು."
+}
diff --git a/DisableAccount/i18n/ko.json b/DisableAccount/i18n/ko.json
new file mode 100644
index 00000000..f74f480b
--- /dev/null
+++ b/DisableAccount/i18n/ko.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hwangjy9",
+ "Kwj2772",
+ "Priviet",
+ "아라"
+ ]
+ },
+ "disableaccount-desc": "관리자가 개별 계정을 비활성화할 수 있게 합니다",
+ "right-disableaccount": "계정을 비활성화하기",
+ "action-disableaccount": "계정을 비활성화하기",
+ "disableaccount": "계정을 비활성화하기",
+ "disableaccount-user": "사용자 이름:",
+ "disableaccount-confirm": "사용자 계정을 비활성화합니다.\n이 사용자는 로그인하거나 비밀번호를 바꿀 수 없고 이메일 알림을 받을 수 없습니다.\n만약 이 사용자가 로그인되어 있다면, 즉시 로그아웃될 것이니다.\n'''계정을 비활성화하는 것은 시스템 관리자의 도움 없이는 되돌릴 수 없습니다.'''",
+ "disableaccount-mustconfirm": "이 계정을 비활성화할 것인지 반드시 확인하여야 합니다.",
+ "disableaccount-nosuchuser": "\"$1\" 계정이 존재하지 않습니다.",
+ "disableaccount-success": "\"$1\" 계정이 영구적으로 비활성화되었습니다.",
+ "logentry-block-disableaccount": "$1님이 {{GENDER:$4|$3}}의 {{GENDER:$2|계정을 비활성화했습니다}}."
+}
diff --git a/DisableAccount/i18n/krc.json b/DisableAccount/i18n/krc.json
new file mode 100644
index 00000000..c6e2dc7e
--- /dev/null
+++ b/DisableAccount/i18n/krc.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ernác",
+ "Iltever"
+ ]
+ },
+ "disableaccount": "Къошулуучуну тергеу джазыуун джукълатыу",
+ "disableaccount-user": "Къошулуучуну аты"
+}
diff --git a/DisableAccount/i18n/ksh.json b/DisableAccount/i18n/ksh.json
new file mode 100644
index 00000000..8f8739af
--- /dev/null
+++ b/DisableAccount/i18n/ksh.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Purodha"
+ ]
+ },
+ "disableaccount-desc": "Määd et för de Wiki_Köbeße müjjelesch, einzel Metmaacher stellzelääje.",
+ "right-disableaccount": "Zohjäng för Metmaacher still lääje",
+ "action-disableaccount": "Zohjäng för Metmaacher still lääje",
+ "disableaccount": "Enem Metmaacher singe Zohjang stell lääje",
+ "disableaccount-user": "Metmaacher_Naame:",
+ "disableaccount-confirm": "Däm Metmaacher singe Zohjang op Duur stell lääje.\nDä Metmaacher kann dann nit mih enlogge, sing Paßwoot ändere, udder <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> krijje.\nWann dä Metmaacher ööhnzwoh enjelogg es, flüsh hä tirag_eruß.\n<strong>Opjepaß:</strong> ''Ene stell jelaate Zohjang kam_mer der ohne Hölp vun enem Administrator vum ẞööver vum Wiki nit widder aan et Loufe krijje.''",
+ "disableaccount-mustconfirm": "Do moß bestäätije, dat De däm Metmaacher singe Zohjang op Duur stell lääje wells.",
+ "disableaccount-nosuchuser": "Ene Metmaacher „$1“ ham_mer nit.",
+ "disableaccount-success": "Däm Metmaacher „$1“ singe Zohjang es op Duur stell jelaat.",
+ "logentry-block-disableaccount": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät {{GENDER:$4|däm|däm|däm Metmaacher|dä|däm}} $3 {{GENDER:$4|singe|singe|singe|iere|singe}} Zohjang desch jemaat."
+}
diff --git a/DisableAccount/i18n/ku-latn.json b/DisableAccount/i18n/ku-latn.json
new file mode 100644
index 00000000..abfd1dde
--- /dev/null
+++ b/DisableAccount/i18n/ku-latn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "George Animal"
+ ]
+ },
+ "disableaccount-user": "Navê bikarhêner:"
+}
diff --git a/DisableAccount/i18n/lb.json b/DisableAccount/i18n/lb.json
new file mode 100644
index 00000000..d58c61e8
--- /dev/null
+++ b/DisableAccount/i18n/lb.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Robby"
+ ]
+ },
+ "disableaccount-desc": "Erlaabt et Administratuere fir eenzel Benotzerkonten ze desaktivéieren.",
+ "right-disableaccount": "Benotzerkonten desaktivéieren",
+ "action-disableaccount": "Benotzerkonten ze desaktivéieren",
+ "disableaccount": "E Benotzerkont desaktivéieren",
+ "disableaccount-user": "Benotzernumm:",
+ "disableaccount-confirm": "Dëse Benotzerkont desaktivéieren.\nDe Benotzer ka sech net méi aloggen, säi Passwuert änneren, a kritt och keng Noriichte méi per Mail.\nWann e Benotzer elo iergendwou ageloggt ass da gëtt hien direkt ausgeloggt.\n''Denkt drun datt desaktivéiere vun engem Kont net ka réckgängeg gemaach ginn ouni d'Interventioun vun engem Administrateur vum System.''",
+ "disableaccount-mustconfirm": "Dir musst confirméieren datt Dir dëse Kont desaktivéiere wëllt.",
+ "disableaccount-nosuchuser": "De Benotzerkont \"$1\" gëtt et net.",
+ "disableaccount-success": "De Benotzerkont \"$1\" gouf definitiv desaktivéiert.",
+ "logentry-block-disableaccount": "$1 huet de {{GENDER:$2|Benotzerkont}} vum {{GENDER:$4|$3}} desaktivéiert."
+}
diff --git a/DisableAccount/i18n/li.json b/DisableAccount/i18n/li.json
new file mode 100644
index 00000000..5c44b4f3
--- /dev/null
+++ b/DisableAccount/i18n/li.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ooswesthoesbes",
+ "Pahles"
+ ]
+ },
+ "disableaccount-desc": "Maak 't veur behieërders meugelik individueel gebroekers oet te sjakele",
+ "right-disableaccount": "Gebroekers oetsjakele",
+ "action-disableaccount": "sjakel konto's oet",
+ "disableaccount": "'ne Gebroeker oetsjakele",
+ "disableaccount-user": "Gebroekersnaam:",
+ "disableaccount-confirm": "Deze gebroeker oetsjakele.\nDe gebroeker kin neet langer aanmelde, 't wachwaord obbenuuts insjtelle of e-mails óntvange.\nEs de gebroeker op dit memènt is aangemeld, weurt heer metein aafgemeld.\n'''t Oetsjakele van 'ne gebroeker is neet trök te drejje zonger hölp van 'ne systeembeheerder''",
+ "disableaccount-mustconfirm": "Doe mós bevestige dats doe deze gebroeker wils oetsjakele.",
+ "disableaccount-nosuchuser": "De gebroeker \"$1\" besjteit neet.",
+ "disableaccount-success": "De gebroeker \"$1\" is permanent oetgesjakeld.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|haet}} de konto van {{GENDER:$4|$3}} oetgesjakeld."
+}
diff --git a/DisableAccount/i18n/lij.json b/DisableAccount/i18n/lij.json
new file mode 100644
index 00000000..60399bca
--- /dev/null
+++ b/DisableAccount/i18n/lij.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Giromin Cangiaxo"
+ ]
+ },
+ "disableaccount-desc": "O consente a-i amministratoî de disattivâ e scingole utençe.",
+ "right-disableaccount": "Disabilitâ e utençe",
+ "action-disableaccount": "disabilitâ e utençe",
+ "disableaccount": "Disabilitâ un'utença",
+ "disableaccount-user": "Nomme utente:",
+ "disableaccount-confirm": "Disabilitâ permanentemente quest'utença.\nL'utente o no saiâ in graddo d'accede, reimpostâ a password ò riçeive notiffiche via e-mail.\nTutte e presente connescioin de l'utente saian subbito terminæ.\n''Notta che a disattivaçion de 'n'utença a no l'è reverscibbile sença l'intervento de 'n amministratô de scistema''.",
+ "disableaccount-mustconfirm": "Ti devi confermâ che ti voeu disabilitâ st'utença.",
+ "disableaccount-nosuchuser": "L'utença \"$1\" a no l'existe.",
+ "disableaccount-success": "L'utença \"$1\" a l'è stæta disabilitâ definitivamente.",
+ "logentry-block-disableaccount": "$1 o l'ha {{GENDER:$2|disabilitou l'utença}} de {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/ln.json b/DisableAccount/i18n/ln.json
new file mode 100644
index 00000000..5266fe2b
--- /dev/null
+++ b/DisableAccount/i18n/ln.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eruedin",
+ "Moyogo"
+ ]
+ },
+ "disableaccount": "Kotendisa kónti ya mosáleli",
+ "disableaccount-user": "Nkómbó ya mosáleli:"
+}
diff --git a/DisableAccount/i18n/lt.json b/DisableAccount/i18n/lt.json
new file mode 100644
index 00000000..46ec3732
--- /dev/null
+++ b/DisableAccount/i18n/lt.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eitvys200",
+ "Garas",
+ "Homo",
+ "Zygimantus"
+ ]
+ },
+ "disableaccount-desc": "Leisti administratoriams išjungti atskiras sąskaitas.",
+ "right-disableaccount": "Išjungti sąskaitas",
+ "action-disableaccount": "išjungti sąskaitas",
+ "disableaccount": "Išjungti vartotojo sąskaitą",
+ "disableaccount-user": "Naudotojo vardas:",
+ "disableaccount-confirm": "Išjungti šią vartotojo paskyrą.\nVartotojas negalės prisijungti, iš naujo nustatyti savo slaptažodį ar gauti pranešimus el. paštu.\nJei vartotojas šiuo metu yra prisijungęs, vartotojas bus iškart atjungtas.\n''Atkreipkite dėmesį, kad paskyros išjungimas negali būti atstatytas be administratoriaus įsikišimo.''",
+ "disableaccount-mustconfirm": "Jūs turite patvirtinti, kad jūs norite išjungti šią sąskaitą.",
+ "disableaccount-nosuchuser": "Naudotojo paskyra „$1“ neegzistuoja.",
+ "disableaccount-success": "Vartotojo paskyra „$1“ buvo išjungta visam laikui.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|išjungė}} {{GENDER:$4|$3}} paskyrą."
+}
diff --git a/DisableAccount/i18n/ltg.json b/DisableAccount/i18n/ltg.json
new file mode 100644
index 00000000..c80eb6b3
--- /dev/null
+++ b/DisableAccount/i18n/ltg.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dark Eagle"
+ ]
+ },
+ "disableaccount-user": "Slāgvuords:"
+}
diff --git a/DisableAccount/i18n/lzh.json b/DisableAccount/i18n/lzh.json
new file mode 100644
index 00000000..cb2fff5a
--- /dev/null
+++ b/DisableAccount/i18n/lzh.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": []
+ },
+ "right-disableaccount": "停簿",
+ "disableaccount": "停簿",
+ "disableaccount-user": "簿名:",
+ "disableaccount-confirm": "停此簿。\n此簿無登、重設符節,或收知電。\n若用之,乃立去。\n''意停簿無系秩之介無回也。''",
+ "disableaccount-mustconfirm": "爾須確乃認停爾之簿也。",
+ "disableaccount-nosuchuser": "「$1」之簿無存也。",
+ "disableaccount-success": "「$1」之簿已久停簿。"
+}
diff --git a/DisableAccount/i18n/mk.json b/DisableAccount/i18n/mk.json
new file mode 100644
index 00000000..e16dc36b
--- /dev/null
+++ b/DisableAccount/i18n/mk.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bjankuloski06"
+ ]
+ },
+ "disableaccount-desc": "Им овозможува на администраторите да оневозможуваат поединечни сметки.",
+ "right-disableaccount": "Оневозможување на сметки",
+ "action-disableaccount": "оневозможување на сметки",
+ "disableaccount": "Оневозможи корисничка сметка",
+ "disableaccount-user": "Корисничко име:",
+ "disableaccount-confirm": "Оневозможување на оваа корисничка сметка.\nКорисникот нема да може да се најавува, да става нова лозинка или да прима известувања по е-пошта.\nАко корисникот е некаде најавен во моментот, тогаш оваа постапка веднаш ќе го одјави.\n''Имајте предвид дека оневозможувањето на сметки не може да се врати без интервенција на системски администратор.''",
+ "disableaccount-mustconfirm": "Мора да потврдите дека сакате да ја оневозможите сметкава.",
+ "disableaccount-nosuchuser": "Корисничката сметка „$1“ не постои.",
+ "disableaccount-success": "Корисничката сметка „$1“ е трајно оневозможена.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|ја оневозможи сметката}} на {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/ml.json b/DisableAccount/i18n/ml.json
new file mode 100644
index 00000000..a154279d
--- /dev/null
+++ b/DisableAccount/i18n/ml.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Praveenp"
+ ]
+ },
+ "disableaccount-desc": "ഒറ്റയൊറ്റ അംഗത്വങ്ങൾ പ്രവർത്തനരഹിതമാക്കാൻ കാര്യനിർവ്വാഹകരെ അനുവദിക്കുക",
+ "right-disableaccount": "അംഗത്വങ്ങൾ പ്രവർത്തനരഹിതമാക്കൽ",
+ "disableaccount": "ഉപയോക്തൃഅംഗത്വം പ്രവർത്തനരഹിതമാക്കുക",
+ "disableaccount-user": "ഉപയോക്തൃനാമം:",
+ "disableaccount-confirm": "ഈ ഉപയോക്തൃ അംഗത്വം പ്രവർത്തനരഹിതമാക്കുക.\nഉപയോക്താവിന് ലോഗിൻ ചെയ്യാനോ, രഹസ്യവാക്ക് മാറ്റാനോ, ഇമെയിൽ അറിയിപ്പുകൾ സ്വീകരിക്കാനോ സാധിക്കില്ല.\nഉപയോക്താവ് ഇപ്പോൾ എവിടെയെങ്കിലും ലോഗിൻ ചെയ്തിട്ടുണ്ടെങ്കിൽ, ഉടനെ തന്നെ പുറത്താകുന്നതാണ്.\n''അംഗത്വം പ്രവർത്തനരഹിതമാക്കൽ സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്ററുടെ ഇടപെടലില്ലാതെ തിരിച്ചാക്കാൻ പറ്റില്ല എന്നത് കണക്കിലെടുക്കുക.''",
+ "disableaccount-mustconfirm": "ഈ അംഗത്വം പ്രവർത്തനരഹിതമാക്കണം എന്നു സ്ഥിരീകരിക്കേണ്ടതുണ്ട്.",
+ "disableaccount-nosuchuser": "\"$1\" എന്ന ഉപയോക്തൃ അംഗത്വം നിലവിലില്ല.",
+ "disableaccount-success": "\"$1\" എന്ന ഉപയോക്തൃ അംഗത്വം സ്ഥിരമായി പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു."
+}
diff --git a/DisableAccount/i18n/mr.json b/DisableAccount/i18n/mr.json
new file mode 100644
index 00000000..d96ce9e7
--- /dev/null
+++ b/DisableAccount/i18n/mr.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Tiven2240",
+ "V.narsikar"
+ ]
+ },
+ "disableaccount-desc": "प्रबंधकास व्यक्तिचे खाते अक्षम करण्यास परवानगी देते",
+ "right-disableaccount": "खाते अक्षम करा",
+ "action-disableaccount": "खाते बंद करा",
+ "disableaccount": "सदस्य खाता बंद करा",
+ "disableaccount-user": "सदस्य नाव:",
+ "disableaccount-confirm": "हे खाता बंद करा.\nया सदस्याला सनोंद प्रवेश करणे, पासवर्ड रीसेट करणे, किंवा ई-मेल सूचना भेटणार नाही.\nजर आपण दुसऱ्या तिथे सनोंद प्रवेश आहेत, ती क्रिया बंद केली जाईल व तुम्ही सनोंद बाहेर पडाल.\n''नोंद घ्यावी की ही खाते पुन्हा चालू केले जाऊ शकत नाही त्यासाठी सिस्टिम अडमिनिस्टरतोर ची गरज आहे.''",
+ "disableaccount-mustconfirm": "आपण हे खाते बंद करू इच्छित असल्याची पुष्टी करणे आवश्यक आहे",
+ "disableaccount-nosuchuser": "सदस्य खाता $1 अस्तित्वात नाही",
+ "disableaccount-success": "सदस्य खाता $1 पूर्णपणे बंद केले आहे",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|disabled the account}} of {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/ms.json b/DisableAccount/i18n/ms.json
new file mode 100644
index 00000000..f2612ac2
--- /dev/null
+++ b/DisableAccount/i18n/ms.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia",
+ "Kurniasan",
+ "Pizza1016"
+ ]
+ },
+ "disableaccount-desc": "Membolehkan penyelia untuk mematikan akaun perseorangan",
+ "right-disableaccount": "Mematikan akaun",
+ "disableaccount": "Lumpuhkan akaun pengguna",
+ "disableaccount-user": "Nama pengguna:",
+ "disableaccount-confirm": "Lumpuhkan akaun pengguna ini.\nPengguna ini tidak akan dapat log masuk, set semula kata laluannya, atau menerima makluman e-mel.\nJika pengguna ini sedang log masuk di mana-mana, dia akan dilog keluar dengan serta-merta.\n''Sila notakan bahawa tindakan melumpuhkan sesuatu akaun tidak boleh diundurkan tanpa bantuan penyelia sistem.''",
+ "disableaccount-mustconfirm": "Anda perlu mengesahkan bahawa anda ingin melumpuhkan akaun ini.",
+ "disableaccount-nosuchuser": "Akaun pengguna \"$1\" tidak wujud.",
+ "disableaccount-success": "Akaun pengguna \"$1\" telah dilumpuhkan selama-lamanya.",
+ "logentry-block-disableaccount": "$1 telah {{GENDER:$2|mematikan akaun}} {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/mt.json b/DisableAccount/i18n/mt.json
new file mode 100644
index 00000000..d3023f69
--- /dev/null
+++ b/DisableAccount/i18n/mt.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrisportelli"
+ ]
+ },
+ "disableaccount-desc": "Tħalli l-amministraturi jiddiżabilitaw kontijiet individwali",
+ "right-disableaccount": "Jiddiżabilita l-kontijiet",
+ "disableaccount": "Iddiżabilita kont tal-utent",
+ "disableaccount-user": "Isem tal-utent:",
+ "disableaccount-confirm": "Iddiżabilita dan il-kont tal-utent.\nL-utent ma jkunx jista' jidħol fil-kont tiegħu, jirrisettja l-password, jew jirċievi notifiki bil-posta elettronika.\nJekk l-utent huwa attwalment fil-kont, dan jiġi illogjat 'il barra.\n''Kun af li jekk tiddżabilita kont mhuwiex reversibbli mingħajr intervent tal-amministratur tas-sistema.''",
+ "disableaccount-mustconfirm": "Trid tikkonferma li tixtieq tiddiżabilita dan il-kont.",
+ "disableaccount-nosuchuser": "Il-kont tal-utent \"$1\" ma jeżistix.",
+ "disableaccount-success": "Il-kont tal-utent \"$1\" ġie diżabilitat b'mod permanenti."
+}
diff --git a/DisableAccount/i18n/my.json b/DisableAccount/i18n/my.json
new file mode 100644
index 00000000..7c655108
--- /dev/null
+++ b/DisableAccount/i18n/my.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lionslayer"
+ ]
+ },
+ "right-disableaccount": "အကောင့်များပိတ်ရန်",
+ "disableaccount": "အသုံးပြုသူအကောင့်တစ်ခုကို ပိတ်လိုက်သည်",
+ "disableaccount-user": "အသုံးပြုသူအမည် -",
+ "disableaccount-mustconfirm": "ဤအကောင့်ကို ပိတ်လိုကြောင်း အတည်ပြုရမည် ဖြစ်သည်။",
+ "disableaccount-nosuchuser": "အသုံးပြုသူအကောင့် \"$1\" မတည်ရှိပါ။",
+ "disableaccount-success": "အသုံးပြုသူအကောင့် \"$1\" ကို ရာသက်ပန် ပိတ်ထားလိုက်သည်။"
+}
diff --git a/DisableAccount/i18n/myv.json b/DisableAccount/i18n/myv.json
new file mode 100644
index 00000000..32e9676e
--- /dev/null
+++ b/DisableAccount/i18n/myv.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Botuzhaleny-sodamo"
+ ]
+ },
+ "disableaccount-user": "Совицянь леметь:"
+}
diff --git a/DisableAccount/i18n/nb.json b/DisableAccount/i18n/nb.json
new file mode 100644
index 00000000..4227c9d3
--- /dev/null
+++ b/DisableAccount/i18n/nb.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jon Harald Søby",
+ "Nghtwlkr",
+ "Sjurhamre"
+ ]
+ },
+ "disableaccount-desc": "Lar administratorer deaktivere individuelle kontoer",
+ "right-disableaccount": "Deaktivere kontoer",
+ "action-disableaccount": "deaktivere kontoer",
+ "disableaccount": "Deaktiver en brukerkonto",
+ "disableaccount-user": "Brukernavn:",
+ "disableaccount-confirm": "Deaktiver denne brukerkontoen.\nBrukeren vil ikke kunne logge inn, tilbakestille sitt passord eller motta e-postvarsler.\nOm denne brukeren er pålogget et sted vil den umiddelbart bli logget ut.\n''Merk at å deaktivere en konto ikke er reversibelt uten inngripen fra en systemadministrator.''",
+ "disableaccount-mustconfirm": "Du må bekrefte at du vil deaktivere denne kontoen.",
+ "disableaccount-nosuchuser": "Brukerkontoen «$1» finnes ikke.",
+ "disableaccount-success": "Brukerkontoen «$1» har blitt permanent deaktivert.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|deaktiverte}} kontoen til {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/nds.json b/DisableAccount/i18n/nds.json
new file mode 100644
index 00000000..75253e79
--- /dev/null
+++ b/DisableAccount/i18n/nds.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Slomox"
+ ]
+ },
+ "disableaccount": "Brukerkonto deaktiveren",
+ "disableaccount-user": "Brukernaam:",
+ "disableaccount-nosuchuser": "Dat Brukerkonto „$1“ gifft dat nich.",
+ "disableaccount-success": "Dat Brukerkonto „$1“ is nu duurhaftig deaktiveert."
+}
diff --git a/DisableAccount/i18n/ne.json b/DisableAccount/i18n/ne.json
new file mode 100644
index 00000000..ec3948ac
--- /dev/null
+++ b/DisableAccount/i18n/ne.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bhawani Gautam",
+ "Bhawani Gautam Rhk",
+ "RajeshPandey"
+ ]
+ },
+ "right-disableaccount": "खातालाई अक्षम गर्ने",
+ "disableaccount": "प्रयोगकर्ता खाता निस्क्रिय गर्ने",
+ "disableaccount-user": "प्रयोगकर्ता नाम:",
+ "disableaccount-mustconfirm": "तपाईंले यो सुनिश्चित गर्नुपर्छ कि तपाईं यो खाता निस्क्रिय गर्न चाहनुहुन्छ।",
+ "disableaccount-nosuchuser": "यो $1 प्रयोगकर्ता खाता छैन।",
+ "disableaccount-success": "\"$1\" प्रयोगकर्ता खाता स्थायी रुपले निस्क्रिय गरिएकोछ।"
+}
diff --git a/DisableAccount/i18n/nl-informal.json b/DisableAccount/i18n/nl-informal.json
new file mode 100644
index 00000000..c1edf75c
--- /dev/null
+++ b/DisableAccount/i18n/nl-informal.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Siebrand"
+ ]
+ },
+ "disableaccount-mustconfirm": "Je moet bevestigen dat je deze gebruiker wilt uitschakelen."
+}
diff --git a/DisableAccount/i18n/nl.json b/DisableAccount/i18n/nl.json
new file mode 100644
index 00000000..2904aaa1
--- /dev/null
+++ b/DisableAccount/i18n/nl.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arent",
+ "Mainframe98",
+ "Siebrand",
+ "Sjoerddebruin"
+ ]
+ },
+ "disableaccount-desc": "Maakt het voor beheerders mogelijk individuele gebruikers uit te schakelen",
+ "right-disableaccount": "Gebruikers uitschakelen",
+ "action-disableaccount": "accounts uit te schakelen",
+ "disableaccount": "Een gebruikersaccount uitschakelen",
+ "disableaccount-user": "Gebruikersnaam:",
+ "disableaccount-confirm": "Deze gebruiker uitschakelen.\nDe gebruiker kan niet langer aanmelden, het wachtwoord opnieuw instellen of e-mails ontvangen.\nAls de gebruiker op dit moment is aangemeld, wordt deze per direct afgemeld.\n''Het uitschakelen van een gebruiker is niet terug te draaien zonder hulp van een systeembeheerder.''",
+ "disableaccount-mustconfirm": "U moet bevestigen dat u deze gebruiker wilt uitschakelen.",
+ "disableaccount-nosuchuser": "De gebruikersaccount \"$1\" bestaat niet.",
+ "disableaccount-success": "De gebruiker \"$1\" is permanent uitgeschakeld.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|heeft}} de gebruiker van {{GENDER:$4|$3}} uitgeschakeld."
+}
diff --git a/DisableAccount/i18n/nn.json b/DisableAccount/i18n/nn.json
new file mode 100644
index 00000000..8eb7ecbd
--- /dev/null
+++ b/DisableAccount/i18n/nn.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Harald Khan",
+ "Njardarlogar"
+ ]
+ },
+ "disableaccount-mustconfirm": "Du lyt stadfesta at du ynskjer å deaktivera denne kontoen.",
+ "disableaccount-nosuchuser": "Brukarkontoen «$1» finst ikkje.",
+ "disableaccount-success": "Brukarkontoen «$1» er permanent deaktivert."
+}
diff --git a/DisableAccount/i18n/oc.json b/DisableAccount/i18n/oc.json
new file mode 100644
index 00000000..5e8dc5e6
--- /dev/null
+++ b/DisableAccount/i18n/oc.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cedric31"
+ ]
+ },
+ "right-disableaccount": "Desactivar dels comptes",
+ "disableaccount": "Desactivar un compte d'utilizaire",
+ "disableaccount-user": "Nom d'utilizaire :"
+}
diff --git a/DisableAccount/i18n/or.json b/DisableAccount/i18n/or.json
new file mode 100644
index 00000000..6b0a95f8
--- /dev/null
+++ b/DisableAccount/i18n/or.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ansumang",
+ "Odisha1",
+ "Psubhashish"
+ ]
+ },
+ "right-disableaccount": "ଖାତା ରଦ୍ଧ କରିବେ",
+ "disableaccount": "ବ୍ୟବହାରକାରୀଙ୍କ ଖାତା ରଦ୍ଧ କରିବେ",
+ "disableaccount-user": "ବ୍ୟବହାରକାରୀଙ୍କ ନାମ:"
+}
diff --git a/DisableAccount/i18n/pa.json b/DisableAccount/i18n/pa.json
new file mode 100644
index 00000000..b3d293bf
--- /dev/null
+++ b/DisableAccount/i18n/pa.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "ਪ੍ਰਚਾਰਕ"
+ ]
+ },
+ "action-disableaccount": "ਬੰਦ ਖਾਤੇ"
+}
diff --git a/DisableAccount/i18n/pdc.json b/DisableAccount/i18n/pdc.json
new file mode 100644
index 00000000..f6da4a4c
--- /dev/null
+++ b/DisableAccount/i18n/pdc.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xqt"
+ ]
+ },
+ "disableaccount-user": "Yuuser-Naame:"
+}
diff --git a/DisableAccount/i18n/pl.json b/DisableAccount/i18n/pl.json
new file mode 100644
index 00000000..ea9fc4c0
--- /dev/null
+++ b/DisableAccount/i18n/pl.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rail",
+ "Railfail536",
+ "Sp5uhe",
+ "Woytecr"
+ ]
+ },
+ "disableaccount-desc": "Umożliwia administratorom wyłączanie poszczególnych kont.",
+ "right-disableaccount": "Wyłączanie kont",
+ "action-disableaccount": "wyłączania kont",
+ "disableaccount": "Wyłącz konto użytkownika",
+ "disableaccount-user": "Nazwa użytkownika",
+ "disableaccount-confirm": "Wyłącz konto użytkownika.\nUżytkownik nie będzie mógł się zalogować, zresetować hasła oraz otrzymywać powiadomień e‐mailem. \nJeśli użytkownik jest obecnie gdziekolwiek zalogowany, zostanie natychmiast wylogowany. \n''Zwróć uwagę, że cofnięcie tej operacji wymagać będzie interwencji administratora systemu.''",
+ "disableaccount-mustconfirm": "Musisz potwierdzić, że chcesz wyłączyć to konto.",
+ "disableaccount-nosuchuser": "Brak konta użytkownika „$1”.",
+ "disableaccount-success": "Konto użytkownika „$1” zostało trwale wyłączone.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|zablokował|zablokowała}} konto {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/pms.json b/DisableAccount/i18n/pms.json
new file mode 100644
index 00000000..31ea30a6
--- /dev/null
+++ b/DisableAccount/i18n/pms.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borichèt",
+ "Dragonòt"
+ ]
+ },
+ "disableaccount-desc": "A përmët a j'aministrator ëd disabilité dij cont andividuaj.",
+ "right-disableaccount": "Disabilité dij cont",
+ "disableaccount": "Disabìlita un cont utent",
+ "disableaccount-user": "Stranòm:",
+ "disableaccount-confirm": "Disabilité sto cont utent.\nL'utent a podrà pi intré ant ël sistema, amposté torna soa ciav, o arsèive notìfiche për pòsta eletrònica.\nSe l'utent a l'é al moment intrà da chèich part, a sarà sùbit barà fòra.\n''Ch'a nòta che disabiité un cont a l'é pa reversìbil senta l'antërvension ëd n'aministrator ëd sistema.''",
+ "disableaccount-mustconfirm": "A dev confirmé ch'a veul disabilité ës cont.",
+ "disableaccount-nosuchuser": "Ël cont utent \"$1\" a esist pa.",
+ "disableaccount-success": "Ël cont utent \"$1\" a l'é stàit disabilità përmanentement."
+}
diff --git a/DisableAccount/i18n/ps.json b/DisableAccount/i18n/ps.json
new file mode 100644
index 00000000..d5bbcf28
--- /dev/null
+++ b/DisableAccount/i18n/ps.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ahmed-Najib-Biabani-Ibrahimkhel"
+ ]
+ },
+ "right-disableaccount": "گڼونونه ناچارنول",
+ "disableaccount": "د يو کارن گڼون ناچارنول",
+ "disableaccount-user": "کارن-نوم:",
+ "disableaccount-confirm": "د کارن دا گڼون ناچارنول.\nد دې گڼون کارن به و نه توانېږي چې غونډال کې ننوځي، خپل پټنوم پرځاي کړي، او يا د خبراوي برېښليک ترلاسه کړي.\nکه دم مهال د دې گڼون کارن له هر ځای نه پرليکه وي، هغه به سمدلاسه د غونډال نه ووځي.\n''دا مه هېروۍ چې تر هاغه پورې چې د غونډال د يو پازوال منځگړتوب نه وي، نو د يو گڼون ناچارنولو چاره بېرته پرشا نه گرځي.''",
+ "disableaccount-mustconfirm": "تاسې بايد د دې چارې پخلی وکړی چې تاسې همدا گڼون ناچارنول غواړۍ.",
+ "disableaccount-nosuchuser": "د \"$1\" کارن گڼون نشته.",
+ "disableaccount-success": "د \"$1\" کارن گڼون د تل لپاره ناچارن شو."
+}
diff --git a/DisableAccount/i18n/pt-br.json b/DisableAccount/i18n/pt-br.json
new file mode 100644
index 00000000..e9aad516
--- /dev/null
+++ b/DisableAccount/i18n/pt-br.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "!Silent",
+ "Felipe L. Ewald",
+ "Giro720",
+ "Luckas",
+ "OTAVIO1981"
+ ]
+ },
+ "disableaccount-desc": "Permite que os administradores desativem contas individuais",
+ "right-disableaccount": "Desativar contas",
+ "action-disableaccount": "desativar contas",
+ "disableaccount": "Desativar uma conta",
+ "disableaccount-user": "Nome de usuário:",
+ "disableaccount-confirm": "Desativar esta conta.\nO usuário ficará impossibilitado de se autenticar, de reiniciar a senha e de receber notificações por e-mail.\nSe neste momento o usuário estiver autenticado em algum lugar, ele sairá de imediato.\n''Note que a desativação de uma conta não pode ser revertida sem intervenção de um administrador.''",
+ "disableaccount-mustconfirm": "Você deve confirmar que pretende desativar esta conta.",
+ "disableaccount-nosuchuser": "A conta de usuário \"$1\" não existe.",
+ "disableaccount-success": "A conta de usuário \"$1\" foi desativada permanentemente.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|desativou a conta}} de {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/pt.json b/DisableAccount/i18n/pt.json
new file mode 100644
index 00000000..e837cfb5
--- /dev/null
+++ b/DisableAccount/i18n/pt.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hamilton Abreu",
+ "Jkb8",
+ "Luckas",
+ "Vitorvicentevalente"
+ ]
+ },
+ "disableaccount-desc": "Permite que os administradores desativem contas individuais.",
+ "right-disableaccount": "Desativar contas",
+ "action-disableaccount": "desativar contas",
+ "disableaccount": "Desativar uma conta de utilizador",
+ "disableaccount-user": "Nome de utilizador:",
+ "disableaccount-confirm": "Desativar esta conta.\nO utilizador ficará impossibilitado de se autenticar, de reiniciar a palavra-passe e de receber notificações por correio eletrónico.\nSe neste momento o utilizador estiver autenticado algures, sairá de imediato.\n''Note que a desativação de uma conta não pode ser revertida sem intervenção de um administrador de sistema.''",
+ "disableaccount-mustconfirm": "Tem de confirmar que pretende desativar esta conta.",
+ "disableaccount-nosuchuser": "A conta de utilizador \"$1\" não existe.",
+ "disableaccount-success": "A conta de utilizador \"$1\" foi desativada permanentemente.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|desativou a conta}} de {{GENDER:$4|$3}}"
+}
diff --git a/DisableAccount/i18n/qqq.json b/DisableAccount/i18n/qqq.json
new file mode 100644
index 00000000..30ff4387
--- /dev/null
+++ b/DisableAccount/i18n/qqq.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "EugeneZelenko",
+ "Nike",
+ "Purodha",
+ "Shirayuki",
+ "Umherirrender"
+ ]
+ },
+ "disableaccount-desc": "{{desc|name=Disable Account|url=https://www.mediawiki.org/wiki/Extension:DisableAccount}}",
+ "right-disableaccount": "{{doc-right|disableaccount}}",
+ "action-disableaccount": "{{doc-action|disableaccount}}",
+ "disableaccount": "{{doc-special|DisableAccount|unlisted=1}}",
+ "disableaccount-user": "{{Identical|Username}}",
+ "disableaccount-confirm": "{{doc-singularthey}}\nA system administrator here is one having access to the system the wiki is running on beyond that of a sysop or a bureaucrat. In Wikimedia terminology they have 'shell access'. This message refers to \"no return without direct database changes.\"\n\nUsed as label for the checkbox.\n\nThe confirmation message for this checkbox is:\n* {{msg-mw|Disableaccount-mustconfirm}}",
+ "disableaccount-mustconfirm": "Used as confirmation message for the checkbox which has the following label:\n* {{msg-mw|Disableaccount-confirm}}",
+ "disableaccount-nosuchuser": "Used as result of username validation. Parameters:\n* $1 - username",
+ "disableaccount-success": "Used as success message. Parameters:\n* $1 - username",
+ "logentry-block-disableaccount": "{{Logentry}}\nAdditional parameters:\n* $4 - username, for GENDER support"
+}
diff --git a/DisableAccount/i18n/qu.json b/DisableAccount/i18n/qu.json
new file mode 100644
index 00000000..8c901483
--- /dev/null
+++ b/DisableAccount/i18n/qu.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "AlimanRuna"
+ ]
+ },
+ "disableaccount-desc": "Kaywanqa kamachiqkuna sapa rakiqunakunata hark'aytam atinku.",
+ "right-disableaccount": "Rakiqunakunata hark'ay",
+ "disableaccount": "Ruraqpa rakiqunanta hark'ay",
+ "disableaccount-user": "Ruraqpa sutin:",
+ "disableaccount-confirm": "Kay ruraqpa sutinta hark'ay.\nRuraqqa manam yaykuyta atinqachu, manam yaykuna rimanta churamuyta atinqachu, manam e-chaski willaykunata chaskiyta atinchu.\nMaypipas yaykusqa kaspaqa, tuyllapi qarqusqam kanqa.\n''Qhawariy, ruraqpa sutinta hark'aspaykiqa manam t'ikrayta atinkichu llika kamachiq mana yanapachkaptin.''",
+ "disableaccount-mustconfirm": "Kay ruraqpa rakiqunanta hark'ayta munaspaykiqa, takyachinaykim tiyan.",
+ "disableaccount-nosuchuser": "\"$1\" sutiyuq ruraqpa rakiqunanqa manam kanchu.",
+ "disableaccount-success": "\"$1\" sutiyuq ruraqpa rakiqunanqa wiñaypaq hark'asqam."
+}
diff --git a/DisableAccount/i18n/rm.json b/DisableAccount/i18n/rm.json
new file mode 100644
index 00000000..bbbe62f5
--- /dev/null
+++ b/DisableAccount/i18n/rm.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gion-andri"
+ ]
+ },
+ "disableaccount-desc": "Lubescha ad administraturs da deactivar contos d'utilisader inividuals.",
+ "right-disableaccount": "Deactivar contos",
+ "disableaccount": "Deactivar in conto d'utilisader",
+ "disableaccount-user": "Num d'utilisader:",
+ "disableaccount-confirm": "Deactivar quest conto d'utilisader.\nQuest utilisader na vegn betg pli pudair s'annunziar, midar il pled-clav u retschaiver e-mails d'avis.\nSche l'utilisader è actualmain annunzià vegn el immediatamain sortì dal sistem.\n''Resguarda che la reactivaziun d'in conto d'utilisader po be vegnir fatga d'in administratur.''",
+ "disableaccount-mustconfirm": "Ti stos confermar che ti vuls deactivar quest conto.",
+ "disableaccount-nosuchuser": "Il conto d'utilisader \"$1\" n'exista betg.",
+ "disableaccount-success": "Il conto d'utilisader \"$1\" è vegnì deactivà premanentamain."
+}
diff --git a/DisableAccount/i18n/ro.json b/DisableAccount/i18n/ro.json
new file mode 100644
index 00000000..d017711f
--- /dev/null
+++ b/DisableAccount/i18n/ro.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Firilacroco",
+ "Minisarm"
+ ]
+ },
+ "disableaccount-desc": "Permite administratorilor să dezactiveze conturi individuale.",
+ "right-disableaccount": "Dezactivează conturi",
+ "disableaccount": "Dezactivare cont de utilizator",
+ "disableaccount-user": "Nume de utilizator:",
+ "disableaccount-confirm": "Dezactivarea acestui cont de utilizator.\nUtilizatorul nu se va mai putea autentifica, nu-și va mai putea reseta parola sau primi notificări prin e-mail.\nDacă utilizatorul este autentificat în acest moment, sesiunea sa va fi încheiată imediat.\n''Rețineți că dezactivarea unui cont de utilizator nu este reversibilă fără intervenția unui administrator de sistem.''",
+ "disableaccount-mustconfirm": "Trebuie să confirmați că doriți dezactivarea acestui cont.",
+ "disableaccount-nosuchuser": "Contul de utilizator „$1” nu există.",
+ "disableaccount-success": "Contul de utilizator „$1” a fost definitiv dezactivat."
+}
diff --git a/DisableAccount/i18n/roa-tara.json b/DisableAccount/i18n/roa-tara.json
new file mode 100644
index 00000000..a0c545f4
--- /dev/null
+++ b/DisableAccount/i18n/roa-tara.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joetaras"
+ ]
+ },
+ "disableaccount-desc": "Permette a le amministrature de desabbilità le cunde utinde individuale.",
+ "right-disableaccount": "Disabbilete le cunde utinde",
+ "action-disableaccount": "disabbilite le cunde",
+ "disableaccount": "Disabbilete 'nu cunde utende",
+ "disableaccount-user": "Nome de l'utende:",
+ "disableaccount-confirm": "Disabbilete stu cunde de l'utende. <br />\nSt'utende pò non ge pò trasè cchiù, azzerà 'a passuord soje, o ricevere email de notifiche. <br />\nCe l'utende jè collegate jndr'à stu mumende, allore avène mise fore. <br />\n''Vide bbuene 'a disabbilitazione de 'nu cunde utende non g'è reversibbele senze 'n'indervende de 'n'amministratore d'u sisteme.''",
+ "disableaccount-mustconfirm": "Tu a confermà ce vuè ccu disabbilete stu cunde utende.",
+ "disableaccount-nosuchuser": "'U cunde utende \"$1\" non g'esiste.",
+ "disableaccount-success": "'U cunde utende \"$1\" ha state disabbilitate pe sembre.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|disabbilite 'u cunde}} de {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/ru.json b/DisableAccount/i18n/ru.json
new file mode 100644
index 00000000..d6fb7073
--- /dev/null
+++ b/DisableAccount/i18n/ru.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Diralik",
+ "Okras",
+ "Александр Сигачёв"
+ ]
+ },
+ "disableaccount-desc": "Позволяет администраторам отключать отдельные учётные записи.",
+ "right-disableaccount": "Отключение учётных записей",
+ "action-disableaccount": "отключение учётных записей",
+ "disableaccount": "Отключение учётной записи участника",
+ "disableaccount-user": "Имя участника:",
+ "disableaccount-confirm": "Отключение этой учётной записи участника. \nУчастник не сможет войти в систему, сбросить свой пароль, получать уведомления по электронной почте. \nЕсли участник в данный момент уже совершил вход в систему, то его сеанс будет немедленно прерван.\n''Обратите внимание, что отключение учётной записи нельзя отменить без вмешательства системного администратора.''",
+ "disableaccount-mustconfirm": "Вы должны подтвердить, что вы хотите отключить эту учётную запись.",
+ "disableaccount-nosuchuser": "Не существует учётной записи участника «$1».",
+ "disableaccount-success": "Учётная запись участника «$1» была отключена навсегда.",
+ "logentry-block-disableaccount": "$1 отключил{{GENDER:$2||а}} учётную запись {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/rue.json b/DisableAccount/i18n/rue.json
new file mode 100644
index 00000000..92462e50
--- /dev/null
+++ b/DisableAccount/i18n/rue.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gazeb"
+ ]
+ },
+ "disableaccount-desc": "Доволює адміністраторам заказати єднотливы конта.",
+ "right-disableaccount": "Заказати конта",
+ "disableaccount": "Заказати конто хоснователя",
+ "disableaccount-user": "Імя хоснователя:",
+ "disableaccount-confirm": "Заказати тото конто хоснователя.\nТот хоснователь не буде годен ся приголосити, мінити своє гесло або приїмати нотіфікації ел. поштов.\nКідь є тот хоснователь даґде приголоченый, буде зараз одголошеный.\n''Усвідомте собі, же заказаня конта ся не дасть звернути без засягу адміністратора.''",
+ "disableaccount-mustconfirm": "Мусите підтвердити, же собі желате заказати тото конто.",
+ "disableaccount-nosuchuser": "Конто хоснователя \"$1\" не єствує.",
+ "disableaccount-success": "Конто хоснователя \"$1\" было заказане настало."
+}
diff --git a/DisableAccount/i18n/sa.json b/DisableAccount/i18n/sa.json
new file mode 100644
index 00000000..f4709177
--- /dev/null
+++ b/DisableAccount/i18n/sa.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "NehalDaveND"
+ ]
+ },
+ "disableaccount-user": "सदस्यनाम"
+}
diff --git a/DisableAccount/i18n/sah.json b/DisableAccount/i18n/sah.json
new file mode 100644
index 00000000..9854d3c3
--- /dev/null
+++ b/DisableAccount/i18n/sah.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "HalanTul"
+ ]
+ },
+ "right-disableaccount": "Бэлиэтэниллибит ааты араарыы",
+ "disableaccount": "Кытааччы бэлиэтэммит аатын араарыы",
+ "disableaccount-user": "Кыттааччы аата:",
+ "disableaccount-confirm": "Кытааччы бу бэлиэ-аатын араарыы. \nКыттааччы тиһиликкэ киирбэт буолуо, аһарык тылын уларытар кыаҕа суох буолуо, электрон почтатыгар биллэриилэр кэлбэт буолуохтара. \nКыттааччы билигин тиһиккэ киирэн олорор буоллаҕына, тутатына таһаарыллыа. \n''Болҕой, араарыллыбыт ааты дьаһабыла суох төннөрөр кыах суох.''",
+ "disableaccount-mustconfirm": "Бу ааты араарабын диэн бигэргэт.",
+ "disableaccount-nosuchuser": "«$1» ааттаах кыттааччы суох эбит.",
+ "disableaccount-success": "«$1» кыттааччы аата букатын араарылынна."
+}
diff --git a/DisableAccount/i18n/sco.json b/DisableAccount/i18n/sco.json
new file mode 100644
index 00000000..a502b992
--- /dev/null
+++ b/DisableAccount/i18n/sco.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Avicennasis",
+ "John Reid"
+ ]
+ },
+ "disableaccount-user": "Uisername:",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|disabled the account}} o {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/sh.json b/DisableAccount/i18n/sh.json
new file mode 100644
index 00000000..fe3db87b
--- /dev/null
+++ b/DisableAccount/i18n/sh.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "OC Ripper",
+ "Vlad5250"
+ ]
+ },
+ "disableaccount-desc": "Omogućava administratorima da onemoguće pojedinačne račune.",
+ "right-disableaccount": "Onemogućavanje računa",
+ "action-disableaccount": "onemogućavanje računa",
+ "disableaccount": "Onemogućavanje korisničkog računa",
+ "disableaccount-user": "Korisničko ime:",
+ "disableaccount-confirm": "Onemogući ovaj korisnički račun.\nKorisnik se neće moći prijaviti, staviti novu šifru ili primati obavještenja putem e-maila.\nAko je korisnik negdje u međuvremenu prijavljen, bit će automatski odmah odjavljen.\n''Zapamtite da se onemogućavanje računa ne može poništiti bez intervencije sistemskog administratora.''",
+ "disableaccount-mustconfirm": "Morate potvrditi da želite onemogućiti ovaj račun.",
+ "disableaccount-nosuchuser": "Korisnički račun \"$1\" ne postoji.",
+ "disableaccount-success": "Korisnički račun \"$1\" je trajno onemogućen.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|je onemogućio|je onemogućila}} nalog {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/si.json b/DisableAccount/i18n/si.json
new file mode 100644
index 00000000..480b80ce
--- /dev/null
+++ b/DisableAccount/i18n/si.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Budhajeewa",
+ "තඹරු විජේසේකර",
+ "බිඟුවා"
+ ]
+ },
+ "right-disableaccount": "අක්‍රීය ගිණුම්",
+ "disableaccount": "පරිශීලක ගිණුම අක්‍රිය කරන්න",
+ "disableaccount-user": "පරිශීලක නාමය:",
+ "disableaccount-confirm": "මෙම පරිශීලක ගිණුම අක්‍රීය කරන්න.\nමෙම පරිශීලකයාට ඇතුලු වීමට, මුරපදය වෙනස් කිරීමට, හෝ විද්‍යුත් තැපැල් දැන්වීම් ලබාගැනීමට නොහැකි වනු ඇත.\nමෙම පරිශීලකයා දැනට කුමන තැනකට හෝ ඇතුලත්වී සිටීනම්, ඔහු ස්‍වයංක්‍රීයවම ඉවත්වනු ඇත.\n''පද්ධති පරිපාලකයෙකුගේ සහය නොමැතිව අක්‍රීය කළ ගිණුමක් නැවත සක්‍රීය කළ නොහැකි බව සලකන්න.''",
+ "disableaccount-mustconfirm": "ඔබ මෙම ගිණුම අක්‍රීය කිරීමට බලාපොරොත්තු වන බව ඔබ විසින් තහවුරු කළ යුතුය.",
+ "disableaccount-nosuchuser": "\"$1\" පරිශීලක ගිණුම නොපවතියි.",
+ "disableaccount-success": "\"$1\" පරිශීලක ගිණුම ස්ථිරවම අක්‍රීය කරන ලදී."
+}
diff --git a/DisableAccount/i18n/sk.json b/DisableAccount/i18n/sk.json
new file mode 100644
index 00000000..a2a38b2f
--- /dev/null
+++ b/DisableAccount/i18n/sk.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Helix84"
+ ]
+ },
+ "disableaccount-desc": "Umožňuje správcom zakázať jednotlivé účty.",
+ "right-disableaccount": "Zakázať účty",
+ "disableaccount": "Zakázať používateľský účet",
+ "disableaccount-user": "Používateľské meno:",
+ "disableaccount-confirm": "Zakázať tento používateľský účet.\nPoužívateľ sa nebude môcť prihlásiť, zmeniť svoje heslo ani dostávať upozornenia emailom.\nAk je používateľ momentálne niekde prihlásený, bude okamžite odhlásený.\n''Pamätajte, že zakázanie používateľského účtu je nezvratné bez zásahu správcu.''",
+ "disableaccount-mustconfirm": "Musíte potvrdiť, že chcete zakázať tento účet.",
+ "disableaccount-nosuchuser": "Používateľský účet „$1“ neexistuje.",
+ "disableaccount-success": "Používateľský účet „$1“ bol natrvalo zakázaný."
+}
diff --git a/DisableAccount/i18n/sl.json b/DisableAccount/i18n/sl.json
new file mode 100644
index 00000000..69d5951f
--- /dev/null
+++ b/DisableAccount/i18n/sl.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dbc334",
+ "Eleassar",
+ "Yerpo"
+ ]
+ },
+ "disableaccount-desc": "Omogoča administratorjem onemogočiti posamezne račune.",
+ "right-disableaccount": "Onemogočanje računov",
+ "action-disableaccount": "onemogočitev računov",
+ "disableaccount": "Onemogoči uporabniški račun",
+ "disableaccount-user": "Uporabniško ime:",
+ "disableaccount-confirm": "Onemogočite ta uporabniški račun.\nUporabnik se ne bo mogel prijaviti, ponastaviti svojega gesla ali prejemati e-poštnih obvestil.\nČe je uporabnik trenutno kjerkoli prijavljen, bo nemudoma odjavljen.\n''Vedite, da onemogočenja računa brez posredovanja sistemskega upravljavca ni mogoče razveljaviti.''",
+ "disableaccount-mustconfirm": "Potrditi morate, da želite onemogočiti ta račun.",
+ "disableaccount-nosuchuser": "Uporabniški račun »$1« ne obstaja.",
+ "disableaccount-success": "Uporabniški račun »$1« je trajno onemogočen.",
+ "logentry-block-disableaccount": "$1 je {{GENDER:$2|onemogočil|onemogočila|onemogočil(-a)}} račun {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/sq.json b/DisableAccount/i18n/sq.json
new file mode 100644
index 00000000..ac4f9f72
--- /dev/null
+++ b/DisableAccount/i18n/sq.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cradel",
+ "Olsi"
+ ]
+ },
+ "right-disableaccount": "Çaktivizo llogaritë",
+ "disableaccount": "Çaktiviyoni një llogari përdoruesi",
+ "disableaccount-user": "Përdoruesi:",
+ "disableaccount-confirm": "Çaktivizoni këtë llogari të përdorusit.\nPërdoruesi nuk do të mund të identifikohet, të rivendosë fjalëkalimin e tij, ose të marrë njoftime me e-mail.\nNëse përdoruesi është aktualisht i identifikuar ndokund, ai do të dalë menjëherë.\n''Vini re se çaktivizimi i jë llogarie nuk mund të kthehet pa ndërhyrjen e një administratori të sistemit.''",
+ "disableaccount-mustconfirm": "Ju duhet të konfirmoni që dëshironi ta çaktivizoni këtë llogari.",
+ "disableaccount-nosuchuser": "Llogaria e përdoruesit \"$1\" nuk ekziston.",
+ "disableaccount-success": "Llogaria e përdoruesit \"$1\" është çaktiviyuar përgjithmonë."
+}
diff --git a/DisableAccount/i18n/sr-ec.json b/DisableAccount/i18n/sr-ec.json
new file mode 100644
index 00000000..7455a6af
--- /dev/null
+++ b/DisableAccount/i18n/sr-ec.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Acamicamacaraca",
+ "BadDog",
+ "Milicevic01",
+ "Rancher",
+ "Сербијана"
+ ]
+ },
+ "disableaccount-desc": "Омогућава администраторима да онемогуће појединачне налоге.",
+ "right-disableaccount": "Онемогућавање налога",
+ "action-disableaccount": "онемогућавате налоге",
+ "disableaccount": "Онемогући кориснички налог",
+ "disableaccount-user": "Корисничко име:",
+ "disableaccount-confirm": "Онемогући овај кориснички налог.\nОвај корисник неће моћи да се пријави, поништи лозинку и прима обавештења преко имејла.\nАко је корисник тренутно пријављен, одмах ће бити одјављен.\n''Онемогућавање налога није могуће без посредовања системског администратора.''",
+ "disableaccount-mustconfirm": "Морате потврдити да желите да онемогућите овај налог.",
+ "disableaccount-nosuchuser": "Кориснички налог „$1“ не постоји.",
+ "disableaccount-success": "Кориснички налог „$1“ је трајно онемогућен.",
+ "logentry-block-disableaccount": "$1 је {{GENDER:$2|онемогућио|онемогућила}} налог {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/sr-el.json b/DisableAccount/i18n/sr-el.json
new file mode 100644
index 00000000..ec7f198f
--- /dev/null
+++ b/DisableAccount/i18n/sr-el.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Milicevic01",
+ "Сербијана"
+ ]
+ },
+ "disableaccount-desc": "Omogućava administratorima da onemoguće pojedinačne naloge.",
+ "right-disableaccount": "onemogućavanje naloga",
+ "action-disableaccount": "onemogućavanje naloga",
+ "disableaccount": "Onemogući korisnički nalog",
+ "disableaccount-user": "Korisničko ime:",
+ "disableaccount-confirm": "Onemogući ovaj korisnički nalog.\nOvaj član neće moći da se prijavi, poništi lozinku i prima obaveštenja preko imejla.\nAko je korisnik trenutno prijavljen, odmah će biti odjavljen.\n''Onemogućavanje naloga nije moguće bez posredovanja sistemskog administratora.''",
+ "disableaccount-mustconfirm": "Morate potvrditi da želite da onemogućite ovaj nalog.",
+ "disableaccount-nosuchuser": "Korisnički nalog „$1“ ne postoji.",
+ "disableaccount-success": "Korisnički nalog „$1“ je trajno onemogućen.",
+ "logentry-block-disableaccount": "$1 je {{GENDER:$2|onemogućio|onemogućila}} nalog {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/stq.json b/DisableAccount/i18n/stq.json
new file mode 100644
index 00000000..376a7310
--- /dev/null
+++ b/DisableAccount/i18n/stq.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Pyt"
+ ]
+ },
+ "right-disableaccount": "Benutserkonto deaktivierje.",
+ "disableaccount": "N Benutserkonto deaktivierje",
+ "disableaccount-user": "Benutsernoome:",
+ "disableaccount-confirm": "Deaktivier dit Benutserkonto.\nDie Benutser kon sik dan nit moor anmäldje, dät Paaswoud touräächsätte of E-Mail-Ättergjuchte ämfange.\nAs die Benutser apstuuns anmälded is, wäd er fluks oumälded.\n''Beoachtje, dät ju Deaktivierenge fon n Benutserkonto nit moor sunner dät Iengriepen fon n Systemadministrator tourääch troald wäide kon.''",
+ "disableaccount-mustconfirm": "Ju Deaktivierenge fon dit Benutserkonto mout nu bestäÄtiged wäide.",
+ "disableaccount-nosuchuser": "Dät Benutserkonto \"$1\" is nit deer.",
+ "disableaccount-success": "Dät Benutserkonto \"$1\" wuud duurhaft deaktivierd."
+}
diff --git a/DisableAccount/i18n/su.json b/DisableAccount/i18n/su.json
new file mode 100644
index 00000000..37013655
--- /dev/null
+++ b/DisableAccount/i18n/su.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kandar"
+ ]
+ },
+ "right-disableaccount": "Tumpurkeun akun",
+ "disableaccount": "Tumpurkeun akun pamaké",
+ "disableaccount-user": "Sandiasma:",
+ "disableaccount-mustconfirm": "Anjeun kudu mastikeun bener-bener rék numpurkeun ieu akun.",
+ "disableaccount-nosuchuser": "Akun pamaké \"$1\" teu aya.",
+ "disableaccount-success": "Akun pamaké \"$1\" geus ditumpurkeun salilana."
+}
diff --git a/DisableAccount/i18n/sv.json b/DisableAccount/i18n/sv.json
new file mode 100644
index 00000000..c60561dc
--- /dev/null
+++ b/DisableAccount/i18n/sv.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Boivie",
+ "Lokal Profil",
+ "WikiPhoenix"
+ ]
+ },
+ "disableaccount-desc": "Låter administratörer inaktivera enskilda konton.",
+ "right-disableaccount": "Inaktivera konton",
+ "action-disableaccount": "inaktivera konton",
+ "disableaccount": "Inaktivera ett användarkonto",
+ "disableaccount-user": "Användarnamn:",
+ "disableaccount-confirm": "Inaktivera detta användarkonto.\nAnvändaren kommer inte att kunna logga in, återställa sitt lösenord, eller ta emot e-postmeddelanden.\nOm användaren är inloggad någonstans, kommer den att omedelbart loggas ut.\n''Observera att inaktivering av ett konto inte är reversibelt utan ingripande av en systemadministratör.''",
+ "disableaccount-mustconfirm": "Du måste bekräfta att du vill inaktivera detta konto.",
+ "disableaccount-nosuchuser": "Användarkontot \"$1\" existerar inte.",
+ "disableaccount-success": "Användarkontot \"$1\" har inaktiverats permanent.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|inaktiverade}} {{GENDER:$4|$3}}s konto."
+}
diff --git a/DisableAccount/i18n/sw.json b/DisableAccount/i18n/sw.json
new file mode 100644
index 00000000..baa3748f
--- /dev/null
+++ b/DisableAccount/i18n/sw.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lloffiwr"
+ ]
+ },
+ "disableaccount-user": "Jina la mtumiaji:"
+}
diff --git a/DisableAccount/i18n/ta.json b/DisableAccount/i18n/ta.json
new file mode 100644
index 00000000..3ae20119
--- /dev/null
+++ b/DisableAccount/i18n/ta.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aswn",
+ "Karthi.dr",
+ "மதனாஹரன்"
+ ]
+ },
+ "disableaccount-desc": "தனிப்பட்ட கணக்குகளை முடக்க நிருவாகிகளை அனுமதிக்கும்",
+ "right-disableaccount": "கணக்குகளை முடக்கு",
+ "disableaccount": "பயனர் கணக்கை முடக்கு",
+ "disableaccount-user": "பயனர் பெயர்:",
+ "disableaccount-mustconfirm": "இக்கணக்கை முடக்குவதை நீங்கள் உறுதி செய்ய வேண்டும்.",
+ "disableaccount-nosuchuser": " \"$1\" எனும் பயனர் கணக்கு ஏதும் இல்லை.",
+ "disableaccount-success": "'' $1 '' எனும் பயனர் கணக்கு நிரந்தரமாக முடக்கப்பட்டுள்ளது."
+}
diff --git a/DisableAccount/i18n/te.json b/DisableAccount/i18n/te.json
new file mode 100644
index 00000000..e41d86d1
--- /dev/null
+++ b/DisableAccount/i18n/te.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Veeven"
+ ]
+ },
+ "right-disableaccount": "ఖాతాలని అచేతనం చెయ్యడం",
+ "disableaccount": "వాడుకరి ఖాతాని అచేతనంచేయి",
+ "disableaccount-user": "వాడుకరి పేరు:",
+ "disableaccount-mustconfirm": "ఈ ఖాతాని అచేతనించదలచుకున్నారు మీరు తప్పనిసరిగా నిర్ధారించాలి.",
+ "disableaccount-nosuchuser": "\"$1\" అనే వాడుకరి ఖాతా లేనే లేదు.",
+ "disableaccount-success": "\"$1\" అనే వాడుకరి ఖాతాని శాశ్వతంగా అచేతనం చేసారు."
+}
diff --git a/DisableAccount/i18n/tet.json b/DisableAccount/i18n/tet.json
new file mode 100644
index 00000000..37f8caf4
--- /dev/null
+++ b/DisableAccount/i18n/tet.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "MF-Warburg"
+ ]
+ },
+ "disableaccount-user": "Naran uza-na'in:"
+}
diff --git a/DisableAccount/i18n/tg-cyrl.json b/DisableAccount/i18n/tg-cyrl.json
new file mode 100644
index 00000000..a4f4e833
--- /dev/null
+++ b/DisableAccount/i18n/tg-cyrl.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "ToJack"
+ ]
+ },
+ "disableaccount-user": "Номи корбарӣ:"
+}
diff --git a/DisableAccount/i18n/th.json b/DisableAccount/i18n/th.json
new file mode 100644
index 00000000..c969fa88
--- /dev/null
+++ b/DisableAccount/i18n/th.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aefgh39622",
+ "Octahedron80"
+ ]
+ },
+ "disableaccount-desc": "อนุญาตให้ผู้ดูแลระบบปิดใช้งานบัญชีทั่วไปได้",
+ "right-disableaccount": "ปิดการใช้งานบัญชี",
+ "disableaccount": "ปิดการใช้งานบัญชีผู้ใช้",
+ "disableaccount-user": "ชื่อผู้ใช้:",
+ "disableaccount-confirm": "ปิดการใช้งานบัญชีผู้ใช้นี้\nผู้ใช้จะไม่สามารถล็อกอิน ตั้งรหัสผ่านใหม่ หรือได้รับการแจ้งเตือนทางอีเมล\nหากผู้ใช้กำลังล็อกอินอยู่ในขณะนี้ พวกเขาจะถูกล็อกเอาต์ทันที\n''โปรดทราบว่าการปิดการใช้งานบัญชี ไม่สามารถย้อนกลับได้โดยปราศจากการแทรกแซงจากผู้ดูแลระบบ''",
+ "disableaccount-mustconfirm": "คุณต้องยืนยันว่าคุณต้องการปิดการใช้งานบัญชีนี้",
+ "disableaccount-nosuchuser": "ไม่มีบัญชีผู้ใช้ \"$1\"",
+ "disableaccount-success": "บัญชีผู้ใช้ \"$1\" ถูกปิดการใช้งานอย่างถาวร",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|ปิดใช้งานบัญชี}}ของ {{GENDER:$4|$3}}"
+}
diff --git a/DisableAccount/i18n/tl.json b/DisableAccount/i18n/tl.json
new file mode 100644
index 00000000..c977aba2
--- /dev/null
+++ b/DisableAccount/i18n/tl.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "AnakngAraw",
+ "Jojit fb"
+ ]
+ },
+ "disableaccount-desc": "Pahintulutan ang mga tagapangasiwa na huwag paganahin ang pang-isahang mga account.",
+ "right-disableaccount": "Huwag paganahin ang mga account",
+ "disableaccount": "Huwag paganahin ang account ng tagagamit",
+ "disableaccount-user": "Pangalan ng tagagamit:",
+ "disableaccount-confirm": "Huwag paganahin ang account ng tagagamit na ito.\nAng tagagamit ay hindi na naka-login, makapagpapalit ng password, o makatatanggap ng mga pabatid sa e-mail.\nKung ang tagagamit ay kasalukuyang nakalogin saan man, kaagad silang ilo-logout.\n''Tandaan na maibabalik lamang sa dati ang hindi pagpapagana ng isang account sa pamamagitan ng tulong ng tagapangasiwa.\"",
+ "disableaccount-mustconfirm": "Dapat mong tiyakin na nais mong huwag paganahin ang account na ito.",
+ "disableaccount-nosuchuser": "Hindi umiiral ang account ng tagagamit na \"$1\".",
+ "disableaccount-success": "Pamalagiang hindi na pinagagana ang account ng tagagamit na \"$1\"."
+}
diff --git a/DisableAccount/i18n/tr.json b/DisableAccount/i18n/tr.json
new file mode 100644
index 00000000..12bd3691
--- /dev/null
+++ b/DisableAccount/i18n/tr.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hedda",
+ "Joseph",
+ "MuratTheTurkish"
+ ]
+ },
+ "disableaccount-desc": "Hizmetlilerin bireysel hesapları devre dışı bırakmasına izin verir",
+ "right-disableaccount": "Hesapları devre dışı bırak",
+ "action-disableaccount": "hesapları devre dışı bırak",
+ "disableaccount": "Bir kullanıcı hesabını devre dışı bırak",
+ "disableaccount-user": "Kullanıcı adı:",
+ "disableaccount-confirm": "Bu kullanıcı hesabını devre dışı bırak.\nKullanıcı oturum açmayacak, parolasını sıfırlayamayacak veya e-posta bildirimlerini alamayacak.\nEğer kullanıcı bir yerde oturum açmış ise, hemen oturum kapatacak.\n''Bir hesabın devre dışı bırakılmasının sistem hizmetlisinin müdahalesi olmadan geri alınamayacağına dikkat edin.''",
+ "disableaccount-mustconfirm": "Bu hesabı devre dışı bırakmak istediğinizi onaylamalısınız.",
+ "disableaccount-nosuchuser": "\"$1\" kullanıcı hesabı mevcut değil.",
+ "disableaccount-success": "\"$1\" kullanıcı hesabı kalıcı olarak devre dışı bırakıldı.",
+ "logentry-block-disableaccount": "$1, {{GENDER:$4|$3}} kullanıcısının {{GENDER:$2|hesabını devre dışı bıraktı}}."
+}
diff --git a/DisableAccount/i18n/tt-cyrl.json b/DisableAccount/i18n/tt-cyrl.json
new file mode 100644
index 00000000..de4f3fb8
--- /dev/null
+++ b/DisableAccount/i18n/tt-cyrl.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bulatbulat"
+ ]
+ },
+ "disableaccount-user": "Кулланучы исеме:"
+}
diff --git a/DisableAccount/i18n/tyv.json b/DisableAccount/i18n/tyv.json
new file mode 100644
index 00000000..b18c459c
--- /dev/null
+++ b/DisableAccount/i18n/tyv.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sborsody"
+ ]
+ },
+ "disableaccount-user": "Aжыглакчының ады",
+ "disableaccount-nosuchuser": "\"$1\" деп бүрүткел бижик чок."
+}
diff --git a/DisableAccount/i18n/ug-arab.json b/DisableAccount/i18n/ug-arab.json
new file mode 100644
index 00000000..aa424712
--- /dev/null
+++ b/DisableAccount/i18n/ug-arab.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sahran"
+ ]
+ },
+ "disableaccount-user": "ئىشلەتكۇچى ئىسمى:"
+}
diff --git a/DisableAccount/i18n/uk.json b/DisableAccount/i18n/uk.json
new file mode 100644
index 00000000..cdddf19d
--- /dev/null
+++ b/DisableAccount/i18n/uk.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Andrijko Z.",
+ "Andriykopanytsia",
+ "Yuriy Apostol",
+ "Ата",
+ "Тест"
+ ]
+ },
+ "disableaccount-desc": "Дозволяє адміністраторам вимикати окремі облікові записи.",
+ "right-disableaccount": "Вимкнення облікових записів",
+ "action-disableaccount": "вимкнути облікові записи",
+ "disableaccount": "Відключення облікового запису користувача",
+ "disableaccount-user": "Ім'я користувача:",
+ "disableaccount-confirm": "Відключення цього облікового запису користувача. \nКористувач не зможе увійти в систему, скинути свій пароль та отримати повідомлення по електронній пошті. \nЯкщо користувач будь-де вже увійшов в систему, його сеанс буде негайно розірвано. \n''Зверніть увагу, що відключення облікового запису неможливо відмінити без втручання адміністратора системи.''",
+ "disableaccount-mustconfirm": "Ви повинні підтвердити, що ви хочете відключити цей обліковий запис.",
+ "disableaccount-nosuchuser": "Облікового запису користувача \"$1\" не існує.",
+ "disableaccount-success": "Обліковий запис користувача \"$1\" відключено назавжди.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|вимкнув|вимкнула}} обліковий запис {{GENDER:$4|$3}}."
+}
diff --git a/DisableAccount/i18n/ur.json b/DisableAccount/i18n/ur.json
new file mode 100644
index 00000000..05ccf639
--- /dev/null
+++ b/DisableAccount/i18n/ur.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "disableaccount-desc": "منتظمین انفرادی اکاؤنٹس کو غیر فعال کرنے کے لئے کی اجازت دیتا ہے",
+ "right-disableaccount": "اکاؤنٹ غیر فعال کریں",
+ "disableaccount": "ایک صارف کا اکاؤنٹ غیر فعال کریں",
+ "disableaccount-user": "صارف کا نام:"
+}
diff --git a/DisableAccount/i18n/vep.json b/DisableAccount/i18n/vep.json
new file mode 100644
index 00000000..9ea9217c
--- /dev/null
+++ b/DisableAccount/i18n/vep.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Игорь Бродский"
+ ]
+ },
+ "disableaccount-user": "Kävutajannimi:"
+}
diff --git a/DisableAccount/i18n/vi.json b/DisableAccount/i18n/vi.json
new file mode 100644
index 00000000..edc15a64
--- /dev/null
+++ b/DisableAccount/i18n/vi.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Minh Nguyen",
+ "Withoutaname"
+ ]
+ },
+ "disableaccount-desc": "Cho phép bảo quản viên vô hiệu hóa tài khoản.",
+ "right-disableaccount": "Vô hiệu hóa tài khoản",
+ "action-disableaccount": "vô hiệu hóa tài khoản",
+ "disableaccount": "Vô hiệu hóa tài khoản người dùng",
+ "disableaccount-user": "Tên người dùng:",
+ "disableaccount-confirm": "Vô hiệu hóa tài khoản của người dùng này.\nNgười dùng sẽ không thể đăng nhập, mặc định lại mật khẩu, hoặc nhận thông báo qua thư điện tử.\nNếu người dùng đã dăng nhập vào bất cứ wiki nào trong hệ thống, nó sẽ bị đăng xuất ngay.\n''Lưu ý rằng chỉ có người quản trị hệ thống can thiệp có thể lùi lại việc vô hiệu hóa tài khoản.''",
+ "disableaccount-mustconfirm": "Bạn phải xác nhận rằng bạn muốn vô hiệu hóa tài khoản này.",
+ "disableaccount-nosuchuser": "Tài khoản người dùng “$1” không tồn tại.",
+ "disableaccount-success": "Tài khoản người dùng “$1” đã bị vô hiệu hóa vĩnh viễn.",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2}}đã tắt tài khoản {{GENDER:$4}}$3."
+}
diff --git a/DisableAccount/i18n/vo.json b/DisableAccount/i18n/vo.json
new file mode 100644
index 00000000..5d61e516
--- /dev/null
+++ b/DisableAccount/i18n/vo.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Malafaya"
+ ]
+ },
+ "disableaccount-user": "Gebananem:",
+ "disableaccount-nosuchuser": "Gebanakal: \"$1\" no dabinon."
+}
diff --git a/DisableAccount/i18n/wa.json b/DisableAccount/i18n/wa.json
new file mode 100644
index 00000000..7192fae6
--- /dev/null
+++ b/DisableAccount/i18n/wa.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Reptilien.19831209BE1"
+ ]
+ },
+ "disableaccount-user": "No d' uzeu"
+}
diff --git a/DisableAccount/i18n/yi.json b/DisableAccount/i18n/yi.json
new file mode 100644
index 00000000..7b2585ef
--- /dev/null
+++ b/DisableAccount/i18n/yi.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "פוילישער"
+ ]
+ },
+ "disableaccount-user": "באַניצער נאָמען:",
+ "disableaccount-nosuchuser": "די באַניצער קאנטע \"$1\" עקזיסטירט נישט."
+}
diff --git a/DisableAccount/i18n/yo.json b/DisableAccount/i18n/yo.json
new file mode 100644
index 00000000..387b2c3b
--- /dev/null
+++ b/DisableAccount/i18n/yo.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Demmy"
+ ]
+ },
+ "right-disableaccount": "Ìdálẹ́kun àwọn àkópamọ́",
+ "disableaccount-user": "Orúkọ oníṣe:"
+}
diff --git a/DisableAccount/i18n/yue.json b/DisableAccount/i18n/yue.json
new file mode 100644
index 00000000..6cad9503
--- /dev/null
+++ b/DisableAccount/i18n/yue.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ktchankt",
+ "Yueman"
+ ]
+ },
+ "disableaccount-desc": "容許管理員停用個別戶口",
+ "right-disableaccount": "停用戶口",
+ "action-disableaccount": "停用戶口",
+ "disableaccount": "停用一個用戶戶口",
+ "disableaccount-user": "用戶名:",
+ "disableaccount-confirm": "停用呢個用戶戶口。\n呢位用戶唔可以再登入、重設佢嘅密碼,又或者收到電郵通知。\n如果呢位用戶而家係響任何地方緊入緊嘅,佢嘅就將會即刻登出。\n''留意停用一個戶口響無系統管理員嘅介入之下係唔可以番轉頭嘅。''",
+ "disableaccount-mustconfirm": "你一定要確認你想去停用呢個戶口。",
+ "disableaccount-nosuchuser": "用戶戶口 \"$1\" 唔存在。",
+ "disableaccount-success": "用戶戶口 \"$1\" 已經永久停用咗。",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|停用咗}} {{GENDER:$4|$3}} 嘅戶口。"
+}
diff --git a/DisableAccount/i18n/zh-hans.json b/DisableAccount/i18n/zh-hans.json
new file mode 100644
index 00000000..77e09652
--- /dev/null
+++ b/DisableAccount/i18n/zh-hans.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Liuxinyu970226",
+ "PhiLiP",
+ "Yfdyh000",
+ "阿pp"
+ ]
+ },
+ "disableaccount-desc": "使管理员可以禁用单个帐户",
+ "right-disableaccount": "禁用账户",
+ "action-disableaccount": "禁用账户",
+ "disableaccount": "禁用用户账户",
+ "disableaccount-user": "用户名:",
+ "disableaccount-confirm": "禁用此用户账户。\n该用户将无法登录、重置其密码或收到电子邮件通知。如果用户当前仍保持登录,其账户将被强制退出。\n''留意若无系统管理员的干预,被禁用的账户不可重新启用。''",
+ "disableaccount-mustconfirm": "请确认您的确要禁用此账户。",
+ "disableaccount-nosuchuser": "用户账户“$1”不存在。",
+ "disableaccount-success": "用户账户“$1”已被永久禁用。",
+ "logentry-block-disableaccount": "$1{{GENDER:$2|停用了}}{{GENDER:$4|$3}}的账户。"
+}
diff --git a/DisableAccount/i18n/zh-hant.json b/DisableAccount/i18n/zh-hant.json
new file mode 100644
index 00000000..a7aac10e
--- /dev/null
+++ b/DisableAccount/i18n/zh-hant.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia",
+ "Cwlin0416",
+ "LNDDYL",
+ "Liuxinyu970226",
+ "Mark85296341",
+ "Waihorace"
+ ]
+ },
+ "disableaccount-desc": "允許管理員停用個別帳號。",
+ "right-disableaccount": "停用帳號",
+ "action-disableaccount": "停用帳戶",
+ "disableaccount": "停用使用者帳號",
+ "disableaccount-user": "使用者名稱:",
+ "disableaccount-confirm": "停用此使用者帳號。\n該使用者將無法登入、重設其密碼或接收電子郵件通知。如果使用者目前正在登入狀態,會立即將該使用者強制登出。\n''注意,需透過系統管理者方可將停用的帳號解除。''",
+ "disableaccount-mustconfirm": "您需要確定您是否要停用此帳號。",
+ "disableaccount-nosuchuser": "使用者帳號 \"$1\" 不存在。",
+ "disableaccount-success": "使用者帳號 \"$1\" 已被永久停用。",
+ "logentry-block-disableaccount": "$1 {{GENDER:$2|已停用}} {{GENDER:$4|$3}} 的帳號。"
+}
diff --git a/DisableAccount/i18n/zh-hk.json b/DisableAccount/i18n/zh-hk.json
new file mode 100644
index 00000000..ed54102e
--- /dev/null
+++ b/DisableAccount/i18n/zh-hk.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Liuxinyu970226"
+ ]
+ },
+ "disableaccount-user": "用戶名稱:"
+}
diff --git a/DisableAccount/maintenance/blockDisabledAccounts.php b/DisableAccount/maintenance/blockDisabledAccounts.php
new file mode 100644
index 00000000..31c7cf5b
--- /dev/null
+++ b/DisableAccount/maintenance/blockDisabledAccounts.php
@@ -0,0 +1,130 @@
+<?php
+
+use MediaWiki\MediaWikiServices;
+
+$IP = getenv( 'MW_INSTALL_PATH' );
+if ( $IP === false ) {
+ $IP = __DIR__ . '/../../..';
+}
+require_once "$IP/maintenance/Maintenance.php";
+
+/**
+ * Script to migrate disabled accounts to blocked accounts. This will also remove these users
+ * from the 'inactive' group. Note that these users will still need sysadmin help to restore
+ * their account as their email and password is set to null when the account is disabled.
+ */
+class BlockDisabledAccounts extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( 'reason', 'Block reason', false, true );
+ $this->setBatchSize( 10 );
+
+ $this->requireExtension( 'Disable Account' );
+ }
+
+ public function execute() {
+ $dbr = wfGetDB( DB_REPLICA );
+ $inactive = $dbr->selectFieldValues(
+ 'user_groups',
+ 'ug_user',
+ [
+ 'ug_group' => 'inactive',
+ 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() )
+ ],
+ __METHOD__
+ );
+
+ $nulledDetails = $dbr->selectFieldValues(
+ 'user',
+ 'user_id',
+ [
+ 'user_password' => '',
+ 'user_email' => '',
+ ],
+ __METHOD__
+ );
+
+ $ids = array_unique( array_merge( $inactive, $nulledDetails ) );
+
+ $disabledCount = count( $ids );
+ if ( $disabledCount === 0 ) {
+ $this->output( "No users in 'inactive' group, or with a blank password and email.\n" );
+ return;
+ }
+
+ $counter = 0;
+ $success = 0;
+
+ $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+
+ $users = UserArray::newFromIDs( $ids );
+
+ $this->output( "Starting migration...\n" );
+ foreach ( $users as $user ) {
+ if ( $counter >= $this->mBatchSize ) {
+ $counter = 0;
+ $lbFactory->waitForReplication();
+ }
+
+ $counter++;
+ if ( $this->doBlockAndLog( $user ) ) {
+ $user->removeGroup( 'inactive' );
+ $success++;
+ }
+ }
+
+ $this->output( "Total $disabledCount users in 'inactive' group, or with " .
+ "a blank password and email. Successfully migrated $success users\n" );
+ }
+
+ /*
+ * Attempt to block the given user. If user is already blocked, modify
+ * the existing block. If block was successful, insert log entry as well.
+ *
+ * @param User $user
+ *
+ * @return bool true on success, false on failure
+ */
+ private function doBlockAndLog( User $user ) {
+ $block = $user->getBlock();
+ $alreadyBlocked = ( $block !== null );
+
+ if ( $block === null ) {
+ $block = new Block();
+ }
+ $reason = $this->getOption( 'reason', 'Convert disabled account to blocked account' );
+ $scriptUser = User::newFromName( 'Maintenance script' );
+
+ $block->setTarget( $user );
+ $block->setBlocker( $scriptUser );
+ $block->setReason( $reason );
+ $block->mExpiry = 'infinity';
+ $block->isEmailBlocked( true );
+ $block->isUsertalkEditAllowed( false );
+
+ // Try to update block if user is already blocked. Otherwise, attempt to insert a new one.
+ $success = $alreadyBlocked ? $block->update() : $block->insert();
+
+ if ( is_array( $success ) ) {
+ $logAction = $alreadyBlocked ? 'reblock' : 'block';
+ $logParams = [];
+ $logParams['5::duration'] = 'infinity';
+ $logParams['6::flags'] = 'noemail,nousertalk';
+
+ $logEntry = new ManualLogEntry( 'block', $logAction );
+ $logEntry->setTarget( Title::makeTitle( NS_USER, $user->getName() ) );
+ $logEntry->setComment( $reason );
+ $logEntry->setPerformer( $scriptUser );
+ $logEntry->setParameters( $logParams );
+ $logEntry->setRelations( [ 'ipb_id' => [ $success['id'] ] ] );
+ $logId = $logEntry->insert();
+ $logEntry->publish( $logId );
+ return true;
+ }
+
+ return false;
+ }
+}
+
+$maintClass = 'BlockDisabledAccounts';
+require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/DisableAccount/package-lock.json b/DisableAccount/package-lock.json
new file mode 100644
index 00000000..5f0cfaed
--- /dev/null
+++ b/DisableAccount/package-lock.json
@@ -0,0 +1,2931 @@
+{
+ "requires": true,
+ "lockfileVersion": 1,
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+ "requires": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
+ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw=="
+ },
+ "@babel/highlight": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
+ "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@eslint/eslintrc": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz",
+ "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==",
+ "requires": {
+ "ajv": "^6.12.4",
+ "debug": "^4.1.1",
+ "espree": "^7.3.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^3.13.1",
+ "lodash": "^4.17.19",
+ "minimatch": "^3.0.4",
+ "strip-json-comments": "^3.1.1"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz",
+ "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w=="
+ },
+ "ajv": {
+ "version": "6.12.4",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
+ "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "espree": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz",
+ "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==",
+ "requires": {
+ "acorn": "^7.4.0",
+ "acorn-jsx": "^5.2.0",
+ "eslint-visitor-keys": "^1.3.0"
+ }
+ }
+ }
+ },
+ "@types/color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true
+ },
+ "acorn": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz",
+ "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==",
+ "dev": true
+ },
+ "acorn-jsx": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz",
+ "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ=="
+ },
+ "ajv": {
+ "version": "6.12.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
+ "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ansi-colors": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA=="
+ },
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
+ "dev": true
+ },
+ "array-slice": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg=="
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ }
+ },
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
+ "colors": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+ "dev": true
+ },
+ "comment-parser": {
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.7.6.tgz",
+ "integrity": "sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg==",
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "dependencies": {
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "dateformat": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+ "dev": true
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+ },
+ "enquirer": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
+ "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "requires": {
+ "ansi-colors": "^4.1.1"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+ },
+ "eslint": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.8.1.tgz",
+ "integrity": "sha512-/2rX2pfhyUG0y+A123d0ccXtMm7DV7sH1m3lk9nk2DZ2LReq39FXHueR9xZwshE5MdfSf0xunSaMWRqyIA6M1w==",
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@eslint/eslintrc": "^0.1.3",
+ "ajv": "^6.10.0",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "enquirer": "^2.3.5",
+ "eslint-scope": "^5.1.0",
+ "eslint-utils": "^2.1.0",
+ "eslint-visitor-keys": "^1.3.0",
+ "espree": "^7.3.0",
+ "esquery": "^1.2.0",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash": "^4.17.19",
+ "minimatch": "^3.0.4",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.1",
+ "progress": "^2.0.0",
+ "regexpp": "^3.1.0",
+ "semver": "^7.2.1",
+ "strip-ansi": "^6.0.0",
+ "strip-json-comments": "^3.1.0",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "eslint-config-wikimedia": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.17.0.tgz",
+ "integrity": "sha512-zxTlSJkNvKNfWRBGxXoFbI4jCKFMDLdclPQZyvlCC4z35xPh81SuhIW1CfYoTmL4DvJEj+2X7wVXlHs5E/WaxQ==",
+ "dev": true,
+ "requires": {
+ "eslint": "^7.6.0",
+ "eslint-plugin-es": "^3.0.1",
+ "eslint-plugin-jsdoc": "^30.2.1",
+ "eslint-plugin-json": "^2.1.2",
+ "eslint-plugin-mediawiki": "^0.2.5",
+ "eslint-plugin-mocha": "^8.0.0",
+ "eslint-plugin-no-jquery": "^2.5.0",
+ "eslint-plugin-node": "^11.1.0",
+ "eslint-plugin-qunit": "^4.3.0",
+ "eslint-plugin-vue": "^6.2.2",
+ "eslint-plugin-wdio": "^6.0.12"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz",
+ "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "dev": true,
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "eslint": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.8.1.tgz",
+ "integrity": "sha512-/2rX2pfhyUG0y+A123d0ccXtMm7DV7sH1m3lk9nk2DZ2LReq39FXHueR9xZwshE5MdfSf0xunSaMWRqyIA6M1w==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@eslint/eslintrc": "^0.1.3",
+ "ajv": "^6.10.0",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "enquirer": "^2.3.5",
+ "eslint-scope": "^5.1.0",
+ "eslint-utils": "^2.1.0",
+ "eslint-visitor-keys": "^1.3.0",
+ "espree": "^7.3.0",
+ "esquery": "^1.2.0",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash": "^4.17.19",
+ "minimatch": "^3.0.4",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.1",
+ "progress": "^2.0.0",
+ "regexpp": "^3.1.0",
+ "semver": "^7.2.1",
+ "strip-ansi": "^6.0.0",
+ "strip-json-comments": "^3.1.0",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ }
+ },
+ "espree": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz",
+ "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.4.0",
+ "acorn-jsx": "^5.2.0",
+ "eslint-visitor-keys": "^1.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "eslint-plugin-es": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz",
+ "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==",
+ "dev": true,
+ "requires": {
+ "eslint-utils": "^2.0.0",
+ "regexpp": "^3.0.0"
+ }
+ },
+ "eslint-plugin-jsdoc": {
+ "version": "30.3.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.3.1.tgz",
+ "integrity": "sha512-185ARou6Wj/68DP0g9kLLBnvmVwgg6/E/7Z8Z7Dz7Z63WgvRNaSvOLQiXkzIOEwstQfwI9PCuFPh4qBJov907A==",
+ "dev": true,
+ "requires": {
+ "comment-parser": "^0.7.6",
+ "debug": "^4.1.1",
+ "jsdoctypeparser": "^9.0.0",
+ "lodash": "^4.17.20",
+ "regextras": "^0.7.1",
+ "semver": "^7.3.2",
+ "spdx-expression-parse": "^3.0.1"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.20",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+ "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-json": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-2.1.2.tgz",
+ "integrity": "sha512-isM/fsUxS4wN1+nLsWoV5T4gLgBQnsql3nMTr8u+cEls1bL8rRQO5CP5GtxJxaOfbcKqnz401styw+H/P+e78Q==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.19",
+ "vscode-json-languageservice": "^3.7.0"
+ }
+ },
+ "eslint-plugin-mediawiki": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.2.5.tgz",
+ "integrity": "sha512-Xs5G4f1EnS6+9gFWkk28nWA9xcOEPx7YZEGsMYGLelZRAF+2DmV/PigF5N5VqoOkNBpwcbXqLD8wLfkg29aF8w==",
+ "dev": true,
+ "requires": {
+ "eslint-plugin-vue": "^6.2.2",
+ "upath": "^1.2.0"
+ }
+ },
+ "eslint-plugin-mocha": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-8.0.0.tgz",
+ "integrity": "sha512-n67etbWDz6NQM+HnTwZHyBwz/bLlYPOxUbw7bPuCyFujv7ZpaT/Vn6KTAbT02gf7nRljtYIjWcTxK/n8a57rQQ==",
+ "dev": true,
+ "requires": {
+ "eslint-utils": "^2.1.0",
+ "ramda": "^0.27.1"
+ }
+ },
+ "eslint-plugin-no-jquery": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.5.0.tgz",
+ "integrity": "sha512-RrQ380mUJJKdjgpQ/tZAJ3B3W1n3LbVmULooS2Pv5pUDcc5uVHVSJMTdUlsbvQyfo6hWP2LJ4FbOoDzENWcF7A==",
+ "dev": true
+ },
+ "eslint-plugin-node": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz",
+ "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==",
+ "dev": true,
+ "requires": {
+ "eslint-plugin-es": "^3.0.0",
+ "eslint-utils": "^2.0.0",
+ "ignore": "^5.1.1",
+ "minimatch": "^3.0.4",
+ "resolve": "^1.10.1",
+ "semver": "^6.1.0"
+ },
+ "dependencies": {
+ "ignore": {
+ "version": "5.1.8",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
+ "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-qunit": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-4.3.0.tgz",
+ "integrity": "sha512-xyQtwoDHWDuIqH5cp8SV0N++gFGwxfMKwRyumsBnJ3INM6Mz/qWUhrCTastOvvAc98aoieu2X5Ht4LgaZ3a75Q==",
+ "dev": true
+ },
+ "eslint-plugin-vue": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz",
+ "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==",
+ "dev": true,
+ "requires": {
+ "natural-compare": "^1.4.0",
+ "semver": "^5.6.0",
+ "vue-eslint-parser": "^7.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-wdio": {
+ "version": "6.0.12",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-6.0.12.tgz",
+ "integrity": "sha512-qZqcU1Z0bqrqhYM1MbwIvKQxcQEGIOEclOjcveavvLZAN4ezpXb1Ogw3xu+UK13iArregJOMI6uUt+JkFmER1A==",
+ "dev": true
+ },
+ "eslint-scope": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz",
+ "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==",
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
+ "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ=="
+ },
+ "espree": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz",
+ "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==",
+ "requires": {
+ "acorn": "^7.4.0",
+ "acorn-jsx": "^5.2.0",
+ "eslint-visitor-keys": "^1.3.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz",
+ "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w=="
+ }
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+ },
+ "esquery": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz",
+ "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==",
+ "requires": {
+ "estraverse": "^5.1.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz",
+ "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw=="
+ }
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
+ },
+ "eventemitter2": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
+ "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
+ "dev": true
+ },
+ "exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "dev": true
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "^1.0.1"
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
+ },
+ "file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "requires": {
+ "flat-cache": "^2.0.1"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "findup-sync": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
+ "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
+ "dev": true,
+ "requires": {
+ "glob": "~5.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "fined": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
+ "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.2",
+ "is-plain-object": "^2.0.3",
+ "object.defaults": "^1.1.0",
+ "object.pick": "^1.2.0",
+ "parse-filepath": "^1.0.1"
+ }
+ },
+ "flagged-respawn": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
+ "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
+ "dev": true
+ },
+ "flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "requires": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ }
+ },
+ "flatted": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
+ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA=="
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.1"
+ }
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc="
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
+ "getobject": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
+ "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+ "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "global-modules": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "dev": true,
+ "requires": {
+ "global-prefix": "^1.0.1",
+ "is-windows": "^1.0.1",
+ "resolve-dir": "^1.0.0"
+ }
+ },
+ "global-prefix": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.2",
+ "homedir-polyfill": "^1.0.1",
+ "ini": "^1.3.4",
+ "is-windows": "^1.0.1",
+ "which": "^1.2.14"
+ }
+ },
+ "globals": {
+ "version": "12.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
+ "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
+ "requires": {
+ "type-fest": "^0.8.1"
+ }
+ },
+ "grunt": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.3.0.tgz",
+ "integrity": "sha512-6ILlMXv11/4cxuhSMfSU+SfvbxrPuqZrAtLN64+tZpQ3DAKfSQPQHRbTjSbdtxfyQhGZPtN0bDZJ/LdCM5WXXA==",
+ "dev": true,
+ "requires": {
+ "dateformat": "~3.0.3",
+ "eventemitter2": "~0.4.13",
+ "exit": "~0.1.2",
+ "findup-sync": "~0.3.0",
+ "glob": "~7.1.6",
+ "grunt-cli": "~1.3.2",
+ "grunt-known-options": "~1.1.0",
+ "grunt-legacy-log": "~3.0.0",
+ "grunt-legacy-util": "~2.0.0",
+ "iconv-lite": "~0.4.13",
+ "js-yaml": "~3.14.0",
+ "minimatch": "~3.0.4",
+ "mkdirp": "~1.0.4",
+ "nopt": "~3.0.6",
+ "rimraf": "~3.0.2"
+ },
+ "dependencies": {
+ "grunt-cli": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz",
+ "integrity": "sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ==",
+ "dev": true,
+ "requires": {
+ "grunt-known-options": "~1.1.0",
+ "interpret": "~1.1.0",
+ "liftoff": "~2.5.0",
+ "nopt": "~4.0.1",
+ "v8flags": "~3.1.1"
+ },
+ "dependencies": {
+ "nopt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
+ "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
+ "dev": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ }
+ }
+ },
+ "js-yaml": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
+ "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "grunt-banana-checker": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/grunt-banana-checker/-/grunt-banana-checker-0.9.0.tgz",
+ "integrity": "sha512-SqPiB6OazWqR8USL0NymtuT5Br3mD9WBBsM1rHC/3wIi2SrZNM6/+j9CIeuEM5oCn+AtO2Y0+rzzFyOdC9afAg==",
+ "dev": true
+ },
+ "grunt-eslint": {
+ "version": "23.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-23.0.0.tgz",
+ "integrity": "sha512-QqHSAiGF08EVD7YlD4OSRWuLRaDvpsRdTptwy9WaxUXE+03mCLVA/lEaR6SHWehF7oUwIqCEjaNONeeeWlB4LQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.0.0",
+ "eslint": "^7.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "dev": true,
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+ "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "grunt-known-options": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz",
+ "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==",
+ "dev": true
+ },
+ "grunt-legacy-log": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz",
+ "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==",
+ "dev": true,
+ "requires": {
+ "colors": "~1.1.2",
+ "grunt-legacy-log-utils": "~2.1.0",
+ "hooker": "~0.2.3",
+ "lodash": "~4.17.19"
+ }
+ },
+ "grunt-legacy-log-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz",
+ "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==",
+ "dev": true,
+ "requires": {
+ "chalk": "~4.1.0",
+ "lodash": "~4.17.19"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "dev": true,
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "grunt-legacy-util": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.0.tgz",
+ "integrity": "sha512-ZEmYFB44bblwPE2oz3q3ygfF6hseQja9tx8I3UZIwbUik32FMWewA+d1qSFicMFB+8dNXDkh35HcDCWlpRsGlA==",
+ "dev": true,
+ "requires": {
+ "async": "~1.5.2",
+ "exit": "~0.1.1",
+ "getobject": "~0.1.0",
+ "hooker": "~0.2.3",
+ "lodash": "~4.17.20",
+ "underscore.string": "~3.3.5",
+ "which": "~1.3.0"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.20",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+ "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
+ "dev": true
+ }
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+ "dev": true,
+ "requires": {
+ "parse-passwd": "^1.0.0"
+ }
+ },
+ "hooker": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
+ "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg=="
+ },
+ "import-fresh": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
+ "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "dev": true
+ },
+ "interpret": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
+ "dev": true
+ },
+ "is-absolute": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
+ "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
+ "dev": true,
+ "requires": {
+ "is-relative": "^1.0.0",
+ "is-windows": "^1.0.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-relative": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
+ "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+ "dev": true,
+ "requires": {
+ "is-unc-path": "^1.0.0"
+ }
+ },
+ "is-unc-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
+ "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+ "dev": true,
+ "requires": {
+ "unc-path-regex": "^0.1.2"
+ }
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsdoctypeparser": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz",
+ "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE="
+ },
+ "jsonc-parser": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.0.tgz",
+ "integrity": "sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
+ },
+ "levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "requires": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ }
+ },
+ "liftoff": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz",
+ "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=",
+ "dev": true,
+ "requires": {
+ "extend": "^3.0.0",
+ "findup-sync": "^2.0.0",
+ "fined": "^1.0.1",
+ "flagged-respawn": "^1.0.0",
+ "is-plain-object": "^2.0.4",
+ "object.map": "^1.0.0",
+ "rechoir": "^0.6.2",
+ "resolve": "^1.1.7"
+ },
+ "dependencies": {
+ "findup-sync": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
+ "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
+ "dev": true,
+ "requires": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^3.1.0",
+ "micromatch": "^3.0.4",
+ "resolve-dir": "^1.0.1"
+ }
+ },
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "lodash": {
+ "version": "4.17.19",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
+ "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
+ },
+ "make-iterator": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
+ "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.2"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+ },
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc="
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.defaults": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+ "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
+ "dev": true,
+ "requires": {
+ "array-each": "^1.0.1",
+ "array-slice": "^1.0.0",
+ "for-own": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
+ "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
+ "dev": true,
+ "requires": {
+ "for-own": "^1.0.0",
+ "make-iterator": "^1.0.0"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "optionator": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "requires": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.3"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "dev": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "requires": {
+ "callsites": "^3.0.0"
+ }
+ },
+ "parse-filepath": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+ "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
+ "dev": true,
+ "requires": {
+ "is-absolute": "^1.0.0",
+ "map-cache": "^0.2.0",
+ "path-root": "^0.1.1"
+ }
+ },
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+ "dev": true
+ },
+ "path-root": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+ "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
+ "dev": true,
+ "requires": {
+ "path-root-regex": "^0.1.0"
+ }
+ },
+ "path-root-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
+ "dev": true
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true
+ },
+ "prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ },
+ "ramda": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz",
+ "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==",
+ "dev": true
+ },
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.1.6"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "regexpp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
+ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q=="
+ },
+ "regextras": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz",
+ "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==",
+ "dev": true
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
+ "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ },
+ "resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.0",
+ "global-modules": "^1.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "semver": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ=="
+ },
+ "set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
+ },
+ "slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ }
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+ "dev": true
+ },
+ "spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
+ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
+ "dev": true
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "table": {
+ "version": "5.4.6",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+ "requires": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ="
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "requires": {
+ "prelude-ls": "^1.2.1"
+ }
+ },
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA=="
+ },
+ "unc-path-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
+ "dev": true
+ },
+ "underscore.string": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz",
+ "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "^1.0.3",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ }
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
+ }
+ }
+ },
+ "upath": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+ "dev": true
+ },
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "v8-compile-cache": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz",
+ "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ=="
+ },
+ "v8flags": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz",
+ "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "^1.0.1"
+ }
+ },
+ "vscode-json-languageservice": {
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.8.3.tgz",
+ "integrity": "sha512-8yPag/NQHCuTthahyaTtzK0DHT0FKM/xBU0mFBQ8nMo8C1i2P+FCyIVqICoNoHkRI2BTGlXKomPUpsqjSz0TnQ==",
+ "dev": true,
+ "requires": {
+ "jsonc-parser": "^2.2.1",
+ "vscode-languageserver-textdocument": "^1.0.1",
+ "vscode-languageserver-types": "^3.15.1",
+ "vscode-nls": "^4.1.2",
+ "vscode-uri": "^2.1.2"
+ }
+ },
+ "vscode-languageserver-textdocument": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz",
+ "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==",
+ "dev": true
+ },
+ "vscode-languageserver-types": {
+ "version": "3.15.1",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz",
+ "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==",
+ "dev": true
+ },
+ "vscode-nls": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.2.tgz",
+ "integrity": "sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==",
+ "dev": true
+ },
+ "vscode-uri": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz",
+ "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==",
+ "dev": true
+ },
+ "vue-eslint-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz",
+ "integrity": "sha512-Kr21uPfthDc63nDl27AGQEhtt9VrZ9nkYk/NTftJ2ws9XiJwzJJCnCr3AITQ2jpRMA0XPGDECxYH8E027qMK9Q==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "eslint-scope": "^5.0.0",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.2.1",
+ "esquery": "^1.0.1",
+ "lodash": "^4.17.15"
+ },
+ "dependencies": {
+ "espree": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
+ "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.1.1",
+ "acorn-jsx": "^5.2.0",
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ }
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ }
+ }
+}
diff --git a/DisableAccount/package.json b/DisableAccount/package.json
new file mode 100644
index 00000000..8a2e3e97
--- /dev/null
+++ b/DisableAccount/package.json
@@ -0,0 +1,12 @@
+{
+ "private": true,
+ "scripts": {
+ "test": "grunt test"
+ },
+ "devDependencies": {
+ "eslint-config-wikimedia": "0.17.0",
+ "grunt": "1.3.0",
+ "grunt-banana-checker": "0.9.0",
+ "grunt-eslint": "23.0.0"
+ }
+}