add missing files
This commit is contained in:
parent
bc6e302f81
commit
62c57e83e8
45
docs/daux/manual/015_Wartungstool.md
Normal file
45
docs/daux/manual/015_Wartungstool.md
Normal file
@ -0,0 +1,45 @@
|
||||
---
|
||||
title: Wartungstool
|
||||
---
|
||||
|
||||
Die generierten Bilder müssen nach dem Setzen der Wasserzeicheneinstellungen neu aufbereitet werden. Ebenso ist die Aufbereitung nötig, wenn neue Artikel in den Shop eingepflegt wurden. Bestehen schon frühere Artikelbilder, müssen diese vorab gelöscht werden.
|
||||
|
||||
Das Löschen der Bilder kann direkt auf dem Server, im Adminbereich des Shops oder über das hier angesprochene Wartungstool erledigt werden.
|
||||
|
||||
Die Neugenerierung passiert regulär dann, wen das jeweilige Bild zum ersten Mal angefordert wird. Dies passiert im Normalfall durch die Shopbesucher. Somit ist eigentlich keine separate Vorarbeit nötig.
|
||||
|
||||
Da jedoch die Einarbeitung des Wasserzeichens etwas Leistung (und damit auch Zeit) benötigt, sollten die Bilder vorgeneriert werden, um die erstmalige Ladezeit des Shops nicht unnötig zu verlängern. Daher kann die Vorabgenerierung ebenfalls über das folgende Wartungstool ausgeführt wird.
|
||||
|
||||
Das moduleigene Wartungstool rufen Sie bitte über die Konsole Ihres Servers auf.
|
||||
Führen Sie in der Konsole im Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses) diesen Befehl aus, um das Wartungstool zu starten:
|
||||
|
||||
```bash
|
||||
./vendor/bin/d3watermark
|
||||
```
|
||||
|
||||
Damit sehen Sie eine Übersicht über die verfügbaren Befehlsoptionen.
|
||||
|
||||
Folgende Aktionen stehen Ihnen zur Verfügung:
|
||||
|
||||
- delete: Löschen der generierten Bilder
|
||||
- generate: Neugenerieren der Bilder
|
||||
- renew: Löschen **und** Neugenerieren der Bilder
|
||||
|
||||
Diesen Aktionen ist noch die Angabe hinzuzufügen, welche Bilder damit bearbeitet werden sollen. Mögliche Optionen sind:
|
||||
|
||||
- product: alle Artikelbilder
|
||||
- category: alle Kategoriebilder
|
||||
- manufacturer: alle Markenbilder
|
||||
- vendor: alle Lieferantenbilder
|
||||
- wrapping: alle Verpackungsbilder
|
||||
- all: alle Bilder der vorher genannten Objekte
|
||||
|
||||
Zum Neugenerieren aller Bilder sieht der Aufruf dann beispielsweise so aus:
|
||||
|
||||
```bash
|
||||
./vendor/bin/d3watermark renew all
|
||||
```
|
||||
|
||||
> [i] Beachten Sie, dass der Scriptaufruf mit dem Systembenutzer erfolgt, der die generierten Dateien auch löschen darf. Ändern Sie den Befehl bitte ansonsten entsprechend systemabhängig ab (`sudo -u www-data ./vendor/bin/d3watermark ...`). Beim Neugenerieren ist der verwendete Benutzer unrelevant.
|
||||
|
||||
> [i] Sollen diese Wartungsaufgaben automatisert (z.B. per Cronjob) ausgeführt werden, stehen Ihnen die Optionen `--no-color` und `--loglevel error` zur Verfügung, um unnötige Ausgaben zu vermeiden.
|
141
docs/html/manual/Wartungstool.html
Normal file
141
docs/html/manual/Wartungstool.html
Normal file
@ -0,0 +1,141 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="no-js" lang="de">
|
||||
<head>
|
||||
<title>Wartungstool - Wasserzeichen</title>
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="D³ Data Development">
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
|
||||
<link rel="icon" href="../themes/d3/img/favicon.png" type="image/x-icon">
|
||||
|
||||
<!-- Mobile -->
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<!-- Font -->
|
||||
|
||||
<!-- CSS -->
|
||||
<link href='../themes/d3/css/theme-blue.min.css' rel='stylesheet' type='text/css'><link href='../themes/d3/css/d3.css' rel='stylesheet' type='text/css'>
|
||||
<!-- Tipue Search -->
|
||||
<link href="../tipuesearch/tipuesearch.css" rel="stylesheet">
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../themes/d3/js/html5shiv-3.7.3.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body class=" ">
|
||||
<div class="Columns content">
|
||||
<aside class="Columns__left Collapsible">
|
||||
<button type="button" class="Button Collapsible__trigger">
|
||||
<span class="Collapsible__trigger__bar"></span>
|
||||
<span class="Collapsible__trigger__bar"></span>
|
||||
<span class="Collapsible__trigger__bar"></span>
|
||||
</button>
|
||||
|
||||
<a class="Brand" href="../index.html"><i class='fab fa-d3 d3fa-color-blue'></i> Wasserzeichen</a>
|
||||
|
||||
<div class="Search">
|
||||
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
|
||||
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
|
||||
</svg>
|
||||
<input type="search" id="tipue_search_input" class="Search__field" placeholder="Suchen..." autocomplete="on"
|
||||
results=25 autosave=text_search>
|
||||
</div>
|
||||
|
||||
<div class="Collapsible__content">
|
||||
<!-- Navigation -->
|
||||
<ul class='Nav'><li class='Nav__item Nav__item--active'><a href="../manual/Wartungstool.html">Wartungstool</a></li></ul>
|
||||
|
||||
|
||||
|
||||
<div class="Links">
|
||||
<hr/>
|
||||
<a href="https://www.oxidmodule.com" target="_blank">Shop</a><br />
|
||||
<a href="https://blog.oxidmodule.com" target="_blank">Blog</a><br />
|
||||
<a href="https://faq.oxidmodule.com" target="_blank">FAQ</a><br />
|
||||
<a href="https://docs.oxidmodule.com" target="_blank">Dokumentationen</a><br />
|
||||
<a href="https://support.oxidmodule.com" target="_blank">D³ Support Center</a><br />
|
||||
<a href="https://www.oxidmodule.com/kontakt" target="_blank">Kontakt</a><br />
|
||||
<a href="https://www.oxidmodule.com/impressum" target="_blank">Impressum</a><br />
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="Columns__right Columns__right--full">
|
||||
<div class="Columns__right__content">
|
||||
<div class="doc_content">
|
||||
<article class="Page">
|
||||
|
||||
<div class="Page__header">
|
||||
<h1><a href="../manual/Wartungstool.html">Wartungstool</a></h1>
|
||||
<span class="ModifiedDate">
|
||||
07.06.2019 </span>
|
||||
</div>
|
||||
|
||||
<div class="s-content">
|
||||
<p>Die generierten Bilder müssen nach dem Setzen der Wasserzeicheneinstellungen neu aufbereitet werden. Ebenso ist die Aufbereitung nötig, wenn neue Artikel in den Shop eingepflegt wurden. Bestehen schon frühere Artikelbilder, müssen diese vorab gelöscht werden.</p>
|
||||
<p>Das Löschen der Bilder kann direkt auf dem Server, im Adminbereich des Shops oder über das hier angesprochene Wartungstool erledigt werden.</p>
|
||||
<p>Die Neugenerierung passiert regulär dann, wen das jeweilige Bild zum ersten Mal angefordert wird. Dies passiert im Normalfall durch die Shopbesucher. Somit ist eigentlich keine separate Vorarbeit nötig.</p>
|
||||
<p>Da jedoch die Einarbeitung des Wasserzeichens etwas Leistung (und damit auch Zeit) benötigt, sollten die Bilder vorgeneriert werden, um die erstmalige Ladezeit des Shops nicht unnötig zu verlängern. Daher kann die Vorabgenerierung ebenfalls über das folgende Wartungstool ausgeführt wird.</p>
|
||||
<p>Das moduleigene Wartungstool rufen Sie bitte über die Konsole Ihres Servers auf.
|
||||
Führen Sie in der Konsole im Hauptverzeichnis Ihres Shops (oberhalb des <code>source</code>- und <code>vendor</code>-Verzeichnisses) diesen Befehl aus, um das Wartungstool zu starten:</p>
|
||||
<pre><code class="language-bash">./vendor/bin/d3watermark
|
||||
</code></pre>
|
||||
<p>Damit sehen Sie eine Übersicht über die verfügbaren Befehlsoptionen.</p>
|
||||
<p>Folgende Aktionen stehen Ihnen zur Verfügung:</p>
|
||||
<ul>
|
||||
<li>delete: Löschen der generierten Bilder</li>
|
||||
<li>generate: Neugenerieren der Bilder</li>
|
||||
<li>renew: Löschen <strong>und</strong> Neugenerieren der Bilder</li>
|
||||
</ul>
|
||||
<p>Diesen Aktionen ist noch die Angabe hinzuzufügen, welche Bilder damit bearbeitet werden sollen. Mögliche Optionen sind:</p>
|
||||
<ul>
|
||||
<li>product: alle Artikelbilder</li>
|
||||
<li>category: alle Kategoriebilder</li>
|
||||
<li>manufacturer: alle Markenbilder</li>
|
||||
<li>vendor: alle Lieferantenbilder</li>
|
||||
<li>wrapping: alle Verpackungsbilder</li>
|
||||
<li>all: alle Bilder der vorher genannten Objekte</li>
|
||||
</ul>
|
||||
<p>Zum Neugenerieren aller Bilder sieht der Aufruf dann beispielsweise so aus:</p>
|
||||
<pre><code class="language-bash">./vendor/bin/d3watermark renew all
|
||||
</code></pre>
|
||||
<blockquote class="alert alert-info">
|
||||
<i class='fas fa-info-circle'></i> <p> Beachten Sie, dass der Scriptaufruf mit dem Systembenutzer erfolgt, der die generierten Dateien auch löschen darf. Ändern Sie den Befehl bitte ansonsten entsprechend systemabhängig ab (<code>sudo -u www-data ./vendor/bin/d3watermark ...</code>). Beim Neugenerieren ist der verwendete Benutzer unrelevant.</p>
|
||||
</blockquote>
|
||||
<blockquote class="alert alert-info">
|
||||
<i class='fas fa-info-circle'></i> <p> Sollen diese Wartungsaufgaben automatisert (z.B. per Cronjob) ausgeführt werden, stehen Ihnen die Optionen <code>--no-color</code> und <code>--loglevel error</code> zur Verfügung, um unnötige Ausgaben zu vermeiden.</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<ul class="Pager">
|
||||
<li class=Pager--prev><a href="../installation/Deinstallation/TMP-Ordner_leeren.html">Zurück</a></li> <li class=Pager--next><a href="../support/Hilfe-und-Support.html">Weiter</a></li> </ul>
|
||||
</nav>
|
||||
</article>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- JS -->
|
||||
<script src="../themes/d3/js/jquery-1.11.3.min.js"></script><script src="../themes/d3/js/highlight.pack.js"></script><script src="../themes/d3/js/daux.js"></script><script src="../themes/d3/js/fontawesome-all.js"></script>
|
||||
<!-- Tipue Search -->
|
||||
<script type="text/javascript" src="../tipuesearch/tipuesearch.js"></script>
|
||||
|
||||
<script>
|
||||
window.onunload = function(){}; // force $(document).ready to be called on back/forward navigation in firefox
|
||||
$(function() {
|
||||
tipuesearch({
|
||||
'base_url': '../'
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
194
src/Models/d3watermarkImageGenerator.php
Normal file
194
src/Models/d3watermarkImageGenerator.php
Normal file
@ -0,0 +1,194 @@
|
||||
<?php //006ed
|
||||
// This Software is the property of D³ Data Development and is protected by copyright law - it is NOT Freeware. Any unauthorized use of this software without a valid license key is a violation of the license agreement and will be prosecuted by civil and criminal law. Inhaber: Thomas Dartsch Alle Rechte vorbehalten @package Wasserzeichen @version 3.1.0.0 PHP71 (07.06.2019) @author Daniel Seifert support@shopmodule.com @copyright (C) 2019, D3 Data Development @see http://www.shopmodule.com
|
||||
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
|
||||
?>
|
||||
HR+cPrL61ZS2v/euswkJ5EKRRzUscK5WHdbRzPkueBS/B1Z2oY1VLsv0ta+UEO9j0ziQJHbiDw+2
|
||||
+hcQH4SwYra9J86Ai2Fd0iVeB9zpge+7Iwfr2mo/DIXX9sjIWMCtqWpDLedCK9qC+CCcCQ08y0yr
|
||||
snwOGfWnXrSWZEzLDi5Ch106GQLkdxdg1E6JEzXWJclY92JUD7WwQqpMxfrTs2ygr04AekY8c8lt
|
||||
BuehQktv5s1S8D5Jz2aDH7YJOUR3Gh37y8MgIZkwLB4tHmLeGH9SSAzJag5VxYX9XV+d2ICwTQRe
|
||||
By1fH8C75NYIc8Q3RfCLKnDUG4vt75yoq2qE4QENlSk0lVnImvaukb2watJ/KXZ4sQ8Hkn7BKZ3O
|
||||
vGTPTVuU7jY9FO+NyiYDYMqU8swv4KOWflj9WVzk46ee0L61kfkjdzzVEsi4xTZhx6grOBiGdfbH
|
||||
Iro8SABhpk6738UBsR5dbysDvmIYeOP3OtTl4JsyDUnahToOkhskhX2uG4Sv04CP4tUFTMkPx2mn
|
||||
KqWYGMCAhac/l5J60FqW5NjP8v7wQ4gEXHEDSWJsbGwccMaVpTJo5dhp1MoWg4JNR77UvNx4M5li
|
||||
XPnelxnNO0Twv1GwC1ycm5X/3iy4M1u4IEj2S/liHDoPsqnW8hxxqq5f7e6ctdVlBndTq51Ipzvf
|
||||
VpqHUm2fC7o0atLRs8Af2P4CrXkUwhKaTi3/iDalgG7oXPlqQmjc9sEaZLXZkSRvESAuVeUqBsvp
|
||||
QG3EVb8Tc40w96qT/mIs8PKfcSRWBJGROA1gFUAJG3sEWSjRbJlMJPPaTi9CmllKM1Ch6XzUnhHR
|
||||
swcbc8gVrTlVgtcXzPxbtImkHXeO1uCJ1G5Jx+m98xaBu8XGRxHrPLlwcApyZrzLVFDuAdTVVymf
|
||||
8HI+2HbV4pVjpRTYf3+9khAXrimeWorhUUlvOFs43yJFhtjtRNZHyY6PcZ9mUBFVbIHUooXoRsik
|
||||
CUMukTxHCN7p4lssN/iZV/+ORQEmc20T7j1bDsWbpLb478xxTJwBFQc803Jlvau34qyu9Ff0Ym3e
|
||||
ybHI5Ys0QKzhKC4W5apgeIx15Ys+X1BMfdxTr+Klni5BNoX9hxisio+S1geNzK2GyrsmiphOxTJ+
|
||||
r6cADDww0CxIfQO53IoQJeFebO5CFopG0wtQ7NvJ816WZgkoyP9TegO0aTdChsfRA0hxFT0pXoL4
|
||||
EHxjcfMu4UNeunIk631NfERcw6SXeG7GhEsCf57iiFw9AbR3weMHYxfLyv/tgZ/DsFKzJFmCttAq
|
||||
Slp1t83QrSS0JQNXc4lMG9u+0PLj/Lw7/qmdWnWX9OBvXJWOfQmtzq/HW30u1/AabfDZB72O410z
|
||||
Em8HSsi7DBx4iLd3PDlaHdhGYi6lJe6oOtvbkiWLx1x8+odt27Yt9Lz+slf17kwpdXLLGqaWTDba
|
||||
M5MqHv06ThasjyYEZfPiOvN0wBNEBsQKMhNDTFmBcpPy7+jq7sfZWyoWBkohp8YC/AGXqVXgrd7Z
|
||||
Wp4pPEWVW0q2EoFxWnTlB+rqDLnmBoTU9WudfQto0Bd9IQ0qNp4BDXd85zezn6T888XA0oYBybVK
|
||||
BpWNNiyDNe9b0DLBn5SDRnahHls+dEZggWI/mNaDYKH/i+2QMcMRi+ObHHdS6IrnjILBjX0MFQr2
|
||||
L/w599fLQkCzoVHGTiy8MsIVCGn49YZ/S4HcxhfYkHnVANyug48HRFILXYn7CrgPaFRY2CeH2ZFb
|
||||
7zoWtP7TUEIJtewy13L0zReQRynnhwkPqb+Bk53jJWXT/LYcHpOHeDb7KF7g58MmUmuEBchwN6ri
|
||||
AIn59CtmT0nrETPg7Pwr6JrSv8HBbCTqydpfsisgfLhbCcVsTzacfKQhCVGAeuP6OOrsyJt4MABQ
|
||||
MqusAhQxfvItKgiq3IiB4SUKHdunBTQZ6EQOAFVVvi0SzcKQSMXCbKn8Eq0vm8MZjzU0XHyO8Oib
|
||||
t3XJy6FEUPyJLJRuThGctfvc/s3cxmmgE/g12P/d32jqCMuiuaOICcJf3Yv2In3GqNZyPFzU2w3o
|
||||
gGFp6O59VxqG+blCKoFyPshhfE/ZzwQJ6m34Aq2TLyJzfVDh+dxrt4/3It5aEUMglwWSJuGsjvgU
|
||||
5P19029W7ZxJYTV4zwrn21H6YZxgbPb4KvD7zxK6rsica7YAn6XzEN9TEtonaEMxH5o/ZeGboH1e
|
||||
l5tk5OOTevEJoMNsspYEZj5/V2ngcBROvPQpkJ9GetUEnbO7sG+/UdUO1zjbZ0hPDWIYKTKfS6pB
|
||||
4UetvlbLX6Psz7lu0Y2cVXVRUE094Jk59Ms5Rbdy1H7jgP+939+SzvTNs8i74mVXlLNPSKrV2tRv
|
||||
NVnmd3z3hXxv4v5F5IkdHw+TWCFGlhvfhz/mLyia+5TZXogxvF1r2wV8DMQM5YT91b63HEhrlCPe
|
||||
B3e/ixwS2BuUhxviv4366mh9HbeKLvr4QcUHM2sEjdyq7CwCakaX5c1AeU+6BAFa75xrQaRVqe57
|
||||
0O269uQ5LVVEg0gsgKSOuWjJKanKG6P6Ythty3hqjNuust94TqEdhj5aWEtmilhAklG4MGeSuHJO
|
||||
WPTUM+UL66RCIusKiuhiuBA1/5KQXkbaUVS869N9UrfFeZ9KvxG9P/eJaKF/LNo7sLZ2/g8zQoCp
|
||||
J5DB7T4L951kh5HroKqK1gqYnp6Zt4R9gZP9PnsiCiI+xu2RU1CamSIY/HJg4a704QMjxOFSyXfi
|
||||
ipsA5p3Uf4J2c+37tcXHwxw2wKFa2ZyfE9JYB3AX4YeRfRUMR/TR3Z2P29JueXBXN/lApFhHYrjB
|
||||
8+z4BguH0PyKHh7NfFK+KXXRQ4S7Fz0Gmt0EnxsXpbK+RV9IftvH0ZLeADbblOPXPPvockuuabUK
|
||||
UwzRUqp3IdP5AICBp3acxhVletKvpseVqZxnEySFNYiB7PWn6yH/SQNVahnF71fQyp04KgQgfm5D
|
||||
y7Vkkt7hSTmfb+M+W6TRgzvUA4J49NuLPqNvcJwELP0Hslam5Cw/EKEVcix0CXQ9sdWZGpvIqClO
|
||||
YQLOqmYIpZtGJwSh/s5IoqK80IR0zH+H94sbzTETQ/ya+CWLk+j2s+7KTuYIq5r0ew1Aqrop2KZK
|
||||
HK7mYvhd1zN8tm6h0Y2tbXfAWEByi9TahbryvK3GRapuTx+D0lD8yjrs1jQ6J48nNx6kiXGOE3aA
|
||||
/XqtWBTOtKAstcFpc8Xbn2sq0IgPbNuJpXpP7Fky3flvUn1ngD7W4342fh64QiNaBxjC9z30z3bc
|
||||
AtQ9v7j5fuidUqzCNDgxuyI2zDkj3P2RM5JnyqWmSKDtL1guortW/nFezVvyMBz7CcD5RI0fKeB2
|
||||
pt6+RyNWiu38U7lBoWl6E0rkJsKOJ3iLtWjylzjCBGrBuxMqEb/gxU84Nh/+eBD6HR4GuttU20LH
|
||||
9la7/qo9DIB2tpFoFhjScBafFWNza48aZwwgMrAfxuYRtGlTy16FXrfmYysSEuxmxBN3tpKcldUf
|
||||
21ckeC00BEQ1cCsNsDhRL0kApQiUvyFzeasUg8FDdj+J/C+blbNRsxPQTdJsl8y//ossg6VDJ2T/
|
||||
eNqTiHjUFkmmNdhTKIRmzp0ctGvyvI1fNeI04GPakrKErRWThOADKOJ8ZcEz22NP4olV2Kxh7CaP
|
||||
xs3whRJDoFz2lzLJfEIyfsMExVzFA3rTAUHS+4Rqr1udaS3F5XcmaxoIQzmdexkoQuiBa5q/jBm5
|
||||
EmJ6NsqqEl2rm20qEsGPKrwMYg5DsKoBpuxPTEJeSceR3DRXED4tnH44v6DBxGHXiBXHZNxv+/xU
|
||||
+H8kYdHzdeK7iT+Jeyx4vL3Ytak3dt9giA9FvUxKDMQLzAVj4q5hbgh2DpftNpjuWQyqyRdfygRg
|
||||
rrsFPLmi3R1FzQxtVV0ZEFwl7NLN7txZtXQ+IRVwabjs0SUZchdpYdldlqPmG5fQ1N9r7iQKMZ9E
|
||||
UXuL1bNMHkiIZ6CJTYfOhWkLWhLfJgZxlogNkuBIqG/L6qP/VoMVN3LKle6sGU0tP7eddN4dH77v
|
||||
DziIXoBor1SOpzhG38UXkaO+lxTAz6H6TnrDFl5Dr37GZ3328yOn9TV8zW9AgwcJrfykRfrYr+hO
|
||||
/sI0JO4Bo6e98yoRULifUO9H+KMOOPtAzPJVPZ4Rgv9XoHVo+J3wAmcbf2Onjgo1gSemJQ7SjWa9
|
||||
1Xdbf9Py+9m6Q865y9FzfCVe4R9uN3RuAqOU9uZALATk26JvIF3pyp2GOMMdou5HGi/CeSIyCBvG
|
||||
itUz3WIwul4AmZSw0LyqECcVutANKfmJyx+PVj9+W1gA8Qi2RItaytiRo8aXYyShUhpqvPpX6RY3
|
||||
Hwp7+X8t2hARYS+13mdhAEWFM8eUMPbFPKl6gspvhyakDHfrj1SC8nv8FqE32IGdjt+i2HAUoV/n
|
||||
oVaV/tmmVE4PbJB+LuN2Jur/RJho1DebDLbFNTJCXAnG2fZsrx5aM2bEMibWaiAUc5E7GCeKBeQS
|
||||
1sVL19cvuhra7RvZFLSxn832qEnDSV6TbGMUUI3VLWOoYqrWFHBJ1s5gnBPhu0dk6H1Ep/H4sBZ5
|
||||
e8z+lmAJnbTJgUuFJVLdLOOsG3MGgRwEHyK8tDJRliaFP/EwChIcCbUj0GhuWGAI2MkaUtJSEvCN
|
||||
+zJ0mXEcbuSwL6pGn3sW20nEdUWFWD1VR7py0d2wS17fcxlkB1k1jLdDgF6hvXK68F30YDYxKDGH
|
||||
tPZ1rIfhWKrq78/xfqRb5Hb6241NzT9mMG9LLXJ6jD46rMV3xviTpgrofem32d2/tWBmiAHzBd72
|
||||
sorqyBw3ofCAlJ5ZOuKA7JRQQGh/wqpzb0yJJNHItyql0iyVpGv/lMGh9M3lrvI8jY6D7ZHDLgwM
|
||||
wiX6ryeRdRitAVc82fY0WK4K5ulBdYwyE8aC1Hlld3M3iyQWKNpBZ9PeCGWfd3Idx6mgYzqtXbkn
|
||||
9Q6EonGGlchLzzqMpu3/prGVX2952o1wcbZprX+6Lrew1yCTKXZhbi9nV7QaA5f3KXwNCSVRelXn
|
||||
ANVjBKTni4GtWi8uyXvFV1oP9/v8D/kPEwfww+rei1GC8z9guhzculGzPWaLI/1oTmgdUQbxA/IY
|
||||
jG+qC6/9b7WxkFSkTQ8VKTj9nSyafhEle+QG4js3UUnfDbtGRrRBaAByb08CkUv/Ve/tbjN8epBN
|
||||
Q3F48nxye4zA0eJyFVbZ09pcdtO6ecZ060Gq97hHUEVeGkYnwOwtgTicPveXuWzA3aPppKFllPER
|
||||
OFDdcbcCNpeb+Z9x7hFiMVpeLUmLRpq7JbOFrI6A1dxrfFTswbRFeNYSOmHErsg+A9p5lrNCUiWK
|
||||
jRRoQ8v4ECxJM23DGkEvMVWdDheoCvvwHak8RYXb0FrolbvHPdX6A6iZI0+fao36mZi2XE3h+Im3
|
||||
ZaPHCrNZaJQ0XP6jku3dizD+vbuD04VTSCPfiqm9a5ybmpM4H2X4rL2ffSM66tmZyIHY6z7YjJ7S
|
||||
wun1zcWero0Qp6PqtWJ+RXANPBAovZD3Jr8dtj3pb7udHZXPpx5pAcg8dmFOjTA1tL6bUuVDwmxe
|
||||
fJbFyxMD0zMlC0wNudyHoVysm27M+ELKtXz9iLLhC9tj5BaDipDgIn5i1fdhN13t4jq4ipLDdVyb
|
||||
eEXD/NNSRwITMPlUD7Qt/Y5xNWFC0wmUp2895yhhwE8r+1O5+PvhgdaknRWTuzzF6AgUwt+zQijQ
|
||||
mMP95aj1LnWxi2lA8+1bmuozakAalNMn8OLI3wRWK6leD2pJ9iR2ohfeqEODL9GbkY+dvTlUW8DZ
|
||||
WLrUTBVZKhlfW+bgtD4Egk+Cprd2qOU6IY3de1oFbtoE1A5JuWPBrRpwfKWjHBLWh1WrhOTufiLN
|
||||
Tb9e0JkqWsUn0JwOb1WbVyZ6KUkwQj+W+ThGJCR5/4XS0HglM1o047Ybsh2toYKoLzQr7NNhI/qP
|
||||
5ObSzXzBHp/ncvOhbwzuzb0X2e2i6J31QTXjDPkis39DcM4DMzua0fOOFp42c/Quk1oIXq+MqfKV
|
||||
dvzqO9EbyC7qbd1Os2HxIUKrXJQCo6SU951ohCaESs9bpLbQsL8cCdHtOzrSWvTMJL6rz2wZ7UYz
|
||||
utH+/7NGWQjAjA/TH9SryN/c06YdTLBeiFPc4/3L7aJcDOPUiuufdrGVJNhPuYyX+3/NhWRYkxQD
|
||||
jD7IDA+t3zG4xSUeaeVOaUraIDe2nrqUeOsIGxDk/PZ9Qq6YueqBmdt2ClxFP5yGKAq8JjgVJshq
|
||||
vhbUIvQpDSNhaYJFfgF2J2LN5glGCcuX5lAPhzU5q0ChEWiqEWcMWRHH18l8HhqYFeI3t7mEkbBi
|
||||
QAV7E8NDA1smXf0X/R4deq1Gd/tbiyx1nE2WH1va4ee44IV7WwPRju4GadWYQ5A1aZMd20X932PP
|
||||
k8II7Lu3vy7EBrUfZikJDZcN83bZlwFHIt3gh0//bDsBahWixSF66bS1ePZtMkjxnYRdRmNh/jyD
|
||||
66c+xrZnGnb8onJB5Zv5rHaAagVNHGf8n8fFTuioav8AkwXahGDoMJLfSxnOVRKx+pRBNqnl2wQg
|
||||
b+hkks63OsaYiA5Kk7YeQX/LDsw9g83Lf4z5V7+EcrPz1RmcZZRaAgNmj+euGrlXDjyvRPgQLlDr
|
||||
zs1y/GGskHF3eorPUTqNsWqqJDaWmwsME74OwSH/4JglFOqYmny1EUp6hB6LkpSx0lICD5fkVQhI
|
||||
hmK/tnDTtKpzj3RvMfh5O8FVcWQs8sEKAaBkOsQK70fnjf3F1h1chCX7a+VwGBuHmYPHTEkI+5e8
|
||||
LPuVmBs6HS/FZqs/I/hRWd9u2Jb9eFdS4JuqNvYESqJqpeHtOz10zySFjQUb83YxH3tt9GYDmosr
|
||||
XZufpfYz8ILL+ly58z3sBkdievVo6lBc60bfyBvWnMB9//kSIYKxOLsT7nEldhLsed+0tSiWbZgi
|
||||
giCkfOzod8Qs1I+daI54qnZqBCZOxOdFOCFuRz4HeElBi44W47QymKzJXFlCLkxrdKeYeJ+zWotg
|
||||
EB2tFGV9AxTyI092VKcS1Ziw9NPapUNfIpxuEEY3Jav7h0BXUL0REfxrDuQL7icPDIfPaQudeTr7
|
||||
c7EjEQH9nLlcnQmXe37WqXYQLJV9xZF6VQuJ23RtYs2wXW4eDkZ6Rsl7+p1FEYfQrvEtB4yYjT05
|
||||
2cruoahCeHAOn23pMK54ce71YHYkOWFOoJ3ZARCHq0V4MQ02Nuvg6sUGwxdWhgs/Qi5llUhsGX9h
|
||||
C0dFOwOBU9crO2mLYy/8jx+mHHDO1pzBChQ7ZKJKSye9zUhKglFjXIe0wzCruZaK1pjURLYNutuw
|
||||
oB4cjbReCe0RLEc8NVbU2wgoV0cTLRWS+MICx9W331AI0GAWoG/T1xQ5sBeerbPWyGTzX3xgxfYY
|
||||
DI5N+pMj1BjmdrHJ7y6dAgxd8mJKVNgDx9fgzsZ3pxciqN3nn2RUyIg4/fZnsgZvThLPIuoZMErN
|
||||
D0UGPZWf6G9pcigiStBlSaakExYjtmtELTGmeQaiZ+C2+CudACRVBzFULhYCGz5ZGWE79ZbLMeVK
|
||||
b+CXN57xuu6Ug1/2Op039qw5PjfScV7foHnaiBBhhjyuSRjtcjEXuGX6POqwglO6z080oXQCWOd7
|
||||
Dp/ujfHMr0pT723DquZn5XkJ1U04371eLxQce6EZymugQh5xwVGtQafc5ze2w+QA/9YAboxjTClq
|
||||
HWBGRvbKItVu1mog56oGvqoYN6m39I/oWltf3dH81lB3KVWARqOBkuhfZVx070Pi28Oa/FwJz8+R
|
||||
+XGvBBygP0ZhyqJC/Ko3zvQof8frsBvhmXgUvEO4k4I2NV6UXqpmNlmAEBP3Oa939m1DTVzVjvPI
|
||||
gle+OA18bTdEi199fha30y0J9czEeX8QEFo0gaO8l37JVYu/aVQ6Km0gBRNq8sdMgff9RGMomkND
|
||||
87jKWvmrut83ET2M/FV23HMLHb7xiTZY0SezW6vz/rwRMAPau4zJLQIhPo75v7yuXhv/iw60G7GL
|
||||
QS1/FtSiBZzgMBtgC+WRQyzh/9cwmg+baqYgPVwWSB/4Iu8fa75LSjsBeFfBtvy7TMPU23A6PgQq
|
||||
sHJaU0UEOke0yyUYEcRS8YDKbjsvBFK2rOn+eSNbJEy4PzRKhpd3Mt4a8BCODdifYjyvBVPLyjaB
|
||||
Q6dxUh318ImhBciwGT+Si4q26vIgXoW+c8gfRGC4ENzYx10NcVMEJ4veL6gnktChiZqqARhf3DpW
|
||||
bHLWysafM8STYxWPWxLAwBV7hQ83pT/qPZd+uoPrs5nYpCEl6vWNPmlnc3dGduZv3XYRXoSXXXPC
|
||||
As0cdXV9vDB4nkj/Rt8Gdi6a54hB0fVWUnJQyzyg1vKuXdu/XX9PEn20+oT6MdHApfiEBoTusllW
|
||||
9WzQ7eSQzXkd4SVF3anGEj74ssY927Bfqgcnw3U9W3unPrJnzxROm6NWAHPS/HLA27as9rSvr7IA
|
||||
iuVYM0x7S6/s5DL+E1cZ8AtPg9WABO9pF/J6iqbUxdoH0WiHAm60aODqrxwnP87YHbA+5T4hy+Ay
|
||||
DsOYFlx6GYsjfZIKvcvir/b7g6jix/kqIuYfH6I3nwkHbhj7qiQfCRTZsmL0mEfGMLUpCM4JT9zL
|
||||
BdTZsu/MyliKRH5Imw/+IGKDYnVZ/XsOCXHhgDxcXKDnuN1MUwnG1Vr20VFVuwYMfaiJSVD1tWO0
|
||||
Zqi357y2ndAs5eu20uby7e4xtGQVG6zukWbOWMJkGXX29ol0+gg53vR8PJPVzxg9FY5bB13LyRwp
|
||||
/bJXOXjvnTnQdXzethmsoOUkg+lQbudHQiz1HiacChnwxfPbSjhBoWXPSROt+y87k+T4HgvW+9Ry
|
||||
7TctJLRWyKf7ogKcpknAlPyO+jB1p5rOetzh8QRAKZ54o5e9xIFZ4VSx2P+JMvat5GQnKcT98OED
|
||||
eAP4xMTEZx2sLHf/CqgU0ewWoBsAdQB1a8okA9/CSec3K8lQxKbf+D43z8Nb44ytfsC6gDrL5uxq
|
||||
tZwSBqFftNyqXIfu0G8i1QqVuqgHZA0dNF+drIXYdbOaQas5MQVqzBvUrPw3QUl72MeIYw5TLLIv
|
||||
47A8K5ZhHYZUMZMndPJ4OMiASrLKoRafFghAXTyFMm7wa/FtoOSeAP/rLyFQLjz9FSa0uWlF18sz
|
||||
MDZ+Xwal0fZJZx1h51YihZQOv2gr0xz2RXsTywcs/LVrYo0hElbMmBTCVrZHNXiwflC2H6iX94j5
|
||||
Cyc2WdGnKP5q+J3h1CK1ZtuS/dEKHRyO8DKHkj2/wBmQRpKG6OgBN3P9vBBfDT4uO8nWSS577ukE
|
||||
N2XPTC+jQi5AqYDt+WR7dLI6+zBalsnB+Tshd7vVpFlY4bwkFvdt2Z0WDHYlcv8hi5Upt0RhC6Ga
|
||||
p64GwJb2kEG+krLbkEfpkLRxDO51RYH6xTi2a/8ToqUsOP9Mjs7uO3e609TFqnZ0WseW1QexK8s/
|
||||
AnIEXd5cJ7HM9RomUM+5O+qOkn56ItpTS0NmxwpgcpLnicjYwwrDREswJGsmD7Iz/xImjgb5Z3Cl
|
||||
w2ipxICJEZfJKW7F4qyDd15+uf6pZH8HPBgZpDx9nzHsoMiA0ZbfWAP52bIosLNS7Rb9aQHmOh/t
|
||||
Xu4qsGHQMeOxA1xyncLU+gev7EDZ9p06DsBRZciw9/L7r/gSlz+zxl9arhWkGeacxWvRdgJ7Y8Ub
|
||||
D3g7xpzMea1oDD4nN+t2NPDEkAKUZHNNKwZgO/jv661xM8XpBU2QAwXl//nS8Z7hd8WA+ez8W+jW
|
||||
0sXbIC67Ue0mxXu9Yl9r9P6mCUYbk6EDVgih1GUZOJ4bIy/x2GdSpt/KinSjc2IxHj4WATS5pbVF
|
||||
fqUrNwUFNtmJ7ZOxBovvyce9dzuP5dJa6LZC1U94ujV69/piIIkyeglFM0+RDo++lQeSEf9Fa6o2
|
||||
f30Y0FdpQ8Mw2j3pltdnwCcy1bCfpHYcuJOsFNgvzwzM9JFG436BbprLWk9u0Qhu3MJfvxrkaeTy
|
||||
+ntpM9j6IL4XDFFd1HFFYvglMYkeoc2guUfrsD6nqbGCWXQ9+JkifHQ9oRAkzHP8feFtMhbZCymL
|
||||
k0gs8ByXRUCECWf7Tvs8SSX79ZR7k8xzn3G/k2XDaBFgDbCpRe+AKB/aMB5YnU7QagbAGIn3DZ8q
|
||||
DSG+Au9tjtcufnXqfuVuBOYgwEd5CtYFMnuhLiijWOYC7gVqiV8gWXI4e4HuFpVDo9KPr+CouspK
|
||||
pi+ySUvUu8ic+BzsBZVPCLxAc0yPYHtla+62/uzhFl0vAiy970yqLT6SNII8UqQuQdOYvKFTnYpz
|
||||
XL6mo8P9MeDx6PZljDm+RkB+G07psgZsGsjiYSqZm1L9aQ2mbG5N2HUTLDZfav7+J3ORwvn4GUw0
|
||||
u5MwfOK892Tm1Lne/QIIZwIPdBsFbXY125IN4r1BXbmUzEKl2aCfey2H4H1lf/ic/xjUIFtZsSqj
|
||||
ZQ6ne1TAtgVGXQr3Y7g5lfVb7pGjmxhpVbWATHc8J0yR+LuXZidFOmHRdPD1u8jeGpfWbhX/gbQF
|
||||
XwjN5jkp/PyQBdQFhG07ELHb7LUtSB27P/VyHhwSpIC755jpo8gkdYmWDUFLoEnXvTqIPWg3Md5x
|
||||
I43nqoVUjc1ENlBvJibHNpkSCSwvT6v9mKirEvy+4rtISTfzvUiC9TMNmYEFTJ4l/gYrsvwTrGs3
|
||||
S9kTjaQQOtbZAKPcFLCDgLf2EIkIB7sDYy0Ch2tiCoaDIp0XprBzdZcU3nEqE5Vs6GwpbA+URQha
|
||||
a54Z/tQnLvVrMLdHn7fyNqiUU13/MABf+2UNpLzWUeeMwWEdNTy23gBhWPP9VXSggCSZBnkR+ukv
|
||||
IWuHQxQb1EwFI9diYPSLKWwxJUcNW5Z8bUniNIZoPwfc5BcR/hD73ojRjJ/g6YpVpIdIekQgl12B
|
||||
uecZSd2PDIam5lyEZcd/lXDuT35zMCkePCD2N78B142Ue+yqmE6L6RIULmf3GcWo31dZC7AFxmEY
|
||||
by3Sp+GOlv9dTEin3yQn98+no4w1AKMUPlVQrbFlftZaovbOoXl4LLyClEbFLS6Xu51BCyfaIx2M
|
||||
U/8co6xEaKPbz5U9pfx90J9cLd9chGXLL5g6V7NNLwII5sgM+h4ZWOsT4P9xfPORHaNOdQZ+d41q
|
||||
7lbMhIonzCOo6F77bK5NwusntbNGGH64MavrAS+8xMHebze1mmfN8c6oFS9qAq48JU++xA4swN3B
|
||||
RdFrYn26Dg0plszvUxaWPUQANE+18BSUDR3tokdLX+s4b2+s9WG5+ZTE36erqRTFNdIHVYMpCtJy
|
||||
CRFsK3ECWp7LkMhH9kzQQt+ZJh/WZjQO/fn87xc6yjb3Fi1XoDdEo3CQ+0bUQLcfceXjIXfMgICm
|
||||
x3xbmNXZiV6S+5Vt+CkgXWj/OZk8EvGg/kGFmh/+jhX0y2Ms0DMaG7AiBzHhqHC3HAQ40cvX3e/H
|
||||
BCLjvRVGkTxm9dthHvE3MRuNsFwmwSFHUbAFcrC21UYJrKD3Q0R2zz+P1lPBX4pBv/hhQ67WRfwb
|
||||
MgaHxO9AY4CrUMDKfJeAW24ax1ThwPx19Cl6lR0+dcdSVRWMzyhoVXvdjeo79uE3MxWLH/oBS9s7
|
||||
WTD75lEQJTCLNZyT96nbR2mlwrlAWu8Wpb6NPjXBGerrxGADoH/YdMXVoH6ca+oiYgkZODnknhpW
|
||||
ySScm/+Ha5AIMbI56t6wBBcnSN7aagF3Z7xtaLRviUeZm4N6mRR9PVLtGja87jUUOiy8+H/J17dB
|
||||
ElSi1Qv30G0reqdPeY8d+nFsW72hS/4dMSwsnOoeeAaqQaVy0ttXeTNfkMxmpepXEIU/QqhbYZ4f
|
||||
se9PYwC4LV+PxOCPxFqUi9krrt4oQGOllDguvz+VvIbS6h7exCyhb8e3KOAZStlzs1ux+Fui9qyO
|
||||
sVzZm6L/XxV/0ZRGJfzHS/dAplKAq5j/LVDONODl94ggQP2hmk5bNf7pqyxBxImkH81hhv5GOOB7
|
||||
nrUFzQChG5IE8q7W57Ic2i44MmJUkv5WqQHv4UlPd2EdPckMTBf9MDeWq8vQO/OGjcveMk3/VAfa
|
||||
QQA3oW8MVHZa7Yr5w13ghgtVK8Z8nvByfgYVf137TbXYrViCb9/QW69nuNO/j4lEArpxD5EwOUCH
|
||||
v/fe5r9UtcGD/whbbhWGnna3Impd4rSM8MabK5NsL49+M/y/BwWcB6LQwQEqP4QgqLevZn0eZQDe
|
||||
Bhc7iGomV4O7644aUuk8vkIFqUnAurRAVYRDdzqHpoyqx9YNu0oJn2xlhWjhObVxxxjZPfxb5npB
|
||||
M9XCLPdCH1OsDSu+XS6ViTi5D2fcmUPaB9A0yAzv660aKUf/b5UwNziPMZWDCuRAiusriUcktBf5
|
||||
jiYIZP52L/sstm2fmlme4MOHwyCOU8LTk0YJAFh1CBYTBT7xuEpt+imDhihNvfyjt7Mfsm43pODz
|
||||
FJBqg4nDwELWHgf4qvQ5W/uv8sxn4x0DyW7uS2q0vWtsKA8EVNa7IYgU9x97tHcAUrwr4bFWdrZl
|
||||
7WeEvvrGm5QO2px/w1RZDGp42wr3ec3ylASdGhaomugna+VOoAv2velBGDIj48RTarCztbwPSQD5
|
||||
1CP8IPlsaydfKv2Oe66TbZ5o7oLU2lXfzQ45GMqHNEYFabP0hGjQBOTShOL9hwpckPZGPY+gyked
|
||||
9EZ21RrNyLJBSvctyPr/WcS6trq7I8sJPyh7VgpiOM+vT4TB+Xt6ZUQOkuAm8kSLaylG/U501/wi
|
||||
N+i6hYuJxsBUyNMenSUG9SlcHVDfleJU3IWHMz34/A2QDpXzFdMIfAh1Z2nU2P32ROxCZQf35Akt
|
||||
YtCw1jzcYw9nXNujcIkS9Ya4nQeF/3GqXB1Ai+QZ4yN6Wo7B1STNIV/AJYJ8qpf9g7Crex41dyjQ
|
||||
Wf1fo4S4TEeEnkhxf7N30k+F58kxAXOEDvX00Md0pXusbZPvZRV/qo3kOh5PV7Zz+/KcTcKxy3Id
|
||||
4ejRQnbmMzWH7B31BGw3ECkQ1ddBocVRKz+x9nQDhYA4mU+G20dpVwGoO2loKhBq/r8A+gC8pPJx
|
||||
AR60170OI+sScDSDs2sMm/xqPGfedvoESL1ReyveqC5LJlRMxXwGHnObioOurPsE48wx3AaVKnEL
|
||||
3pro0tzSPXWmE5AMptZg0EoJb5vF44oS1+5m6H0QCR0RL0TDjKK9RulPU4UiNFQFKdap9RndAT7K
|
||||
SkEEAZ/BsvOaLhLt/uJlKDYQLv1colm04Deu7PU4pCBEwvhLRdPVzuBBgZSmXX1/nSDbB74Kr5RY
|
||||
ncm37WycMkgPX66jJUgcOtOLbKWjGQhUhLPiuSmSq9HLJkIwN1Wgr4IuYJ2vrvWwI7gKGarbShCg
|
||||
gKz7kGoVjCanzFDQQxpMlE8bhbfkcnE+KjeV7GVAkzhL65juxYNBb5JyCnbRP8Mhig+qqk+E0Fjf
|
||||
94McsnexBYNKmFzmCOih8N2QCIMR6aSdhA8krFxmmdfE5862yiPKdMmn2qmm8AVJn3Jm8Ad+2GAo
|
||||
MSusx2cGALuAjkIKhWC3jAltw938lzEqOyFqDcnWINqeCkPHgmt8+I+KwqrCV+IE/sY0fOeKRuZZ
|
||||
eJFKbs+1PAr+f28fc8JWZHnf/cMZJmLeYCB9dgUew0eCWBBW2DiIWsYUURSJZ2EWAeuhHuYfinkQ
|
||||
rO8Vv2o0Dnjqhxh5XhTfcTy0hVk3cz+XHVCCbt1qx1JXQbOMWHH6qFyWLbKvdlTQmksGbJO2yUhO
|
||||
i4Fy9bmHeg5jknqop16rLWKNie+YH6g1mq0l1sfVB1YRyxOMGbQBsIkm7j8tjcri3MAMmrwSmM4t
|
||||
egb5Knul5v/fQ6H1WMCbuBQbrUySuSYY+woci31bh2HrR/WJsCCaByY57rE/U3V5nYOt5e7HR2wB
|
||||
b2dlEz9TjfCrJyeu9mxeP/y+IAZJf09trNioyBXOmU6hN4lroIXREQ1XlnWR8BSfhb7T/EEAIUzm
|
||||
sfI9fSLPMC1nxLVT5RV2ouCCiLLUFPPUvbde3r54tfrdLxnEFcrah22ssEDCzYG9zEagKzDVzFMi
|
||||
P9y41DhqELCNVQbjMKHotjaiRM+ceBNrY+luVggQ4HflvkRChklNN/wyZ4x/UD5QlnMHvrSF5sEp
|
||||
HvY28ZiRHGXYzmRSeyWDdJQcWPoWXnq2QXjCk3SGvgq3iW5dQYErNrlDdD+/Kvjd2/Fay0lL1qCd
|
||||
JWlEjuVPCLBkGl0Kui68dYL76smwCPTS+Qn5WuiV3tHCUcHojzL5HAD6X1HE1McKRE/3ZWas6QIZ
|
||||
DhMGJWt4TrytY/tJb2mAFe+6NqFrUssMmLOb5tqFmxqlLpWKqa0Dq9EPoSP3wV6CQN4CeTxJ0CKw
|
||||
u17uDoNfPPQyCL9IoXrnB64m+URKYCJzOT+LPOZoDYNCJbyWFU8sXus7IdP7vCCajR0YciAMLWld
|
||||
r1Ic+0j5HN3XEdub376EYpiogkF5HNbZGzZ2fOSs7S79wzQgkF22Dsi=
|
211
src/bin/d3watermark
Normal file
211
src/bin/d3watermark
Normal file
@ -0,0 +1,211 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
*
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
namespace D3\Watermark;
|
||||
|
||||
use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
|
||||
use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException;
|
||||
use D3\ModCfg\Application\Model\Maintenance\d3clrtmp;
|
||||
use D3\Watermark\Models\d3watermarkImageGenerator;
|
||||
use Dariuszp\CliProgressBar;
|
||||
use Doctrine\DBAL\DBALException;
|
||||
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
|
||||
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
|
||||
use OxidEsales\Eshop\Core\Exception\StandardException;
|
||||
use OxidEsales\Eshop\Core\Module\Module;
|
||||
use splitbrain\phpcli\CLI;
|
||||
use splitbrain\phpcli\Options;
|
||||
|
||||
$bootstrapFileName = getenv('ESHOP_BOOTSTRAP_PATH');
|
||||
if (!empty($bootstrapFileName)) {
|
||||
$bootstrapFileName = realpath(trim(getenv('ESHOP_BOOTSTRAP_PATH')));
|
||||
} else {
|
||||
$count = 0;
|
||||
$bootstrapFileName = '../../../../../source/bootstrap.php';
|
||||
$currentDirectory = __DIR__ . '/';
|
||||
while ($count < 5) {
|
||||
$count++;
|
||||
if (file_exists($currentDirectory . $bootstrapFileName)) {
|
||||
$bootstrapFileName = $currentDirectory . $bootstrapFileName;
|
||||
break;
|
||||
}
|
||||
$bootstrapFileName = '../' . $bootstrapFileName;
|
||||
}
|
||||
}
|
||||
|
||||
if (!(file_exists($bootstrapFileName) && !is_dir($bootstrapFileName))) {
|
||||
$items = [
|
||||
"Unable to find eShop bootstrap.php file.",
|
||||
"You can override the path by using ESHOP_BOOTSTRAP_PATH environment variable.",
|
||||
"\n"
|
||||
];
|
||||
|
||||
$message = implode(" ", $items);
|
||||
|
||||
die($message);
|
||||
}
|
||||
|
||||
require_once($bootstrapFileName);
|
||||
|
||||
ini_set('error_reporting', E_ERROR);
|
||||
|
||||
class d3watermark extends CLI
|
||||
{
|
||||
// register options and arguments
|
||||
protected function setup(Options $options)
|
||||
{
|
||||
$options->setHelp('Provides maintenance functions for article images');
|
||||
$options->registerCommand('delete', 'delete generated object images');
|
||||
$options->registerCommand('generate', 'call object images to start generation of not existing one');
|
||||
$options->registerCommand('renew', 'renew object images');
|
||||
$options->registerOption('version', 'print version', 'v');
|
||||
$options->registerArgument('types', 'affected image types - possible types are: '.d3watermarkImageGenerator::ALL.', '.d3watermarkImageGenerator::PRODUCT.', '.d3watermarkImageGenerator::CATEGORY.', '.d3watermarkImageGenerator::MANUFACTURER.', '.d3watermarkImageGenerator::VENDOR.', '.d3watermarkImageGenerator::WRAPPING, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Options $options
|
||||
*
|
||||
* @throws DBALException
|
||||
* @throws DatabaseConnectionException
|
||||
* @throws DatabaseErrorException
|
||||
* @throws StandardException
|
||||
* @throws d3ShopCompatibilityAdapterException
|
||||
* @throws d3_cfg_mod_exception
|
||||
*/
|
||||
protected function main(Options $options)
|
||||
{
|
||||
if ($options->getOpt('version')) {
|
||||
$oModule = oxNew(Module::class);
|
||||
$oModule->load('d3_watermark');
|
||||
$this->info($oModule->getModuleData()['version']);
|
||||
}
|
||||
|
||||
switch ($options->getCmd()) {
|
||||
case 'delete':
|
||||
$this->startDeleting($options);
|
||||
break;
|
||||
case 'generate':
|
||||
$this->startGenerating($options);
|
||||
break;
|
||||
case 'renew':
|
||||
$this->startDeleting($options);
|
||||
$this->startGenerating($options);
|
||||
break;
|
||||
default:
|
||||
echo $options->help();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Options $options
|
||||
*
|
||||
* @throws DBALException
|
||||
* @throws d3ShopCompatibilityAdapterException
|
||||
* @throws d3_cfg_mod_exception
|
||||
* @throws DatabaseConnectionException
|
||||
* @throws DatabaseErrorException
|
||||
* @throws StandardException
|
||||
*/
|
||||
public function startDeleting(Options $options)
|
||||
{
|
||||
/** @var $oClrTmp d3clrtmp */
|
||||
$oClrTmp = oxNew(d3clrtmp::class);
|
||||
switch (trim(strtolower($options->getArgs()[0]))) {
|
||||
case d3watermarkImageGenerator::PRODUCT:
|
||||
$oClrTmp->clearGeneratedProductImgs();
|
||||
$this->info('generated product images are deleted');
|
||||
break;
|
||||
case d3watermarkImageGenerator::CATEGORY:
|
||||
$oClrTmp->clearGeneratedCategoryImgs();
|
||||
$this->info('generated category images are deleted');
|
||||
break;
|
||||
case d3watermarkImageGenerator::MANUFACTURER:
|
||||
$oClrTmp->clearGeneratedManufacturerImgs();
|
||||
$this->info('generated manufacturer images are deleted');
|
||||
break;
|
||||
case d3watermarkImageGenerator::VENDOR:
|
||||
$oClrTmp->clearGeneratedVendorImgs();
|
||||
$this->info('generated vendor images are deleted');
|
||||
break;
|
||||
case d3watermarkImageGenerator::WRAPPING:
|
||||
$oClrTmp->clearGeneratedWrappingImgs();
|
||||
$this->info('generated wrapping images are deleted');
|
||||
break;
|
||||
case d3watermarkImageGenerator::ALL:
|
||||
$oClrTmp->clearGeneratedAllImgs();
|
||||
$this->info('all generated images are deleted');
|
||||
break;
|
||||
default:
|
||||
$this->error('no valid image type specified, check argument "type"');
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Options $options
|
||||
*
|
||||
* @throws DBALException
|
||||
*/
|
||||
public function startGenerating(Options $options)
|
||||
{
|
||||
switch (trim(strtolower($options->getArgs()[0]))) {
|
||||
case d3watermarkImageGenerator::PRODUCT:
|
||||
case d3watermarkImageGenerator::CATEGORY:
|
||||
case d3watermarkImageGenerator::MANUFACTURER:
|
||||
case d3watermarkImageGenerator::VENDOR:
|
||||
case d3watermarkImageGenerator::WRAPPING:
|
||||
case d3watermarkImageGenerator::ALL:
|
||||
$oWMImageGenerator = oxNew( d3watermarkImageGenerator::class, $options->getArgs()[0] );
|
||||
|
||||
$blBar = $this->canShowProgressBar( $options );
|
||||
|
||||
if ( $blBar ) {
|
||||
$bar = new CliProgressBar( $oWMImageGenerator->getImagesListCount(), 0, "processing:" );
|
||||
$bar->display();
|
||||
}
|
||||
|
||||
for ( $i = 0; $i < $oWMImageGenerator->getImagesListCount(); $i ++ ) {
|
||||
if ( $blBar ) {
|
||||
$bar->progress( 1 );
|
||||
}
|
||||
$oWMImageGenerator->generateProductImagesRange( $i );
|
||||
}
|
||||
if ( $blBar ) {
|
||||
$bar->end();
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
$this->error( 'no valid image type specified, check argument "type"' );
|
||||
}
|
||||
}
|
||||
|
||||
public function canShowProgressBar(Options $options)
|
||||
{
|
||||
return in_array(
|
||||
strtolower($options->getOpt('loglevel')),
|
||||
[
|
||||
'',
|
||||
'info',
|
||||
'debug'
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$cli = new d3watermark();
|
||||
$cli->run();
|
11
src/public/.htaccess
Normal file
11
src/public/.htaccess
Normal file
@ -0,0 +1,11 @@
|
||||
<FilesMatch ".*">
|
||||
<IfModule mod_authz_core.c>
|
||||
# Apache 2.4
|
||||
Require all granted
|
||||
</IfModule>
|
||||
<IfModule !mod_authz_core.c>
|
||||
# Apache 2.2
|
||||
order deny,allow
|
||||
allow from all
|
||||
</IfModule>
|
||||
</FilesMatch>
|
Loading…
Reference in New Issue
Block a user