| 
					
				 | 
			
			
				@@ -66,6 +66,7 @@ cdef class CompressorBase: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def __init__(self, level=255, **kwargs): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         assert 0 <= level <= 255 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.level = level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if self.ID is not None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             self.id_level = self.ID + bytes((level, ))  # level 255 means "unknown level" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             assert len(self.id_level) == 2 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -539,7 +540,8 @@ class ObfuscateSize(CompressorBase): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         compr_size = self.header_fmt.unpack(obfuscated_data[0:self.header_len])[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         compressed_data = obfuscated_data[self.header_len:self.header_len+compr_size] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if self.compressor is None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            self.compressor = Compressor.detect(compressed_data)() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            compressor_cls = Compressor.detect(compressed_data)[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            self.compressor = compressor_cls() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return self.compressor.decompress(compressed_data)  # decompress data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -578,15 +580,16 @@ class Compressor: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return self.compressor.compress(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def decompress(self, data): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        compressor_cls = self.detect(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        compressor_cls = self.detect(data)[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return compressor_cls(**self.params).decompress(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @staticmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def detect(data): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         hdr = bytes(data[:2])  # detect() does not work with memoryview 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        level = hdr[1]  # usually the level, but not for zlib_legacy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for cls in COMPRESSOR_LIST: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if cls.detect(hdr): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return cls 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return cls, (255 if cls.name == 'zlib_legacy' else level) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             raise ValueError('No decompressor for this data found: %r.', data[:2]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |