第三方平台授权
@@ -12,29 +12,29 @@
支付测试配置
- JSAPI支付测试需要在微信商户平台配置支付目录:{:url('@wechat/api.tools/',[],'',true)}
- 扫码支付①需要在微信商户平台配置支付通知地址:{:url('@wechat/api.tools/scanOneNotify',[],'',true)}
+ JSAPI支付测试需要在微信商户平台配置支付目录:{:url('@wechat/api.test/',[],'',true)}
+ 扫码支付①需要在微信商户平台配置支付通知地址:{:url('@wechat/api.test/scanOneNotify',[],'',true)}
-
})
+
网页授权
-
})
+
JSSDK签名
-
})
+
JSAPI支付
-
})
+
扫码支付①
-
})
+
扫码支付②
diff --git a/composer.json b/composer.json
index 6797041f7..0120f8971 100644
--- a/composer.json
+++ b/composer.json
@@ -25,12 +25,13 @@
"ext-iconv": "*",
"ext-openssl": "*",
"ext-mbstring": "*",
+ "endroid/qr-code": "^1.9",
"topthink/framework": "^6.0",
"topthink/think-view": "^1.0",
"topthink/think-multi-app": "^1.0",
"zoujingli/ip2region": "^1.0",
- "zoujingli/weopen-developer": "dev-master",
- "zoujingli/think-library": "6.0.*-dev"
+ "zoujingli/think-library": "6.0.*-dev",
+ "zoujingli/weopen-developer": "dev-master"
},
"autoload": {
"psr-4": {
diff --git a/composer.lock b/composer.lock
index 38c2f65dd..7b1e58abe 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,74 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "1b0862db0bebe6fd5b8f1edc448e3f5a",
+ "content-hash": "478fa0752e487da8e0e56bb8e664ea5b",
"packages": [
+ {
+ "name": "endroid/qr-code",
+ "version": "1.9.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/endroid/qr-code.git",
+ "reference": "c9644bec2a9cc9318e98d1437de3c628dcd1ef93"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/endroid/qr-code/zipball/c9644bec2a9cc9318e98d1437de3c628dcd1ef93",
+ "reference": "c9644bec2a9cc9318e98d1437de3c628dcd1ef93",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-gd": "*",
+ "php": ">=5.4",
+ "symfony/options-resolver": "^2.3|^3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.0|^5.0",
+ "sensio/framework-extra-bundle": "^3.0",
+ "symfony/browser-kit": "^2.3|^3.0",
+ "symfony/framework-bundle": "^2.3|^3.0",
+ "symfony/http-kernel": "^2.3|^3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Endroid\\QrCode\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jeroen van den Enden",
+ "email": "info@endroid.nl",
+ "homepage": "http://endroid.nl/"
+ }
+ ],
+ "description": "Endroid QR Code",
+ "homepage": "https://github.com/endroid/QrCode",
+ "keywords": [
+ "bundle",
+ "code",
+ "endroid",
+ "qr",
+ "qrcode",
+ "symfony"
+ ],
+ "time": "2017-04-08T09:13:59+00:00"
+ },
{
"name": "league/flysystem",
"version": "1.0.61",
@@ -430,6 +496,66 @@
],
"time": "2017-10-23T01:57:42+00:00"
},
+ {
+ "name": "symfony/options-resolver",
+ "version": "v3.4.36",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/options-resolver.git",
+ "reference": "b224d20be60e6f7b55cd66914379a13a0b28651a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b224d20be60e6f7b55cd66914379a13a0b28651a",
+ "reference": "b224d20be60e6f7b55cd66914379a13a0b28651a",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\OptionsResolver\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony OptionsResolver Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "config",
+ "configuration",
+ "options"
+ ],
+ "time": "2019-10-26T11:02:01+00:00"
+ },
{
"name": "topthink/framework",
"version": "v6.0.0",
@@ -783,12 +909,12 @@
"source": {
"type": "git",
"url": "https://github.com/zoujingli/ThinkLibrary.git",
- "reference": "a53c211c23698ff2299b499714ba16001af84551"
+ "reference": "1246ce655df8db112a60bf57037a9a17f4b11d77"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/a53c211c23698ff2299b499714ba16001af84551",
- "reference": "a53c211c23698ff2299b499714ba16001af84551",
+ "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/1246ce655df8db112a60bf57037a9a17f4b11d77",
+ "reference": "1246ce655df8db112a60bf57037a9a17f4b11d77",
"shasum": "",
"mirrors": [
{
@@ -832,7 +958,7 @@
],
"description": "ThinkPHP v6.0 Development Library",
"homepage": "http://framework.thinkadmin.top",
- "time": "2019-12-07T06:46:30+00:00"
+ "time": "2019-12-09T10:17:25+00:00"
},
{
"name": "zoujingli/wechat-developer",
@@ -969,7 +1095,9 @@
"ext-soap": "*",
"ext-json": "*",
"ext-curl": "*",
- "ext-iconv": "*"
+ "ext-iconv": "*",
+ "ext-openssl": "*",
+ "ext-mbstring": "*"
},
"platform-dev": []
}
diff --git a/vendor/autoload.php b/vendor/autoload.php
index addc6a966..c072ca9db 100644
--- a/vendor/autoload.php
+++ b/vendor/autoload.php
@@ -4,4 +4,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
-return ComposerAutoloaderInit078c2496db47e2e94f2057948fdfa517::getLoader();
+return ComposerAutoloaderInitada0e677dd8f1307ba83d0cf07626e6c::getLoader();
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 26c27ccb5..fb3ce256e 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -13,6 +13,20 @@ return array(
'AliPay\\Transfer' => $vendorDir . '/zoujingli/wechat-developer/AliPay/Transfer.php',
'AliPay\\Wap' => $vendorDir . '/zoujingli/wechat-developer/AliPay/Wap.php',
'AliPay\\Web' => $vendorDir . '/zoujingli/wechat-developer/AliPay/Web.php',
+ 'Endroid\\QrCode\\Bundle\\Controller\\QrCodeController' => $vendorDir . '/endroid/qr-code/src/Bundle/Controller/QrCodeController.php',
+ 'Endroid\\QrCode\\Bundle\\DependencyInjection\\Configuration' => $vendorDir . '/endroid/qr-code/src/Bundle/DependencyInjection/Configuration.php',
+ 'Endroid\\QrCode\\Bundle\\DependencyInjection\\EndroidQrCodeExtension' => $vendorDir . '/endroid/qr-code/src/Bundle/DependencyInjection/EndroidQrCodeExtension.php',
+ 'Endroid\\QrCode\\Bundle\\EndroidQrCodeBundle' => $vendorDir . '/endroid/qr-code/src/Bundle/EndroidQrCodeBundle.php',
+ 'Endroid\\QrCode\\Bundle\\Twig\\Extension\\QrCodeExtension' => $vendorDir . '/endroid/qr-code/src/Bundle/Twig/Extension/QrCodeExtension.php',
+ 'Endroid\\QrCode\\Exceptions\\DataDoesntExistsException' => $vendorDir . '/endroid/qr-code/src/Exceptions/DataDoesntExistsException.php',
+ 'Endroid\\QrCode\\Exceptions\\FreeTypeLibraryMissingException' => $vendorDir . '/endroid/qr-code/src/Exceptions/FreeTypeLibraryMissingException.php',
+ 'Endroid\\QrCode\\Exceptions\\ImageFunctionFailedException' => $vendorDir . '/endroid/qr-code/src/Exceptions/ImageFunctionFailedException.php',
+ 'Endroid\\QrCode\\Exceptions\\ImageFunctionUnknownException' => $vendorDir . '/endroid/qr-code/src/Exceptions/ImageFunctionUnknownException.php',
+ 'Endroid\\QrCode\\Exceptions\\ImageSizeTooLargeException' => $vendorDir . '/endroid/qr-code/src/Exceptions/ImageSizeTooLargeException.php',
+ 'Endroid\\QrCode\\Exceptions\\ImageTypeInvalidException' => $vendorDir . '/endroid/qr-code/src/Exceptions/ImageTypeInvalidException.php',
+ 'Endroid\\QrCode\\Exceptions\\VersionTooLargeException' => $vendorDir . '/endroid/qr-code/src/Exceptions/VersionTooLargeException.php',
+ 'Endroid\\QrCode\\Factory\\QrCodeFactory' => $vendorDir . '/endroid/qr-code/src/Factory/QrCodeFactory.php',
+ 'Endroid\\QrCode\\QrCode' => $vendorDir . '/endroid/qr-code/src/QrCode.php',
'Ip2Region' => $vendorDir . '/zoujingli/ip2region/Ip2Region.php',
'League\\Flysystem\\AdapterInterface' => $vendorDir . '/league/flysystem/src/AdapterInterface.php',
'League\\Flysystem\\Adapter\\AbstractAdapter' => $vendorDir . '/league/flysystem/src/Adapter/AbstractAdapter.php',
@@ -102,6 +116,18 @@ return array(
'Psr\\SimpleCache\\CacheException' => $vendorDir . '/psr/simple-cache/src/CacheException.php',
'Psr\\SimpleCache\\CacheInterface' => $vendorDir . '/psr/simple-cache/src/CacheInterface.php',
'Psr\\SimpleCache\\InvalidArgumentException' => $vendorDir . '/psr/simple-cache/src/InvalidArgumentException.php',
+ 'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => $vendorDir . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => $vendorDir . '/symfony/options-resolver/Exception/AccessException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/options-resolver/Exception/ExceptionInterface.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/options-resolver/Exception/InvalidArgumentException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/InvalidOptionsException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\MissingOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/MissingOptionsException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\NoConfigurationException' => $vendorDir . '/symfony/options-resolver/Exception/NoConfigurationException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\NoSuchOptionException' => $vendorDir . '/symfony/options-resolver/Exception/NoSuchOptionException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\OptionDefinitionException' => $vendorDir . '/symfony/options-resolver/Exception/OptionDefinitionException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\UndefinedOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/UndefinedOptionsException.php',
+ 'Symfony\\Component\\OptionsResolver\\Options' => $vendorDir . '/symfony/options-resolver/Options.php',
+ 'Symfony\\Component\\OptionsResolver\\OptionsResolver' => $vendorDir . '/symfony/options-resolver/OptionsResolver.php',
'We' => $vendorDir . '/zoujingli/wechat-developer/We.php',
'WeChat\\Bind' => $vendorDir . '/zoujingli/weopen-developer/WeChat/Bind.php',
'WeChat\\Card' => $vendorDir . '/zoujingli/wechat-developer/WeChat/Card.php',
@@ -176,16 +202,18 @@ return array(
'app\\admin\\controller\\api\\Update' => $baseDir . '/app/admin/controller/api/Update.php',
'app\\admin\\controller\\api\\Upload' => $baseDir . '/app/admin/controller/api/Upload.php',
'app\\index\\controller\\Index' => $baseDir . '/app/index/controller/Index.php',
- 'app\\service\\controller\\Config' => $baseDir . '/app/service/controller/Config.php',
- 'app\\service\\controller\\Fans' => $baseDir . '/app/service/controller/Fans.php',
- 'app\\service\\controller\\Wechat' => $baseDir . '/app/service/controller/Wechat.php',
- 'app\\service\\controller\\api\\Client' => $baseDir . '/app/service/controller/api/Client.php',
- 'app\\service\\controller\\api\\Push' => $baseDir . '/app/service/controller/api/Push.php',
- 'app\\service\\serivce\\ClientService' => $baseDir . '/app/service/serivce/ClientService.php',
- 'app\\service\\serivce\\ConfigService' => $baseDir . '/app/service/serivce/ConfigService.php',
- 'app\\service\\serivce\\PublishService' => $baseDir . '/app/service/serivce/PublishService.php',
- 'app\\service\\serivce\\ReceiveService' => $baseDir . '/app/service/serivce/ReceiveService.php',
- 'app\\service\\serivce\\WechatService' => $baseDir . '/app/service/serivce/WechatService.php',
+ 'app\\wechat\\controller\\Config' => $baseDir . '/app/wechat/controller/Config.php',
+ 'app\\wechat\\controller\\Fans' => $baseDir . '/app/wechat/controller/Fans.php',
+ 'app\\wechat\\controller\\Keys' => $baseDir . '/app/wechat/controller/Keys.php',
+ 'app\\wechat\\controller\\Menu' => $baseDir . '/app/wechat/controller/Menu.php',
+ 'app\\wechat\\controller\\News' => $baseDir . '/app/wechat/controller/News.php',
+ 'app\\wechat\\controller\\api\\Js' => $baseDir . '/app/wechat/controller/api/Js.php',
+ 'app\\wechat\\controller\\api\\Push' => $baseDir . '/app/wechat/controller/api/Push.php',
+ 'app\\wechat\\controller\\api\\Review' => $baseDir . '/app/wechat/controller/api/Review.php',
+ 'app\\wechat\\controller\\api\\Test' => $baseDir . '/app/wechat/controller/api/Test.php',
+ 'app\\wechat\\service\\FansService' => $baseDir . '/app/wechat/service/FansService.php',
+ 'app\\wechat\\service\\MediaService' => $baseDir . '/app/wechat/service/MediaService.php',
+ 'app\\wechat\\service\\WechatService' => $baseDir . '/app/wechat/service/WechatService.php',
'think\\App' => $vendorDir . '/topthink/framework/src/think/App.php',
'think\\Cache' => $vendorDir . '/topthink/framework/src/think/Cache.php',
'think\\Collection' => $vendorDir . '/topthink/think-helper/src/Collection.php',
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index 245168c33..17a153c06 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -15,6 +15,7 @@ return array(
'WeOpen\\' => array($vendorDir . '/zoujingli/weopen-developer/WeOpen'),
'WeMini\\' => array($vendorDir . '/zoujingli/wechat-developer/WeMini', $vendorDir . '/zoujingli/weopen-developer/WeMini'),
'WeChat\\' => array($vendorDir . '/zoujingli/wechat-developer/WeChat', $vendorDir . '/zoujingli/weopen-developer/WeChat'),
+ 'Symfony\\Component\\OptionsResolver\\' => array($vendorDir . '/symfony/options-resolver'),
'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
@@ -22,5 +23,6 @@ return array(
'Opis\\Closure\\' => array($vendorDir . '/opis/closure/src'),
'League\\Flysystem\\Cached\\' => array($vendorDir . '/league/flysystem-cached-adapter/src'),
'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'),
+ 'Endroid\\QrCode\\' => array($vendorDir . '/endroid/qr-code/src'),
'AliPay\\' => array($vendorDir . '/zoujingli/wechat-developer/AliPay'),
);
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
index c0e404fbd..56b3f13c8 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
-class ComposerAutoloaderInit078c2496db47e2e94f2057948fdfa517
+class ComposerAutoloaderInitada0e677dd8f1307ba83d0cf07626e6c
{
private static $loader;
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit078c2496db47e2e94f2057948fdfa517
return self::$loader;
}
- spl_autoload_register(array('ComposerAutoloaderInit078c2496db47e2e94f2057948fdfa517', 'loadClassLoader'), true, true);
+ spl_autoload_register(array('ComposerAutoloaderInitada0e677dd8f1307ba83d0cf07626e6c', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
- spl_autoload_unregister(array('ComposerAutoloaderInit078c2496db47e2e94f2057948fdfa517', 'loadClassLoader'));
+ spl_autoload_unregister(array('ComposerAutoloaderInitada0e677dd8f1307ba83d0cf07626e6c', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require_once __DIR__ . '/autoload_static.php';
- call_user_func(\Composer\Autoload\ComposerStaticInit078c2496db47e2e94f2057948fdfa517::getInitializer($loader));
+ call_user_func(\Composer\Autoload\ComposerStaticInitada0e677dd8f1307ba83d0cf07626e6c::getInitializer($loader));
} else {
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
@@ -48,19 +48,19 @@ class ComposerAutoloaderInit078c2496db47e2e94f2057948fdfa517
$loader->register(true);
if ($useStaticLoader) {
- $includeFiles = Composer\Autoload\ComposerStaticInit078c2496db47e2e94f2057948fdfa517::$files;
+ $includeFiles = Composer\Autoload\ComposerStaticInitada0e677dd8f1307ba83d0cf07626e6c::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
- composerRequire078c2496db47e2e94f2057948fdfa517($fileIdentifier, $file);
+ composerRequireada0e677dd8f1307ba83d0cf07626e6c($fileIdentifier, $file);
}
return $loader;
}
}
-function composerRequire078c2496db47e2e94f2057948fdfa517($fileIdentifier, $file)
+function composerRequireada0e677dd8f1307ba83d0cf07626e6c($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 446d6b015..b29fff53f 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -4,7 +4,7 @@
namespace Composer\Autoload;
-class ComposerStaticInit078c2496db47e2e94f2057948fdfa517
+class ComposerStaticInitada0e677dd8f1307ba83d0cf07626e6c
{
public static $files = array (
'9b552a3cc426e3287cc811caefa3cf53' => __DIR__ . '/..' . '/topthink/think-helper/src/helper.php',
@@ -31,6 +31,10 @@ class ComposerStaticInit078c2496db47e2e94f2057948fdfa517
'WeMini\\' => 7,
'WeChat\\' => 7,
),
+ 'S' =>
+ array (
+ 'Symfony\\Component\\OptionsResolver\\' => 34,
+ ),
'P' =>
array (
'Psr\\SimpleCache\\' => 16,
@@ -47,6 +51,10 @@ class ComposerStaticInit078c2496db47e2e94f2057948fdfa517
'League\\Flysystem\\Cached\\' => 24,
'League\\Flysystem\\' => 17,
),
+ 'E' =>
+ array (
+ 'Endroid\\QrCode\\' => 15,
+ ),
'A' =>
array (
'AliPay\\' => 7,
@@ -95,6 +103,10 @@ class ComposerStaticInit078c2496db47e2e94f2057948fdfa517
0 => __DIR__ . '/..' . '/zoujingli/wechat-developer/WeChat',
1 => __DIR__ . '/..' . '/zoujingli/weopen-developer/WeChat',
),
+ 'Symfony\\Component\\OptionsResolver\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/options-resolver',
+ ),
'Psr\\SimpleCache\\' =>
array (
0 => __DIR__ . '/..' . '/psr/simple-cache/src',
@@ -123,6 +135,10 @@ class ComposerStaticInit078c2496db47e2e94f2057948fdfa517
array (
0 => __DIR__ . '/..' . '/league/flysystem/src',
),
+ 'Endroid\\QrCode\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/endroid/qr-code/src',
+ ),
'AliPay\\' =>
array (
0 => __DIR__ . '/..' . '/zoujingli/wechat-developer/AliPay',
@@ -137,6 +153,20 @@ class ComposerStaticInit078c2496db47e2e94f2057948fdfa517
'AliPay\\Transfer' => __DIR__ . '/..' . '/zoujingli/wechat-developer/AliPay/Transfer.php',
'AliPay\\Wap' => __DIR__ . '/..' . '/zoujingli/wechat-developer/AliPay/Wap.php',
'AliPay\\Web' => __DIR__ . '/..' . '/zoujingli/wechat-developer/AliPay/Web.php',
+ 'Endroid\\QrCode\\Bundle\\Controller\\QrCodeController' => __DIR__ . '/..' . '/endroid/qr-code/src/Bundle/Controller/QrCodeController.php',
+ 'Endroid\\QrCode\\Bundle\\DependencyInjection\\Configuration' => __DIR__ . '/..' . '/endroid/qr-code/src/Bundle/DependencyInjection/Configuration.php',
+ 'Endroid\\QrCode\\Bundle\\DependencyInjection\\EndroidQrCodeExtension' => __DIR__ . '/..' . '/endroid/qr-code/src/Bundle/DependencyInjection/EndroidQrCodeExtension.php',
+ 'Endroid\\QrCode\\Bundle\\EndroidQrCodeBundle' => __DIR__ . '/..' . '/endroid/qr-code/src/Bundle/EndroidQrCodeBundle.php',
+ 'Endroid\\QrCode\\Bundle\\Twig\\Extension\\QrCodeExtension' => __DIR__ . '/..' . '/endroid/qr-code/src/Bundle/Twig/Extension/QrCodeExtension.php',
+ 'Endroid\\QrCode\\Exceptions\\DataDoesntExistsException' => __DIR__ . '/..' . '/endroid/qr-code/src/Exceptions/DataDoesntExistsException.php',
+ 'Endroid\\QrCode\\Exceptions\\FreeTypeLibraryMissingException' => __DIR__ . '/..' . '/endroid/qr-code/src/Exceptions/FreeTypeLibraryMissingException.php',
+ 'Endroid\\QrCode\\Exceptions\\ImageFunctionFailedException' => __DIR__ . '/..' . '/endroid/qr-code/src/Exceptions/ImageFunctionFailedException.php',
+ 'Endroid\\QrCode\\Exceptions\\ImageFunctionUnknownException' => __DIR__ . '/..' . '/endroid/qr-code/src/Exceptions/ImageFunctionUnknownException.php',
+ 'Endroid\\QrCode\\Exceptions\\ImageSizeTooLargeException' => __DIR__ . '/..' . '/endroid/qr-code/src/Exceptions/ImageSizeTooLargeException.php',
+ 'Endroid\\QrCode\\Exceptions\\ImageTypeInvalidException' => __DIR__ . '/..' . '/endroid/qr-code/src/Exceptions/ImageTypeInvalidException.php',
+ 'Endroid\\QrCode\\Exceptions\\VersionTooLargeException' => __DIR__ . '/..' . '/endroid/qr-code/src/Exceptions/VersionTooLargeException.php',
+ 'Endroid\\QrCode\\Factory\\QrCodeFactory' => __DIR__ . '/..' . '/endroid/qr-code/src/Factory/QrCodeFactory.php',
+ 'Endroid\\QrCode\\QrCode' => __DIR__ . '/..' . '/endroid/qr-code/src/QrCode.php',
'Ip2Region' => __DIR__ . '/..' . '/zoujingli/ip2region/Ip2Region.php',
'League\\Flysystem\\AdapterInterface' => __DIR__ . '/..' . '/league/flysystem/src/AdapterInterface.php',
'League\\Flysystem\\Adapter\\AbstractAdapter' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/AbstractAdapter.php',
@@ -226,6 +256,18 @@ class ComposerStaticInit078c2496db47e2e94f2057948fdfa517
'Psr\\SimpleCache\\CacheException' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheException.php',
'Psr\\SimpleCache\\CacheInterface' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheInterface.php',
'Psr\\SimpleCache\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/simple-cache/src/InvalidArgumentException.php',
+ 'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => __DIR__ . '/..' . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/AccessException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/ExceptionInterface.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/InvalidArgumentException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/InvalidOptionsException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\MissingOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/MissingOptionsException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\NoConfigurationException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/NoConfigurationException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\NoSuchOptionException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/NoSuchOptionException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\OptionDefinitionException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/OptionDefinitionException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\UndefinedOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/UndefinedOptionsException.php',
+ 'Symfony\\Component\\OptionsResolver\\Options' => __DIR__ . '/..' . '/symfony/options-resolver/Options.php',
+ 'Symfony\\Component\\OptionsResolver\\OptionsResolver' => __DIR__ . '/..' . '/symfony/options-resolver/OptionsResolver.php',
'We' => __DIR__ . '/..' . '/zoujingli/wechat-developer/We.php',
'WeChat\\Bind' => __DIR__ . '/..' . '/zoujingli/weopen-developer/WeChat/Bind.php',
'WeChat\\Card' => __DIR__ . '/..' . '/zoujingli/wechat-developer/WeChat/Card.php',
@@ -300,16 +342,18 @@ class ComposerStaticInit078c2496db47e2e94f2057948fdfa517
'app\\admin\\controller\\api\\Update' => __DIR__ . '/../..' . '/app/admin/controller/api/Update.php',
'app\\admin\\controller\\api\\Upload' => __DIR__ . '/../..' . '/app/admin/controller/api/Upload.php',
'app\\index\\controller\\Index' => __DIR__ . '/../..' . '/app/index/controller/Index.php',
- 'app\\service\\controller\\Config' => __DIR__ . '/../..' . '/app/service/controller/Config.php',
- 'app\\service\\controller\\Fans' => __DIR__ . '/../..' . '/app/service/controller/Fans.php',
- 'app\\service\\controller\\Wechat' => __DIR__ . '/../..' . '/app/service/controller/Wechat.php',
- 'app\\service\\controller\\api\\Client' => __DIR__ . '/../..' . '/app/service/controller/api/Client.php',
- 'app\\service\\controller\\api\\Push' => __DIR__ . '/../..' . '/app/service/controller/api/Push.php',
- 'app\\service\\serivce\\ClientService' => __DIR__ . '/../..' . '/app/service/serivce/ClientService.php',
- 'app\\service\\serivce\\ConfigService' => __DIR__ . '/../..' . '/app/service/serivce/ConfigService.php',
- 'app\\service\\serivce\\PublishService' => __DIR__ . '/../..' . '/app/service/serivce/PublishService.php',
- 'app\\service\\serivce\\ReceiveService' => __DIR__ . '/../..' . '/app/service/serivce/ReceiveService.php',
- 'app\\service\\serivce\\WechatService' => __DIR__ . '/../..' . '/app/service/serivce/WechatService.php',
+ 'app\\wechat\\controller\\Config' => __DIR__ . '/../..' . '/app/wechat/controller/Config.php',
+ 'app\\wechat\\controller\\Fans' => __DIR__ . '/../..' . '/app/wechat/controller/Fans.php',
+ 'app\\wechat\\controller\\Keys' => __DIR__ . '/../..' . '/app/wechat/controller/Keys.php',
+ 'app\\wechat\\controller\\Menu' => __DIR__ . '/../..' . '/app/wechat/controller/Menu.php',
+ 'app\\wechat\\controller\\News' => __DIR__ . '/../..' . '/app/wechat/controller/News.php',
+ 'app\\wechat\\controller\\api\\Js' => __DIR__ . '/../..' . '/app/wechat/controller/api/Js.php',
+ 'app\\wechat\\controller\\api\\Push' => __DIR__ . '/../..' . '/app/wechat/controller/api/Push.php',
+ 'app\\wechat\\controller\\api\\Review' => __DIR__ . '/../..' . '/app/wechat/controller/api/Review.php',
+ 'app\\wechat\\controller\\api\\Test' => __DIR__ . '/../..' . '/app/wechat/controller/api/Test.php',
+ 'app\\wechat\\service\\FansService' => __DIR__ . '/../..' . '/app/wechat/service/FansService.php',
+ 'app\\wechat\\service\\MediaService' => __DIR__ . '/../..' . '/app/wechat/service/MediaService.php',
+ 'app\\wechat\\service\\WechatService' => __DIR__ . '/../..' . '/app/wechat/service/WechatService.php',
'think\\App' => __DIR__ . '/..' . '/topthink/framework/src/think/App.php',
'think\\Cache' => __DIR__ . '/..' . '/topthink/framework/src/think/Cache.php',
'think\\Collection' => __DIR__ . '/..' . '/topthink/think-helper/src/Collection.php',
@@ -585,9 +629,9 @@ class ComposerStaticInit078c2496db47e2e94f2057948fdfa517
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
- $loader->prefixLengthsPsr4 = ComposerStaticInit078c2496db47e2e94f2057948fdfa517::$prefixLengthsPsr4;
- $loader->prefixDirsPsr4 = ComposerStaticInit078c2496db47e2e94f2057948fdfa517::$prefixDirsPsr4;
- $loader->classMap = ComposerStaticInit078c2496db47e2e94f2057948fdfa517::$classMap;
+ $loader->prefixLengthsPsr4 = ComposerStaticInitada0e677dd8f1307ba83d0cf07626e6c::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInitada0e677dd8f1307ba83d0cf07626e6c::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInitada0e677dd8f1307ba83d0cf07626e6c::$classMap;
}, null, ClassLoader::class);
}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index e0418c2f0..c627beddd 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1,4 +1,72 @@
[
+ {
+ "name": "endroid/qr-code",
+ "version": "1.9.3",
+ "version_normalized": "1.9.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/endroid/qr-code.git",
+ "reference": "c9644bec2a9cc9318e98d1437de3c628dcd1ef93"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/endroid/qr-code/zipball/c9644bec2a9cc9318e98d1437de3c628dcd1ef93",
+ "reference": "c9644bec2a9cc9318e98d1437de3c628dcd1ef93",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-gd": "*",
+ "php": ">=5.4",
+ "symfony/options-resolver": "^2.3|^3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.0|^5.0",
+ "sensio/framework-extra-bundle": "^3.0",
+ "symfony/browser-kit": "^2.3|^3.0",
+ "symfony/framework-bundle": "^2.3|^3.0",
+ "symfony/http-kernel": "^2.3|^3.0"
+ },
+ "time": "2017-04-08T09:13:59+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Endroid\\QrCode\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jeroen van den Enden",
+ "email": "info@endroid.nl",
+ "homepage": "http://endroid.nl/"
+ }
+ ],
+ "description": "Endroid QR Code",
+ "homepage": "https://github.com/endroid/QrCode",
+ "keywords": [
+ "bundle",
+ "code",
+ "endroid",
+ "qr",
+ "qrcode",
+ "symfony"
+ ]
+ },
{
"name": "league/flysystem",
"version": "1.0.61",
@@ -437,6 +505,68 @@
"simple-cache"
]
},
+ {
+ "name": "symfony/options-resolver",
+ "version": "v3.4.36",
+ "version_normalized": "3.4.36.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/options-resolver.git",
+ "reference": "b224d20be60e6f7b55cd66914379a13a0b28651a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b224d20be60e6f7b55cd66914379a13a0b28651a",
+ "reference": "b224d20be60e6f7b55cd66914379a13a0b28651a",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "time": "2019-10-26T11:02:01+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\OptionsResolver\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony OptionsResolver Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "config",
+ "configuration",
+ "options"
+ ]
+ },
{
"name": "topthink/framework",
"version": "v6.0.0",
@@ -805,12 +935,12 @@
"source": {
"type": "git",
"url": "https://github.com/zoujingli/ThinkLibrary.git",
- "reference": "a53c211c23698ff2299b499714ba16001af84551"
+ "reference": "1246ce655df8db112a60bf57037a9a17f4b11d77"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/a53c211c23698ff2299b499714ba16001af84551",
- "reference": "a53c211c23698ff2299b499714ba16001af84551",
+ "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/1246ce655df8db112a60bf57037a9a17f4b11d77",
+ "reference": "1246ce655df8db112a60bf57037a9a17f4b11d77",
"shasum": "",
"mirrors": [
{
@@ -826,7 +956,7 @@
"ext-json": "*",
"topthink/framework": "^6.0"
},
- "time": "2019-12-07T06:46:30+00:00",
+ "time": "2019-12-09T10:17:25+00:00",
"type": "library",
"extra": {
"think": {
diff --git a/vendor/endroid/qr-code/.gitignore b/vendor/endroid/qr-code/.gitignore
new file mode 100644
index 000000000..d0eeedab8
--- /dev/null
+++ b/vendor/endroid/qr-code/.gitignore
@@ -0,0 +1,5 @@
+/bin
+/composer.lock
+/composer.phar
+/phpunit.xml
+/vendor
diff --git a/vendor/endroid/qr-code/.travis.yml b/vendor/endroid/qr-code/.travis.yml
new file mode 100644
index 000000000..de30ea6f7
--- /dev/null
+++ b/vendor/endroid/qr-code/.travis.yml
@@ -0,0 +1,21 @@
+language: php
+
+php:
+ - 5.4
+ - 5.5
+ - 5.6
+ - 7.0
+ - 7.1
+ - hhvm
+
+matrix:
+ fast_finish: true
+
+before_install:
+ - if [[ "$TRAVIS_PHP_VERSION" != "hhvm" ]]; then phpenv config-rm xdebug.ini; fi;
+ - composer self-update && composer install --no-interaction
+
+script: bin/phpunit
+
+notifications:
+ email: info@endroid.nl
diff --git a/vendor/endroid/qr-code/LICENSE b/vendor/endroid/qr-code/LICENSE
new file mode 100644
index 000000000..0966ce0e4
--- /dev/null
+++ b/vendor/endroid/qr-code/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) Jeroen van den Enden
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/endroid/qr-code/README.md b/vendor/endroid/qr-code/README.md
new file mode 100644
index 000000000..2c51a989f
--- /dev/null
+++ b/vendor/endroid/qr-code/README.md
@@ -0,0 +1,132 @@
+QR Code
+=======
+
+*By [endroid](http://endroid.nl/)*
+
+[](https://packagist.org/packages/endroid/qrcode)
+[](http://travis-ci.org/endroid/QrCode)
+[](https://packagist.org/packages/endroid/qrcode)
+[](https://packagist.org/packages/endroid/qrcode)
+[](https://packagist.org/packages/endroid/qrcode)
+
+This library based on QRcode Perl CGI & PHP scripts by Y. Swetake helps you generate images containing a QR code.
+
+## Installation
+
+Use [Composer](https://getcomposer.org/) to install the library.
+
+``` bash
+$ composer require endroid/qrcode
+```
+
+## Usage
+
+```php
+use Endroid\QrCode\QrCode;
+
+$qrCode = new QrCode();
+$qrCode
+ ->setText('Life is too short to be generating QR codes')
+ ->setSize(300)
+ ->setPadding(10)
+ ->setErrorCorrection('high')
+ ->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0])
+ ->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0])
+ ->setLabel('Scan the code')
+ ->setLabelFontSize(16)
+ ->setImageType(QrCode::IMAGE_TYPE_PNG)
+;
+
+// now we can directly output the qrcode
+header('Content-Type: '.$qrCode->getContentType());
+$qrCode->render();
+
+// save it to a file
+$qrCode->save('qrcode.png');
+
+// or create a response object
+$response = new Response($qrCode->get(), 200, ['Content-Type' => $qrCode->getContentType()]);
+```
+
+
+
+## Symfony integration
+
+Register the Symfony bundle in the kernel.
+
+```php
+// app/AppKernel.php
+
+public function registerBundles()
+{
+ $bundles = [
+ // ...
+ new Endroid\QrCode\Bundle\EndroidQrCodeBundle(),
+ ];
+}
+```
+
+The default parameters can be overridden via the configuration.
+Alpha channel available range is [0, 127] in foreground and background colors.
+
+```yaml
+endroid_qr_code:
+ size: 100
+ padding: 10
+ extension: gif
+ error_correction_level: high
+ foreground_color: { r: 0, g: 0, b: 0, a: 0 }
+ background_color: { r: 255, g: 255, b: 255, a: 0 }
+ label: 'My label'
+ label_font_size: 16
+```
+
+Now you can retrieve the factory as follows.
+
+```php
+$factory = $this->get('endroid.qrcode.factory');
+$factory->createQrCode();
+```
+
+Add the following section to your routing to be able to handle QR code URLs.
+This step can be skipped when you only use data URIs to display your images.
+
+``` yml
+EndroidQrCodeBundle:
+ resource: "@EndroidQrCodeBundle/Controller/"
+ type: annotation
+ prefix: /qrcode
+```
+
+After installation and configuration, QR codes can be generated by appending
+the QR code text to the url as mounted, followed by .png, .jpg or .gif.
+
+## Twig extension
+
+The bundle also provides a Twig extension for quickly generating QR code urls.
+Optional parameters are extension, size, padding and errorCorrectionLevel. When
+a parameter is omitted, the value in the bundle configuration is used.
+
+``` twig
+
 }})
+
 }})
+
 }})
+```
+
+You can also use the data URI helper to embed the QR code within your HTML
+instead of requiring a separate HTTP request to load your image.
+
+``` twig
+
 }})
+```
+
+## Versioning
+
+Version numbers follow the MAJOR.MINOR.PATCH scheme. Backwards compatibility
+breaking changes will be kept to a minimum but be aware that these can occur.
+Lock your dependencies for production and test your code when upgrading.
+
+## License
+
+This bundle is under the MIT license. For the full copyright and license
+information please view the LICENSE file that was distributed with this source code.
diff --git a/vendor/endroid/qr-code/assets/data/qrv10_0.dat b/vendor/endroid/qr-code/assets/data/qrv10_0.dat
new file mode 100644
index 000000000..8c073a815
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv10_0.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv10_1.dat b/vendor/endroid/qr-code/assets/data/qrv10_1.dat
new file mode 100644
index 000000000..9a3cf4db8
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv10_1.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv10_2.dat b/vendor/endroid/qr-code/assets/data/qrv10_2.dat
new file mode 100644
index 000000000..4a57e8afa
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv10_2.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv10_3.dat b/vendor/endroid/qr-code/assets/data/qrv10_3.dat
new file mode 100644
index 000000000..e2de0eca3
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv10_3.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv11_0.dat b/vendor/endroid/qr-code/assets/data/qrv11_0.dat
new file mode 100644
index 000000000..18853fec1
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv11_0.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv11_1.dat b/vendor/endroid/qr-code/assets/data/qrv11_1.dat
new file mode 100644
index 000000000..365deb3be
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv11_1.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv11_2.dat b/vendor/endroid/qr-code/assets/data/qrv11_2.dat
new file mode 100644
index 000000000..0357a6431
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv11_2.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv11_3.dat b/vendor/endroid/qr-code/assets/data/qrv11_3.dat
new file mode 100644
index 000000000..bb8621b23
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv11_3.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv12_0.dat b/vendor/endroid/qr-code/assets/data/qrv12_0.dat
new file mode 100644
index 000000000..636f201ce
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv12_0.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv12_1.dat b/vendor/endroid/qr-code/assets/data/qrv12_1.dat
new file mode 100644
index 000000000..c67964856
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv12_1.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv12_2.dat b/vendor/endroid/qr-code/assets/data/qrv12_2.dat
new file mode 100644
index 000000000..4544e9db1
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv12_2.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv12_3.dat b/vendor/endroid/qr-code/assets/data/qrv12_3.dat
new file mode 100644
index 000000000..9adba362e
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv12_3.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv13_0.dat b/vendor/endroid/qr-code/assets/data/qrv13_0.dat
new file mode 100644
index 000000000..73d6117c7
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv13_0.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv13_1.dat b/vendor/endroid/qr-code/assets/data/qrv13_1.dat
new file mode 100644
index 000000000..9ae40dd71
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv13_1.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv13_2.dat b/vendor/endroid/qr-code/assets/data/qrv13_2.dat
new file mode 100644
index 000000000..c4d9997d5
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv13_2.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv13_3.dat b/vendor/endroid/qr-code/assets/data/qrv13_3.dat
new file mode 100644
index 000000000..2f333926e
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv13_3.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv14_0.dat b/vendor/endroid/qr-code/assets/data/qrv14_0.dat
new file mode 100644
index 000000000..956dae425
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv14_0.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv14_1.dat b/vendor/endroid/qr-code/assets/data/qrv14_1.dat
new file mode 100644
index 000000000..5dd0e3ed9
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv14_1.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv14_2.dat b/vendor/endroid/qr-code/assets/data/qrv14_2.dat
new file mode 100644
index 000000000..466b94d82
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv14_2.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv14_3.dat b/vendor/endroid/qr-code/assets/data/qrv14_3.dat
new file mode 100644
index 000000000..cdd2b21fb
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv14_3.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv15_0.dat b/vendor/endroid/qr-code/assets/data/qrv15_0.dat
new file mode 100644
index 000000000..fcbb6447e
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv15_0.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv15_1.dat b/vendor/endroid/qr-code/assets/data/qrv15_1.dat
new file mode 100644
index 000000000..59f7ed18a
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv15_1.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv15_2.dat b/vendor/endroid/qr-code/assets/data/qrv15_2.dat
new file mode 100644
index 000000000..3b8611729
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv15_2.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv15_3.dat b/vendor/endroid/qr-code/assets/data/qrv15_3.dat
new file mode 100644
index 000000000..4e9aa0ec0
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv15_3.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv16_0.dat b/vendor/endroid/qr-code/assets/data/qrv16_0.dat
new file mode 100644
index 000000000..d835c66f5
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv16_0.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv16_1.dat b/vendor/endroid/qr-code/assets/data/qrv16_1.dat
new file mode 100644
index 000000000..ab1be3b03
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv16_1.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv16_2.dat b/vendor/endroid/qr-code/assets/data/qrv16_2.dat
new file mode 100644
index 000000000..e34b2e3c6
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv16_2.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv16_3.dat b/vendor/endroid/qr-code/assets/data/qrv16_3.dat
new file mode 100644
index 000000000..a91c7f71a
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv16_3.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv17_0.dat b/vendor/endroid/qr-code/assets/data/qrv17_0.dat
new file mode 100644
index 000000000..48fd2764d
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv17_0.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv17_1.dat b/vendor/endroid/qr-code/assets/data/qrv17_1.dat
new file mode 100644
index 000000000..33f541137
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv17_1.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv17_2.dat b/vendor/endroid/qr-code/assets/data/qrv17_2.dat
new file mode 100644
index 000000000..0c3b80f0a
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv17_2.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv17_3.dat b/vendor/endroid/qr-code/assets/data/qrv17_3.dat
new file mode 100644
index 000000000..c386c177e
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv17_3.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv18_0.dat b/vendor/endroid/qr-code/assets/data/qrv18_0.dat
new file mode 100644
index 000000000..f499e0e53
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv18_0.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv18_1.dat b/vendor/endroid/qr-code/assets/data/qrv18_1.dat
new file mode 100644
index 000000000..8272c4186
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv18_1.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv18_2.dat b/vendor/endroid/qr-code/assets/data/qrv18_2.dat
new file mode 100644
index 000000000..0074b18b9
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv18_2.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv18_3.dat b/vendor/endroid/qr-code/assets/data/qrv18_3.dat
new file mode 100644
index 000000000..b8eaec68e
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv18_3.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv19_0.dat b/vendor/endroid/qr-code/assets/data/qrv19_0.dat
new file mode 100644
index 000000000..28f6107e5
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv19_0.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv19_1.dat b/vendor/endroid/qr-code/assets/data/qrv19_1.dat
new file mode 100644
index 000000000..98af58bb3
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv19_1.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv19_2.dat b/vendor/endroid/qr-code/assets/data/qrv19_2.dat
new file mode 100644
index 000000000..60f41f205
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv19_2.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv19_3.dat b/vendor/endroid/qr-code/assets/data/qrv19_3.dat
new file mode 100644
index 000000000..7b98e51b5
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv19_3.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv1_0.dat b/vendor/endroid/qr-code/assets/data/qrv1_0.dat
new file mode 100644
index 000000000..b941d488a
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv1_0.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv1_1.dat b/vendor/endroid/qr-code/assets/data/qrv1_1.dat
new file mode 100644
index 000000000..11df75712
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv1_1.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv1_2.dat b/vendor/endroid/qr-code/assets/data/qrv1_2.dat
new file mode 100644
index 000000000..851c3fa2b
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv1_2.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv1_3.dat b/vendor/endroid/qr-code/assets/data/qrv1_3.dat
new file mode 100644
index 000000000..1f300f511
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv1_3.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv20_0.dat b/vendor/endroid/qr-code/assets/data/qrv20_0.dat
new file mode 100644
index 000000000..12963c2b7
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv20_0.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv20_1.dat b/vendor/endroid/qr-code/assets/data/qrv20_1.dat
new file mode 100644
index 000000000..99d8afa99
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv20_1.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv20_2.dat b/vendor/endroid/qr-code/assets/data/qrv20_2.dat
new file mode 100644
index 000000000..e6074eaa9
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv20_2.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv20_3.dat b/vendor/endroid/qr-code/assets/data/qrv20_3.dat
new file mode 100644
index 000000000..60acb51ad
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv20_3.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv21_0.dat b/vendor/endroid/qr-code/assets/data/qrv21_0.dat
new file mode 100644
index 000000000..487b8f230
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv21_0.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv21_1.dat b/vendor/endroid/qr-code/assets/data/qrv21_1.dat
new file mode 100644
index 000000000..54003fc4f
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv21_1.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv21_2.dat b/vendor/endroid/qr-code/assets/data/qrv21_2.dat
new file mode 100644
index 000000000..33003315e
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv21_2.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv21_3.dat b/vendor/endroid/qr-code/assets/data/qrv21_3.dat
new file mode 100644
index 000000000..fa344525d
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv21_3.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv22_0.dat b/vendor/endroid/qr-code/assets/data/qrv22_0.dat
new file mode 100644
index 000000000..444981c6d
Binary files /dev/null and b/vendor/endroid/qr-code/assets/data/qrv22_0.dat differ
diff --git a/vendor/endroid/qr-code/assets/data/qrv22_1.dat b/vendor/endroid/qr-code/assets/data/qrv22_1.dat
new file mode 100644
index 000000000..690ff6366
--- /dev/null
+++ b/vendor/endroid/qr-code/assets/data/qrv22_1.dat
@@ -0,0 +1,209 @@
+hghghghghghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa_`_`_`_`_`_`_`_`]]]]]]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGHGHGGGGGHGHGHGHFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878765656565656565656565654343434343434343434343432121212121212121/0/0/////0/0/0/0.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"! hghghghghghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa_`_`_`_`_`_`_`_`^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIGGHGHGHGGHGHGHGHFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:987878787878787878787876565656565656565656565654343434343434343432121212121212121212121//0/0/0//0/0/0/0.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"! hghghghghghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa_`_______`_`_`_`^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGGHGGGGGGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:987878787878787878787878765656565656565656565656543434343434343432121212121212121212121210/0/0/0//0//////.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"! hghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`__`_`_`_`^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878787878765656565656565656565656543434343434343432121212121212121210/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"! hghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_______`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGGGGGGHHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878787878787656565656565656565656565434343434343434321212121212121210//////00/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"! hghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGHGHGHGHHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878787878765656565656565656565656543434343434343432121212121212121/0/0/0/00/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"! hghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa_____`_``_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGHGHGHGHGGGGGHGHHGHGHGGGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCBABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878787878765656565656565656565656543434343434343432121212121212121/0/0/0/0/////0/00/0/0///.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"! hghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa_`_`_`_``_`_`___`_`_`_`_^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGHGHGHGHGHGHGHGHGGHGHGHGFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878787878765656565656565656565656543434343434343432121212121212121/0/0/0/0/0/0/0/0//0/0/0/.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"! hghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa_`_`_`_`___`_`_``_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGHGHGHGHGHGHGHGHHGFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878787878765656565656565656543434343434343434343432121212121212121/0/0/0/0/0/0/0/00/.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ hhggffeeDDCCBBAA 99::;;<<]]^^__``FFEEDDCC""##$$%%PPQQRRSSVUUTTSSR-,,++**) (())**++LLMMNNOOaa``__^^==<<;;::
00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##"" $$%%&&''HHIIJJKKee__^^]]776655// ))**++,,WWXXYYZZONNMMLKJ&%%$$##"(())**++LLMMNNOOaa``__^^==<<;;::
00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##"" $$%%&&''HHIIJJKKee__^^]]776655// ))**++,,WWXXYYZZONNMMLKJ&%%$$##"(())**++LLMMNNOOaa``__^^==<<;;::
00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##"" $$%%&&''HHIIJJKKee__^^]]776655// ))**++,,WWXXYYZZONNMMLKJ&%%$$##"ddccbbaa@@??>>====>>??@@aabbccddBBAA@@??&&''(())TTUUVVWWRQQPPOON)((''&&%
+
+,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//..
+
+<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOO\\[[ZZYY..--,,++ --..//55[[\\]]^^IHGGFFEE"!!
+
+,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//..
+
+<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOO\\[[ZZYY..--,,++ --..//55[[\\]]^^IHGGFFEE"!!
+
+,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//..
+
+<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOO\\[[ZZYY..--,,++ --..//55[[\\]]^^IHGGFFEE"!! ``__^^]]<<;;::99 AABBCCDDeeffgghh>>==<<;;
**++,,--XXYYZZ[[NMMLKJIH%$$##""!
00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##"" $$%%&&''HHIIJJKKeeddccbbAA@@??>>
+
+,,--..//PPQQRRSSXXWWVVUU**))((''
+
+66778899__eeffggDDCCBBAA
00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##"" $$%%&&''HHIIJJKKeeddccbbAA@@??>>
+
+,,--..//PPQQRRSSXXWWVVUU**))((''
+
+66778899__eeffggDDCCBBAA
00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##"" $$%%&&''HHIIJJKKeeddccbbAA@@??>>
+
+,,--..//PPQQRRSSXXWWVVUU**))((''
+
+66778899__eeffggDDCCBBAA\\[[ZZYY88776655!!""##$$EEFFGGHHhhggffee::998877
+
+ ..//5566\\]]^^__GGFFEEDD! 44556677XXYYZZ[[UUTTSSRR1100//..
+
+<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;::
00112233TTUUVVWWTTSSRRQQ&&%%$$##
::;;<<==hhhhggff@@??>>==44556677XXYYZZ[[UUTTSSRR1100//..
+
+<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;::
00112233TTUUVVWWTTSSRRQQ&&%%$$##
::;;<<==hhhhggff@@??>>==44556677XXYYZZ[[UUTTSSRR1100//..
+
+<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;::
00112233TTUUVVWWTTSSRRQQ&&%%$$##
::;;<<==hhhhggff@@??>>==
+
+XXWWVVUU44332211
%%&&''((IIJJKKLL__^^]]\\6655//..
+
+778899::eeffgghhCCBBAA@@8899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##"" $$%%&&''HHIIJJKKeeddccbbAA@@??>>
+
+,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[PPOONNMM""!! >>??@@AAeedcba`_<<;;::998899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##"" $$%%&&''HHIIJJKKeeddccbbAA@@??>>
+
+,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[PPOONNMM""!! >>??@@AAeedcba`_<<;;::998899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##"" $$%%&&''HHIIJJKKeeddccbbAA@@??>>
+
+,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[PPOONNMM""!! >>??@@AAeedcba`_<<;;::99
TTSSRRQQ00//..--
+
+ ))**++,,MMNNOOPP[[ZZYYXX--,,++**
;;<<==>>hhggffee??>>==<<<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;::
00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__GGFFEEDDBBCCDDEE_^^]]\\[88776655
<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;::
00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__GGFFEEDDBBCCDDEE_^^]]\\[88776655
<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;::
00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__GGFFEEDDBBCCDDEE_^^]]\\[88776655
PPOONNMM,,++**))
+
+--..//00QQRRSSTTWWVVUUTT))((''&&??@@AABBdcba`__^;;::9988@@AABBCCddeeffggIIHHGGFF%%$$##"" $$%%&&''HHIIJJKKeeddccbbAA@@??>>
+
+,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//..
+
+<<==>>??``aabbccCCBBAA@@ FFGGMMNN[ZZYYXXW43210//.
+
+ @@AABBCCddeeffggIIHHGGFF%%$$##"" $$%%&&''HHIIJJKKeeddccbbAA@@??>>
+
+,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//..
+
+<<==>>??``aabbccCCBBAA@@ FFGGMMNN[ZZYYXXW43210//.
+
+ @@AABBCCddeeffggIIHHGGFF%%$$##"" $$%%&&''HHIIJJKKeeddccbbAA@@??>>
+
+,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//..
+
+<<==>>??``aabbccCCBBAA@@ FFGGMMNN[ZZYYXXW43210//.
+
+ LLKKJJII((''&&%%
11223344UUVVWWXXSSRRQQPP%%$$##""CCDDEEFF^]]\\[[Z77665543
!!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;::
00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffgg??>>==<<!!""##$$OOPPQQRRWVVUUTTS.--,,++* !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;::
00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffgg??>>==<<!!""##$$OOPPQQRRWVVUUTTS.--,,++* !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;::
00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffgg??>>==<<!!""##$$OOPPQQRRWVVUUTTS.--,,++*HHGGFFEE$$##""!!55667788YYZZ[[\\OONNMMGG!! !!GGMMNNOOZYYXXWWV210//..-
+
+ $$%%&&''HHIIJJKKeeddccbbAA@@??>>
+
+,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//..
+
+<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggff;;::9988
+
+%%&&''((SSTTUUVVSRRQQPPO*))((''&