joway 2 years ago
parent
commit
f29ee39825

+ 1 - 0
backendApi/config/menu.php

@@ -506,6 +506,7 @@ return [
             ['name'=>'编辑会员聘级', 'class'=>'', 'icon'=>'', 'controller'=>'config', 'action'=>'emp-level-edit', 'routePath'=>'config/emp-level-edit', 'show'=>0,],
             ['name'=>'报单中心级别配置', 'class'=>'', 'icon'=>'', 'controller'=>'config', 'action'=>'dec-role', 'routePath'=>'config/dec-role', 'show'=>1,],
             ['name'=>'编辑报单中心级别', 'class'=>'', 'icon'=>'', 'controller'=>'config', 'action'=>'dec-role-edit', 'routePath'=>'config/dec-role-edit', 'show'=>0,],
+            ['name'=>'用户在线统计', 'class'=>'', 'icon'=>'', 'controller'=>'config', 'action'=>'user-online', 'routePath'=>'config/user-online', 'show'=>1,],
         ],
     ],
 ];

+ 1 - 0
backendApi/config/urlManagerRules.php

@@ -299,6 +299,7 @@ return [
             'POST,GET sms' => 'sms',
             'POST,GET transfer' => 'transfer',
             'POST,GET score' => 'score',
+            'POST,GET user-online' => 'user-online',
             'GET region' => 'region',
             'GET region-js' => 'region-js',
             'GET init-region-xls' => 'init-region-xls',

+ 51 - 0
backendApi/modules/v1/controllers/ConfigController.php

@@ -9,6 +9,8 @@
 namespace backendApi\modules\v1\controllers;
 
 use backendApi\modules\v1\models\Admin;
+use backendApi\modules\v1\models\User;
+use common\components\Redis;
 use common\helpers\Cache;
 use common\helpers\Date;
 use common\helpers\Form;
@@ -824,6 +826,55 @@ class ConfigController extends BaseController {
         return static::notice('更新服务协议成功');
     }
 
+    /**
+     * 获取当前在线用户
+     * @return mixed
+     * @throws \yii\base\InvalidConfigException
+     * @throws \yii\web\HttpException
+     */
+    public function actionUserOnline() {
+        $params = Yii::$app->request->get();
+        $page = $params['page'];
+        $pageSize = $params['pageSize'];
+        $redisKey = $params['filterStatus'] == 1 ? 'user:timeOut' : 'admin:timeOut';
+        $redisKeyUserInfo = 'user:baseInfo';
+
+        $tokens = Yii::$app->tokenRedis->hgetall($redisKey);
+        $timeOut = Yii::$app->params['operationTimeOut'];
+        $currentTime = time();
+        $user_info = [];
+        if($tokens && is_array($tokens)){
+            foreach($tokens as $k=>$v){
+                //判断是否是hash的key
+                $last_time = Yii::$app->tokenRedis->hget($redisKey,$v);
+                if($last_time && ( $currentTime - $last_time < $timeOut )){
+                    if( $params['filterStatus'] == 1){
+                        $user_data = json_decode(Yii::$app->tokenRedis->hget($redisKeyUserInfo,$v),true);
+                        $user_info['list'][$k]['ID'] = $user_data['USER_NAME'];
+                        $user_info['list'][$k]['REAL_NAME'] = $user_data['REAL_NAME'];
+                        $user_info['list'][$k]['UPDATE_TIME'] = date('Y-m-d H:i:s',$last_time);
+                    } else {
+                        $user_data = User::find()->where(['ID'=>$v])->asArray()->one();
+                        $user_info['list'][$k]['ID'] = $user_data['ADMIN_NAME'];
+                        $user_info['list'][$k]['REAL_NAME'] = $user_data['REAL_NAME'];
+                        $user_info['list'][$k]['UPDATE_TIME'] = date('Y-m-d H:i:s',$last_time);
+                    }
+
+                }
+            }
+        }
+        if($user_info){
+            $user_info['list'] = array_values($user_info['list']);
+            $totalCount = count($user_info['list']);
+            $limit = ($page - 1) * $pageSize;
+            array_multisort(array_column($user_info['list'],'UPDATE_TIME'), SORT_DESC,$user_info['list']);
+            $user_info['list'] = array_slice($user_info['list'],$limit,$pageSize);
+            $user_info['totalCount'] = $totalCount;
+            $user_info['pageSize'] = $pageSize;
+        }
+        return static::notice($user_info);
+    }
+
     public static function actionInitRegionXls() {
         BaiduRegion::deleteAll();
         BaiduRegion::importXls(0,1000);

+ 4 - 0
backendEle/package.json

@@ -15,6 +15,7 @@
     "trial": "node build/trial.js"
   },
   "dependencies": {
+    "-": "0.0.1",
     "ajv": "^6.11.0",
     "axios": "^0.19.0",
     "babel-polyfill": "^6.26.0",
@@ -22,7 +23,10 @@
     "countup.js": "^1.9.3",
     "echarts": "^4.1.0",
     "element-ui": "2.9.1",
+    "http": "0.0.1-security",
+    "js": "^0.1.0",
     "nix-tinymce": "^1.0.7",
+    "parser": "^0.1.4",
     "ua-parser-js": "^0.7.20",
     "v-charts": "^1.16.20",
     "vue": "^2.5.21",

File diff suppressed because it is too large
+ 318 - 319
backendEle/src/router/index.js


+ 119 - 0
backendEle/src/views/config/user-online.vue

@@ -0,0 +1,119 @@
+<template>
+  <div v-loading="loading">
+    <div class="white-box">
+      <el-tabs v-model="filterStatus" @tab-click="handleFilterStatusClick">
+        <el-tab-pane label="会员用户" name="1" :lazy="true"></el-tab-pane>
+        <el-tab-pane label="后台操作人" name="2" :lazy="true"></el-tab-pane>
+      </el-tabs>
+      <el-table :data="tableData" stripe style="width: 100%;" >
+        <el-table-column label="用户编号">
+          <template slot-scope="scope">
+            {{scope.row.ID}}
+          </template>
+        </el-table-column>
+        <el-table-column label="用户姓名">
+          <template slot-scope="scope">
+            {{scope.row.REAL_NAME}}
+          </template>
+        </el-table-column>
+        <el-table-column label="最后操作时间">
+          <template slot-scope="scope">
+            {{scope.row.UPDATE_TIME}}
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination :total="totalCount" :page_size="pageSize" @size-change="handleSizeChange" @current-change="handleCurrentChange"></pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+  import network from '@/utils/network'
+  import tool from '@/utils/tool'
+  import FilterUser from '@/components/FilterUser'
+  import baseInfo from '@/utils/baseInfo'
+  import permission from '@/utils/permission'
+  import Pagination from '@/components/Pagination'
+  import filterHelper from '@/utils/filterHelper'
+
+  export default {
+    name: 'leo-balance-audit-table',
+    components: {FilterUser,Pagination},
+    mounted() {
+      network.getData('finance/change-balance-type').then(response => {
+        this.type = response.type
+        this.dealTypes = response.dealTypes
+        this.getData()
+      })
+    },
+    data() {
+      return {
+        tableHeaders: null,
+        tableData: null,
+        loading: true,
+        multipleSelection: [],
+        currentPage: 1,
+        totalPages: 1,
+        totalCount: 1,
+        pageSize: 20,
+        tool: tool,
+        permission: permission,
+        baseDecLevels: baseInfo.decLevels(),
+        filterTypes: {},
+        filterModel: {},
+        filterStatus: '1',
+        filterData: null,
+        type: null,
+        dealTypes: null,
+        dialogEditLoading: false,
+        dialogAuditLoading: false,
+        dialogEditFormVisible: false,
+        dialogAuditFormVisible: false,
+        auditPassButtonStat: true,
+      }
+    },
+    methods: {
+      handleFilterStatusClick(tab, event) {
+        filterHelper.clearFilterOption(this)
+        this.getData()
+      },
+      handleCurrentChange(page) {
+        this.getData(page, this.pageSize)
+      },
+      handleSizeChange(pageSize) {
+        this.getData(this.currentPage, pageSize)
+      },
+      handleFilterUser(filterData) {
+        filterHelper.handleFilterUser(this, filterData)
+      },
+      getData(page, pageSize) {
+        let filterData = this.filterModel
+        let vueObj=this
+        filterData.filterStatus = this.filterStatus
+        network.getPageData(this, 'config/user-online', page, pageSize, filterData, function (response) {
+          vueObj.tableData = response.list
+        })
+      },
+      handleExport(){
+        this.$confirm(`确定要导出当前数据吗?`, '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          return network.getData(`finance/balance-audit-list-export`, this.filterModel)
+        }).then(response => {
+          this.$message({
+            message: response,
+            type: 'success'
+          })
+        }).catch(response => {
+
+        })
+      },
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 4 - 4
common/config/config-devlopment.php

@@ -9,11 +9,11 @@ return [
     // 奖金结算系统主库
     'db' => [
         // 数据库连接
-        'dsn' => 'mysql:host=localhost;dbname=aikang_test',
+        'dsn' => 'mysql:host=16.163.228.151;port=8051;dbname=nc_shaojiangjin_0329',
         // 数据库用户名
-        'username' => 'root',
+        'username' => 'black_tea_0309',
         // 数据库密码
-        'password' => '123456',
+        'password' => 'ndZ4MXYST7',
         // 数据库字符集
         'charset' => 'utf8',
         // 数据表前缀
@@ -100,4 +100,4 @@ return [
         'host' => '127.0.0.1',
         'port' => '9513',
     ],
-];
+];

+ 4 - 4
common/config/config-product.php

@@ -9,11 +9,11 @@ return [
     // 奖金结算系统主库
     'db' => [
         // 数据库连接
-        'dsn' => 'mysql:host=173.1.0.128;port=4000;dbname=aikang_db',
+        'dsn' => 'mysql:host=16.163.228.151;port=8051;dbname=nc_shaojiangjin_0329',
         // 数据库用户名
-        'username' => 'aikang',
+        'username' => 'black_tea_0309',
         // 数据库密码
-        'password' => 'xtuNQ7F&p0M&UhcE',
+        'password' => 'ndZ4MXYST7',
         // 数据库字符集
         'charset' => 'utf8',
         // 数据表前缀
@@ -100,4 +100,4 @@ return [
         'host' => '127.0.0.1',
         'port' => '9513',
     ],
-];
+];

+ 15 - 2
vendor/autoload.php

@@ -3,8 +3,21 @@
 // autoload.php @generated by Composer
 
 if (PHP_VERSION_ID < 50600) {
-    echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
-    exit(1);
+    if (!headers_sent()) {
+        header('HTTP/1.1 500 Internal Server Error');
+    }
+    $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
+    if (!ini_get('display_errors')) {
+        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+            fwrite(STDERR, $err);
+        } elseif (!headers_sent()) {
+            echo $err;
+        }
+    }
+    trigger_error(
+        $err,
+        E_USER_ERROR
+    );
 }
 
 require_once __DIR__ . '/composer/autoload_real.php';

+ 27 - 14
vendor/composer/ClassLoader.php

@@ -42,6 +42,9 @@ namespace Composer\Autoload;
  */
 class ClassLoader
 {
+    /** @var \Closure(string):void */
+    private static $includeFile;
+
     /** @var ?string */
     private $vendorDir;
 
@@ -106,6 +109,7 @@ class ClassLoader
     public function __construct($vendorDir = null)
     {
         $this->vendorDir = $vendorDir;
+        self::initializeIncludeClosure();
     }
 
     /**
@@ -425,7 +429,8 @@ class ClassLoader
     public function loadClass($class)
     {
         if ($file = $this->findFile($class)) {
-            includeFile($file);
+            $includeFile = self::$includeFile;
+            $includeFile($file);
 
             return true;
         }
@@ -555,18 +560,26 @@ class ClassLoader
 
         return false;
     }
-}
 
-/**
- * Scope isolated include.
- *
- * Prevents access to $this/self from included files.
- *
- * @param  string $file
- * @return void
- * @private
- */
-function includeFile($file)
-{
-    include $file;
+    /**
+     * @return void
+     */
+    private static function initializeIncludeClosure()
+    {
+        if (self::$includeFile !== null) {
+            return;
+        }
+
+        /**
+         * Scope isolated include.
+         *
+         * Prevents access to $this/self from included files.
+         *
+         * @param  string $file
+         * @return void
+         */
+        self::$includeFile = \Closure::bind(static function($file) {
+            include $file;
+        }, null, null);
+    }
 }

+ 19 - 12
vendor/composer/InstalledVersions.php

@@ -28,7 +28,7 @@ class InstalledVersions
 {
     /**
      * @var mixed[]|null
-     * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
+     * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
      */
     private static $installed;
 
@@ -39,7 +39,7 @@ class InstalledVersions
 
     /**
      * @var array[]
-     * @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+     * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
      */
     private static $installedByVendor = array();
 
@@ -98,7 +98,7 @@ class InstalledVersions
     {
         foreach (self::getInstalled() as $installed) {
             if (isset($installed['versions'][$packageName])) {
-                return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
+                return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
             }
         }
 
@@ -119,7 +119,7 @@ class InstalledVersions
      */
     public static function satisfies(VersionParser $parser, $packageName, $constraint)
     {
-        $constraint = $parser->parseConstraints($constraint);
+        $constraint = $parser->parseConstraints((string) $constraint);
         $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
 
         return $provided->matches($constraint);
@@ -243,7 +243,7 @@ class InstalledVersions
 
     /**
      * @return array
-     * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
+     * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
      */
     public static function getRootPackage()
     {
@@ -257,7 +257,7 @@ class InstalledVersions
      *
      * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
      * @return array[]
-     * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
+     * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
      */
     public static function getRawData()
     {
@@ -280,7 +280,7 @@ class InstalledVersions
      * Returns the raw data of all installed.php which are currently loaded for custom implementations
      *
      * @return array[]
-     * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+     * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
      */
     public static function getAllRawData()
     {
@@ -303,7 +303,7 @@ class InstalledVersions
      * @param  array[] $data A vendor/composer/installed.php data set
      * @return void
      *
-     * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
+     * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
      */
     public static function reload($data)
     {
@@ -313,7 +313,7 @@ class InstalledVersions
 
     /**
      * @return array[]
-     * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+     * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
      */
     private static function getInstalled()
     {
@@ -328,7 +328,9 @@ class InstalledVersions
                 if (isset(self::$installedByVendor[$vendorDir])) {
                     $installed[] = self::$installedByVendor[$vendorDir];
                 } elseif (is_file($vendorDir.'/composer/installed.php')) {
-                    $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
+                    /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
+                    $required = require $vendorDir.'/composer/installed.php';
+                    $installed[] = self::$installedByVendor[$vendorDir] = $required;
                     if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
                         self::$installed = $installed[count($installed) - 1];
                     }
@@ -340,12 +342,17 @@ class InstalledVersions
             // only require the installed.php file if this file is loaded from its dumped location,
             // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
             if (substr(__DIR__, -8, 1) !== 'C') {
-                self::$installed = require __DIR__ . '/installed.php';
+                /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
+                $required = require __DIR__ . '/installed.php';
+                self::$installed = $required;
             } else {
                 self::$installed = array();
             }
         }
-        $installed[] = self::$installed;
+
+        if (self::$installed !== array()) {
+            $installed[] = self::$installed;
+        }
 
         return $installed;
     }

+ 10 - 17
vendor/composer/autoload_real.php

@@ -33,25 +33,18 @@ class ComposerAutoloaderInitfefd691d76b71aadb785cf30e72d29ac
 
         $loader->register(true);
 
-        $includeFiles = \Composer\Autoload\ComposerStaticInitfefd691d76b71aadb785cf30e72d29ac::$files;
-        foreach ($includeFiles as $fileIdentifier => $file) {
-            composerRequirefefd691d76b71aadb785cf30e72d29ac($fileIdentifier, $file);
+        $filesToLoad = \Composer\Autoload\ComposerStaticInitfefd691d76b71aadb785cf30e72d29ac::$files;
+        $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
+            if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+                $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+
+                require $file;
+            }
+        }, null, null);
+        foreach ($filesToLoad as $fileIdentifier => $file) {
+            $requireFile($fileIdentifier, $file);
         }
 
         return $loader;
     }
 }
-
-/**
- * @param string $fileIdentifier
- * @param string $file
- * @return void
- */
-function composerRequirefefd691d76b71aadb785cf30e72d29ac($fileIdentifier, $file)
-{
-    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
-        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
-
-        require $file;
-    }
-}

+ 0 - 170
vendor/composer/installed.json

@@ -1290,117 +1290,6 @@
             ],
             "install-path": "../markbaker/matrix"
         },
-        {
-            "name": "monolog/monolog",
-            "version": "2.8.0",
-            "version_normalized": "2.8.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Seldaek/monolog.git",
-                "reference": "720488632c590286b88b80e62aa3d3d551ad4a50"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50",
-                "reference": "720488632c590286b88b80e62aa3d3d551ad4a50",
-                "shasum": "",
-                "mirrors": [
-                    {
-                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
-                        "preferred": true
-                    }
-                ]
-            },
-            "require": {
-                "php": ">=7.2",
-                "psr/log": "^1.0.1 || ^2.0 || ^3.0"
-            },
-            "provide": {
-                "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0"
-            },
-            "require-dev": {
-                "aws/aws-sdk-php": "^2.4.9 || ^3.0",
-                "doctrine/couchdb": "~1.0@dev",
-                "elasticsearch/elasticsearch": "^7 || ^8",
-                "ext-json": "*",
-                "graylog2/gelf-php": "^1.4.2",
-                "guzzlehttp/guzzle": "^7.4",
-                "guzzlehttp/psr7": "^2.2",
-                "mongodb/mongodb": "^1.8",
-                "php-amqplib/php-amqplib": "~2.4 || ^3",
-                "phpspec/prophecy": "^1.15",
-                "phpstan/phpstan": "^0.12.91",
-                "phpunit/phpunit": "^8.5.14",
-                "predis/predis": "^1.1 || ^2.0",
-                "rollbar/rollbar": "^1.3 || ^2 || ^3",
-                "ruflin/elastica": "^7",
-                "swiftmailer/swiftmailer": "^5.3|^6.0",
-                "symfony/mailer": "^5.4 || ^6",
-                "symfony/mime": "^5.4 || ^6"
-            },
-            "suggest": {
-                "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
-                "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
-                "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
-                "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
-                "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
-                "ext-mbstring": "Allow to work properly with unicode symbols",
-                "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
-                "ext-openssl": "Required to send log messages using SSL",
-                "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
-                "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
-                "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
-                "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
-                "rollbar/rollbar": "Allow sending log messages to Rollbar",
-                "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
-            },
-            "time": "2022-07-24T11:55:47+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "2.x-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Monolog\\": "src/Monolog"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "https://seld.be"
-                }
-            ],
-            "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
-            "homepage": "https://github.com/Seldaek/monolog",
-            "keywords": [
-                "log",
-                "logging",
-                "psr-3"
-            ],
-            "support": {
-                "issues": "https://github.com/Seldaek/monolog/issues",
-                "source": "https://github.com/Seldaek/monolog/tree/2.8.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/Seldaek",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../monolog/monolog"
-        },
         {
             "name": "myclabs/deep-copy",
             "version": "1.10.2",
@@ -2746,65 +2635,6 @@
             ],
             "install-path": "../psr/http-message"
         },
