Index: /controller/wpsg_ShopController.class.php
===================================================================
--- /controller/wpsg_ShopController.class.php	(revision 8374)
+++ /controller/wpsg_ShopController.class.php	(revision 8375)
@@ -1205,4 +1205,6 @@
 			
 			if ($fixView) $this->view = $view;
+			
+			 \do_action('wpsg_'.$func_name.'_after', $arParam);
 			
 			return true;
@@ -3583,11 +3585,9 @@
 		 * Sind $o_id order $k_id nicht false, so wird der Betreff und der Text durch die ShopErsetzungsfunktion gejagt
 		 */
-		public function sendMail(&$mail_text, $empfaenger, $mail_key, $anhang = array(), $o_id = false, $k_id = false, $mail_html = false, $force_subject = false)
-		{
+		public function sendMail(&$mail_text, $empfaenger, $mail_key, $anhang = array(), $o_id = false, $k_id = false, $mail_html = false, $force_subject = false, $payload = []) {
 
 		    // Es gibt Mails, die beziehen sich nur auf Kunden 
             // Wenn aber eine Mail ohne Kunden aber mit Bestellung gesendet werden soll, so kann der Kunde auch aus der Bestellung genommen werden
-		    if ($k_id === false && $o_id !== false)
-            {
+		    if ($k_id === false && $o_id !== false) {
                 
                 $oOrder = wpsg_order::getInstance($o_id);
@@ -3611,6 +3611,5 @@
 			$headers = array();
 
-			if ($from != '')
-			{
+			if ($from != '') {
 
 				$headers['from'] = 'FROM:'.$from;
@@ -3624,6 +3623,5 @@
 			// Werbetext / Impressum etc.
 			$addText = $this->replaceUniversalPlatzhalter($this->getMailValue('wpsg_'.$mail_key.'_text'), $o_id, $k_id);
-			if (wpsg_isSizedString($addText))
-			{
+			if (wpsg_isSizedString($addText)) {
 
 				if (wpsg_isSizedString($mail_html)) $mail_html .= "<br /><br />".nl2br($addText);
@@ -3633,6 +3631,5 @@
 			}
 
-			if (wpsg_isSizedString($mail_html))
-			{
+			if (wpsg_isSizedString($mail_html)) {
 
 				$mail_head = $this->render(WPSG_PATH_VIEW.'/mailtemplates/html/html_head.phtml', false);
@@ -3664,11 +3661,9 @@
 			$mail_text_send = $mail_text;
 
-			if ($this->get_option('wpsg_htmlmail') === '1')
-			{
+			if ($this->get_option('wpsg_htmlmail') === '1') {
 
 				$this->text_message = $mail_text;
 
-				if (wpsg_isSizedString($mail_html))
-				{
+				if (wpsg_isSizedString($mail_html)) {
 
 					$mail_text_send = $mail_html;
@@ -3698,7 +3693,7 @@
             }
 			
-			$this->callMods('sendMail', array($mail_key, $o_id, $k_id, &$empfaenger, &$subject, &$mail_text_send, &$headers, &$anhang));
-
-			\apply_filters('wpsg_sendMail', [$mail_key, $o_id, $k_id, &$empfaenger, &$subject, &$mail_text_send, &$headers, &$anhang]);
+			$this->callMods('sendMail', array($mail_key, $o_id, $k_id, &$empfaenger, &$subject, &$mail_text_send, &$headers, &$anhang, $payload));
+
+			\apply_filters('wpsg_sendMail', [$mail_key, $o_id, $k_id, &$empfaenger, &$subject, &$mail_text_send, &$headers, &$anhang, $payload]);
 
 			wp_mail($empfaenger, $subject, $mail_text_send, $headers, $anhang);
Index: /lib/composer.json
===================================================================
--- /lib/composer.json	(revision 8374)
+++ /lib/composer.json	(revision 8375)
@@ -2,6 +2,5 @@
   "require": { 
     "leafo/scssphp": "v0.7.1",
-    "matthiasmullie/minify": "1.3.60",
-    "sprain/swiss-qr-bill": "^4.8"
+    "matthiasmullie/minify": "1.3.60"
   }
 }
Index: /lib/composer.lock
===================================================================
--- /lib/composer.lock	(revision 8374)
+++ /lib/composer.lock	(revision 8375)
@@ -5,234 +5,6 @@
         "This file is @generated automatically"
     ],
-    "content-hash": "819e0173ac2f8c35e980ee3239ae95c0",
+    "content-hash": "12a22a3c84870878acb8d5985523a49c",
     "packages": [
-        {
-            "name": "bacon/bacon-qr-code",
-            "version": "2.0.8",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Bacon/BaconQrCode.git",
-                "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/8674e51bb65af933a5ffaf1c308a660387c35c22",
-                "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22",
-                "shasum": ""
-            },
-            "require": {
-                "dasprid/enum": "^1.0.3",
-                "ext-iconv": "*",
-                "php": "^7.1 || ^8.0"
-            },
-            "require-dev": {
-                "phly/keep-a-changelog": "^2.1",
-                "phpunit/phpunit": "^7 | ^8 | ^9",
-                "spatie/phpunit-snapshot-assertions": "^4.2.9",
-                "squizlabs/php_codesniffer": "^3.4"
-            },
-            "suggest": {
-                "ext-imagick": "to generate QR code images"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "BaconQrCode\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-2-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Ben Scholzen 'DASPRiD'",
-                    "email": "mail@dasprids.de",
-                    "homepage": "https://dasprids.de/",
-                    "role": "Developer"
-                }
-            ],
-            "description": "BaconQrCode is a QR code generator for PHP.",
-            "homepage": "https://github.com/Bacon/BaconQrCode",
-            "support": {
-                "issues": "https://github.com/Bacon/BaconQrCode/issues",
-                "source": "https://github.com/Bacon/BaconQrCode/tree/2.0.8"
-            },
-            "time": "2022-12-07T17:46:57+00:00"
-        },
-        {
-            "name": "dasprid/enum",
-            "version": "1.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/DASPRiD/Enum.git",
-                "reference": "8e6b6ea76eabbf19ea2bf5b67b98e1860474012f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/8e6b6ea76eabbf19ea2bf5b67b98e1860474012f",
-                "reference": "8e6b6ea76eabbf19ea2bf5b67b98e1860474012f",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1 <9.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^7 | ^8 | ^9",
-                "squizlabs/php_codesniffer": "*"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "DASPRiD\\Enum\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-2-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Ben Scholzen 'DASPRiD'",
-                    "email": "mail@dasprids.de",
-                    "homepage": "https://dasprids.de/",
-                    "role": "Developer"
-                }
-            ],
-            "description": "PHP 7.1 enum implementation",
-            "keywords": [
-                "enum",
-                "map"
-            ],
-            "support": {
-                "issues": "https://github.com/DASPRiD/Enum/issues",
-                "source": "https://github.com/DASPRiD/Enum/tree/1.0.4"
-            },
-            "time": "2023-03-01T18:44:03+00:00"
-        },
-        {
-            "name": "endroid/qr-code",
-            "version": "4.8.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/endroid/qr-code.git",
-                "reference": "2436c2333a3931c95e2b96eb82f16f53143d6bba"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/endroid/qr-code/zipball/2436c2333a3931c95e2b96eb82f16f53143d6bba",
-                "reference": "2436c2333a3931c95e2b96eb82f16f53143d6bba",
-                "shasum": ""
-            },
-            "require": {
-                "bacon/bacon-qr-code": "^2.0.5",
-                "php": "^8.0"
-            },
-            "conflict": {
-                "khanamiryan/qrcode-detector-decoder": "^1.0.6"
-            },
-            "require-dev": {
-                "endroid/quality": "dev-master",
-                "ext-gd": "*",
-                "khanamiryan/qrcode-detector-decoder": "^1.0.4||^2.0.2",
-                "setasign/fpdf": "^1.8.2"
-            },
-            "suggest": {
-                "ext-gd": "Enables you to write PNG images",
-                "khanamiryan/qrcode-detector-decoder": "Enables you to use the image validator",
-                "roave/security-advisories": "Makes sure package versions with known security issues are not installed",
-                "setasign/fpdf": "Enables you to use the PDF writer"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.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"
-                }
-            ],
-            "description": "Endroid QR Code",
-            "homepage": "https://github.com/endroid/qr-code",
-            "keywords": [
-                "code",
-                "endroid",
-                "php",
-                "qr",
-                "qrcode"
-            ],
-            "support": {
-                "issues": "https://github.com/endroid/qr-code/issues",
-                "source": "https://github.com/endroid/qr-code/tree/4.8.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/endroid",
-                    "type": "github"
-                }
-            ],
-            "time": "2023-03-30T18:46:02+00:00"
-        },
-        {
-            "name": "kmukku/php-iso11649",
-            "version": "1.6",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/kmukku/php-iso11649.git",
-                "reference": "723863147a8ff1c292c337e9459402f4a35c3b1e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/kmukku/php-iso11649/zipball/723863147a8ff1c292c337e9459402f4a35c3b1e",
-                "reference": "723863147a8ff1c292c337e9459402f4a35c3b1e",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.4.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "kmukku\\phpIso11649\\": [
-                        "src/"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Keijo Mukku",
-                    "email": "keijo.mukku@gmail.com"
-                }
-            ],
-            "description": "ISO 11649 creditor reference library for php",
-            "homepage": "https://github.com/kmukku/php-iso11649",
-            "keywords": [
-                "Banking",
-                "ISO 11649",
-                "RF creditor reference",
-                "finance"
-            ],
-            "support": {
-                "issues": "https://github.com/kmukku/php-iso11649/issues",
-                "source": "https://github.com/kmukku/php-iso11649/tree/master"
-            },
-            "time": "2020-04-21T13:01:17+00:00"
-        },
         {
             "name": "leafo/scssphp",
@@ -395,806 +167,4 @@
             ],
             "time": "2018-02-02T11:30:10+00:00"
-        },
-        {
-            "name": "sprain/swiss-qr-bill",
-            "version": "v4.8.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sprain/php-swiss-qr-bill.git",
-                "reference": "75b45a0d5e96307d758f663f94975aafec426391"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sprain/php-swiss-qr-bill/zipball/75b45a0d5e96307d758f663f94975aafec426391",
-                "reference": "75b45a0d5e96307d758f663f94975aafec426391",
-                "shasum": ""
-            },
-            "require": {
-                "endroid/qr-code": "^4.4.4",
-                "ext-dom": "*",
-                "kmukku/php-iso11649": "^1.5",
-                "php": "^8.0.0|^8.1.0|^8.2.0",
-                "symfony/intl": "^4.4|^5.0|^6.0",
-                "symfony/polyfill-intl-icu": "^1.23",
-                "symfony/validator": "^4.4|^5.0|^6.0"
-            },
-            "conflict": {
-                "khanamiryan/qrcode-detector-decoder": "1.0.6"
-            },
-            "require-dev": {
-                "dg/bypass-finals": "^1.3",
-                "dms/phpunit-arraysubset-asserts": "^0.2",
-                "fpdf/fpdf": "^1.85",
-                "friendsofphp/php-cs-fixer": "^3.4",
-                "khanamiryan/qrcode-detector-decoder": "^1.0.3",
-                "phpstan/phpstan": "^1.2",
-                "phpunit/phpunit": "^9.0",
-                "setasign/fpdf": "^1.8.2",
-                "setasign/fpdi": "^2.3.5",
-                "tecnickcom/tcpdf": "^6.3.2"
-            },
-            "suggest": {
-                "fpdf/fpdf": "Needed to create pdfs with FpdfOutput",
-                "setasign/fpdf": "Needed to create pdfs with Fpdi",
-                "setasign/fpdi": "Needed to create pdfs with Fpdi",
-                "tecnickcom/tcpdf": "Needed to create pdfs with TcPdfOutput"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Sprain\\SwissQrBill\\": "src",
-                    "Sprain\\Tests\\SwissQrBill\\": "tests"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A PHP library to create Swiss QR bills",
-            "support": {
-                "issues": "https://github.com/sprain/php-swiss-qr-bill/issues",
-                "source": "https://github.com/sprain/php-swiss-qr-bill/tree/v4.8.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sprain",
-                    "type": "github"
-                }
-            ],
-            "time": "2023-02-21T08:46:49+00:00"
-        },
-        {
-            "name": "symfony/deprecation-contracts",
-            "version": "v3.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/deprecation-contracts.git",
-                "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
-                "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.4-dev"
-                },
-                "thanks": {
-                    "name": "symfony/contracts",
-                    "url": "https://github.com/symfony/contracts"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "function.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "A generic function and convention to trigger deprecation notices",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2023-05-23T14:45:45+00:00"
-        },
-        {
-            "name": "symfony/intl",
-            "version": "v6.3.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/intl.git",
-                "reference": "fdf4aff85fff2cc681cc45936b6b2a52731acc23"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/intl/zipball/fdf4aff85fff2cc681cc45936b6b2a52731acc23",
-                "reference": "fdf4aff85fff2cc681cc45936b6b2a52731acc23",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "symfony/filesystem": "^5.4|^6.0",
-                "symfony/finder": "^5.4|^6.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Intl\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@gmail.com"
-                },
-                {
-                    "name": "Eriksen Costa",
-                    "email": "eriksen.costa@infranology.com.br"
-                },
-                {
-                    "name": "Igor Wiedler",
-                    "email": "igor@wiedler.ch"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Provides access to the localization data of the ICU library",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "i18n",
-                "icu",
-                "internationalization",
-                "intl",
-                "l10n",
-                "localization"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/intl/tree/v6.3.1"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2023-06-21T12:08:28+00:00"
-        },
-        {
-            "name": "symfony/polyfill-ctype",
-            "version": "v1.27.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
-                "reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "provide": {
-                "ext-ctype": "*"
-            },
-            "suggest": {
-                "ext-ctype": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Ctype\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Gert de Pagter",
-                    "email": "BackEndTea@gmail.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for ctype functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "ctype",
-                "polyfill",
-                "portable"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2022-11-03T14:55:06+00:00"
-        },
-        {
-            "name": "symfony/polyfill-intl-icu",
-            "version": "v1.27.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-icu.git",
-                "reference": "a3d9148e2c363588e05abbdd4ee4f971f0a5330c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/a3d9148e2c363588e05abbdd4ee4f971f0a5330c",
-                "reference": "a3d9148e2c363588e05abbdd4ee4f971f0a5330c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-intl": "For best performance and support of other locales than \"en\""
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Icu\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ],
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's ICU-related data and classes",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "icu",
-                "intl",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2022-11-03T14:55:06+00:00"
-        },
-        {
-            "name": "symfony/polyfill-mbstring",
-            "version": "v1.27.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
-                "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "provide": {
-                "ext-mbstring": "*"
-            },
-            "suggest": {
-                "ext-mbstring": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Mbstring\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for the Mbstring extension",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "mbstring",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2022-11-03T14:55:06+00:00"
-        },
-        {
-            "name": "symfony/polyfill-php80",
-            "version": "v1.27.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php80.git",
-                "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
-                "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php80\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Ion Bazan",
-                    "email": "ion.bazan@gmail.com"
-                },
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2022-11-03T14:55:06+00:00"
-        },
-        {
-            "name": "symfony/polyfill-php83",
-            "version": "v1.27.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php83.git",
-                "reference": "508c652ba3ccf69f8c97f251534f229791b52a57"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/508c652ba3ccf69f8c97f251534f229791b52a57",
-                "reference": "508c652ba3ccf69f8c97f251534f229791b52a57",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1",
-                "symfony/polyfill-php80": "^1.14"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php83\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-php83/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2022-11-03T14:55:06+00:00"
-        },
-        {
-            "name": "symfony/translation-contracts",
-            "version": "v3.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/translation-contracts.git",
-                "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86",
-                "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.4-dev"
-                },
-                "thanks": {
-                    "name": "symfony/contracts",
-                    "url": "https://github.com/symfony/contracts"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Contracts\\Translation\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Test/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Generic abstractions related to translation",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "abstractions",
-                "contracts",
-                "decoupling",
-                "interfaces",
-                "interoperability",
-                "standards"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2023-05-30T17:17:10+00:00"
-        },
-        {
-            "name": "symfony/validator",
-            "version": "v6.3.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/validator.git",
-                "reference": "1b71f43c62ee867ab08195ba6039a1bc3e6654dc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/validator/zipball/1b71f43c62ee867ab08195ba6039a1bc3e6654dc",
-                "reference": "1b71f43c62ee867ab08195ba6039a1bc3e6654dc",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1",
-                "symfony/deprecation-contracts": "^2.5|^3",
-                "symfony/polyfill-ctype": "~1.8",
-                "symfony/polyfill-mbstring": "~1.0",
-                "symfony/polyfill-php83": "^1.27",
-                "symfony/translation-contracts": "^2.5|^3"
-            },
-            "conflict": {
-                "doctrine/annotations": "<1.13",
-                "doctrine/lexer": "<1.1",
-                "symfony/dependency-injection": "<5.4",
-                "symfony/expression-language": "<5.4",
-                "symfony/http-kernel": "<5.4",
-                "symfony/intl": "<5.4",
-                "symfony/property-info": "<5.4",
-                "symfony/translation": "<5.4",
-                "symfony/yaml": "<5.4"
-            },
-            "require-dev": {
-                "doctrine/annotations": "^1.13|^2",
-                "egulias/email-validator": "^2.1.10|^3|^4",
-                "symfony/cache": "^5.4|^6.0",
-                "symfony/config": "^5.4|^6.0",
-                "symfony/console": "^5.4|^6.0",
-                "symfony/dependency-injection": "^5.4|^6.0",
-                "symfony/expression-language": "^5.4|^6.0",
-                "symfony/finder": "^5.4|^6.0",
-                "symfony/http-client": "^5.4|^6.0",
-                "symfony/http-foundation": "^5.4|^6.0",
-                "symfony/http-kernel": "^5.4|^6.0",
-                "symfony/intl": "^5.4|^6.0",
-                "symfony/mime": "^5.4|^6.0",
-                "symfony/property-access": "^5.4|^6.0",
-                "symfony/property-info": "^5.4|^6.0",
-                "symfony/translation": "^5.4|^6.0",
-                "symfony/yaml": "^5.4|^6.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Validator\\": ""
-                },
-                "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": "Provides tools to validate values",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/validator/tree/v6.3.1"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2023-06-21T12:08:28+00:00"
         }
     ],
@@ -1207,4 +177,4 @@
     "platform": [],
     "platform-dev": [],
-    "plugin-api-version": "2.3.0"
+    "plugin-api-version": "2.2.0"
 }
Index: /lib/vendor/autoload.php
===================================================================
--- /lib/vendor/autoload.php	(revision 8374)
+++ /lib/vendor/autoload.php	(revision 8375)
@@ -3,22 +3,4 @@
 // autoload.php @generated by Composer
 
-if (PHP_VERSION_ID < 50600) {
-    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';
 
Index: /lib/vendor/composer/ClassLoader.php
===================================================================
--- /lib/vendor/composer/ClassLoader.php	(revision 8374)
+++ /lib/vendor/composer/ClassLoader.php	(revision 8375)
@@ -43,21 +43,21 @@
 class ClassLoader
 {
-    /** @var \Closure(string):void */
-    private static $includeFile;
-
-    /** @var string|null */
+    /** @var ?string */
     private $vendorDir;
 
     // PSR-4
     /**
-     * @var array<string, array<string, int>>
+     * @var array[]
+     * @psalm-var array<string, array<string, int>>
      */
     private $prefixLengthsPsr4 = array();
     /**
-     * @var array<string, list<string>>
+     * @var array[]
+     * @psalm-var array<string, array<int, string>>
      */
     private $prefixDirsPsr4 = array();
     /**
-     * @var list<string>
+     * @var array[]
+     * @psalm-var array<string, string>
      */
     private $fallbackDirsPsr4 = array();
@@ -65,13 +65,11 @@
     // PSR-0
     /**
-     * List of PSR-0 prefixes
-     *
-     * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
-     *
-     * @var array<string, array<string, list<string>>>
+     * @var array[]
+     * @psalm-var array<string, array<string, string[]>>
      */
     private $prefixesPsr0 = array();
     /**
-     * @var list<string>
+     * @var array[]
+     * @psalm-var array<string, string>
      */
     private $fallbackDirsPsr0 = array();
@@ -81,5 +79,6 @@
 
     /**
-     * @var array<string, string>
+     * @var string[]
+     * @psalm-var array<string, string>
      */
     private $classMap = array();
@@ -89,27 +88,27 @@
 
     /**
-     * @var array<string, bool>
+     * @var bool[]
+     * @psalm-var array<string, bool>
      */
     private $missingClasses = array();
 
-    /** @var string|null */
+    /** @var ?string */
     private $apcuPrefix;
 
     /**
-     * @var array<string, self>
+     * @var self[]
      */
     private static $registeredLoaders = array();
 
     /**
-     * @param string|null $vendorDir
+     * @param ?string $vendorDir
      */
     public function __construct($vendorDir = null)
     {
         $this->vendorDir = $vendorDir;
-        self::initializeIncludeClosure();
-    }
-
-    /**
-     * @return array<string, list<string>>
+    }
+
+    /**
+     * @return string[]
      */
     public function getPrefixes()
@@ -123,5 +122,6 @@
 
     /**
-     * @return array<string, list<string>>
+     * @return array[]
+     * @psalm-return array<string, array<int, string>>
      */
     public function getPrefixesPsr4()
@@ -131,5 +131,6 @@
 
     /**
-     * @return list<string>
+     * @return array[]
+     * @psalm-return array<string, string>
      */
     public function getFallbackDirs()
@@ -139,5 +140,6 @@
 
     /**
-     * @return list<string>
+     * @return array[]
+     * @psalm-return array<string, string>
      */
     public function getFallbackDirsPsr4()
@@ -147,5 +149,6 @@
 
     /**
-     * @return array<string, string> Array of classname => path
+     * @return string[] Array of classname => path
+     * @psalm-return array<string, string>
      */
     public function getClassMap()
@@ -155,5 +158,6 @@
 
     /**
-     * @param array<string, string> $classMap Class to filename map
+     * @param string[] $classMap Class to filename map
+     * @psalm-param array<string, string> $classMap
      *
      * @return void
@@ -172,7 +176,7 @@
      * appending or prepending to the ones previously set for this prefix.
      *
-     * @param string              $prefix  The prefix
-     * @param list<string>|string $paths   The PSR-0 root directories
-     * @param bool                $prepend Whether to prepend the directories
+     * @param string          $prefix  The prefix
+     * @param string[]|string $paths   The PSR-0 root directories
+     * @param bool            $prepend Whether to prepend the directories
      *
      * @return void
@@ -180,9 +184,8 @@
     public function add($prefix, $paths, $prepend = false)
     {
-        $paths = (array) $paths;
         if (!$prefix) {
             if ($prepend) {
                 $this->fallbackDirsPsr0 = array_merge(
-                    $paths,
+                    (array) $paths,
                     $this->fallbackDirsPsr0
                 );
@@ -190,5 +193,5 @@
                 $this->fallbackDirsPsr0 = array_merge(
                     $this->fallbackDirsPsr0,
-                    $paths
+                    (array) $paths
                 );
             }
@@ -199,5 +202,5 @@
         $first = $prefix[0];
         if (!isset($this->prefixesPsr0[$first][$prefix])) {
-            $this->prefixesPsr0[$first][$prefix] = $paths;
+            $this->prefixesPsr0[$first][$prefix] = (array) $paths;
 
             return;
@@ -205,5 +208,5 @@
         if ($prepend) {
             $this->prefixesPsr0[$first][$prefix] = array_merge(
-                $paths,
+                (array) $paths,
                 $this->prefixesPsr0[$first][$prefix]
             );
@@ -211,5 +214,5 @@
             $this->prefixesPsr0[$first][$prefix] = array_merge(
                 $this->prefixesPsr0[$first][$prefix],
-                $paths
+                (array) $paths
             );
         }
@@ -220,7 +223,7 @@
      * appending or prepending to the ones previously set for this namespace.
      *
-     * @param string              $prefix  The prefix/namespace, with trailing '\\'
-     * @param list<string>|string $paths   The PSR-4 base directories
-     * @param bool                $prepend Whether to prepend the directories
+     * @param string          $prefix  The prefix/namespace, with trailing '\\'
+     * @param string[]|string $paths   The PSR-4 base directories
+     * @param bool            $prepend Whether to prepend the directories
      *
      * @throws \InvalidArgumentException
@@ -230,10 +233,9 @@
     public function addPsr4($prefix, $paths, $prepend = false)
     {
-        $paths = (array) $paths;
         if (!$prefix) {
             // Register directories for the root namespace.
             if ($prepend) {
                 $this->fallbackDirsPsr4 = array_merge(
-                    $paths,
+                    (array) $paths,
                     $this->fallbackDirsPsr4
                 );
@@ -241,5 +243,5 @@
                 $this->fallbackDirsPsr4 = array_merge(
                     $this->fallbackDirsPsr4,
-                    $paths
+                    (array) $paths
                 );
             }
@@ -251,9 +253,9 @@
             }
             $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
-            $this->prefixDirsPsr4[$prefix] = $paths;
+            $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
             $this->prefixDirsPsr4[$prefix] = array_merge(
-                $paths,
+                (array) $paths,
                 $this->prefixDirsPsr4[$prefix]
             );
@@ -262,5 +264,5 @@
             $this->prefixDirsPsr4[$prefix] = array_merge(
                 $this->prefixDirsPsr4[$prefix],
-                $paths
+                (array) $paths
             );
         }
@@ -271,6 +273,6 @@
      * replacing any others previously set for this prefix.
      *
-     * @param string              $prefix The prefix
-     * @param list<string>|string $paths  The PSR-0 base directories
+     * @param string          $prefix The prefix
+     * @param string[]|string $paths  The PSR-0 base directories
      *
      * @return void
@@ -289,6 +291,6 @@
      * replacing any others previously set for this namespace.
      *
-     * @param string              $prefix The prefix/namespace, with trailing '\\'
-     * @param list<string>|string $paths  The PSR-4 base directories
+     * @param string          $prefix The prefix/namespace, with trailing '\\'
+     * @param string[]|string $paths  The PSR-4 base directories
      *
      * @throws \InvalidArgumentException
@@ -424,6 +426,5 @@
     {
         if ($file = $this->findFile($class)) {
-            $includeFile = self::$includeFile;
-            $includeFile($file);
+            includeFile($file);
 
             return true;
@@ -476,7 +477,7 @@
 
     /**
-     * Returns the currently registered loaders keyed by their corresponding vendor directories.
-     *
-     * @return array<string, self>
+     * Returns the currently registered loaders indexed by their corresponding vendor directories.
+     *
+     * @return self[]
      */
     public static function getRegisteredLoaders()
@@ -555,25 +556,17 @@
         return false;
     }
-
-    /**
-     * @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);
-    }
 }
+
+/**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ *
+ * @param  string $file
+ * @return void
+ * @private
+ */
+function includeFile($file)
+{
+    include $file;
+}
Index: /lib/vendor/composer/InstalledVersions.php
===================================================================
--- /lib/vendor/composer/InstalledVersions.php	(revision 8374)
+++ /lib/vendor/composer/InstalledVersions.php	(revision 8375)
@@ -22,6 +22,4 @@
  *
  * To require its presence, you can require `composer-runtime-api ^2.0`
- *
- * @final
  */
 class InstalledVersions
@@ -29,5 +27,5 @@
     /**
      * @var mixed[]|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
+     * @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
      */
     private static $installed;
@@ -40,5 +38,5 @@
     /**
      * @var array[]
-     * @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[]}>}>
+     * @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}>}>
      */
     private static $installedByVendor = array();
@@ -99,5 +97,5 @@
         foreach (self::getInstalled() as $installed) {
             if (isset($installed['versions'][$packageName])) {
-                return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
+                return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
             }
         }
@@ -120,5 +118,5 @@
     public static function satisfies(VersionParser $parser, $packageName, $constraint)
     {
-        $constraint = $parser->parseConstraints((string) $constraint);
+        $constraint = $parser->parseConstraints($constraint);
         $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
 
@@ -244,5 +242,5 @@
     /**
      * @return array
-     * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
+     * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
      */
     public static function getRootPackage()
@@ -258,5 +256,5 @@
      * @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, 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[]}>}
