aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2024-09-17 14:03:35 +0200
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2024-09-17 14:14:01 +0200
commit67fb4da40f71e266b52ea83a6ec31f6f76e4e3c7 (patch)
tree45a0b16216c770a545b846d0bbaf452adabd9175
parent1647a3b93a4f271df4812d66e5cfc9428ab8d852 (diff)
downloadnextcloud-server-67fb4da40f71e266b52ea83a6ec31f6f76e4e3c7.tar.gz
nextcloud-server-67fb4da40f71e266b52ea83a6ec31f6f76e4e3c7.zip
chore: update RepairMimeTypes migrationfeat/zst
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
-rw-r--r--lib/private/Repair.php9
-rw-r--r--lib/private/Repair/RepairMimeTypes.php102
-rw-r--r--tests/data/integritycheck/mimetypeListModified/core/js/mimetypelist.js41
-rw-r--r--tests/data/integritycheck/mimetypeListModified/core/signature.json4
4 files changed, 103 insertions, 53 deletions
diff --git a/lib/private/Repair.php b/lib/private/Repair.php
index 630ee249209..9d079aabd29 100644
--- a/lib/private/Repair.php
+++ b/lib/private/Repair.php
@@ -60,6 +60,9 @@ use OCP\AppFramework\QueryException;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Collaboration\Resources\IManager;
use OCP\EventDispatcher\IEventDispatcher;
+use OCP\IAppConfig;
+use OCP\IConfig;
+use OCP\IDBConnection;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
use OCP\Notification\IManager as INotificationManager;
@@ -201,7 +204,11 @@ class Repair implements IOutput {
public static function getExpensiveRepairSteps() {
return [
new OldGroupMembershipShares(\OC::$server->getDatabaseConnection(), \OC::$server->getGroupManager()),
- new RepairMimeTypes(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()),
+ new RepairMimeTypes(
+ \OCP\Server::get(IConfig::class),
+ \OCP\Server::get(IAppConfig::class),
+ \OCP\Server::get(IDBConnection::class)
+ ),
\OC::$server->get(ValidatePhoneNumber::class),
\OC::$server->get(DeleteSchedulingObjects::class),
];
diff --git a/lib/private/Repair/RepairMimeTypes.php b/lib/private/Repair/RepairMimeTypes.php
index 6932299dc4a..30ef11ab190 100644
--- a/lib/private/Repair/RepairMimeTypes.php
+++ b/lib/private/Repair/RepairMimeTypes.php
@@ -10,6 +10,7 @@ use OC\Migration\NullOutput;
use OCP\DB\Exception;
use OCP\DB\IResult;
use OCP\DB\QueryBuilder\IQueryBuilder;
+use OCP\IAppConfig;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
@@ -24,6 +25,7 @@ class RepairMimeTypes implements IRepairStep {
public function __construct(
protected IConfig $config,
+ protected IAppConfig $appConfig,
protected IDBConnection $connection
) {
}
@@ -91,29 +93,7 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
- */
- private function introduceExcalidrawType(): IResult|int|null {
- $updatedMimetypes = [
- 'excalidraw' => 'application/vnd.excalidraw+json',
- ];
-
- return $this->updateMimetypes($updatedMimetypes);
- }
-
- /**
- * @throws Exception
- */
- private function introduceAsciidocType(): IResult|int|null {
- $updatedMimetypes = [
- 'adoc' => 'text/asciidoc',
- 'asciidoc' => 'text/asciidoc',
- ];
-
- return $this->updateMimetypes($updatedMimetypes);
- }
-
- /**
- * @throws Exception
+ * @since 12.0.0.14
*/
private function introduceImageTypes(): IResult|int|null {
$updatedMimetypes = [
@@ -126,6 +106,7 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 12.0.0.13
*/
private function introduceWindowsProgramTypes(): IResult|int|null {
$updatedMimetypes = [
@@ -139,6 +120,7 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 13.0.0.0
*/
private function introduceLocationTypes(): IResult|int|null {
$updatedMimetypes = [
@@ -153,6 +135,7 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 13.0.0.3
*/
private function introduceInternetShortcutTypes(): IResult|int|null {
$updatedMimetypes = [
@@ -165,6 +148,7 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 13.0.0.6
*/
private function introduceStreamingTypes(): IResult|int|null {
$updatedMimetypes = [
@@ -178,6 +162,7 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 14.0.0.8
*/
private function introduceVisioTypes(): IResult|int|null {
$updatedMimetypes = [
@@ -194,6 +179,7 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 14.0.0.10
*/
private function introduceComicbookTypes(): IResult|int|null {
$updatedMimetypes = [
@@ -210,6 +196,7 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 20.0.0.5
*/
private function introduceOpenDocumentTemplates(): IResult|int|null {
$updatedMimetypes = [
@@ -224,6 +211,19 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 21.0.0.7
+ */
+ private function introduceOrgModeType(): IResult|int|null {
+ $updatedMimetypes = [
+ 'org' => 'text/org'
+ ];
+
+ return $this->updateMimetypes($updatedMimetypes);
+ }
+
+ /**
+ * @throws Exception
+ * @since 23.0.0.2
*/
private function introduceFlatOpenDocumentType(): IResult|int|null {
$updatedMimetypes = [
@@ -238,10 +238,12 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 25.0.0.2
*/
- private function introduceOrgModeType(): IResult|int|null {
+ private function introduceOnlyofficeFormType(): IResult|int|null {
$updatedMimetypes = [
- 'org' => 'text/org'
+ 'oform' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.oform',
+ 'docxf' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.docxf',
];
return $this->updateMimetypes($updatedMimetypes);
@@ -249,11 +251,12 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 26.0.0.1
*/
- private function introduceOnlyofficeFormType(): IResult|int|null {
+ private function introduceAsciidocType(): IResult|int|null {
$updatedMimetypes = [
- 'oform' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.oform',
- 'docxf' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.docxf',
+ 'adoc' => 'text/asciidoc',
+ 'asciidoc' => 'text/asciidoc',
];
return $this->updateMimetypes($updatedMimetypes);
@@ -261,6 +264,7 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 28.0.0.5
*/
private function introduceEnhancedMetafileFormatType(): IResult|int|null {
$updatedMimetypes = [
@@ -272,6 +276,7 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 29.0.0.2
*/
private function introduceEmlAndMsgFormatType(): IResult|int|null {
$updatedMimetypes = [
@@ -284,6 +289,7 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 29.0.0.6
*/
private function introduceAacAudioType(): IResult|int|null {
$updatedMimetypes = [
@@ -295,6 +301,7 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 29.0.10
*/
private function introduceReStructuredTextFormatType(): IResult|int|null {
$updatedMimetypes = [
@@ -306,6 +313,33 @@ class RepairMimeTypes implements IRepairStep {
/**
* @throws Exception
+ * @since 30.0.0
+ */
+ private function introduceExcalidrawType(): IResult|int|null {
+ $updatedMimetypes = [
+ 'excalidraw' => 'application/vnd.excalidraw+json',
+ ];
+
+ return $this->updateMimetypes($updatedMimetypes);
+ }
+
+
+ /**
+ * @throws Exception
+ * @since 31.0.0
+ */
+ private function introduceZstType(): IResult|int|null {
+ $updatedMimetypes = [
+ 'zst' => 'application/zstd',
+ ];
+
+ return $this->updateMimetypes($updatedMimetypes);
+ }
+
+ /**
+ * Check if there are any migrations available
+ *
+ * @throws Exception
*/
public function migrationsAvailable(): bool {
$this->dryRun = true;
@@ -314,11 +348,14 @@ class RepairMimeTypes implements IRepairStep {
return $this->changeCount > 0;
}
+ /**
+ * Get the current mimetype version
+ */
private function getMimeTypeVersion(): string {
$serverVersion = $this->config->getSystemValueString('version', '0.0.0');
// 29.0.0.10 is the last version with a mimetype migration before it was moved to a separate version number
if (version_compare($serverVersion, '29.0.0.10', '>')) {
- return $this->config->getAppValue('files', 'mimetype_version', '29.0.0.10');
+ return $this->appConfig->getValueString('files', 'mimetype_version', '29.0.0.10');
}
return $serverVersion;
@@ -335,6 +372,7 @@ class RepairMimeTypes implements IRepairStep {
// NOTE TO DEVELOPERS: when adding new mime types, please make sure to
// add a version comparison to avoid doing it every time
+ // PLEASE ALSO KEEP THE LIST SORTED BY VERSION NUMBER
if (version_compare($mimeTypeVersion, '12.0.0.14', '<') && $this->introduceImageTypes()) {
$out->info('Fixed image mime types');
@@ -404,8 +442,12 @@ class RepairMimeTypes implements IRepairStep {
$out->info('Fixed Excalidraw mime type');
}
+ if (version_compare($mimeTypeVersion, '31.0.0.0', '<') && $this->introduceZstType()) {
+ $out->info('Fixed zst mime type');
+ }
+
if (!$this->dryRun) {
- $this->config->setAppValue('files', 'mimetype_version', $serverVersion);
+ $this->appConfig->setValueString('files', 'mimetype_version', $serverVersion);
}
}
}
diff --git a/tests/data/integritycheck/mimetypeListModified/core/js/mimetypelist.js b/tests/data/integritycheck/mimetypeListModified/core/js/mimetypelist.js
index 25448c5b576..8abdedbe667 100644
--- a/tests/data/integritycheck/mimetypeListModified/core/js/mimetypelist.js
+++ b/tests/data/integritycheck/mimetypeListModified/core/js/mimetypelist.js
@@ -15,8 +15,10 @@ OC.MimeTypeList={
"application/gpx+xml": "location",
"application/gzip": "package/x-generic",
"application/illustrator": "image",
+ "application/internet-shortcut": "link",
"application/javascript": "text/code",
"application/json": "text/code",
+ "application/km": "mindmap",
"application/msaccess": "file",
"application/msexcel": "x-office/spreadsheet",
"application/msonenote": "x-office/document",
@@ -27,21 +29,21 @@ OC.MimeTypeList={
"application/rss+xml": "application/xml",
"application/vnd.android.package-archive": "package/x-generic",
"application/vnd.excalidraw+json": "whiteboard",
- "application/vnd.lotus-wordpro": "x-office/document",
"application/vnd.garmin.tcx+xml": "location",
"application/vnd.google-earth.kml+xml": "location",
"application/vnd.google-earth.kmz": "location",
- "application/vnd.ms-excel": "x-office/spreadsheet",
+ "application/vnd.lotus-wordpro": "x-office/document",
"application/vnd.ms-excel.addin.macroEnabled.12": "x-office/spreadsheet",
"application/vnd.ms-excel.sheet.binary.macroEnabled.12": "x-office/spreadsheet",
"application/vnd.ms-excel.sheet.macroEnabled.12": "x-office/spreadsheet",
"application/vnd.ms-excel.template.macroEnabled.12": "x-office/spreadsheet",
+ "application/vnd.ms-excel": "x-office/spreadsheet",
"application/vnd.ms-fontobject": "font",
- "application/vnd.ms-powerpoint": "x-office/presentation",
"application/vnd.ms-powerpoint.addin.macroEnabled.12": "x-office/presentation",
"application/vnd.ms-powerpoint.presentation.macroEnabled.12": "x-office/presentation",
"application/vnd.ms-powerpoint.slideshow.macroEnabled.12": "x-office/presentation",
"application/vnd.ms-powerpoint.template.macroEnabled.12": "x-office/presentation",
+ "application/vnd.ms-powerpoint": "x-office/presentation",
"application/vnd.ms-visio.drawing.macroEnabled.12": "application/vnd.visio",
"application/vnd.ms-visio.drawing": "application/vnd.visio",
"application/vnd.ms-visio.stencil.macroEnabled.12": "application/vnd.visio",
@@ -50,29 +52,32 @@ OC.MimeTypeList={
"application/vnd.ms-visio.template": "application/vnd.visio",
"application/vnd.ms-word.document.macroEnabled.12": "x-office/document",
"application/vnd.ms-word.template.macroEnabled.12": "x-office/document",
- "application/vnd.oasis.opendocument.presentation": "x-office/presentation",
+ "application/vnd.oasis.opendocument.graphics-flat-xml": "x-office/drawing",
+ "application/vnd.oasis.opendocument.graphics-template": "x-office/drawing",
+ "application/vnd.oasis.opendocument.graphics": "x-office/drawing",
+ "application/vnd.oasis.opendocument.presentation-flat-xml": "x-office/presentation",
"application/vnd.oasis.opendocument.presentation-template": "x-office/presentation",
- "application/vnd.oasis.opendocument.spreadsheet": "x-office/spreadsheet",
+ "application/vnd.oasis.opendocument.presentation": "x-office/presentation",
+ "application/vnd.oasis.opendocument.spreadsheet-flat-xml": "x-office/spreadsheet",
"application/vnd.oasis.opendocument.spreadsheet-template": "x-office/spreadsheet",
- "application/vnd.oasis.opendocument.text": "x-office/document",
+ "application/vnd.oasis.opendocument.spreadsheet": "x-office/spreadsheet",
+ "application/vnd.oasis.opendocument.text-flat-xml": "x-office/document",
"application/vnd.oasis.opendocument.text-master": "x-office/document",
"application/vnd.oasis.opendocument.text-template": "x-office/document",
- "application/vnd.oasis.opendocument.graphics": "x-office/drawing",
- "application/vnd.oasis.opendocument.graphics-template": "x-office/drawing",
"application/vnd.oasis.opendocument.text-web": "x-office/document",
- "application/vnd.oasis.opendocument.text-flat-xml": "x-office/document",
- "application/vnd.oasis.opendocument.spreadsheet-flat-xml": "x-office/spreadsheet",
- "application/vnd.oasis.opendocument.graphics-flat-xml": "x-office/drawing",
- "application/vnd.oasis.opendocument.presentation-flat-xml": "x-office/presentation",
+ "application/vnd.oasis.opendocument.text": "x-office/document",
"application/vnd.openxmlformats-officedocument.presentationml.presentation": "x-office/presentation",
"application/vnd.openxmlformats-officedocument.presentationml.slideshow": "x-office/presentation",
"application/vnd.openxmlformats-officedocument.presentationml.template": "x-office/presentation",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "x-office/spreadsheet",
"application/vnd.openxmlformats-officedocument.spreadsheetml.template": "x-office/spreadsheet",
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document.docxf": "x-office/form-template",
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document.oform": "x-office/form",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": "x-office/document",
"application/vnd.openxmlformats-officedocument.wordprocessingml.template": "x-office/document",
"application/vnd.visio": "x-office/document",
"application/vnd.wordperfect": "x-office/document",
+ "application/vnd.xmind.workbook": "mindmap",
"application/x-7z-compressed": "package/x-generic",
"application/x-bzip2": "package/x-generic",
"application/x-cbr": "text",
@@ -81,6 +86,7 @@ OC.MimeTypeList={
"application/x-deb": "package/x-generic",
"application/x-fictionbook+xml": "text",
"application/x-font": "font",
+ "application/x-freemind": "mindmap",
"application/x-gimp": "image",
"application/x-gzip": "application/gzip",
"application/x-iwork-keynote-sffkey": "x-office/presentation",
@@ -96,8 +102,11 @@ OC.MimeTypeList={
"application/xml": "text/html",
"application/yaml": "text/code",
"application/zip": "package/x-generic",
+ "application/zstd": "package/x-generic",
"database": "file",
"httpd/unix-directory": "dir",
+ "image/targa": "image/tga",
+ "image/x-emf": "image/emf",
"text/css": "text/code",
"text/csv": "x-office/spreadsheet",
"text/html": "text/code",
@@ -110,14 +119,6 @@ OC.MimeTypeList={
"text/x-rst": "text",
"text/x-shellscript": "text/code",
"web": "text/code",
- "application/internet-shortcut": "link",
- "application/km": "mindmap",
- "application/x-freemind": "mindmap",
- "application/vnd.xmind.workbook": "mindmap",
- "image/targa": "image/tga",
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document.oform": "x-office/form",
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document.docxf": "x-office/form-template",
- "image/x-emf": "image/emf",
"my-custom/mimetype": "custom"
},
files: [
diff --git a/tests/data/integritycheck/mimetypeListModified/core/signature.json b/tests/data/integritycheck/mimetypeListModified/core/signature.json
index bea0a2647b8..92f8fceb817 100644
--- a/tests/data/integritycheck/mimetypeListModified/core/signature.json
+++ b/tests/data/integritycheck/mimetypeListModified/core/signature.json
@@ -1,7 +1,7 @@
{
"hashes": {
- "core\/js\/mimetypelist.js": "507bb72181a0213598eaa03dbb6f7290b367e06b706aa15873a921c491980a13165c9858924d9b4b478b8444e92bb5e4169f5f971d184b77a63c3fcc5b3acf59"
+ "core\/js\/mimetypelist.js": "00127c5b224ade81dbea7909013ba4aad1752206d9e47011250d2c2e488993e9ae6da590d8520fbaad0627959986d5cdfefcd74bd01d422f10e2e63ec5355c8f"
},
- "signature": "qGQx9Sy0ynziPeir6H7dIsTdSjjOrLEEbB+sf00sWpmQ\/izXW9Zd7jeTKgMHfrew+d+NyyR3O5V1m\/FkMtmp61LM1l22VpyuiRctFOs1qSxXmDRu27LLIP3d2yayLqpROOEdJSMgDoQU1yGV05bnK0u2yy3srxZa2XUjTaDRT5M+xRBPuc1CtEQ1azp07Xk7N2FnoGjc3\/TusodpHovlKwUg5uSX5nC5da7KJWJ9luM4B\/etl717Hrauw5xIgi+AryuIjhahaYvnIJcM0yZYkZ7KIqOa6Y\/SZFRC0+kB+KJdu3+ZJ4RTTnxmVVcQ4DN2fEozjr6ZDZGaRY+TnF8UaPopba5xDipHq8A4Qm0DWewOG9G4CFdJViGHYFTmIMWealugQLY6ucDcaYaw+kqa66Es7VX0Use0WJFymlleDchqaRWd1n18rEBjEBmDc8s4pQeXZRu8nCxngYUyKrImKWdLpTnxgThqFTukT\/zkaP6klXWydfISK07aKlil7ha84Ud83g71SwIsq3x4y7BSeXyZGRdkzImqlSwgz60u1ndG6m\/cG3Es01v6ao26H4Rs28deLQfBMR6xdKZn272Dsm\/shyXlj4ElZ4jtxqJk5EfBC0Jv6xOsfEIxgdJ7igU52CYrQVhdKQf+4O8XnRth0qvFBTv7btiRCPZflsQ+mRs=",
+ "signature": "jZ9+ptmgPdxYfvbp2qkafRn3cGwiCBVjUeYReiewhnnLS\/fp8ojCnCoFxjq+lf2f7xhqVTCodNwpr9\/BViZtcrCC\/GblRdVSP3Zqw9SaIxJiNHJJt5m8HdN3v3DVmN3AS\/A37fomGn2eZ+r7nkOLO\/w\/U8bhduHhpjQUmFwHDTrCzu5o6Im3huIzEPISnzVp59FATpyOjqOw5RXekJnBNfYu\/5ZP+C8ceYDvZ93ocP3uO+X6Mi8g+kyHSNXoACB6X03d80NWVoEsaK0Jw7imvN7Ir4SwvuxLcqeJDPKWGAgCXm\/7pDA4WcRoX1M2b7Rj2A2zegL49FNrtc+97ch3+9UrzXPLt1spf4ohcRSPSsq7\/TM4v81Jlo4FLPV3uGQx\/j4tti2uwVcwEr4vLwdopqHjFPOHBkhVLdgcePQBJAnt\/gVIANxM+yruGOTMB2KG9zyl343OixdNHVXeGtz69WCUypcDuSWlM+qi0gG9OTlyDu+lElarFviLviz57oTpX13xeHCJC5cApjurWMRUGgW5ehBeyd6Wc5vKKRuoZir570p3nbiKzYPNNBByDgpG4mWVegn\/u6zPbiwnr7YHQHKJCyij0OR2OqtR\/6xMeIvGAGyCeGj4m1DttafSoPXdaQqDAaiLbRO9vsb46TgWbH9vu+p9w7Hk+Y5gufvH22A=",
"certificate": "-----BEGIN CERTIFICATE-----\r\nMIIEvjCCAqagAwIBAgIUc\/0FxYrsgSs9rDxp03EJmbjN0NwwDQYJKoZIhvcNAQEF\r\nBQAwIzEhMB8GA1UECgwYb3duQ2xvdWQgQ29kZSBTaWduaW5nIENBMB4XDTE1MTEw\r\nMzIxMDMzM1oXDTE2MTEwMzIxMDMzM1owDzENMAsGA1UEAwwEY29yZTCCAiIwDQYJ\r\nKoZIhvcNAQEBBQADggIPADCCAgoCggIBALb6EgHpkAqZbO5vRO8XSh7G7XGWHw5s\r\niOf4RwPXR6SE9bWZEm\/b72SfWk\/\/J6AbrD8WiOzBuT\/ODy6k5T1arEdHO+Pux0W1\r\nMxYJJI4kH74KKgMpC0SB0Rt+8WrMqV1r3hhJ46df6Xr\/xolP3oD+eLbShPcblhdS\r\nVtkZEkoev8Sh6L2wDCeHDyPxzvj1w2dTdGVO9Kztn0xIlyfEBakqvBWtcxyi3Ln0\r\nklnxlMx3tPDUE4kqvpia9qNiB1AN2PV93eNr5\/2riAzIssMFSCarWCx0AKYb54+d\r\nxLpcYFyqPJ0ydBCkF78DD45RCZet6PNYkdzgbqlUWEGGomkuDoJbBg4wzgzO0D77\r\nH87KFhYW8tKFFvF1V3AHl\/sFQ9tDHaxM9Y0pZ2jPp\/ccdiqnmdkBxBDqsiRvHvVB\r\nCn6qpb4vWGFC7vHOBfYspmEL1zLlKXZv3ezMZEZw7O9ZvUP3VO\/wAtd2vUW8UFiq\r\ns2v1QnNLN6jNh51obcwmrBvWhJy9vQIdtIjQbDxqWTHh1zUSrw9wrlklCBZ\/zrM0\r\ni8nfCFwTxWRxp3H9KoECzO\/zS5R5KIS7s3\/wq\/w9T2Ie4rcecgXwDizwnn0C\/aKc\r\nbDIjujpL1s9HO05pcD\/V3wKcPZ1izymBkmMyIbL52iRVN5FTVHeZdXPpFuq+CTQJ\r\nQ238lC+A\/KOVAgMBAAEwDQYJKoZIhvcNAQEFBQADggIBAGoKTnh8RfJV4sQItVC2\r\nAvfJagkrIqZ3iiQTUBQGTKBsTnAqE1H7QgUSV9vSd+8rgvHkyZsRjmtyR1e3A6Ji\r\noNCXUbExC\/0iCPUqdHZIVb+Lc\/vWuv4ByFMybGPydgtLoEUX2ZrKFWmcgZFDUSRd\r\n9Uj26vtUhCC4bU4jgu6hIrR9IuxOBLQUxGTRZyAcXvj7obqRAEZwFAKQgFpfpqTb\r\nH+kjcbZSaAlLVSF7vBc1syyI8RGYbqpwvtREqJtl5IEIwe6huEqJ3zPnlP2th\/55\r\ncf3Fovj6JJgbb9XFxrdnsOsDOu\/tpnaRWlvv5ib4+SzG5wWFT5UUEo4Wg2STQiiX\r\nuVSRQxK1LE1yg84bs3NZk9FSQh4B8vZVuRr5FaJsZZkwlFlhRO\/\/+TJtXRbyNgsf\r\noMRZGi8DLGU2SGEAHcRH\/QZHq\/XDUWVzdxrSBYcy7GSpT7UDVzGv1rEJUrn5veP1\r\n0KmauAqtiIaYRm4f6YBsn0INcZxzIPZ0p8qFtVZBPeHhvQtvOt0iXI\/XUxEWOa2F\r\nK2EqhErgMK\/N07U1JJJay5tYZRtvkGq46oP\/5kQG8hYST0MDK6VihJoPpvCmAm4E\r\npEYKQ96x6A4EH9Y9mZlYozH\/eqmxPbTK8n89\/p7Ydun4rI+B2iiLnY8REWWy6+UQ\r\nV204fGUkJqW5CrKy3P3XvY9X\r\n-----END CERTIFICATE-----"
} \ No newline at end of file