| 
						
						
						
					 | 
					@ -1,11 +1,4 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					import { | 
					 | 
					 | 
					import {AudioMimeType, DetectAudioExt, GetArrayBuffer, GetFileInfo, GetMetaCoverURL, IsBytesEqual} from "./util"; | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					    AudioMimeType, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    DetectAudioExt, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    GetArrayBuffer, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    GetFileInfo, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    GetMetaCoverURL, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    IsBytesEqual | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} from "./util"; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import {Decrypt as RawDecrypt} from "./raw"; | 
					 | 
					 | 
					import {Decrypt as RawDecrypt} from "./raw"; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -24,7 +17,7 @@ export async function Decrypt(file, raw_filename, raw_ext) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    if (!IsBytesEqual(MagicHeader, oriData.slice(0, 4)) || | 
					 | 
					 | 
					    if (!IsBytesEqual(MagicHeader, oriData.slice(0, 4)) || | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        !IsBytesEqual(MagicHeader2, oriData.slice(8, 12))) { | 
					 | 
					 | 
					        !IsBytesEqual(MagicHeader2, oriData.slice(8, 12))) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        if (raw_ext === "xm") { | 
					 | 
					 | 
					        if (raw_ext === "xm") { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					            return {status: false, message: "Not a valid xm file!"} | 
					 | 
					 | 
					            return {status: false, message: "此xm文件已损坏"} | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					        } else { | 
					 | 
					 | 
					        } else { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            return await RawDecrypt(file, raw_filename, raw_ext, true) | 
					 | 
					 | 
					            return await RawDecrypt(file, raw_filename, raw_ext, true) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        } | 
					 | 
					 | 
					        } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -32,7 +25,7 @@ export async function Decrypt(file, raw_filename, raw_ext) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    let typeText = (new TextDecoder()).decode(oriData.slice(4, 8)) | 
					 | 
					 | 
					    let typeText = (new TextDecoder()).decode(oriData.slice(4, 8)) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    if (!FileTypeMap.hasOwnProperty(typeText)) { | 
					 | 
					 | 
					    if (!FileTypeMap.hasOwnProperty(typeText)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        return {status: false, message: "New Xiami file category!"} | 
					 | 
					 | 
					        return {status: false, message: "未知的xm文件类型"} | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    let key = oriData[0xf] | 
					 | 
					 | 
					    let key = oriData[0xf] | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -66,7 +59,8 @@ export async function Decrypt(file, raw_filename, raw_ext) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        album: musicMeta.common.album, | 
					 | 
					 | 
					        album: musicMeta.common.album, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        picture: imgUrl, | 
					 | 
					 | 
					        picture: imgUrl, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        file: URL.createObjectURL(musicBlob), | 
					 | 
					 | 
					        file: URL.createObjectURL(musicBlob), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        mime: mime | 
					 | 
					 | 
					        mime: mime, | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        rawExt: "xm" | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
					 | 
					
  |