+     * @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}>}
      */
     public static function getRawData()
@@ -281,5 +279,5 @@
      *
      * @return array[]
-     * @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[]}>}>
+     * @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}>}>
      */
     public static function getAllRawData()
@@ -304,5 +302,5 @@
      * @return void
      *
-     * @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
+     * @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
      */
     public static function reload($data)
@@ -314,5 +312,5 @@
     /**
      * @return array[]
-     * @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[]}>}>
+     * @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}>}>
      */
     private static function getInstalled()
@@ -329,7 +327,5 @@
                     $installed[] = self::$installedByVendor[$vendorDir];
                 } elseif (is_file($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;
+                    $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
                     if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
                         self::$installed = $installed[count($installed) - 1];
@@ -343,15 +339,10 @@
             // 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') {
-                /** @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;
+                self::$installed = require __DIR__ . '/installed.php';
             } else {
                 self::$installed = array();
             }
         }
-
-        if (self::$installed !== array()) {
-            $installed[] = self::$installed;
-        }
+        $installed[] = self::$installed;
 
         return $installed;
Index: /lib/vendor/composer/LICENSE
===================================================================
--- /lib/vendor/composer/LICENSE	(revision 8374)
+++ /lib/vendor/composer/LICENSE	(revision 8375)
@@ -1,3 +1,2 @@
-
 Copyright (c) Nils Adermann, Jordi Boggiano
 
@@ -19,3 +18,2 @@
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
-
Index: /lib/vendor/composer/autoload_classmap.php
===================================================================
--- /lib/vendor/composer/autoload_classmap.php	(revision 8374)
+++ /lib/vendor/composer/autoload_classmap.php	(revision 8375)
@@ -3,17 +3,8 @@
 // autoload_classmap.php @generated by Composer
 
-$vendorDir = dirname(__DIR__);
+$vendorDir = dirname(dirname(__FILE__));
 $baseDir = dirname($vendorDir);
 
 return array(
-    'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
-    'Collator' => $vendorDir . '/symfony/polyfill-intl-icu/Resources/stubs/Collator.php',
     'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
-    'IntlDateFormatter' => $vendorDir . '/symfony/polyfill-intl-icu/Resources/stubs/IntlDateFormatter.php',
-    'Locale' => $vendorDir . '/symfony/polyfill-intl-icu/Resources/stubs/Locale.php',
-    'NumberFormatter' => $vendorDir . '/symfony/polyfill-intl-icu/Resources/stubs/NumberFormatter.php',
-    'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
-    'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
-    'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
-    'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
 );
Index: /lib/vendor/composer/autoload_namespaces.php
===================================================================
--- /lib/vendor/composer/autoload_namespaces.php	(revision 8374)
+++ /lib/vendor/composer/autoload_namespaces.php	(revision 8375)
@@ -3,5 +3,5 @@
 // autoload_namespaces.php @generated by Composer
 
-$vendorDir = dirname(__DIR__);
+$vendorDir = dirname(dirname(__FILE__));
 $baseDir = dirname($vendorDir);
 
Index: /lib/vendor/composer/autoload_psr4.php
===================================================================
--- /lib/vendor/composer/autoload_psr4.php	(revision 8374)
+++ /lib/vendor/composer/autoload_psr4.php	(revision 8375)
@@ -3,24 +3,10 @@
 // autoload_psr4.php @generated by Composer
 
-$vendorDir = dirname(__DIR__);
+$vendorDir = dirname(dirname(__FILE__));
 $baseDir = dirname($vendorDir);
 
 return array(
-    'kmukku\\phpIso11649\\' => array($vendorDir . '/kmukku/php-iso11649/src'),
-    'Symfony\\Polyfill\\Php83\\' => array($vendorDir . '/symfony/polyfill-php83'),
-    'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
-    'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
-    'Symfony\\Polyfill\\Intl\\Icu\\' => array($vendorDir . '/symfony/polyfill-intl-icu'),
-    'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
-    'Symfony\\Contracts\\Translation\\' => array($vendorDir . '/symfony/translation-contracts'),
-    'Symfony\\Component\\Validator\\' => array($vendorDir . '/symfony/validator'),
-    'Symfony\\Component\\Intl\\' => array($vendorDir . '/symfony/intl'),
-    'Sprain\\Tests\\SwissQrBill\\' => array($vendorDir . '/sprain/swiss-qr-bill/tests'),
-    'Sprain\\SwissQrBill\\' => array($vendorDir . '/sprain/swiss-qr-bill/src'),
     'MatthiasMullie\\PathConverter\\' => array($vendorDir . '/matthiasmullie/path-converter/src'),
     'MatthiasMullie\\Minify\\' => array($vendorDir . '/matthiasmullie/minify/src'),
     'Leafo\\ScssPhp\\' => array($vendorDir . '/leafo/scssphp/src'),
-    'Endroid\\QrCode\\' => array($vendorDir . '/endroid/qr-code/src'),
-    'DASPRiD\\Enum\\' => array($vendorDir . '/dasprid/enum/src'),
-    'BaconQrCode\\' => array($vendorDir . '/bacon/bacon-qr-code/src'),
 );
Index: /lib/vendor/composer/autoload_real.php
===================================================================
--- /lib/vendor/composer/autoload_real.php	(revision 8374)
+++ /lib/vendor/composer/autoload_real.php	(revision 8375)
@@ -26,23 +26,30 @@
 
         spl_autoload_register(array('ComposerAutoloaderInita3a889d9db8dedf25341ebba996e4f13', 'loadClassLoader'), true, true);
-        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
+        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
         spl_autoload_unregister(array('ComposerAutoloaderInita3a889d9db8dedf25341ebba996e4f13', 'loadClassLoader'));
 
-        require __DIR__ . '/autoload_static.php';
-        call_user_func(\Composer\Autoload\ComposerStaticInita3a889d9db8dedf25341ebba996e4f13::getInitializer($loader));
+        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
+        if ($useStaticLoader) {
+            require __DIR__ . '/autoload_static.php';
+
+            call_user_func(\Composer\Autoload\ComposerStaticInita3a889d9db8dedf25341ebba996e4f13::getInitializer($loader));
+        } else {
+            $map = require __DIR__ . '/autoload_namespaces.php';
+            foreach ($map as $namespace => $path) {
+                $loader->set($namespace, $path);
+            }
+
+            $map = require __DIR__ . '/autoload_psr4.php';
+            foreach ($map as $namespace => $path) {
+                $loader->setPsr4($namespace, $path);
+            }
+
+            $classMap = require __DIR__ . '/autoload_classmap.php';
+            if ($classMap) {
+                $loader->addClassMap($classMap);
+            }
+        }
 
         $loader->register(true);
-
-        $filesToLoad = \Composer\Autoload\ComposerStaticInita3a889d9db8dedf25341ebba996e4f13::$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;
Index: /lib/vendor/composer/autoload_static.php
===================================================================
--- /lib/vendor/composer/autoload_static.php	(revision 8374)
+++ /lib/vendor/composer/autoload_static.php	(revision 8375)
@@ -7,31 +7,5 @@
 class ComposerStaticInita3a889d9db8dedf25341ebba996e4f13
 {
-    public static $files = array (
-        'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
-        '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
-        '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
-        '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
-        '662a729f963d39afe703c9d9b7ab4a8c' => __DIR__ . '/..' . '/symfony/polyfill-php83/bootstrap.php',
-        '6a47392539ca2329373e0d33e1dba053' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/bootstrap.php',
-    );
-
     public static $prefixLengthsPsr4 = array (
-        'k' => 
-        array (
-            'kmukku\\phpIso11649\\' => 19,
-        ),
-        'S' => 
-        array (
-            'Symfony\\Polyfill\\Php83\\' => 23,
-            'Symfony\\Polyfill\\Php80\\' => 23,
-            'Symfony\\Polyfill\\Mbstring\\' => 26,
-            'Symfony\\Polyfill\\Intl\\Icu\\' => 26,
-            'Symfony\\Polyfill\\Ctype\\' => 23,
-            'Symfony\\Contracts\\Translation\\' => 30,
-            'Symfony\\Component\\Validator\\' => 28,
-            'Symfony\\Component\\Intl\\' => 23,
-            'Sprain\\Tests\\SwissQrBill\\' => 25,
-            'Sprain\\SwissQrBill\\' => 19,
-        ),
         'M' => 
         array (
@@ -43,63 +17,7 @@
             'Leafo\\ScssPhp\\' => 14,
         ),
-        'E' => 
-        array (
-            'Endroid\\QrCode\\' => 15,
-        ),
-        'D' => 
-        array (
-            'DASPRiD\\Enum\\' => 13,
-        ),
-        'B' => 
-        array (
-            'BaconQrCode\\' => 12,
-        ),
     );
 
     public static $prefixDirsPsr4 = array (
-        'kmukku\\phpIso11649\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/kmukku/php-iso11649/src',
-        ),
-        'Symfony\\Polyfill\\Php83\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-php83',
-        ),
-        'Symfony\\Polyfill\\Php80\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
-        ),
-        'Symfony\\Polyfill\\Mbstring\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
-        ),
-        'Symfony\\Polyfill\\Intl\\Icu\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-intl-icu',
-        ),
-        'Symfony\\Polyfill\\Ctype\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
-        ),
-        'Symfony\\Contracts\\Translation\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/translation-contracts',
-        ),
-        'Symfony\\Component\\Validator\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/validator',
-        ),
-        'Symfony\\Component\\Intl\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/intl',
-        ),
-        'Sprain\\Tests\\SwissQrBill\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/sprain/swiss-qr-bill/tests',
-        ),
-        'Sprain\\SwissQrBill\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/sprain/swiss-qr-bill/src',
-        ),
         'MatthiasMullie\\PathConverter\\' => 
         array (
@@ -114,29 +32,8 @@
             0 => __DIR__ . '/..' . '/leafo/scssphp/src',
         ),
-        'Endroid\\QrCode\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/endroid/qr-code/src',
-        ),
-        'DASPRiD\\Enum\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/dasprid/enum/src',
-        ),
-        'BaconQrCode\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/bacon/bacon-qr-code/src',
-        ),
     );
 
     public static $classMap = array (
-        'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
-        'Collator' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Resources/stubs/Collator.php',
         'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
-        'IntlDateFormatter' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Resources/stubs/IntlDateFormatter.php',
-        'Locale' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Resources/stubs/Locale.php',
-        'NumberFormatter' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Resources/stubs/NumberFormatter.php',
-        'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
-        'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
-        'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
-        'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
     );
 
Index: /lib/vendor/composer/installed.json
===================================================================
--- /lib/vendor/composer/installed.json	(revision 8374)
+++ /lib/vendor/composer/installed.json	(revision 8375)
@@ -1,244 +1,4 @@
 {
     "packages": [
-        {
-            "name": "bacon/bacon-qr-code",
-            "version": "2.0.8",
-            "version_normalized": "2.0.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Bacon/BaconQrCode.git",
-                "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/8674e51bb65af933a5ffaf1c308a660387c35c22",
-                "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22",
-                "shasum": ""
-            },
-            "require": {
-                "dasprid/enum": "^1.0.3",
-                "ext-iconv": "*",
-                "php": "^7.1 || ^8.0"
-            },
-            "require-dev": {
-                "phly/keep-a-changelog": "^2.1",
-                "phpunit/phpunit": "^7 | ^8 | ^9",
-                "spatie/phpunit-snapshot-assertions": "^4.2.9",
-                "squizlabs/php_codesniffer": "^3.4"
-            },
-            "suggest": {
-                "ext-imagick": "to generate QR code images"
-            },
-            "time": "2022-12-07T17:46:57+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "BaconQrCode\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-2-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Ben Scholzen 'DASPRiD'",
-                    "email": "mail@dasprids.de",
-                    "homepage": "https://dasprids.de/",
-                    "role": "Developer"
-                }
-            ],
-            "description": "BaconQrCode is a QR code generator for PHP.",
-            "homepage": "https://github.com/Bacon/BaconQrCode",
-            "support": {
-                "issues": "https://github.com/Bacon/BaconQrCode/issues",
-                "source": "https://github.com/Bacon/BaconQrCode/tree/2.0.8"
-            },
-            "install-path": "../bacon/bacon-qr-code"
-        },
-        {
-            "name": "dasprid/enum",
-            "version": "1.0.4",
-            "version_normalized": "1.0.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/DASPRiD/Enum.git",
-                "reference": "8e6b6ea76eabbf19ea2bf5b67b98e1860474012f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/8e6b6ea76eabbf19ea2bf5b67b98e1860474012f",
-                "reference": "8e6b6ea76eabbf19ea2bf5b67b98e1860474012f",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1 <9.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^7 | ^8 | ^9",
-                "squizlabs/php_codesniffer": "*"
-            },
-            "time": "2023-03-01T18:44:03+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "DASPRiD\\Enum\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-2-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Ben Scholzen 'DASPRiD'",
-                    "email": "mail@dasprids.de",
-                    "homepage": "https://dasprids.de/",
-                    "role": "Developer"
-                }
-            ],
-            "description": "PHP 7.1 enum implementation",
-            "keywords": [
-                "enum",
-                "map"
-            ],
-            "support": {
-                "issues": "https://github.com/DASPRiD/Enum/issues",
-                "source": "https://github.com/DASPRiD/Enum/tree/1.0.4"
-            },
-            "install-path": "../dasprid/enum"
-        },
-        {
-            "name": "endroid/qr-code",
-            "version": "4.8.2",
-            "version_normalized": "4.8.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/endroid/qr-code.git",
-                "reference": "2436c2333a3931c95e2b96eb82f16f53143d6bba"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/endroid/qr-code/zipball/2436c2333a3931c95e2b96eb82f16f53143d6bba",
-                "reference": "2436c2333a3931c95e2b96eb82f16f53143d6bba",
-                "shasum": ""
-            },
-            "require": {
-                "bacon/bacon-qr-code": "^2.0.5",
-                "php": "^8.0"
-            },
-            "conflict": {
-                "khanamiryan/qrcode-detector-decoder": "^1.0.6"
-            },
-            "require-dev": {
-                "endroid/quality": "dev-master",
-                "ext-gd": "*",
-                "khanamiryan/qrcode-detector-decoder": "^1.0.4||^2.0.2",
-                "setasign/fpdf": "^1.8.2"
-            },
-            "suggest": {
-                "ext-gd": "Enables you to write PNG images",
-                "khanamiryan/qrcode-detector-decoder": "Enables you to use the image validator",
-                "roave/security-advisories": "Makes sure package versions with known security issues are not installed",
-                "setasign/fpdf": "Enables you to use the PDF writer"
-            },
-            "time": "2023-03-30T18:46:02+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.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"
-                }
-            ],
-            "description": "Endroid QR Code",
-            "homepage": "https://github.com/endroid/qr-code",
-            "keywords": [
-                "code",
-                "endroid",
-                "php",
-                "qr",
-                "qrcode"
-            ],
-            "support": {
-                "issues": "https://github.com/endroid/qr-code/issues",
-                "source": "https://github.com/endroid/qr-code/tree/4.8.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/endroid",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../endroid/qr-code"
-        },
-        {
-            "name": "kmukku/php-iso11649",
-            "version": "1.6",
-            "version_normalized": "1.6.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/kmukku/php-iso11649.git",
-                "reference": "723863147a8ff1c292c337e9459402f4a35c3b1e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/kmukku/php-iso11649/zipball/723863147a8ff1c292c337e9459402f4a35c3b1e",
-                "reference": "723863147a8ff1c292c337e9459402f4a35c3b1e",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.4.0"
-            },
-            "time": "2020-04-21T13:01:17+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "kmukku\\phpIso11649\\": [
-                        "src/"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Keijo Mukku",
-                    "email": "keijo.mukku@gmail.com"
-                }
-            ],
-            "description": "ISO 11649 creditor reference library for php",
-            "homepage": "https://github.com/kmukku/php-iso11649",
-            "keywords": [
-                "Banking",
-                "ISO 11649",
-                "RF creditor reference",
-                "finance"
-            ],
-            "support": {
-                "issues": "https://github.com/kmukku/php-iso11649/issues",
-                "source": "https://github.com/kmukku/php-iso11649/tree/master"
-            },
-            "install-path": "../kmukku/php-iso11649"
-        },
         {
             "name": "leafo/scssphp",
@@ -410,836 +170,4 @@
             ],
             "install-path": "../matthiasmullie/path-converter"
-        },
-        {
-            "name": "sprain/swiss-qr-bill",
-            "version": "v4.8.1",
-            "version_normalized": "4.8.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sprain/php-swiss-qr-bill.git",
-                "reference": "75b45a0d5e96307d758f663f94975aafec426391"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sprain/php-swiss-qr-bill/zipball/75b45a0d5e96307d758f663f94975aafec426391",
-                "reference": "75b45a0d5e96307d758f663f94975aafec426391",
-                "shasum": ""
-            },
-            "require": {
-                "endroid/qr-code": "^4.4.4",
-                "ext-dom": "*",
-                "kmukku/php-iso11649": "^1.5",
-                "php": "^8.0.0|^8.1.0|^8.2.0",
-                "symfony/intl": "^4.4|^5.0|^6.0",
-                "symfony/polyfill-intl-icu": "^1.23",
-                "symfony/validator": "^4.4|^5.0|^6.0"
-            },
-            "conflict": {
-                "khanamiryan/qrcode-detector-decoder": "1.0.6"
-            },
-            "require-dev": {
-                "dg/bypass-finals": "^1.3",
-                "dms/phpunit-arraysubset-asserts": "^0.2",
-                "fpdf/fpdf": "^1.85",
-                "friendsofphp/php-cs-fixer": "^3.4",
-                "khanamiryan/qrcode-detector-decoder": "^1.0.3",
-                "phpstan/phpstan": "^1.2",
-                "phpunit/phpunit": "^9.0",
-                "setasign/fpdf": "^1.8.2",
-                "setasign/fpdi": "^2.3.5",
-                "tecnickcom/tcpdf": "^6.3.2"
-            },
-            "suggest": {
-                "fpdf/fpdf": "Needed to create pdfs with FpdfOutput",
-                "setasign/fpdf": "Needed to create pdfs with Fpdi",
-                "setasign/fpdi": "Needed to create pdfs with Fpdi",
-                "tecnickcom/tcpdf": "Needed to create pdfs with TcPdfOutput"
-            },
-            "time": "2023-02-21T08:46:49+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Sprain\\SwissQrBill\\": "src",
-                    "Sprain\\Tests\\SwissQrBill\\": "tests"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A PHP library to create Swiss QR bills",
-            "support": {
-                "issues": "https://github.com/sprain/php-swiss-qr-bill/issues",
-                "source": "https://github.com/sprain/php-swiss-qr-bill/tree/v4.8.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sprain",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sprain/swiss-qr-bill"
-        },
-        {
-            "name": "symfony/deprecation-contracts",
-            "version": "v3.3.0",
-            "version_normalized": "3.3.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/deprecation-contracts.git",
-                "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
-                "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "time": "2023-05-23T14:45:45+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.4-dev"
-                },
-                "thanks": {
-                    "name": "symfony/contracts",
-                    "url": "https://github.com/symfony/contracts"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "function.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "A generic function and convention to trigger deprecation notices",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/deprecation-contracts"
-        },
-        {
-            "name": "symfony/intl",
-            "version": "v6.3.1",
-            "version_normalized": "6.3.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/intl.git",
-                "reference": "fdf4aff85fff2cc681cc45936b6b2a52731acc23"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/intl/zipball/fdf4aff85fff2cc681cc45936b6b2a52731acc23",
-                "reference": "fdf4aff85fff2cc681cc45936b6b2a52731acc23",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "symfony/filesystem": "^5.4|^6.0",
-                "symfony/finder": "^5.4|^6.0"
-            },
-            "time": "2023-06-21T12:08:28+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Intl\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@gmail.com"
-                },
-                {
-                    "name": "Eriksen Costa",
-                    "email": "eriksen.costa@infranology.com.br"
-                },
-                {
-                    "name": "Igor Wiedler",
-                    "email": "igor@wiedler.ch"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Provides access to the localization data of the ICU library",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "i18n",
-                "icu",
-                "internationalization",
-                "intl",
-                "l10n",
-                "localization"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/intl/tree/v6.3.1"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/intl"
-        },
-        {
-            "name": "symfony/polyfill-ctype",
-            "version": "v1.27.0",
-            "version_normalized": "1.27.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
-                "reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "provide": {
-                "ext-ctype": "*"
-            },
-            "suggest": {
-                "ext-ctype": "For best performance"
-            },
-            "time": "2022-11-03T14:55:06+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Ctype\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Gert de Pagter",
-                    "email": "BackEndTea@gmail.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for ctype functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "ctype",
-                "polyfill",
-                "portable"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-ctype"
-        },
-        {
-            "name": "symfony/polyfill-intl-icu",
-            "version": "v1.27.0",
-            "version_normalized": "1.27.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-icu.git",
-                "reference": "a3d9148e2c363588e05abbdd4ee4f971f0a5330c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/a3d9148e2c363588e05abbdd4ee4f971f0a5330c",
-                "reference": "a3d9148e2c363588e05abbdd4ee4f971f0a5330c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-intl": "For best performance and support of other locales than \"en\""
-            },
-            "time": "2022-11-03T14:55:06+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Icu\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ],
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's ICU-related data and classes",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "icu",
-                "intl",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-intl-icu"
-        },
-        {
-            "name": "symfony/polyfill-mbstring",
-            "version": "v1.27.0",
-            "version_normalized": "1.27.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
-                "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "provide": {
-                "ext-mbstring": "*"
-            },
-            "suggest": {
-                "ext-mbstring": "For best performance"
-            },
-            "time": "2022-11-03T14:55:06+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Mbstring\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for the Mbstring extension",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "mbstring",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-mbstring"
-        },
-        {
-            "name": "symfony/polyfill-php80",
-            "version": "v1.27.0",
-            "version_normalized": "1.27.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php80.git",
-                "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
-                "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "time": "2022-11-03T14:55:06+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php80\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Ion Bazan",
-                    "email": "ion.bazan@gmail.com"
-                },
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-php80"
-        },
-        {
-            "name": "symfony/polyfill-php83",
-            "version": "v1.27.0",
-            "version_normalized": "1.27.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php83.git",
-                "reference": "508c652ba3ccf69f8c97f251534f229791b52a57"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/508c652ba3ccf69f8c97f251534f229791b52a57",
-                "reference": "508c652ba3ccf69f8c97f251534f229791b52a57",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1",
-                "symfony/polyfill-php80": "^1.14"
-            },
-            "time": "2022-11-03T14:55:06+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php83\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-php83/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-php83"
-        },
-        {
-            "name": "symfony/translation-contracts",
-            "version": "v3.3.0",
-            "version_normalized": "3.3.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/translation-contracts.git",
-                "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86",
-                "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "time": "2023-05-30T17:17:10+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.4-dev"
-                },
-                "thanks": {
-                    "name": "symfony/contracts",
-                    "url": "https://github.com/symfony/contracts"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Contracts\\Translation\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Test/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Generic abstractions related to translation",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "abstractions",
-                "contracts",
-                "decoupling",
-                "interfaces",
-                "interoperability",
-                "standards"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/translation-contracts"
-        },
-        {
-            "name": "symfony/validator",
-            "version": "v6.3.1",
-            "version_normalized": "6.3.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/validator.git",
-                "reference": "1b71f43c62ee867ab08195ba6039a1bc3e6654dc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/validator/zipball/1b71f43c62ee867ab08195ba6039a1bc3e6654dc",
-                "reference": "1b71f43c62ee867ab08195ba6039a1bc3e6654dc",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1",
-                "symfony/deprecation-contracts": "^2.5|^3",
-                "symfony/polyfill-ctype": "~1.8",
-                "symfony/polyfill-mbstring": "~1.0",
-                "symfony/polyfill-php83": "^1.27",
-                "symfony/translation-contracts": "^2.5|^3"
-            },
-            "conflict": {
-                "doctrine/annotations": "<1.13",
-                "doctrine/lexer": "<1.1",
-                "symfony/dependency-injection": "<5.4",
-                "symfony/expression-language": "<5.4",
-                "symfony/http-kernel": "<5.4",
-                "symfony/intl": "<5.4",
-                "symfony/property-info": "<5.4",
-                "symfony/translation": "<5.4",
-                "symfony/yaml": "<5.4"
-            },
-            "require-dev": {
-                "doctrine/annotations": "^1.13|^2",
-                "egulias/email-validator": "^2.1.10|^3|^4",
-                "symfony/cache": "^5.4|^6.0",
-                "symfony/config": "^5.4|^6.0",
-                "symfony/console": "^5.4|^6.0",
-                "symfony/dependency-injection": "^5.4|^6.0",
-                "symfony/expression-language": "^5.4|^6.0",
-                "symfony/finder": "^5.4|^6.0",
-                "symfony/http-client": "^5.4|^6.0",
-                "symfony/http-foundation": "^5.4|^6.0",
-                "symfony/http-kernel": "^5.4|^6.0",
-                "symfony/intl": "^5.4|^6.0",
-                "symfony/mime": "^5.4|^6.0",
-                "symfony/property-access": "^5.4|^6.0",
-                "symfony/property-info": "^5.4|^6.0",
-                "symfony/translation": "^5.4|^6.0",
-                "symfony/yaml": "^5.4|^6.0"
-            },
-            "time": "2023-06-21T12:08:28+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Validator\\": ""
-                },
-                "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": "Provides tools to validate values",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/validator/tree/v6.3.1"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/validator"
         }
     ],
Index: /lib/vendor/composer/installed.php
===================================================================
--- /lib/vendor/composer/installed.php	(revision 8374)
+++ /lib/vendor/composer/installed.php	(revision 8375)
@@ -1,11 +1,11 @@
 <?php return array(
     'root' => array(
-        'name' => '__root__',
         'pretty_version' => '1.0.0+no-version-set',
         'version' => '1.0.0.0',
-        'reference' => NULL,
         'type' => 'library',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
+        'reference' => NULL,
+        'name' => '__root__',
         'dev' => true,
     ),
@@ -14,44 +14,8 @@
             'pretty_version' => '1.0.0+no-version-set',
             'version' => '1.0.0.0',
-            'reference' => NULL,
             'type' => 'library',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'bacon/bacon-qr-code' => array(
-            'pretty_version' => '2.0.8',
-            'version' => '2.0.8.0',
-            'reference' => '8674e51bb65af933a5ffaf1c308a660387c35c22',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../bacon/bacon-qr-code',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'dasprid/enum' => array(
-            'pretty_version' => '1.0.4',
-            'version' => '1.0.4.0',
-            'reference' => '8e6b6ea76eabbf19ea2bf5b67b98e1860474012f',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../dasprid/enum',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'endroid/qr-code' => array(
-            'pretty_version' => '4.8.2',
-            'version' => '4.8.2.0',
-            'reference' => '2436c2333a3931c95e2b96eb82f16f53143d6bba',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../endroid/qr-code',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'kmukku/php-iso11649' => array(
-            'pretty_version' => '1.6',
-            'version' => '1.6.0.0',
-            'reference' => '723863147a8ff1c292c337e9459402f4a35c3b1e',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../kmukku/php-iso11649',
-            'aliases' => array(),
+            'reference' => NULL,
             'dev_requirement' => false,
         ),
@@ -59,8 +23,8 @@
             'pretty_version' => 'v0.7.1',
             'version' => '0.7.1.0',
-            'reference' => '9eaf3a6db4d88ce2c265a89e3fc495fbec9bf7a6',
             'type' => 'library',
             'install_path' => __DIR__ . '/../leafo/scssphp',
             'aliases' => array(),
+            'reference' => '9eaf3a6db4d88ce2c265a89e3fc495fbec9bf7a6',
             'dev_requirement' => false,
         ),
@@ -68,8 +32,8 @@
             'pretty_version' => '1.3.60',
             'version' => '1.3.60.0',
-            'reference' => 'ab7fea80ce5ce6549baaf272bc8bd926a7e08f90',
             'type' => 'library',
             'install_path' => __DIR__ . '/../matthiasmullie/minify',
             'aliases' => array(),
+            'reference' => 'ab7fea80ce5ce6549baaf272bc8bd926a7e08f90',
             'dev_requirement' => false,
         ),
@@ -77,98 +41,8 @@
             'pretty_version' => '1.1.1',
             'version' => '1.1.1.0',
-            'reference' => '3082a6838be02b930239a97d38b5c9da4d693aca',
             'type' => 'library',
             'install_path' => __DIR__ . '/../matthiasmullie/path-converter',
             'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'sprain/swiss-qr-bill' => array(
-            'pretty_version' => 'v4.8.1',
-            'version' => '4.8.1.0',
-            'reference' => '75b45a0d5e96307d758f663f94975aafec426391',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../sprain/swiss-qr-bill',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'symfony/deprecation-contracts' => array(
-            'pretty_version' => 'v3.3.0',
-            'version' => '3.3.0.0',
-            'reference' => '7c3aff79d10325257a001fcf92d991f24fc967cf',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'symfony/intl' => array(
-            'pretty_version' => 'v6.3.1',
-            'version' => '6.3.1.0',
-            'reference' => 'fdf4aff85fff2cc681cc45936b6b2a52731acc23',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../symfony/intl',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'symfony/polyfill-ctype' => array(
-            'pretty_version' => 'v1.27.0',
-            'version' => '1.27.0.0',
-            'reference' => '5bbc823adecdae860bb64756d639ecfec17b050a',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'symfony/polyfill-intl-icu' => array(
-            'pretty_version' => 'v1.27.0',
-            'version' => '1.27.0.0',
-            'reference' => 'a3d9148e2c363588e05abbdd4ee4f971f0a5330c',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../symfony/polyfill-intl-icu',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'symfony/polyfill-mbstring' => array(
-            'pretty_version' => 'v1.27.0',
-            'version' => '1.27.0.0',
-            'reference' => '8ad114f6b39e2c98a8b0e3bd907732c207c2b534',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'symfony/polyfill-php80' => array(
-            'pretty_version' => 'v1.27.0',
-            'version' => '1.27.0.0',
-            'reference' => '7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../symfony/polyfill-php80',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'symfony/polyfill-php83' => array(
-            'pretty_version' => 'v1.27.0',
-            'version' => '1.27.0.0',
-            'reference' => '508c652ba3ccf69f8c97f251534f229791b52a57',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../symfony/polyfill-php83',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'symfony/translation-contracts' => array(
-            'pretty_version' => 'v3.3.0',
-            'version' => '3.3.0.0',
-            'reference' => '02c24deb352fb0d79db5486c0c79905a85e37e86',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../symfony/translation-contracts',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'symfony/validator' => array(
-            'pretty_version' => 'v6.3.1',
-            'version' => '6.3.1.0',
-            'reference' => '1b71f43c62ee867ab08195ba6039a1bc3e6654dc',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../symfony/validator',
-            'aliases' => array(),
+            'reference' => '3082a6838be02b930239a97d38b5c9da4d693aca',
             'dev_requirement' => false,
         ),
Index: /lib/vendor/composer/platform_check.php
===================================================================
--- /lib/vendor/composer/platform_check.php	(revision 8374)
+++ /lib/vendor/composer/platform_check.php	(revision 8375)
@@ -5,6 +5,6 @@
 $issues = array();
 
-if (!(PHP_VERSION_ID >= 80100)) {
-    $issues[] = 'Your Composer dependencies require a PHP version ">= 8.1.0". You are running ' . PHP_VERSION . '.';
+if (!(PHP_VERSION_ID >= 50400)) {
+    $issues[] = 'Your Composer dependencies require a PHP version ">= 5.4.0". You are running ' . PHP_VERSION . '.';
 }
 
Index: /lib/wpsg_basket.class.php
===================================================================
--- /lib/wpsg_basket.class.php	(revision 8374)
+++ /lib/wpsg_basket.class.php	(revision 8375)
@@ -567,5 +567,5 @@
 		public function sendOrderSaveMails($order_id, $arBasket, $bCustomerMail = true, $bAdminMail = true, $bDebug = false) {
 			
-			$oOrder = wpsg_order::getInstance($order_id);
+			$oOrder = wpsg_order::getInstance($order_id, true);
 			
 			$arAttach_Customer = [];
@@ -684,5 +684,13 @@
 
 						// generate the qr-bill
-						$this->shop->callMod('wpsg_mod_prepayment', 'genQRCode', array($order_id, $this->shop->view['wpsg_mod_prepayment']['subject'], $this->shop->view['basket']['sum']['preis_gesamt_brutto'], 10, PhpGirocode::OUTPUT_BASE64, $this->shop->get_option('wpsg_mod_prepayment_qrcode_country'), $this->shop->view['basket']));
+						$this->shop->callMod('wpsg_mod_prepayment', 'genQRCode', [
+							$order_id,
+							$this->shop->view['wpsg_mod_prepayment']['subject'],
+							$this->shop->view['basket']['sum']['preis_gesamt_brutto'],
+							10,
+							PhpGirocode::OUTPUT_BASE64,
+							$this->shop->get_option('wpsg_mod_prepayment_qrcode_country'),
+							$this->shop->view['basket']
+						]);
 					
 						$arAttachments[] = $this->shop->callMod('wpsg_mod_prepayment', 'getFilePath', array($order_id));
Index: /mods/mod_rechnungen/wpsg_invoice.php
===================================================================
--- /mods/mod_rechnungen/wpsg_invoice.php	(revision 8374)
+++ /mods/mod_rechnungen/wpsg_invoice.php	(revision 8375)
@@ -10,7 +10,5 @@
      
     namespace wpsg;
-	
-	use phpseclib\File\ASN1\Element;
-
+	 
     class wpsg_invoice extends \wpsg_model {
 		
Index: /mods/wpsg_mod_basic.class.php
===================================================================
--- /mods/wpsg_mod_basic.class.php	(revision 8374)
+++ /mods/wpsg_mod_basic.class.php	(revision 8375)
@@ -112,4 +112,5 @@
             5501 	=> 'wpsg_mod_printshop', // Druckerei,
             5502 	=> 'wpsg_mod_ticket',
+            5503 	=> 'wpsg_mod_paymentqr',
 			5600    => 'wpsg_mod_orderstates'
 		);
Index: /mods/wpsg_mod_prepayment.class.php
===================================================================
--- /mods/wpsg_mod_prepayment.class.php	(revision 8374)
+++ /mods/wpsg_mod_prepayment.class.php	(revision 8375)
@@ -1,5 +1,3 @@
 <?php
-
-	use Sprain\SwissQrBill as QrBill;		
 
 	/**
@@ -11,8 +9,4 @@
 		var $lizenz = 2;
 		var $id = 1;
-
-		const QRCODE_BOTH = '0';
-        const QRCODE_EPC = '1';
-        const QRCODE_SWISS = '2';
 		
 		/**
@@ -35,5 +29,4 @@
 			$this->shop->checkDefault('wpsg_mod_prepayment_bezeichnung', $this->name, false, true);
 			$this->shop->checkDefault('wpsg_mod_prepayment_aktiv', '1');
-			$this->shop->checkDefault('wpsg_mod_prepayment_qrcode', '1');
 			$this->shop->checkDefault('wpsg_mod_prepayment_hint', __('Zahlen Sie die Bestellung mittels Ãberweisung. Der Betreff wird ihnen in der BestellbestÃ€tigung mitgeteilt.', 'wpsg'), false, true);
 			$this->shop->checkDefault('wpsg_mod_prepayment_subject', 'O%order_id% - K%kunde_id%');
@@ -44,7 +37,5 @@
 			$this->shop->checkDefault('wpsg_mod_prepayment_bank', '%shopinfo_bankname%');
 			$this->shop->checkDefault('wpsg_mod_prepayment_iban', '%shopinfo_iban%');
-			$this->shop->checkDefault('wpsg_mod_prepayment_qriban', '%shopinfo_qriban%');
 			$this->shop->checkDefault('wpsg_mod_prepayment_swift', '%shopinfo_bic%');
-			$this->shop->checkDefault('wpsg_mod_prepayment_besr', '%shopinfo_besr%');
 			
 		} // public function install()
@@ -52,5 +43,5 @@
 		public function settings_edit()
 		{
-			 		
+			
 			$this->render(WPSG_PATH_VIEW.'/mods/mod_prepayment/settings_edit.phtml');
 			
@@ -62,7 +53,4 @@
 		    $this->shop->update_option('wpsg_mod_prepayment_bezeichnung', $_REQUEST['wpsg_mod_prepayment_bezeichnung'], false, false, WPSG_SANITIZE_TEXTFIELD);
 			$this->shop->update_option('wpsg_mod_prepayment_aktiv', $_REQUEST['wpsg_mod_prepayment_aktiv'], false, false, WPSG_SANITIZE_CHECKBOX);
-			$this->shop->update_option('wpsg_mod_prepayment_qrcode', $_REQUEST['wpsg_mod_prepayment_qrcode'], false, false, WPSG_SANITIZE_CHECKBOX);
-			$this->shop->update_option('wpsg_mod_prepayment_qrcode_country', $_REQUEST['wpsg_mod_prepayment_qrcode_country'], false, false, WPSG_SANITIZE_VALUES, [wpsg_mod_prepayment::QRCODE_BOTH, wpsg_mod_prepayment::QRCODE_EPC, wpsg_mod_prepayment::QRCODE_SWISS]);
-			$this->shop->update_option('wpsg_mod_prepayment_mailattachment', $_REQUEST['wpsg_mod_prepayment_mailattachment'], false, false, WPSG_SANITIZE_CHECKBOX);
 			$this->shop->update_option('wpsg_mod_prepayment_hint', $_REQUEST['wpsg_mod_prepayment_hint'], false, false, WPSG_SANITIZE_TEXTFIELD);
 			$this->shop->update_option('wpsg_mod_prepayment_gebuehr', $_REQUEST['wpsg_mod_prepayment_gebuehr'], false, false, WPSG_SANITIZE_FLOAT);
@@ -72,7 +60,5 @@
 			$this->shop->update_option('wpsg_mod_prepayment_bank', $_REQUEST['wpsg_mod_prepayment_bank'], false, false, WPSG_SANITIZE_TEXTFIELD);
 			$this->shop->update_option('wpsg_mod_prepayment_iban', $_REQUEST['wpsg_mod_prepayment_iban'], false, false, WPSG_SANITIZE_TEXTFIELD);
-			$this->shop->update_option('wpsg_mod_prepayment_qriban', $_REQUEST['wpsg_mod_prepayment_qriban'], false, false, WPSG_SANITIZE_TEXTFIELD);
 			$this->shop->update_option('wpsg_mod_prepayment_swift', $_REQUEST['wpsg_mod_prepayment_swift'], false, false, WPSG_SANITIZE_TEXTFIELD);
-			$this->shop->update_option('wpsg_mod_prepayment_besr', $_REQUEST['wpsg_mod_prepayment_besr'], false, false, WPSG_SANITIZE_TEXTFIELD);
 			$this->shop->update_option('wpsg_mod_prepayment_subject', $_REQUEST['wpsg_mod_prepayment_subject'], false, false, WPSG_SANITIZE_TEXTFIELD);
 			
@@ -82,6 +68,6 @@
 		} // public function settings_save()
 		
-		public function checkGeneralBackendError() 
-		{ 
+		public function checkGeneralBackendError()
+		{
 
 			if ($this->shop->get_option('wpsg_mod_prepayment_aktiv') === '1')
@@ -90,5 +76,5 @@
 				if (	!wpsg_isSizedString($this->shop->get_option('wpsg_mod_prepayment_bank')) ||
 						!wpsg_isSizedString($this->shop->get_option('wpsg_mod_prepayment_iban')) ||
-						!wpsg_isSizedString($this->shop->get_option('wpsg_mod_prepayment_swift')) || 
+						!wpsg_isSizedString($this->shop->get_option('wpsg_mod_prepayment_swift')) ||
 						!wpsg_isSizedString($this->shop->get_option('wpsg_mod_prepayment_kinhaber'))	)
 				{
@@ -107,5 +93,5 @@
 		} // public function checkGeneralBackendError()
 		
-		public function addPayment(&$arPayment) { 
+		public function addPayment(&$arPayment) {
  
 			if (!is_admin() && $this->shop->get_option('wpsg_mod_prepayment_aktiv') != '1') return;
@@ -120,9 +106,9 @@
 				'logo' => $this->shop->getRessourceURL('mods/mod_prepayment/gfx/logo_100x25.png')
 			);
-			 			
+			
 		} // public function addPayment(&$arShipping)
-		 
-		public function order_done(&$order_id, &$done_view) 
-		{ 
+		
+		public function order_done(&$order_id, &$done_view)
+		{
 
 			// Bestellungen mit 0 geben nix aus
@@ -137,9 +123,9 @@
 
 			}
-						
+			
 		} // public function order_done(&$order_id)
 		
-		public function mail_payment() 
-		{ 
+		public function mail_payment()
+		{
 
 			if ($this->shop->view['basket']['checkout']['payment'] != $this->id) return;
@@ -161,5 +147,5 @@
 			
 		} // public function mail_payment()
-				
+		
 		/**
 		 * Ersetzt die Platzhalter im Betreff
@@ -174,392 +160,53 @@
 			
 		} // private function get_subject($order_id)
-
-		public function getDownloadFile($order_id) {
-
-            $file_path = $this->getFilePath($order_id);
-
-            header('Content-Disposition: attachment; filename="'.$file_path.'"');
-
-            return $file_path;
-
-        } // public function getDownloadFile($order_id)
-
-        /**
-         * Startet den Download einer QR-Rechnung wird im Frontend wie im Backend verwendet
-         */
-        private function doDownload($order_id) {
-
-            $file = $this->getDownloadFile($order_id);
-
-            header("Cache-Control: no-cache, must-revalidate");
-            header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
-            header('Content-type: application/pdf');
-            header('Content-Disposition: inline');
-
-            die(file_get_contents($file));
-
-        } // private function doDownload($order_id)
-		
-		/**
-		 * Gibt einen Downloadlink fÃŒr die Rechnung fÃŒr die Verwendung im Frontend zurÃŒck
-		 */
-		public function getFrontendLink($order_id)
-		{
-			 
-			$hash = md5($this->shop->get_option('wpsg_salt').'wpsg'.$order_id.'wpsg'.$this->shop->get_option('wpsg_salt'));
-			
-			$url = $this->shop->getDoneURL($order_id);
-			$url .= ((strpos($url, '?') === false)?'?wpsg_action=wpsg_mod_prepayment_download':'&wpsg_action=wpsg_mod_prepayment_download');
-			$url .= '&hash='.$hash.'&order_id='.$order_id;
-			
-			return $url;
-			 
-		} // public function getFrontendLink($order_id)
-
-		/**
-		 * @throws \Exception
-		 */
-		public function getFilePath($order_id) {
-
-            $ym = date('Y/m');
-
-			if ($this->shop->isMultiBlog()) $path = WP_CONTENT_DIR.'/'.WPSG_MB_UPLOADS.'/wpsg/wpsg_qrrechnungen/'.$ym.'/';
-			else $path = WPSG_PATH_CONTENT.'uploads/wpsg/wpsg_qrrechnungen/'.$ym.'/';
-
-			$path .= $order_id.'.pdf';
-
-			\wpsg_ShopController::getShop()->protectDirectory(dirname($path));
-
-			return $path;
-			
-		} // public function getFilePath()
-
-		/**
-		 * QR-Rechnung PDF fÃŒr eMail erzeugen
-		 */
-		public function genQRBill(QrBill\QrBill $qrBill, $order_id) {
-
-			require_once WPSG_PATH_LIB.'FPDF_1.81/fpdf.php';
-			require_once WPSG_PATH_LIB.'FPDI_2.2.0/autoload.php';
-			require_once WPSG_PATH_LIB.'wpsg_fpdf.class.php';
-
-			if (!file_exists(WPSG_PATH_UPLOADS.'wpsg_qrrechnungen/')) mkdir(WPSG_PATH_UPLOADS.'wpsg_qrrechnungen/', 0755, true);
-
-			$fpdf = new wpsg_fpdf('P', 'mm', 'A4');
-			// if (ini_get('allow_url_fopen')) $fpdf = new wpsg_fpdf('P', 'mm', 'A4');
-			// else {
-
-			// 	$fpdf = new class('P', 'mm', 'A4') extends wpsg_fpdf {
-			// 		use \Fpdf\Traits\MemoryImageSupport\MemImageTrait;
-			// 	};
-
-			// }
-
-			$fpdf->AddPage();
-
-			$output = new QrBill\PaymentPart\Output\FpdfOutput\FpdfOutput($qrBill, 'en', $fpdf);
-			$output->setPrintable(false)->getPaymentPart();
-
-			$path = $this->getFilePath($order_id);
-			$fpdf->Output($path, 'F');
-
-		} // public function genQRBill($qrBill)
-
-		/**
-		 * Funktion zum Generieren des Base64-Strings aus dem Schweizer QR-Code
-		 */
-		private function generateBase64QrCode(QrBill\QrBill $qrBill) {
- 
-	 $tmpfname = tempnam("/tmp", "swissqrcode").'.png';
-	 $qrCode = $qrBill->getQrCode(QrBill\QrCode\QrCode::FILE_FORMAT_PNG);
-	 $qrCode->writeFile($tmpfname);
-	 $base64QrCode = base64_encode(file_get_contents($tmpfname));
- 
-			return $base64QrCode;
-			
-		} // public function generateBase64QrCode($qrBill)
 		
 		/**
 		 * QRCode fÃŒr eMail erzeugen
 		 */
-		public function genQRCode($order_id, $subject, $betrag, $size, $out, $target, $data = null) {
+		public function genQRCode($order_id, $subject, $betrag, $size, $out) {
 			
 			require_once WPSG_PATH_LIB.'phpqrcode/qrlib.php';
 			require_once WPSG_PATH_LIB.'phpgirocode.class.php';
-			require_once WPSG_PATH_LIB.'vendor/autoload.php';
 			
             if (!file_exists(WPSG_PATH_UPLOADS.'wpsg_girocode/')) mkdir(WPSG_PATH_UPLOADS.'wpsg_girocode/', 0755, true);
-			if (!file_exists(WPSG_PATH_UPLOADS.'wpsg_swissqrbill/')) mkdir(WPSG_PATH_UPLOADS.'wpsg_swissqrbill/', 0755, true);
-
-			if ($target == wpsg_mod_prepayment::QRCODE_BOTH) {
-
-				$ret = []; // return array
-				$kundendaten = $data['checkout']; 
-
-				// EPC - QR-Code
-				$fname1 = WPSG_PATH_UPLOADS.'wpsg_girocode/'.$order_id.'.png';
-								
-					$phpGiroCode = new PhpGirocode(); 
-					$phpGiroCode->setBIC(wpsg_getStr($this->shop->get_option('wpsg_shopdata_bank_bic')));
-					$phpGiroCode->setIBAN(wpsg_getStr($this->shop->get_option('wpsg_shopdata_bank_iban'))); 
-					$phpGiroCode->setReciver(wpsg_getStr($this->shop->get_option('wpsg_shopdata_bank_owner')));
-					$phpGiroCode->setAmount($betrag); 
-					$phpGiroCode->setText($subject); 
-					$phpGiroCode->setSize($size);
-					
-				if ($out == PhpGirocode::OUTPUT_BROWSER) $phpGiroCode->generate(PhpGirocode::OUTPUT_BROWSER, $fname1);
-				else if ($out == PhpGirocode::OUTPUT_FILE) {
-				
-					$phpGiroCode->generate(PhpGirocode::OUTPUT_FILE, $fname1);
-					$fname2 = WPSG_URL_WP.'?wpsg_action=wpsg_getGiroCode&order_id='.$order_id;
-					$data1 = array(
-						'title' => 'Girocode',
-						'value' => '<img style="max-width:120px;" width="120" height="120" src="'.$fname2.'" />'
-					);
-					$ret[] = $data1;
-
-				} else if ($out == PhpGirocode::OUTPUT_BASE64) {
-					
-					$tmpfname = @tempnam("/tmp", "phpgirocode");
-					$qrCode = array(
-						'title' => 'Girocode',
-						'hash' => $phpGiroCode->generate(PhpGirocode::OUTPUT_BASE64, $tmpfname),
-						'referenceNumber' => $referenceNumber??'',
-						'additionalInformation' => $subject,
-						'customerdata' => $kundendaten, 
-						'invoiceAmount' => $betrag,
-						'order_id' => $order_id
-					);		
-					$ret[] = $qrCode;		
-					
-				} else $ret[] = $phpGiroCode->generate(PhpGirocode::OUTPUT_TEST, false);
-			
-				// SWISS - QR-Code
-				$fname3 = WPSG_PATH_UPLOADS.'wpsg_swissqrbill/'.$order_id.'.png';
-				$oCountryB = wpsg_country::getInstance($this->shop->get_option('wpsg_shopdata_country'));
-				$oCountryC = wpsg_country::getInstance($kundendaten['land']); 
-                $besrId = '';
-				if (!empty($this->shop->get_option('wpsg_shopdata_bank_besr'))) $besrId = $this->shop->get_option('wpsg_shopdata_bank_besr'); // should be empty if bank = "Postfinance", see also tooltip
-
-					$qrBill = QrBill\QrBill::create();
-					$qrBill->setCreditor(
-						QrBill\DataGroup\Element\CombinedAddress::create(
-							wpsg_getStr($this->shop->get_option('wpsg_shopdata_name')), 
-							$this->shop->get_option('wpsg_shopdata_street'), 
-							$this->shop->get_option('wpsg_shopdata_zip').' '.wpsg_getStr($this->shop->get_option('wpsg_shopdata_city')), 
-							($oCountryB->getShorttext()??'')
-						)
-					);
-					$qrBill->setCreditorInformation(
-						QrBill\DataGroup\Element\CreditorInformation::create(
-							$this->shop->get_option('wpsg_shopdata_bank_qriban') 
-						)
-					);
-					$qrBill->setUltimateDebtor(
-						QrBill\DataGroup\Element\StructuredAddress::createWithStreet(
-							wpsg_getStr($kundendaten['vname']).' '.wpsg_getStr($kundendaten['name']), 
-							wpsg_getStr($kundendaten['strasse']), 
-							$kundendaten['nr'], 
-							$kundendaten['plz'], 
-							wpsg_getStr($kundendaten['ort']),
-							$oCountryC->getShorttext()??''
-						)
-					);
-					$qrBill->setPaymentAmountInformation(
-						QrBill\DataGroup\Element\PaymentAmountInformation::create(
-							wpsg_getStr($this->shop->get_option('wpsg_currency')), 
-							$betrag 
-						)
-					);
-					$referenceNumber = QrBill\Reference\QrPaymentReferenceGenerator::generate(
-						$besrId, 
-						$kundendaten['onr']
-					);
-					$qrBill->setPaymentReference(
-						QrBill\DataGroup\Element\PaymentReference::create(
-							QrBill\DataGroup\Element\PaymentReference::TYPE_QR,
-							$referenceNumber
-						)
-					);
-					$qrBill->setAdditionalInformation(
-						QrBill\DataGroup\Element\AdditionalInformation::create(
-							$subject ?? ''
-						)
-					);
-					
-				if ($out == PhpGirocode::OUTPUT_BROWSER) {
-
-					header('Content-Type: image/svg'); 
-					$qrBill->getQrCode(QrBill\QrCode\QrCode::FILE_FORMAT_SVG);
-
-				} else if ($out == PhpGirocode::OUTPUT_FILE) {		
-
-					$qrBill->getQrCode()->writeFile($fname3);
-					$fname4 = WPSG_URL_WP.'?wpsg_action=wpsg_getQrInvoice&order_id='.$order_id;
-					$data2 = array(
-						'title' => 'QR-Rechnung',
-						'value' => '<img style="max-width:120px;" width="120" height="120" src="'.$fname4.'" />'
-					);
-					$ret[] = $data2;
-
-				} else if ($out == PhpGirocode::OUTPUT_BASE64) {
-
-					// wpsg_debug($qrBill->getViolations());
- 
-					$qrCode = array(
-						'title' => 'QR-Rechnung',
-						'hash' => $this->generateBase64QrCode($qrBill),
-						'referenceNumber' => $referenceNumber,
-						'additionalInformation' => $subject,
-						'customerdata' => $kundendaten, 
-						'invoiceAmount' => $betrag,
-						'filepath' => $this->getFilePath($order_id).'/'.$order_id.'.pdf',
-						'order_id' => $order_id
-					);
-					$ret[] = $qrCode; 
-
-					if (!file_exists($this->getFilePath($order_id).'/'.$order_id.'.pdf')) $this->genQRBill($qrBill, $order_id);
-
-				}
-
-			} else if ($target == wpsg_mod_prepayment::QRCODE_EPC) {
-
-				$kundendaten = $data['checkout']; 
-
-				$fname1 = WPSG_PATH_UPLOADS.'wpsg_girocode/'.$order_id.'.png';
-							
-					$phpGiroCode = new PhpGirocode(); 
-					$phpGiroCode->setBIC(wpsg_getStr($this->shop->get_option('wpsg_shopdata_bank_bic'))); 
-					$phpGiroCode->setIBAN(wpsg_getStr($this->shop->get_option('wpsg_shopdata_bank_iban'))); 
-					$phpGiroCode->setReciver(wpsg_getStr($this->shop->get_option('wpsg_shopdata_bank_owner'))); 
-					$phpGiroCode->setAmount($betrag); 
-					$phpGiroCode->setText($subject); 
-					$phpGiroCode->setSize($size);
-				
-				if ($out == PhpGirocode::OUTPUT_BROWSER) $phpGiroCode->generate(PhpGirocode::OUTPUT_BROWSER, $fname1);
-				else if ($out == PhpGirocode::OUTPUT_FILE) {
-
-					$phpGiroCode->generate(PhpGirocode::OUTPUT_FILE, $fname1);
-					$fname2 = WPSG_URL_WP.'?wpsg_action=wpsg_getGiroCode&order_id='.$order_id;
-					$data = array(
-						'title' => 'Girocode',
-						'value' => '<img style="max-width:120px;" width="120" height="120" src="'.$fname2.'" />'
-					);
-					$ret = $data;
-
-				} else if ($out == PhpGirocode::OUTPUT_BASE64) {
-
-					$tmpfname = @tempnam("/tmp", "phpgirocode");	
-					$qrCode = array(
-						'title' => 'Girocode',
-						'hash' => $phpGiroCode->generate(PhpGirocode::OUTPUT_BASE64, $tmpfname),
-						'referenceNumber' => $referenceNumber??'',
-						'additionalInformation' => $subject,
-						'customerdata' => $kundendaten, 
-						'invoiceAmount' => $betrag,
-						'order_id' => $order_id
-					);		
-					$ret = $qrCode;		
-
-				} else $ret = $phpGiroCode->generate(PhpGirocode::OUTPUT_TEST, false);
-
-			} else if ($target == wpsg_mod_prepayment::QRCODE_SWISS) {
-
-				$kundendaten = $data['checkout']; 
-
-				$fname3 = WPSG_PATH_UPLOADS.'wpsg_swissqrbill/'.$order_id.'.png';
-				$oCountryB = wpsg_country::getInstance($this->shop->get_option('wpsg_shopdata_country'));
-				$oCountryC = wpsg_country::getInstance($kundendaten['land']); 
-
-				$besrId = '';
-				if (!empty($this->shop->get_option('wpsg_shopdata_bank_besr'))) $besrId = $this->shop->get_option('wpsg_shopdata_bank_besr'); // should be empty if bank = "Postfinance", see also tooltip
-
-					$qrBill = QrBill\QrBill::create();
-					$qrBill->setCreditor(
-						QrBill\DataGroup\Element\CombinedAddress::create(
-							wpsg_getStr($this->shop->get_option('wpsg_shopdata_name')), 
-							$this->shop->get_option('wpsg_shopdata_street'), 
-							$this->shop->get_option('wpsg_shopdata_zip').' '.wpsg_getStr($this->shop->get_option('wpsg_shopdata_city')), 
-							wpsg_getStr($oCountryB->getShorttext()) 
-						)
-					);
-					$qrBill->setCreditorInformation(
-						QrBill\DataGroup\Element\CreditorInformation::create(
-							$this->shop->get_option('wpsg_shopdata_bank_qriban') 
-						)
-					);
-					$qrBill->setUltimateDebtor(
-						QrBill\DataGroup\Element\StructuredAddress::createWithStreet(
-							wpsg_getStr($kundendaten['vname']).' '.wpsg_getStr($kundendaten['name']), 
-							wpsg_getStr($kundendaten['strasse']), 
-							$kundendaten['nr'], 
-							$kundendaten['plz'], 
-							wpsg_getStr($kundendaten['ort']),
-							($oCountryC->getShorttext()??'')
-						)
-					);
-					$qrBill->setPaymentAmountInformation(
-						QrBill\DataGroup\Element\PaymentAmountInformation::create(
-							wpsg_getStr($this->shop->get_option('wpsg_currency')), 
-							$betrag 
-						)
-					);
-					$referenceNumber = QrBill\Reference\QrPaymentReferenceGenerator::generate(
-						$besrId, 
-						$kundendaten['onr']
-					);
-					$qrBill->setPaymentReference(
-						QrBill\DataGroup\Element\PaymentReference::create(
-							QrBill\DataGroup\Element\PaymentReference::TYPE_QR,
-							$referenceNumber
-						)
-					);
-					$qrBill->setAdditionalInformation(
-						QrBill\DataGroup\Element\AdditionalInformation::create(
-							$subject
-						)
-					);
-				
-
-				if ($out == PhpGirocode::OUTPUT_BROWSER) {
-
-					header('Content-Type: image/svg'); 
-					$qrBill->getQrCode(QrBill\QrCode\QrCode::FILE_FORMAT_SVG);
-
-				} else if ($out == PhpGirocode::OUTPUT_FILE) {	
-
-					$qrBill->getQrCode()->writeFile($fname3);
-					$fname4 = WPSG_URL_WP.'?wpsg_action=wpsg_getQrInvoice&order_id='.$order_id;
-					$data = array(
-						'title' => 'QR-Rechnung',
-						'value' => '<img style="max-width:120px;" width="120" height="120" src="'.$fname4.'" />'
-					);
-					$ret = $data;
-
-				} else if ($out == PhpGirocode::OUTPUT_BASE64) {
-
-					// wpsg_debug($qrBill->getViolations());
-
-					$qrCode = array(
-						'title' => 'QR-Rechnung',
-						'hash' => $this->generateBase64QrCode($qrBill),
-						'referenceNumber' => $referenceNumber,
-						'additionalInformation' => $subject,
-						'customerdata' => $kundendaten, 
-						'invoiceAmount' => $betrag,
-						'filepath' => $this->getFilePath($order_id).'/'.$order_id.'.pdf',
-						'order_id' => $order_id
-					);		
-					$ret = $qrCode;
-
-					if (!file_exists($this->getFilePath($order_id).'/'.$order_id.'.pdf')) $this->genQRBill($qrBill, $order_id);
-
-				}
-
+            
+			$fname1 = WPSG_PATH_UPLOADS.'wpsg_girocode/'.$order_id.'.png';
+			
+			$phpGiroCode = new PhpGirocode();
+			$phpGiroCode->setBIC(wpsg_getStr($this->shop->get_option('wpsg_shopdata_bank_bic')));
+			$phpGiroCode->setIBAN(wpsg_getStr($this->shop->get_option('wpsg_shopdata_bank_iban')));
+			$phpGiroCode->setReciver(wpsg_getStr($this->shop->get_option('wpsg_shopdata_bank_owner')));
+			$phpGiroCode->setAmount($betrag);
+			$phpGiroCode->setText($subject);
+			$phpGiroCode->setSize($size);
+			
+			if ($out == PhpGirocode::OUTPUT_BROWSER) {
+				
+				$phpGiroCode->generate(PhpGirocode::OUTPUT_BROWSER, $fname1);
+			
+			} else if ($out == PhpGirocode::OUTPUT_FILE) {
+			
+				$phpGiroCode->generate(PhpGirocode::OUTPUT_FILE, $fname1);
+				
+				$fname2 = WPSG_URL_WP.'?wpsg_action=wpsg_getGiroCode&order_id='.$order_id;
+				
+				$ret = '<img src="'.$fname2.'" />';
+
+			} else if ($out == PhpGirocode::OUTPUT_BASE64) {
+				
+				$tmpfname = @tempnam("/tmp", "phpgirocode");
+				
+				$ret = $phpGiroCode->generate(PhpGirocode::OUTPUT_BASE64, $tmpfname);
+				
+				
+			} else {
+				
+				$ret = $phpGiroCode->generate(PhpGirocode::OUTPUT_TEST, false);
+				
 			}
 			
 			return $ret;
 			
-		} // private function genQRCode($betrag, $subject, $size, $out, $target, $data)
+		} // private function genQRCode($betrag, $subject, $size, $out)
 		
 		public function template_redirect() {
@@ -572,23 +219,4 @@
 				
 			}
-
-			if (wpsg_isSizedString($_REQUEST['wpsg_action'], 'wpsg_getQrInvoice')) {
-				
-				header("Content-Type: image/png");
-				
-				readfile(WPSG_PATH_UPLOADS.'wpsg_swissqrbill/'.intval(wpsg_sinput("key", $_REQUEST['order_id'])).'.png');
-				
-			}
-
-			if (wpsg_isSizedString($_REQUEST['wpsg_action'], 'wpsg_mod_prepayment_download'))
-			{
-				
-				$hash = md5($this->shop->get_option('wpsg_salt').'wpsg'.$_REQUEST['order_id'].'wpsg'.$this->shop->get_option('wpsg_salt'));
-				
-				if ($hash != $_REQUEST['hash']) die(__('Kein Zugriff', 'wpsg'));
-					
-				$this->doDownload($_REQUEST['order_id']);
-				
-			}	
 			
 		}
@@ -596,3 +224,2 @@
 	} // class wpsg_mod_prepayment extends wpsg_mod_basic
 
-?>
Index: /mods/wpsg_mod_rechnungen.class.php
===================================================================
--- /mods/wpsg_mod_rechnungen.class.php	(revision 8374)
+++ /mods/wpsg_mod_rechnungen.class.php	(revision 8375)
@@ -699,5 +699,7 @@
 				}
 				