-        {
-            "name": "psr/log",
-            "version": "1.1.4",
-            "version_normalized": "1.1.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/log.git",
-                "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
-                "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
-                "shasum": "",
-                "mirrors": [
-                    {
-                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
-                        "preferred": true
-                    }
-                ]
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "time": "2021-05-03T11:20:27+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.1.x-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Log\\": "Psr/Log/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "https://www.php-fig.org/"
-                }
-            ],
-            "description": "Common interface for logging libraries",
-            "homepage": "https://github.com/php-fig/log",
-            "keywords": [
-                "log",
-                "psr",
-                "psr-3"
-            ],
-            "support": {
-                "source": "https://github.com/php-fig/log/tree/1.1.4"
-            },
-            "install-path": "../psr/log"
-        },
         {
             "name": "psr/simple-cache",
             "version": "1.0.1",

+ 94 - 113
vendor/composer/installed.php

@@ -1,238 +1,229 @@
 <?php return array(
     'root' => array(
+        'name' => 'yiisoft/yii2-app-advanced',
         'pretty_version' => 'dev-master',
         'version' => 'dev-master',
+        'reference' => '02daf6795915d2a73148ee9628c654cda25624ac',
         'type' => 'project',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
-        'reference' => '0f13189868b03eac76766e36a2c19c88fba38db2',
-        'name' => 'yiisoft/yii2-app-advanced',
         'dev' => true,
     ),
     'versions' => array(
         'anlity/yii2-swoole-async-timer' => array(
             'pretty_version' => '0.9.2',
             'version' => '0.9.2.0',
+            'reference' => '60bb70e0e34951d5aa46b89fa224f471f68e666d',
             'type' => 'yii2-extension',
             'install_path' => __DIR__ . '/../anlity/yii2-swoole-async-timer',
             'aliases' => array(),
-            'reference' => '60bb70e0e34951d5aa46b89fa224f471f68e666d',
             'dev_requirement' => false,
         ),
         'behat/gherkin' => array(
             'pretty_version' => 'v4.9.0',
             'version' => '4.9.0.0',
+            'reference' => '0bc8d1e30e96183e4f36db9dc79caead300beff4',
             'type' => 'library',
             'install_path' => __DIR__ . '/../behat/gherkin',
             'aliases' => array(),
-            'reference' => '0bc8d1e30e96183e4f36db9dc79caead300beff4',
             'dev_requirement' => true,
         ),
         'bower-asset/bootstrap' => array(
             'pretty_version' => 'v3.3.7',
             'version' => '3.3.7.0',
+            'reference' => '0b9c4a4007c44201dce9a6cc1a38407005c26c86',
             'type' => 'bower-asset',
             'install_path' => __DIR__ . '/../bower-asset/bootstrap',
             'aliases' => array(),
-            'reference' => '0b9c4a4007c44201dce9a6cc1a38407005c26c86',
             'dev_requirement' => false,
         ),
         'bower-asset/inputmask' => array(
             'pretty_version' => '3.3.11',
             'version' => '3.3.11.0',
+            'reference' => '5e670ad62f50c738388d4dcec78d2888505ad77b',
             'type' => 'bower-asset',
             'install_path' => __DIR__ . '/../bower-asset/inputmask',
             'aliases' => array(),
-            'reference' => '5e670ad62f50c738388d4dcec78d2888505ad77b',
             'dev_requirement' => false,
         ),
         'bower-asset/jquery' => array(
             'pretty_version' => '3.2.1',
             'version' => '3.2.1.0',
+            'reference' => '77d2a51d0520d2ee44173afdf4e40a9201f5964e',
             'type' => 'bower-asset',
             'install_path' => __DIR__ . '/../bower-asset/jquery',
             'aliases' => array(),
-            'reference' => '77d2a51d0520d2ee44173afdf4e40a9201f5964e',
             'dev_requirement' => false,
         ),
         'bower-asset/punycode' => array(
             'pretty_version' => 'v1.3.2',
             'version' => '1.3.2.0',
+            'reference' => '38c8d3131a82567bfef18da09f7f4db68c84f8a3',
             'type' => 'bower-asset',
             'install_path' => __DIR__ . '/../bower-asset/punycode',
             'aliases' => array(),
-            'reference' => '38c8d3131a82567bfef18da09f7f4db68c84f8a3',
             'dev_requirement' => false,
         ),
         'bower-asset/typeahead.js' => array(
             'pretty_version' => 'v0.11.1',
             'version' => '0.11.1.0',
+            'reference' => '588440f66559714280628a4f9799f0c4eb880a4a',
             'type' => 'bower-asset',
             'install_path' => __DIR__ . '/../bower-asset/typeahead.js',
             'aliases' => array(),
-            'reference' => '588440f66559714280628a4f9799f0c4eb880a4a',
             'dev_requirement' => true,
         ),
         'bower-asset/yii2-pjax' => array(
             'pretty_version' => '2.0.7.1',
             'version' => '2.0.7.1',
+            'reference' => 'aef7b953107264f00234902a3880eb50dafc48be',
             'type' => 'bower-asset',
             'install_path' => __DIR__ . '/../bower-asset/yii2-pjax',
             'aliases' => array(),
-            'reference' => 'aef7b953107264f00234902a3880eb50dafc48be',
             'dev_requirement' => false,
         ),
         'cebe/markdown' => array(
             'pretty_version' => '1.2.1',
             'version' => '1.2.1.0',
+            'reference' => '9bac5e971dd391e2802dca5400bbeacbaea9eb86',
             'type' => 'library',
             'install_path' => __DIR__ . '/../cebe/markdown',
             'aliases' => array(),
-            'reference' => '9bac5e971dd391e2802dca5400bbeacbaea9eb86',
             'dev_requirement' => false,
         ),
         'codeception/base' => array(
             'pretty_version' => '2.5.6',
             'version' => '2.5.6.0',
+            'reference' => 'aace5bab5593c93d8473b620f70754135a1eb4f0',
             'type' => 'library',
             'install_path' => __DIR__ . '/../codeception/base',
             'aliases' => array(),
-            'reference' => 'aace5bab5593c93d8473b620f70754135a1eb4f0',
             'dev_requirement' => true,
         ),
         'codeception/phpunit-wrapper' => array(
             'pretty_version' => '7.8.2',
             'version' => '7.8.2.0',
+            'reference' => 'cafed18048826790c527843f9b85e8cc79b866f1',
             'type' => 'library',
             'install_path' => __DIR__ . '/../codeception/phpunit-wrapper',
             'aliases' => array(),
-            'reference' => 'cafed18048826790c527843f9b85e8cc79b866f1',
             'dev_requirement' => true,
         ),
         'codeception/stub' => array(
             'pretty_version' => '2.1.0',
             'version' => '2.1.0.0',
+            'reference' => '853657f988942f7afb69becf3fd0059f192c705a',
             'type' => 'library',
             'install_path' => __DIR__ . '/../codeception/stub',
             'aliases' => array(),
-            'reference' => '853657f988942f7afb69becf3fd0059f192c705a',
             'dev_requirement' => true,
         ),
         'codeception/verify' => array(
             'pretty_version' => '0.3.3',
             'version' => '0.3.3.0',
+            'reference' => '5d649dda453cd814dadc4bb053060cd2c6bb4b4c',
             'type' => 'library',
             'install_path' => __DIR__ . '/../codeception/verify',
             'aliases' => array(),
-            'reference' => '5d649dda453cd814dadc4bb053060cd2c6bb4b4c',
             'dev_requirement' => true,
         ),
         'doctrine/instantiator' => array(
             'pretty_version' => '1.4.0',
             'version' => '1.4.0.0',
+            'reference' => 'd56bf6102915de5702778fe20f2de3b2fe570b5b',
             'type' => 'library',
             'install_path' => __DIR__ . '/../doctrine/instantiator',
             'aliases' => array(),
-            'reference' => 'd56bf6102915de5702778fe20f2de3b2fe570b5b',
             'dev_requirement' => true,
         ),
         'doctrine/lexer' => array(
             'pretty_version' => '1.2.1',
             'version' => '1.2.1.0',
+            'reference' => 'e864bbf5904cb8f5bb334f99209b48018522f042',
             'type' => 'library',
             'install_path' => __DIR__ . '/../doctrine/lexer',
             'aliases' => array(),
-            'reference' => 'e864bbf5904cb8f5bb334f99209b48018522f042',
             'dev_requirement' => false,
         ),
         'egulias/email-validator' => array(
             'pretty_version' => '3.1.2',
             'version' => '3.1.2.0',
+            'reference' => 'ee0db30118f661fb166bcffbf5d82032df484697',
             'type' => 'library',
             'install_path' => __DIR__ . '/../egulias/email-validator',
             'aliases' => array(),
-            'reference' => 'ee0db30118f661fb166bcffbf5d82032df484697',
             'dev_requirement' => false,
         ),
         'ezyang/htmlpurifier' => array(
             'pretty_version' => 'v4.13.0',
             'version' => '4.13.0.0',
+            'reference' => '08e27c97e4c6ed02f37c5b2b20488046c8d90d75',
             'type' => 'library',
             'install_path' => __DIR__ . '/../ezyang/htmlpurifier',
             'aliases' => array(),
-            'reference' => '08e27c97e4c6ed02f37c5b2b20488046c8d90d75',
             'dev_requirement' => false,
         ),
         'fakerphp/faker' => array(
             'pretty_version' => 'v1.17.0',
             'version' => '1.17.0.0',
+            'reference' => 'b85e9d44eae8c52cca7aa0939483611f7232b669',
             'type' => 'library',
             'install_path' => __DIR__ . '/../fakerphp/faker',
             'aliases' => array(),
-            'reference' => 'b85e9d44eae8c52cca7aa0939483611f7232b669',
             'dev_requirement' => true,
         ),
         'godruoyi/php-snowflake' => array(
             'pretty_version' => '1.1.1',
             'version' => '1.1.1.0',
+            'reference' => 'd8cbe72ed375b45033b7042e3d03340ce4fa479f',
             'type' => 'library',
             'install_path' => __DIR__ . '/../godruoyi/php-snowflake',
             'aliases' => array(),
-            'reference' => 'd8cbe72ed375b45033b7042e3d03340ce4fa479f',
             'dev_requirement' => false,
         ),
         'guzzlehttp/psr7' => array(
             'pretty_version' => '1.8.3',
             'version' => '1.8.3.0',
+            'reference' => '1afdd860a2566ed3c2b0b4a3de6e23434a79ec85',
             'type' => 'library',
             'install_path' => __DIR__ . '/../guzzlehttp/psr7',
             'aliases' => array(),
-            'reference' => '1afdd860a2566ed3c2b0b4a3de6e23434a79ec85',
             'dev_requirement' => true,
         ),
         'maennchen/zipstream-php' => array(
             'pretty_version' => '2.1.0',
             'version' => '2.1.0.0',
+            'reference' => 'c4c5803cc1f93df3d2448478ef79394a5981cc58',
             'type' => 'library',
             'install_path' => __DIR__ . '/../maennchen/zipstream-php',
             'aliases' => array(),
-            'reference' => 'c4c5803cc1f93df3d2448478ef79394a5981cc58',
             'dev_requirement' => false,
         ),
         'markbaker/complex' => array(
             'pretty_version' => '3.0.1',
             'version' => '3.0.1.0',
+            'reference' => 'ab8bc271e404909db09ff2d5ffa1e538085c0f22',
             'type' => 'library',
             'install_path' => __DIR__ . '/../markbaker/complex',
             'aliases' => array(),
-            'reference' => 'ab8bc271e404909db09ff2d5ffa1e538085c0f22',
             'dev_requirement' => false,
         ),
         'markbaker/matrix' => array(
             'pretty_version' => '3.0.0',
             'version' => '3.0.0.0',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../markbaker/matrix',
-            'aliases' => array(),
             'reference' => 'c66aefcafb4f6c269510e9ac46b82619a904c576',
-            'dev_requirement' => false,
-        ),
-        'monolog/monolog' => array(
-            'pretty_version' => '2.8.0',
-            'version' => '2.8.0.0',
             'type' => 'library',
-            'install_path' => __DIR__ . '/../monolog/monolog',
+            'install_path' => __DIR__ . '/../markbaker/matrix',
             'aliases' => array(),
-            'reference' => '720488632c590286b88b80e62aa3d3d551ad4a50',
             'dev_requirement' => false,
         ),
         'myclabs/deep-copy' => array(
             'pretty_version' => '1.10.2',
             'version' => '1.10.2.0',
+            'reference' => '776f831124e9c62e1a2c601ecc52e776d8bb7220',
             'type' => 'library',
             'install_path' => __DIR__ . '/../myclabs/deep-copy',
             'aliases' => array(),
-            'reference' => '776f831124e9c62e1a2c601ecc52e776d8bb7220',
             'dev_requirement' => true,
             'replaced' => array(
                 0 => '1.10.2',
@@ -241,154 +232,154 @@
         'myclabs/php-enum' => array(
             'pretty_version' => '1.8.3',
             'version' => '1.8.3.0',
+            'reference' => 'b942d263c641ddb5190929ff840c68f78713e937',
             'type' => 'library',
             'install_path' => __DIR__ . '/../myclabs/php-enum',
             'aliases' => array(),
-            'reference' => 'b942d263c641ddb5190929ff840c68f78713e937',
             'dev_requirement' => false,
         ),
         'paragonie/random_compat' => array(
             'pretty_version' => 'v9.99.100',
             'version' => '9.99.100.0',
+            'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
             'type' => 'library',
             'install_path' => __DIR__ . '/../paragonie/random_compat',
             'aliases' => array(),
-            'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
             'dev_requirement' => false,
         ),
         'phar-io/manifest' => array(
             'pretty_version' => '1.0.3',
             'version' => '1.0.3.0',
+            'reference' => '7761fcacf03b4d4f16e7ccb606d4879ca431fcf4',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phar-io/manifest',
             'aliases' => array(),
-            'reference' => '7761fcacf03b4d4f16e7ccb606d4879ca431fcf4',
             'dev_requirement' => true,
         ),
         'phar-io/version' => array(
             'pretty_version' => '2.0.1',
             'version' => '2.0.1.0',
+            'reference' => '45a2ec53a73c70ce41d55cedef9063630abaf1b6',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phar-io/version',
             'aliases' => array(),
-            'reference' => '45a2ec53a73c70ce41d55cedef9063630abaf1b6',
             'dev_requirement' => true,
         ),
         'phpdocumentor/reflection-common' => array(
             'pretty_version' => '2.2.0',
             'version' => '2.2.0.0',
+            'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phpdocumentor/reflection-common',
             'aliases' => array(),
-            'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
             'dev_requirement' => true,
         ),
         'phpdocumentor/reflection-docblock' => array(
             'pretty_version' => '5.3.0',
             'version' => '5.3.0.0',
+            'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phpdocumentor/reflection-docblock',
             'aliases' => array(),
-            'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170',
             'dev_requirement' => true,
         ),
         'phpdocumentor/type-resolver' => array(
             'pretty_version' => '1.5.1',
             'version' => '1.5.1.0',
+            'reference' => 'a12f7e301eb7258bb68acd89d4aefa05c2906cae',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phpdocumentor/type-resolver',
             'aliases' => array(),
-            'reference' => 'a12f7e301eb7258bb68acd89d4aefa05c2906cae',
             'dev_requirement' => true,
         ),
         'phpoffice/phpspreadsheet' => array(
             'pretty_version' => '1.20.0',
             'version' => '1.20.0.0',
+            'reference' => '44436f270bb134b4a94670f3d020a85dfa0a3c02',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phpoffice/phpspreadsheet',
             'aliases' => array(),
-            'reference' => '44436f270bb134b4a94670f3d020a85dfa0a3c02',
             'dev_requirement' => false,
         ),
         'phpspec/php-diff' => array(
             'pretty_version' => 'v1.1.3',
             'version' => '1.1.3.0',
+            'reference' => 'fc1156187f9f6c8395886fe85ed88a0a245d72e9',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phpspec/php-diff',
             'aliases' => array(),
-            'reference' => 'fc1156187f9f6c8395886fe85ed88a0a245d72e9',
             'dev_requirement' => true,
         ),
         'phpspec/prophecy' => array(
             'pretty_version' => 'v1.15.0',
             'version' => '1.15.0.0',
+            'reference' => 'bbcd7380b0ebf3961ee21409db7b38bc31d69a13',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phpspec/prophecy',
             'aliases' => array(),
-            'reference' => 'bbcd7380b0ebf3961ee21409db7b38bc31d69a13',
             'dev_requirement' => true,
         ),
         'phpunit/php-code-coverage' => array(
             'pretty_version' => '6.1.4',
             'version' => '6.1.4.0',
+            'reference' => '807e6013b00af69b6c5d9ceb4282d0393dbb9d8d',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phpunit/php-code-coverage',
             'aliases' => array(),
-            'reference' => '807e6013b00af69b6c5d9ceb4282d0393dbb9d8d',
             'dev_requirement' => true,
         ),
         'phpunit/php-file-iterator' => array(
             'pretty_version' => '2.0.5',
             'version' => '2.0.5.0',
+            'reference' => '42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phpunit/php-file-iterator',
             'aliases' => array(),
-            'reference' => '42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5',
             'dev_requirement' => true,
         ),
         'phpunit/php-text-template' => array(
             'pretty_version' => '1.2.1',
             'version' => '1.2.1.0',
+            'reference' => '31f8b717e51d9a2afca6c9f046f5d69fc27c8686',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phpunit/php-text-template',
             'aliases' => array(),
-            'reference' => '31f8b717e51d9a2afca6c9f046f5d69fc27c8686',
             'dev_requirement' => true,
         ),
         'phpunit/php-timer' => array(
             'pretty_version' => '2.1.3',
             'version' => '2.1.3.0',
+            'reference' => '2454ae1765516d20c4ffe103d85a58a9a3bd5662',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phpunit/php-timer',
             'aliases' => array(),
-            'reference' => '2454ae1765516d20c4ffe103d85a58a9a3bd5662',
             'dev_requirement' => true,
         ),
         'phpunit/php-token-stream' => array(
             'pretty_version' => '3.1.3',
             'version' => '3.1.3.0',
+            'reference' => '9c1da83261628cb24b6a6df371b6e312b3954768',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phpunit/php-token-stream',
             'aliases' => array(),
-            'reference' => '9c1da83261628cb24b6a6df371b6e312b3954768',
             'dev_requirement' => true,
         ),
         'phpunit/phpunit' => array(
             'pretty_version' => '7.5.20',
             'version' => '7.5.20.0',
+            'reference' => '9467db479d1b0487c99733bb1e7944d32deded2c',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phpunit/phpunit',
             'aliases' => array(),
-            'reference' => '9467db479d1b0487c99733bb1e7944d32deded2c',
             'dev_requirement' => true,
         ),
         'psr/container' => array(
             'pretty_version' => '1.1.2',
             'version' => '1.1.2.0',
+            'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea',
             'type' => 'library',
             'install_path' => __DIR__ . '/../psr/container',
             'aliases' => array(),
-            'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea',
             'dev_requirement' => true,
         ),
         'psr/event-dispatcher-implementation' => array(
@@ -400,28 +391,28 @@
         'psr/http-client' => array(
             'pretty_version' => '1.0.1',
             'version' => '1.0.1.0',
+            'reference' => '2dfb5f6c5eff0e91e20e913f8c5452ed95b86621',
             'type' => 'library',
             'install_path' => __DIR__ . '/../psr/http-client',
             'aliases' => array(),
-            'reference' => '2dfb5f6c5eff0e91e20e913f8c5452ed95b86621',
             'dev_requirement' => false,
         ),
         'psr/http-factory' => array(
             'pretty_version' => '1.0.1',
             'version' => '1.0.1.0',
+            'reference' => '12ac7fcd07e5b077433f5f2bee95b3a771bf61be',
             'type' => 'library',
             'install_path' => __DIR__ . '/../psr/http-factory',
             'aliases' => array(),
-            'reference' => '12ac7fcd07e5b077433f5f2bee95b3a771bf61be',
             'dev_requirement' => false,
         ),
         'psr/http-message' => array(
             'pretty_version' => '1.0.1',
             'version' => '1.0.1.0',
+            'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363',
             'type' => 'library',
             'install_path' => __DIR__ . '/../psr/http-message',
             'aliases' => array(),
-            'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363',
             'dev_requirement' => false,
         ),
         'psr/http-message-implementation' => array(
@@ -430,218 +421,208 @@
                 0 => '1.0',
             ),
         ),
-        'psr/log' => array(
-            'pretty_version' => '1.1.4',
-            'version' => '1.1.4.0',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../psr/log',
-            'aliases' => array(),
-            'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11',
-            'dev_requirement' => false,
-        ),
         'psr/log-implementation' => array(
-            'dev_requirement' => false,
+            'dev_requirement' => true,
             'provided' => array(
-                0 => '1.0.0 || 2.0.0 || 3.0.0',
-                1 => '1.0|2.0',
+                0 => '1.0|2.0',
             ),
         ),
         'psr/simple-cache' => array(
             'pretty_version' => '1.0.1',
             'version' => '1.0.1.0',
+            'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b',
             'type' => 'library',
             'install_path' => __DIR__ . '/../psr/simple-cache',
             'aliases' => array(),
-            'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b',
             'dev_requirement' => false,
         ),
         'ralouphie/getallheaders' => array(
             'pretty_version' => '3.0.3',
             'version' => '3.0.3.0',
+            'reference' => '120b605dfeb996808c31b6477290a714d356e822',
             'type' => 'library',
             'install_path' => __DIR__ . '/../ralouphie/getallheaders',
             'aliases' => array(),
-            'reference' => '120b605dfeb996808c31b6477290a714d356e822',
             'dev_requirement' => true,
         ),
         'sebastian/code-unit-reverse-lookup' => array(
             'pretty_version' => '1.0.2',
             'version' => '1.0.2.0',
+            'reference' => '1de8cd5c010cb153fcd68b8d0f64606f523f7619',
             'type' => 'library',
             'install_path' => __DIR__ . '/../sebastian/code-unit-reverse-lookup',
             'aliases' => array(),
-            'reference' => '1de8cd5c010cb153fcd68b8d0f64606f523f7619',
             'dev_requirement' => true,
         ),
         'sebastian/comparator' => array(
             'pretty_version' => '3.0.3',
             'version' => '3.0.3.0',
+            'reference' => '1071dfcef776a57013124ff35e1fc41ccd294758',
             'type' => 'library',
             'install_path' => __DIR__ . '/../sebastian/comparator',
             'aliases' => array(),
-            'reference' => '1071dfcef776a57013124ff35e1fc41ccd294758',
             'dev_requirement' => true,
         ),
         'sebastian/diff' => array(
             'pretty_version' => '3.0.3',
             'version' => '3.0.3.0',
+            'reference' => '14f72dd46eaf2f2293cbe79c93cc0bc43161a211',
             'type' => 'library',
             'install_path' => __DIR__ . '/../sebastian/diff',
             'aliases' => array(),
-            'reference' => '14f72dd46eaf2f2293cbe79c93cc0bc43161a211',
             'dev_requirement' => true,
         ),
         'sebastian/environment' => array(
             'pretty_version' => '4.2.4',
             'version' => '4.2.4.0',
+            'reference' => 'd47bbbad83711771f167c72d4e3f25f7fcc1f8b0',
             'type' => 'library',
             'install_path' => __DIR__ . '/../sebastian/environment',
             'aliases' => array(),
-            'reference' => 'd47bbbad83711771f167c72d4e3f25f7fcc1f8b0',
             'dev_requirement' => true,
         ),
         'sebastian/exporter' => array(
             'pretty_version' => '3.1.4',
             'version' => '3.1.4.0',
+            'reference' => '0c32ea2e40dbf59de29f3b49bf375176ce7dd8db',
             'type' => 'library',
             'install_path' => __DIR__ . '/../sebastian/exporter',
             'aliases' => array(),
-            'reference' => '0c32ea2e40dbf59de29f3b49bf375176ce7dd8db',
             'dev_requirement' => true,
         ),
         'sebastian/global-state' => array(
             'pretty_version' => '2.0.0',
             'version' => '2.0.0.0',
+            'reference' => 'e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4',
             'type' => 'library',
             'install_path' => __DIR__ . '/../sebastian/global-state',
             'aliases' => array(),
-            'reference' => 'e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4',
             'dev_requirement' => true,
         ),
         'sebastian/object-enumerator' => array(
             'pretty_version' => '3.0.4',
             'version' => '3.0.4.0',
+            'reference' => 'e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2',
             'type' => 'library',
             'install_path' => __DIR__ . '/../sebastian/object-enumerator',
             'aliases' => array(),
-            'reference' => 'e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2',
             'dev_requirement' => true,
         ),
         'sebastian/object-reflector' => array(
             'pretty_version' => '1.1.2',
             'version' => '1.1.2.0',
+            'reference' => '9b8772b9cbd456ab45d4a598d2dd1a1bced6363d',
             'type' => 'library',
             'install_path' => __DIR__ . '/../sebastian/object-reflector',
             'aliases' => array(),
-            'reference' => '9b8772b9cbd456ab45d4a598d2dd1a1bced6363d',
             'dev_requirement' => true,
         ),
         'sebastian/recursion-context' => array(
             'pretty_version' => '3.0.1',
             'version' => '3.0.1.0',
+            'reference' => '367dcba38d6e1977be014dc4b22f47a484dac7fb',
             'type' => 'library',
             'install_path' => __DIR__ . '/../sebastian/recursion-context',
             'aliases' => array(),
-            'reference' => '367dcba38d6e1977be014dc4b22f47a484dac7fb',
             'dev_requirement' => true,
         ),
         'sebastian/resource-operations' => array(
             'pretty_version' => '2.0.2',
             'version' => '2.0.2.0',
+            'reference' => '31d35ca87926450c44eae7e2611d45a7a65ea8b3',
             'type' => 'library',
             'install_path' => __DIR__ . '/../sebastian/resource-operations',
             'aliases' => array(),
-            'reference' => '31d35ca87926450c44eae7e2611d45a7a65ea8b3',
             'dev_requirement' => true,
         ),
         'sebastian/version' => array(
             'pretty_version' => '2.0.1',
             'version' => '2.0.1.0',
+            'reference' => '99732be0ddb3361e16ad77b68ba41efc8e979019',
             'type' => 'library',
             'install_path' => __DIR__ . '/../sebastian/version',
             'aliases' => array(),
-            'reference' => '99732be0ddb3361e16ad77b68ba41efc8e979019',
             'dev_requirement' => true,
         ),
         'sunmoon/yii2-phpspreadsheet' => array(
             'pretty_version' => '1.2.0',
             'version' => '1.2.0.0',
+            'reference' => '51fc4d0183eb81e654b3360ac18e631fc4b89c09',
             'type' => 'library',
             'install_path' => __DIR__ . '/../sunmoon/yii2-phpspreadsheet',
             'aliases' => array(),
-            'reference' => '51fc4d0183eb81e654b3360ac18e631fc4b89c09',
             'dev_requirement' => false,
         ),
         'swiftmailer/swiftmailer' => array(
             'pretty_version' => 'v6.3.0',
             'version' => '6.3.0.0',
+            'reference' => '8a5d5072dca8f48460fce2f4131fcc495eec654c',
             'type' => 'library',
             'install_path' => __DIR__ . '/../swiftmailer/swiftmailer',
             'aliases' => array(),
-            'reference' => '8a5d5072dca8f48460fce2f4131fcc495eec654c',
             'dev_requirement' => false,
         ),
         'symfony/browser-kit' => array(
             'pretty_version' => 'v4.4.27',
             'version' => '4.4.27.0',
+            'reference' => '9629d1524d8ced5a4ec3e94abdbd638b4ec8319b',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/browser-kit',
             'aliases' => array(),
-            'reference' => '9629d1524d8ced5a4ec3e94abdbd638b4ec8319b',
             'dev_requirement' => true,
         ),
         'symfony/console' => array(
             'pretty_version' => 'v4.4.34',
             'version' => '4.4.34.0',
+            'reference' => '329b3a75cc6b16d435ba1b1a41df54a53382a3f0',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/console',
             'aliases' => array(),
-            'reference' => '329b3a75cc6b16d435ba1b1a41df54a53382a3f0',
             'dev_requirement' => true,
         ),
         'symfony/css-selector' => array(
             'pretty_version' => 'v4.4.27',
             'version' => '4.4.27.0',
+            'reference' => '5194f18bd80d106f11efa8f7cd0fbdcc3af96ce6',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/css-selector',
             'aliases' => array(),
-            'reference' => '5194f18bd80d106f11efa8f7cd0fbdcc3af96ce6',
             'dev_requirement' => true,
         ),
         'symfony/deprecation-contracts' => array(
             'pretty_version' => 'v2.5.0',
             'version' => '2.5.0.0',
+            'reference' => '6f981ee24cf69ee7ce9736146d1c57c2780598a8',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
             'aliases' => array(),
-            'reference' => '6f981ee24cf69ee7ce9736146d1c57c2780598a8',
             'dev_requirement' => true,
         ),
         'symfony/dom-crawler' => array(
             'pretty_version' => 'v4.4.30',
             'version' => '4.4.30.0',
+            'reference' => '4632ae3567746c7e915c33c67a2fb6ab746090c4',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/dom-crawler',
             'aliases' => array(),
-            'reference' => '4632ae3567746c7e915c33c67a2fb6ab746090c4',
             'dev_requirement' => true,
         ),
         'symfony/event-dispatcher' => array(
             'pretty_version' => 'v4.4.34',
             'version' => '4.4.34.0',
+            'reference' => '1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/event-dispatcher',
             'aliases' => array(),
-            'reference' => '1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8',
             'dev_requirement' => true,
         ),
         'symfony/event-dispatcher-contracts' => array(
             'pretty_version' => 'v1.1.11',
             'version' => '1.1.11.0',
+            'reference' => '01e9a4efac0ee33a05dfdf93b346f62e7d0e998c',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/event-dispatcher-contracts',
             'aliases' => array(),
-            'reference' => '01e9a4efac0ee33a05dfdf93b346f62e7d0e998c',
             'dev_requirement' => true,
         ),
         'symfony/event-dispatcher-implementation' => array(
@@ -653,217 +634,217 @@
         'symfony/finder' => array(
             'pretty_version' => 'v4.4.30',
             'version' => '4.4.30.0',
+            'reference' => '70362f1e112280d75b30087c7598b837c1b468b6',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/finder',
             'aliases' => array(),
-            'reference' => '70362f1e112280d75b30087c7598b837c1b468b6',
             'dev_requirement' => true,
         ),
         'symfony/polyfill-ctype' => array(
             'pretty_version' => 'v1.23.0',
             'version' => '1.23.0.0',
+            'reference' => '46cd95797e9df938fdd2b03693b5fca5e64b01ce',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
             'aliases' => array(),
-            'reference' => '46cd95797e9df938fdd2b03693b5fca5e64b01ce',
             'dev_requirement' => true,
         ),
         'symfony/polyfill-iconv' => array(
             'pretty_version' => 'v1.23.0',
             'version' => '1.23.0.0',
+            'reference' => '63b5bb7db83e5673936d6e3b8b3e022ff6474933',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/polyfill-iconv',
             'aliases' => array(),
-            'reference' => '63b5bb7db83e5673936d6e3b8b3e022ff6474933',
             'dev_requirement' => false,
         ),
         'symfony/polyfill-intl-idn' => array(
             'pretty_version' => 'v1.23.0',
             'version' => '1.23.0.0',
+            'reference' => '65bd267525e82759e7d8c4e8ceea44f398838e65',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn',
             'aliases' => array(),
-            'reference' => '65bd267525e82759e7d8c4e8ceea44f398838e65',
             'dev_requirement' => false,
         ),
         'symfony/polyfill-intl-normalizer' => array(
             'pretty_version' => 'v1.23.0',
             'version' => '1.23.0.0',
+            'reference' => '8590a5f561694770bdcd3f9b5c69dde6945028e8',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer',
             'aliases' => array(),
-            'reference' => '8590a5f561694770bdcd3f9b5c69dde6945028e8',
             'dev_requirement' => false,
         ),
         'symfony/polyfill-mbstring' => array(
             'pretty_version' => 'v1.23.1',
             'version' => '1.23.1.0',
+            'reference' => '9174a3d80210dca8daa7f31fec659150bbeabfc6',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
             'aliases' => array(),
-            'reference' => '9174a3d80210dca8daa7f31fec659150bbeabfc6',
             'dev_requirement' => false,
         ),
         'symfony/polyfill-php72' => array(
             'pretty_version' => 'v1.23.0',
             'version' => '1.23.0.0',
+            'reference' => '9a142215a36a3888e30d0a9eeea9766764e96976',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/polyfill-php72',
             'aliases' => array(),
-            'reference' => '9a142215a36a3888e30d0a9eeea9766764e96976',
             'dev_requirement' => false,
         ),
         'symfony/polyfill-php73' => array(
             'pretty_version' => 'v1.23.0',
             'version' => '1.23.0.0',
+            'reference' => 'fba8933c384d6476ab14fb7b8526e5287ca7e010',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/polyfill-php73',
             'aliases' => array(),
-            'reference' => 'fba8933c384d6476ab14fb7b8526e5287ca7e010',
             'dev_requirement' => true,
         ),
         'symfony/polyfill-php80' => array(
             'pretty_version' => 'v1.23.1',
             'version' => '1.23.1.0',
+            'reference' => '1100343ed1a92e3a38f9ae122fc0eb21602547be',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/polyfill-php80',
             'aliases' => array(),
-            'reference' => '1100343ed1a92e3a38f9ae122fc0eb21602547be',
             'dev_requirement' => true,
         ),
         'symfony/service-contracts' => array(
             'pretty_version' => 'v2.5.0',
             'version' => '2.5.0.0',
+            'reference' => '1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/service-contracts',
             'aliases' => array(),
-            'reference' => '1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc',
             'dev_requirement' => true,
         ),
         'symfony/yaml' => array(
             'pretty_version' => 'v4.4.34',
             'version' => '4.4.34.0',
+            'reference' => '2c309e258adeb9970229042be39b360d34986fad',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/yaml',
             'aliases' => array(),
-            'reference' => '2c309e258adeb9970229042be39b360d34986fad',
             'dev_requirement' => true,
         ),
         'theseer/tokenizer' => array(
             'pretty_version' => '1.2.1',
             'version' => '1.2.1.0',
+            'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e',
             'type' => 'library',
             'install_path' => __DIR__ . '/../theseer/tokenizer',
             'aliases' => array(),
-            'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e',
             'dev_requirement' => true,
         ),
         'webmozart/assert' => array(
             'pretty_version' => '1.10.0',
             'version' => '1.10.0.0',
+            'reference' => '6964c76c7804814a842473e0c8fd15bab0f18e25',
             'type' => 'library',
             'install_path' => __DIR__ . '/../webmozart/assert',
             'aliases' => array(),
-            'reference' => '6964c76c7804814a842473e0c8fd15bab0f18e25',
             'dev_requirement' => true,
         ),
         'yiisoft/yii2' => array(
             'pretty_version' => '2.0.43',
             'version' => '2.0.43.0',
+            'reference' => 'f370955faa3067d9b27879aaf14b0978a805cd59',
             'type' => 'library',
             'install_path' => __DIR__ . '/../yiisoft/yii2',
             'aliases' => array(),
-            'reference' => 'f370955faa3067d9b27879aaf14b0978a805cd59',
             'dev_requirement' => false,
         ),
         'yiisoft/yii2-app-advanced' => array(
             'pretty_version' => 'dev-master',
             'version' => 'dev-master',
+            'reference' => '02daf6795915d2a73148ee9628c654cda25624ac',
             'type' => 'project',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
-            'reference' => '0f13189868b03eac76766e36a2c19c88fba38db2',
             'dev_requirement' => false,
         ),
         'yiisoft/yii2-bootstrap' => array(
             'pretty_version' => '2.0.11',
             'version' => '2.0.11.0',
+            'reference' => '83d144f4089adaa7064ad60dc4c1436daa2eb30e',
             'type' => 'yii2-extension',
             'install_path' => __DIR__ . '/../yiisoft/yii2-bootstrap',
             'aliases' => array(),
-            'reference' => '83d144f4089adaa7064ad60dc4c1436daa2eb30e',
             'dev_requirement' => false,
         ),
         'yiisoft/yii2-composer' => array(
             'pretty_version' => '2.0.10',
             'version' => '2.0.10.0',
+            'reference' => '94bb3f66e779e2774f8776d6e1bdeab402940510',
             'type' => 'composer-plugin',
             'install_path' => __DIR__ . '/../yiisoft/yii2-composer',
             'aliases' => array(),
-            'reference' => '94bb3f66e779e2774f8776d6e1bdeab402940510',
             'dev_requirement' => false,
         ),
         'yiisoft/yii2-debug' => array(
             'pretty_version' => '2.0.14',
             'version' => '2.0.14.0',
+            'reference' => 'dc5a4a8529de1a41dbb037dbabf1f3f93002f21d',
             'type' => 'yii2-extension',
             'install_path' => __DIR__ . '/../yiisoft/yii2-debug',
             'aliases' => array(),
-            'reference' => 'dc5a4a8529de1a41dbb037dbabf1f3f93002f21d',
             'dev_requirement' => true,
         ),
         'yiisoft/yii2-faker' => array(
             'pretty_version' => '2.0.5',
             'version' => '2.0.5.0',
+            'reference' => '8c361657143bfaea58ff7dcc9bf51f1991a46f5d',
             'type' => 'yii2-extension',
             'install_path' => __DIR__ . '/../yiisoft/yii2-faker',
             'aliases' => array(),
-            'reference' => '8c361657143bfaea58ff7dcc9bf51f1991a46f5d',
             'dev_requirement' => true,
         ),
         'yiisoft/yii2-gii' => array(
             'pretty_version' => '2.0.8',
             'version' => '2.0.8.0',
+            'reference' => 'c02adc552bcf3a0ef6f3694a9dcbf209f4885ab1',
             'type' => 'yii2-extension',
             'install_path' => __DIR__ . '/../yiisoft/yii2-gii',
             'aliases' => array(),
-            'reference' => 'c02adc552bcf3a0ef6f3694a9dcbf209f4885ab1',
             'dev_requirement' => true,
         ),
         'yiisoft/yii2-httpclient' => array(
             'pretty_version' => '2.0.14',
             'version' => '2.0.14.0',
+            'reference' => '50d670d2e1a30a354c27aeebf806a2db16954836',
             'type' => 'yii2-extension',
             'install_path' => __DIR__ . '/../yiisoft/yii2-httpclient',
             'aliases' => array(),
-            'reference' => '50d670d2e1a30a354c27aeebf806a2db16954836',
             'dev_requirement' => false,
         ),
         'yiisoft/yii2-mongodb' => array(
             'pretty_version' => '2.1.12',
             'version' => '2.1.12.0',
+            'reference' => '4a74369a2b233f2def02579766e1eceadb8964be',
             'type' => 'yii2-extension',
             'install_path' => __DIR__ . '/../yiisoft/yii2-mongodb',
             'aliases' => array(),
-            'reference' => '4a74369a2b233f2def02579766e1eceadb8964be',
             'dev_requirement' => false,
         ),
         'yiisoft/yii2-redis' => array(
             'pretty_version' => '2.0.16',
             'version' => '2.0.16.0',
+            'reference' => '1b9efe97d8add594256b51089fbf7a56f31e3c9c',
             'type' => 'yii2-extension',
             'install_path' => __DIR__ . '/../yiisoft/yii2-redis',
             'aliases' => array(),
-            'reference' => '1b9efe97d8add594256b51089fbf7a56f31e3c9c',
             'dev_requirement' => false,
         ),
         'yiisoft/yii2-swiftmailer' => array(
             'pretty_version' => '2.1.2',
             'version' => '2.1.2.0',
+            'reference' => '09659a55959f9e64b8178d842b64a9ffae42b994',
             'type' => 'yii2-extension',
             'install_path' => __DIR__ . '/../yiisoft/yii2-swiftmailer',
             'aliases' => array(),
-            'reference' => '09659a55959f9e64b8178d842b64a9ffae42b994',
             'dev_requirement' => false,
         ),
     ),

Some files were not shown because too many files changed in this diff