anchor.diff:          | x::y::[] -> let encrypted = encrypt x y
                         List.rev (encrypted::acc)
           | x::y::xs -> let encrypted = encrypt x y
  -                      applyCBCEncrypt (y::xs) key (encrypted::acc)
  +                      applyCBCEncrypt (encrypted::xs) key (encrypted::acc)
   
   let rec applyCBCDecrypt blocks key acc : byte [] list =
       let decrypt x y = AESDecryptECB key y |> Array.ofSeq |> xor x |> Seq.toArray
  
positive.code:         | x::y::xs -> let decrypted = decrypt x y
                        applyCBCDecrypt (y::xs) key (decrypted::acc)
  
  let IV = Seq.take 16 (repeat (byte 0)) |> Seq.toList
  
  let CBCEncrypt (key: string) (iv: byte list) (plaintext: string) : byte [] list = 
      let blocks = iv :: (prepareTextCBC plaintext)
      applyCBCEncrypt blocks key []
     
  let CBCDecrypt (key: string) (iv: byte list) (code: byte [] list) : byte [] =
      let blocks = (iv |> List.toArray) :: code
      applyCBCDecrypt blocks key [] |> Array.concat
      
  let detectECB (code: byte []) : bool =
  
negative.code: 
  (* PKCS7 Padding *)
  
  let padPKCS7 (length: int) (bytes: byte seq) : byte [] =
      let targetLen = length - (Seq.length bytes % length)
      let padLen = if targetLen > 0 then targetLen else Seq.length bytes
      let pad = repeat (byte padLen)
      Seq.append bytes (Seq.take padLen pad) |> Seq.toArray
          
  (* AES *)
  
  