-				$this->shop->sendMail($mail_text, $email, 'rechnungscopy', $arFiles, $_REQUEST['edit_id'], false, $mail_html);
+				$this->shop->sendMail($mail_text, $email, 'rechnungscopy', $arFiles, $_REQUEST['edit_id'], false, $mail_html, false, [
+					'invoice_id' => $oInvoice->getId()
+				]);
 				
 				// TemporÃ€re Rechnung lÃ¶schen
@@ -1597,5 +1599,7 @@
 					}
 					
-					$this->shop->sendMail($mail_text, $empfaenger, 'invoicemail', $arFiles, $order_id, false, $mail_html);
+					$this->shop->sendMail($mail_text, $empfaenger, 'invoicemail', $arFiles, $order_id, false, $mail_html, false, [
+						'invoice_id' => $oInvoice->getId()
+					]);
 
 					// TemporÃ€re Rechnung lÃ¶schen
@@ -1866,5 +1870,7 @@
 					}
 
-					$this->shop->sendMail($mail_text, $empfaenger, 'invoicemail', $arFiles, $order_id, false, $mail_html);
+					$this->shop->sendMail($mail_text, $empfaenger, 'invoicemail', $arFiles, $order_id, false, $mail_html, false, [
+						'invoice_id' => $oInvoice->getId()
+					]);
 
 					// TemporÃ€re Rechnung lÃ¶schen
Index: /views/css/frontend.css
===================================================================
--- /views/css/frontend.css	(revision 8374)
+++ /views/css/frontend.css	(revision 8375)
@@ -79,5 +79,9 @@
 .wpsg_basket .wpsg_checkoutbutton { float:right; padding:0.75em 1em; }
 .wpsg_basket .wpsg_cell_gesamtsumme_value { font-weight:bold; }
-.wpsg_basket .wpsg_refreshbutton, .wpsg_basketbutton { float:left; padding:0.75em 1em; }
+.wpsg_checkout2 .wpsg_overviewbutton,
+.wpsg_checkout2 .wpsg_checkoutbutton,
+.wpsg_overview .wpsg_orderbutton,
+.wpsg_overview .wpsg_checkoutbutton,
+.wpsg_basket .wpsg_refreshbutton, .wpsg_checkout2button, .wpsg_basketbutton { float:left; padding:0.75em 1em; }
 .wpsg_basket .wpsg_basket_weiter_shoppen {background:#1a1a1a none repeat scroll 0 0; border:0 none; border-radius:2px; color:#fff; font-weight:700; line-height:1; text-transform:uppercase; padding:0.85em 0.875em 0.78em;}
 .wpsg_basket .product_action_printshop .label { align-self:flex-start; }
Index: /views/mods/mod_prepayment/order_done.phtml
===================================================================
--- /views/mods/mod_prepayment/order_done.phtml	(revision 8374)
+++ /views/mods/mod_prepayment/order_done.phtml	(revision 8375)
@@ -19,5 +19,5 @@
 <br /><br />
 
-<?php if ( isset($this->view['wpsg_mod_prepayment']['subject']) && ($this->get_option('wpsg_mod_prepayment_qrcode') == true) ) { ?>
+<?php return; if ( isset($this->view['wpsg_mod_prepayment']['subject']) && ($this->get_option('wpsg_mod_prepayment_qrcode') == true) ) { ?>
 
 	<?php require_once WPSG_PATH_LIB.'phpgirocode.class.php'; ?>
@@ -28,5 +28,5 @@
 
 		<?php 
-
+ 
 		try {
 			
@@ -34,5 +34,4 @@
 			$img = $this->callMod('wpsg_mod_prepayment', 'genQRCode', array($this->view['o_id'], $this->view['wpsg_mod_prepayment']['subject'], $this->view['basket']['sum']['preis_gesamt_brutto'], 10, PhpGirocode::OUTPUT_BASE64, $this->get_option('wpsg_mod_prepayment_qrcode_country'), $this->view['basket']));
  		
-			
 		?>
  
@@ -42,5 +41,5 @@
 					<div class="wpsg_mod_prepayment_info_left">
                     <div class="wpsg_mod_prepayment_info_left_qr-download">
-						<h4><?php echo wpsg_translate(__($i['title'], $wpsg)); ?></h4>
+						<h4><?php echo wpsg_translate(__($i['title'], 'wpsg')); ?></h4>
 						<?php if (isset($i['filepath'])) { ?><a title="Downloadlink fÃŒr die QR-Rechnung" target="_blank" href="<?php echo $this->callMod('wpsg_mod_prepayment', 'getFrontendLink', [$i['order_id']]); ?>"><i class="fa fa-download" aria-hidden="true"></i></a><?php } ?>
                     </div>	
@@ -50,9 +49,9 @@
 						<div class="wpsg_mod_prepayment_info_left_wrap">
 							<div class="wpsg_mod_prepayment_info_left_currency">
-								<h4><?php echo wpsg_translate(__('WÃ€hrung', $wpsg)); ?></h4>
+								<h4><?php echo wpsg_translate(__('WÃ€hrung', 'wpsg')); ?></h4>
 								<?php echo $this->get_option('wpsg_currency'); ?>
 							</div>
 							<div class="wpsg_mod_prepayment_info_left_amount">
-								<h4><?php echo wpsg_translate(__('Betrag', $wpsg)); ?></h4>
+								<h4><?php echo wpsg_translate(__('Betrag', 'wpsg')); ?></h4>
 								<?php echo sprintf("%.2f", $i['invoiceAmount']); ?>
 							</div>
@@ -60,5 +59,5 @@
 					</div>
 					<div class="wpsg_mod_prepayment_info_right">
-						<h4><?php echo wpsg_translate(__('Konto / Zahlbar an', $wpsg)); ?></h4>
+						<h4><?php echo wpsg_translate(__('Konto / Zahlbar an', 'wpsg')); ?></h4>
 						<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_mod_prepayment_iban')); ?><br />
 						<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_mod_prepayment_kinhaber')); ?><br />
@@ -66,10 +65,10 @@
 						<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_zip')).' '.$this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_city')); ?><br />
 						<?php if (!empty($i['referenceNumber'])) { ?>
-							<h4><?php echo wpsg_translate(__('Referenz', $wpsg)); ?></h4>
+							<h4><?php echo wpsg_translate(__('Referenz', 'wpsg')); ?></h4>
 							<?php echo $i['referenceNumber']; ?><br />
 						<?php } ?>
-						<h4><?php echo wpsg_translate(__('ZusÃ€tzliche Informationen', $wpsg)); ?></h4>
+						<h4><?php echo wpsg_translate(__('ZusÃ€tzliche Informationen', 'wpsg')); ?></h4>
 						<?php echo $i['additionalInformation']; ?><br /> 
-						<h4><?php echo wpsg_translate(__('Zahlbar durch', $wpsg)); ?></h4>
+						<h4><?php echo wpsg_translate(__('Zahlbar durch', 'wpsg')); ?></h4>
 						<?php echo $i['customerdata']['vname'].' '.$i['customerdata']['name']; ?><br />
 						<?php echo $i['customerdata']['strasse'].' '.$i['customerdata']['nr']; ?><br />
@@ -80,5 +79,5 @@
 		</div>
 
-		<?php } catch (\Exception $e) { } ?>
+		<?php } catch (\Exception $e) { wpsg_debug($e); } ?>
 
 	<?php } else if ($this->get_option('wpsg_mod_prepayment_qrcode_country') == '1') { ?>
@@ -99,5 +98,5 @@
 		<div class="wpsg_mod_prepayment_girocode">
 			<div class="wpsg_mod_prepayment_girocode_left" >
-				<h4><?php echo wpsg_translate(__($img['title'], $wpsg)); ?></h4>
+				<h4><?php echo wpsg_translate(__($img['title'], 'wpsg')); ?></h4>
 				<br />
 				<?php echo '<img class="wpsg_mod_prepayment_girocode_left_qrcodeimg" src="data:image/png;base64,'.$img['hash'].'" />'; ?>
@@ -105,9 +104,9 @@
 				<div class="wpsg_mod_prepayment_girocode_left_wrap">
 					<div class="wpsg_mod_prepayment_girocode_left_currency">
-						<h4><?php echo wpsg_translate(__('WÃ€hrung', $wpsg)); ?></h4>
+						<h4><?php echo wpsg_translate(__('WÃ€hrung', 'wpsg')); ?></h4>
 						<?php echo $this->get_option('wpsg_currency'); ?>
 					</div>
 					<div class="wpsg_mod_prepayment_girocode_left_amount">
-						<h4><?php echo wpsg_translate(__('Betrag', $wpsg)); ?></h4>
+						<h4><?php echo wpsg_translate(__('Betrag', 'wpsg')); ?></h4>
 						<?php echo sprintf("%.2f", $img['invoiceAmount']); ?>
 					</div>
@@ -115,5 +114,5 @@
 			</div>
 			<div class="wpsg_mod_prepayment_girocode_right">
-				<h4><?php echo wpsg_translate(__('Konto / Zahlbar an', $wpsg)); ?></h4>
+				<h4><?php echo wpsg_translate(__('Konto / Zahlbar an', 'wpsg')); ?></h4>
 				<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_mod_prepayment_iban')); ?><br />
 				<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_mod_prepayment_kinhaber')); ?><br />
@@ -121,10 +120,10 @@
 				<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_zip')).' '.$this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_city')); ?><br />
 				<?php if (!empty($img['referenceNumber'])) { ?>
-					<h4><?php echo wpsg_translate(__('Referenz', $wpsg)); ?></h4>
+					<h4><?php echo wpsg_translate(__('Referenz', 'wpsg')); ?></h4>
 					<?php echo $img['referenceNumber']; ?><br />
 				<?php } ?>
