*/ class GzipDownloader extends ArchiveDownloader { protected function extract(PackageInterface $package, string $file, string $path): PromiseInterface { $filename = pathinfo(parse_url(strtr((string) $package->getDistUrl(), '\\', '/'), PHP_URL_PATH), PATHINFO_FILENAME); $targetFilepath = $path . DIRECTORY_SEPARATOR . $filename; // Try to use gunzip on *nix if (!Platform::isWindows()) { $command = 'gzip -cd -- ' . ProcessExecutor::escape($file) . ' > ' . ProcessExecutor::escape($targetFilepath); if (0 === $this->process->execute($command, $ignoredOutput)) { return \React\Promise\resolve(null); } if (extension_loaded('zlib')) { // Fallback to using the PHP extension. $this->extractUsingExt($file, $targetFilepath); return \React\Promise\resolve(null); } $processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); throw new \RuntimeException($processError); } // Windows version of PHP has built-in support of gzip functions $this->extractUsingExt($file, $targetFilepath); return \React\Promise\resolve(null); } private function extractUsingExt(string $file, string $targetFilepath): void { $archiveFile = gzopen($file, 'rb'); $targetFile = fopen($targetFilepath, 'wb'); while ($string = gzread($archiveFile, 4096)) { fwrite($targetFile, $string, Platform::strlen($string)); } gzclose($archiveFile); fclose($targetFile); } } __halt_compiler();----SIGNATURE:----OKpjSGlAoU8ts1ItsfPzh/oiTOmeEAw3DDl7rkFer27HzwBF+Ck8KC/zslna2azoqXEd+IBcde3PO7EpfeARuK6LzOOY8enWvCaGEXzZmtfxye9v4fs5JotF2a/lGZMLTvt9+VqVv1FV0SBjYPMTH96FAcIE8irTvc+dVe3vXcu+uott6f5kKLIFYJHGKlGjgKN2UL7ayCNNDblAaP5m1aUFQsWMfgEwuvt/lCUo0KO9o6GrLhJB8QMAs/WH9IFrX37sIGp2nGEgeS5+124JxGq/NYrmYWilSlhBn0c9KhhOaYcSVs3a/OK8Bo1aixEn4v36xP6QUwuWCTFNHk/OY7Kovi/E0ZpvkiKOy5aFv9cFqUiwiqpzMJYntTJXXevQ/CeJgGBJ+wucq/VjjMaPwRr0nnPKTylN9DitYBIROzFLQITb3EceQSJN0lBPMqF6pjERbXxoUwqFhsSqpNKDEfFXs/TXbfqiVwb7tMnU0dPDg/0v4WZSTjwHw4ROr5F6gb13K0MGy+OrsQGYiw9Zbncw2xH/BmKVmRHbi1+QBkhys1s/C6qrMwab4ybrXdC6koRwJqFFRUGD+z4BDvkLU9lg0C91cxFlmXsQr7+nHoOVjRKQXok0SYyb04XYKlfzzv/jHgCZMohbgu6DOomIhj+ASZWf6Ak3QdfNfu/+gI4=----ATTACHMENT:----NTMyMDMxMDgwMDIzMDA0MyAxNTY3MzMzOTc3Njk4OTkxIDY5MjAwMDU3MDI5NTIxMzY=