(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.MD5Base64Encoder={})));
})(this, (function (exports) {
exports.md5Base64Encode=function(hexstr){
var table=[
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'
];
var result="";
for(var i=0;i<hexstr.length/6;i++){
var str=hexstr.substr(i*6,6)
var number=parseInt(str,16)
console.log(str.length)
number=str.length==6?number:str.length==4?number<<8:str.length==2?number<<16:undefined;
if(!number)
throw "invalid input"
var number1,number2,number3,number4;
if(str.length==6){
number1=(number&0xfC0000)>>18
number2=(number&0x03f000)>>12
number3=(number&0x000fC0)>>6
number4=number&0x00003f
result=result+table[number1]+table[number2]+table[number3]+table[number4]
}
if(str.length==4){
number1=(number&0xfC0000)>>18
number2=(number&0x03f000)>>12
number3=(number&0x000fC0)>>6
result=result+table[number1]+table[number2]+table[number3]+'='
}
if(str.length==2)
{
number1=(number&0xfC0000)>>18
number2=(number&0x03f000)>>12
result=result+table[number1]+table[number2]+'='+'='