-				<h4><?php echo wpsg_translate(__('ZusÃ€tzliche Informationen', $wpsg)); ?></h4>
+				<h4><?php echo wpsg_translate(__('ZusÃ€tzliche Informationen', 'wpsg')); ?></h4>
 				<?php echo $img['additionalInformation']; ?><br /> 
-				<h4><?php echo wpsg_translate(__('Zahlbar durch', $wpsg)); ?></h4>
+				<h4><?php echo wpsg_translate(__('Zahlbar durch', 'wpsg')); ?></h4>
 				<?php echo $img['customerdata']['vname'].' '.$img['customerdata']['name']; ?><br />
 				<?php echo $img['customerdata']['strasse'].' '.$img['customerdata']['nr']; ?><br />
@@ -146,5 +145,5 @@
 		<div class="wpsg_mod_prepayment_qrrechnung">
 			<div class="wpsg_mod_prepayment_qrrechnung_left">
-				<h4><?php echo wpsg_translate(__($img['title'], $wpsg)); ?></h4>
+				<h4><?php echo wpsg_translate(__($img['title'], 'wpsg')); ?></h4>
 				<br />
 				<?php echo '<img class="wpsg_mod_prepayment_qrrechnung_left_qrcodeimg" src="data:image/png;base64,'.$img['hash'].'" />'; ?>
@@ -152,9 +151,9 @@
 				<div class="wpsg_mod_prepayment_qrrechnung_left_wrap">
 					<div class="wpsg_mod_prepayment_qrrechnung_left_currency">
-						<h4><?php echo wpsg_translate(__('WÃ€hrung', $wpsg)); ?></h4>
+						<h4><?php echo wpsg_translate(__('WÃ€hrung', 'wpsg')); ?></h4>
 						<?php echo $this->get_option('wpsg_currency'); ?>
 					</div>
 					<div class="wpsg_mod_prepayment_qrrechnung_left_amount">
-						<h4><?php echo wpsg_translate(__('Betrag', $wpsg)); ?></h4>
+						<h4><?php echo wpsg_translate(__('Betrag', 'wpsg')); ?></h4>
 						<?php echo sprintf("%.2f", $img['invoiceAmount']); ?>
 					</div>
@@ -162,5 +161,5 @@
 			</div>
 			<div class="wpsg_mod_prepayment_qrrechnung_right">
-				<h4><?php echo wpsg_translate(__('Konto / Zahlbar an', $wpsg)); ?></h4>
+				<h4><?php echo wpsg_translate(__('Konto / Zahlbar an', 'wpsg')); ?></h4>
 				<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_mod_prepayment_iban')); ?><br />
 				<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_mod_prepayment_kinhaber')); ?><br />
@@ -168,10 +167,10 @@
 				<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_zip')).' '.$this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_city')); ?><br />
 				<?php if (!empty($img['referenceNumber'])) { ?>
-					<h4><?php echo wpsg_translate(__('Referenz', $wpsg)); ?></h4>
+					<h4><?php echo wpsg_translate(__('Referenz', 'wpsg')); ?></h4>
 					<?php echo $img['referenceNumber']; ?><br />
 				<?php } ?>
-				<h4><?php echo wpsg_translate(__('ZusÃ€tzliche Informationen', $wpsg)); ?></h4>
+				<h4><?php echo wpsg_translate(__('ZusÃ€tzliche Informationen', 'wpsg')); ?></h4>
 				<?php echo $img['additionalInformation']; ?><br /> 
-				<h4><?php echo wpsg_translate(__('Zahlbar durch', $wpsg)); ?></h4>
+				<h4><?php echo wpsg_translate(__('Zahlbar durch', 'wpsg')); ?></h4>
 				<?php echo $img['customerdata']['vname'].' '.$img['customerdata']['name']; ?><br />
 				<?php echo $img['customerdata']['strasse'].' '.$img['customerdata']['nr']; ?><br />
Index: /views/mods/mod_prepayment/settings_edit.phtml
===================================================================
--- /views/mods/mod_prepayment/settings_edit.phtml	(revision 8374)
+++ /views/mods/mod_prepayment/settings_edit.phtml	(revision 8375)
@@ -9,13 +9,4 @@
 <?php echo wpsg_drawForm_Input('wpsg_mod_prepayment_bezeichnung', __('Bezeichnung', 'wpsg'), $this->get_option('wpsg_mod_prepayment_bezeichnung'), array('help' => 'wpsg_mod_prepayment_bezeichnung')); ?>
 <?php echo wpsg_drawForm_Checkbox('wpsg_mod_prepayment_aktiv', __('Aktiv', 'wpsg'), $this->get_option('wpsg_mod_prepayment_aktiv'), array('help' => 'wpsg_mod_prepayment_aktiv')); ?>
-<?php echo wpsg_drawForm_Checkbox('wpsg_mod_prepayment_qrcode', __('QR-Code anzeigen', 'wpsg'), $this->get_option('wpsg_mod_prepayment_qrcode'), array('help' => 'wpsg_mod_prepayment_qrcode')); ?>
-<div id="wpsg_mod_prepayment_qrcode_options_layer" style="display: none;">
-	<?php echo wpsg_drawForm_Select('wpsg_mod_prepayment_qrcode_country', __('QR-Code fÃŒr', 'wpsg'), Array(
-					wpsg_mod_prepayment::QRCODE_BOTH => __('Beide', 'wpsg'),
-					wpsg_mod_prepayment::QRCODE_EPC => __('Girocode', 'wpsg'),
-					wpsg_mod_prepayment::QRCODE_SWISS => __('QR-Rechnung', 'wpsg')
-				), $this->get_option('wpsg_mod_prepayment_qrcode_country'), array('help' => 'wpsg_mod_prepayment_qrcode_country')); ?>
-	<?php echo wpsg_drawForm_Checkbox('wpsg_mod_prepayment_mailattachment', __('QR-Rechnung an BestellbestÃ€tigung anhÃ€ngen', 'wpsg'), $this->get_option('wpsg_mod_prepayment_mailattachment'), array('help' => 'wpsg_mod_prepayment_mailattachment')); ?>
-</div>
 
 <?php echo wpsg_drawForm_Textarea('wpsg_mod_prepayment_hint', __('Hinweistext', 'wpsg'), $this->get_option('wpsg_mod_prepayment_hint'), array('help' => 'wpsg_mod_prepayment_hint')); ?>
@@ -32,32 +23,2 @@
 <?php echo wpsg_drawForm_Input('wpsg_mod_prepayment_iban', __('IBAN', 'wpsg'), $this->get_option('wpsg_mod_prepayment_iban'), array('help' => 'wpsg_mod_prepayment_iban')); ?>
 <?php echo wpsg_drawForm_Input('wpsg_mod_prepayment_swift', __('BIC-/SWIFT Code', 'wpsg'), $this->get_option('wpsg_mod_prepayment_swift'), array('help' => 'wpsg_mod_prepayment_swift')); ?>
-<?php echo wpsg_drawForm_Input('wpsg_mod_prepayment_qriban', __('QR-IBAN', 'wpsg'), $this->get_option('wpsg_mod_prepayment_qriban'), array('help' => 'wpsg_mod_prepayment_qriban')); ?>
-<?php echo wpsg_drawForm_Input('wpsg_mod_prepayment_besr', __('BESR-ID', 'wpsg'), $this->get_option('wpsg_mod_prepayment_besr'), array('help' => 'wpsg_mod_prepayment_besr')); ?>
-
-<script>
-
-	document.addEventListener("DOMContentLoaded", function() {
-
-		var qrcodeAktiveCheckbox = document.getElementById('wpsg_mod_prepayment_qrcode');
-		var qrcodeSelectDiv = document.getElementById('wpsg_mod_prepayment_qrcode_options_layer');
-
-		
-		function toggleDivVisibility(checkbox, div) 
-		{
-
-			if (checkbox.checked) div.style.display = "block";
-			else div.style.display = "none";
-
-		}
-
-		// Event Listener fÃŒr die Checkboxen
-		qrcodeAktiveCheckbox.addEventListener("change", function() {
-			toggleDivVisibility(qrcodeAktiveCheckbox, qrcodeSelectDiv);
-		});
-
-		// ÃberprÃŒfen und Initialisieren des Anfangszustands der Checkboxen
-		toggleDivVisibility(qrcodeAktiveCheckbox, qrcodeSelectDiv);
-	
-	});
-
-</script>
Index: /views/mods/mod_rechnungen/copymail.phtml
===================================================================
--- /views/mods/mod_rechnungen/copymail.phtml	(revision 8374)
+++ /views/mods/mod_rechnungen/copymail.phtml	(revision 8375)
@@ -1,12 +1,12 @@
 <?php 
-   /*
-    *   Template fÃŒr die Rechnungskopie
-    **/     
 
+	/*
+	 * Template fÃŒr die Rechnungskopie
+	 */
+ 
+	/** @var wpsg_order $oOrder */
+	$oOrder = wpsg_order::getInstance($this->view['order']['id']);
 
-    $arPflicht = $this->loadPflichtFeldDaten();
-    $arTitle = explode('|', $arPflicht['anrede_auswahl']);
-
-?><?php echo wpsg_translate(__('Hallo #1# #2# #3#,', 'wpsg'), @$arTitle[$this->view['basket']['checkout']['title']], $this->view['basket']['checkout']['vname'], $this->view['basket']['checkout']['name']); ?>
+?><?php echo wpsg_translate(__('Hallo #1# #2# #3#,', 'wpsg'), $oOrder->getInvoiceTitle(), $oOrder->getInvoiceFirstName(), $oOrder->getInvoiceName()); ?>
  
 <?php if (isset($this->view['rnr'])) { ?>
