if (!isShow) {
            return;
        }

        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("HTTP Log").append(CRLF);
        stringBuilder.append(TOP_LEFT_LINE).append("------------request------------------------------------------").append(CRLF);
        appendKeyAndValue(stringBuilder, "id", requestId + "");
        appendKeyAndValue(stringBuilder, "url", request.url().uri().toString());
        appendKeyAndValue(stringBuilder, "method", request.method());
        stringBuilder.append(VERTICAL_LINE).append(CRLF);
        stringBuilder.append(VERTICAL_LINE).append(" ").append("head params").append(CRLF);
        Map<String, List<String>> headerMap = request.headers().toMultimap();
        for (Map.Entry<String, List<String>> entry : headerMap.entrySet()) {
            String key = entry.getKey();
            for (String value : entry.getValue()) {
                stringBuilder.append(VERTICAL_LINE).append(" ").append(MIDDLE_LINE).append(key).append(COLON).append(value).append(CRLF);
            }
        }
        stringBuilder.append(VERTICAL_LINE).append(CRLF);
        stringBuilder.append(VERTICAL_LINE).append(" ").append(request.body() == null ? "It's empty body" : bodyToString(request.body())).append(CRLF);
        stringBuilder.append(BOTTOM_LEFT_LINE).append("-----------------------------------------------------------");
        Log.i("LogInterceptor", stringBuilder.toString());
    }

    private void buildResponseLog(int requestId, String url, long reqTime, Response response) {
        if (!isShow) {
            return;
        }
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("HTTP Log").append(CRLF);
        stringBuilder.append(TOP_LEFT_LINE).append("------------response------------------------------------------").append(CRLF);
        appendKeyAndValue(stringBuilder, "id", requestId + "");
        appendKeyAndValue(stringBuilder, "time", System.currentTimeMillis() - reqTime + "");
        appendKeyAndValue(stringBuilder, "url", url);
        appendKeyAndValue(stringBuilder, "message", response.message());
        appendKeyAndValue(stringBuilder, "code", response.code() + "");
        stringBuilder.append(VERTICAL_LINE).append(CRLF);
        stringBuilder.append(VERTICAL_LINE).append(" ").append("head params").append(CRLF);
        Map<String, List<String>> headerMap = response.headers().toMultimap();
        for (Map.Entry<String, List<String>> entry : headerMap.entrySet()) {
            String key = entry.getKey();
            for (String value : entry.getValue()) {
                stringBuilder.append(VERTICAL_LINE).append(" ").append(MIDDLE_LINE).append(key).append(COLON).append(value).append(CRLF);
            }
        }
        stringBuilder.append(VERTICAL_LINE).append(CRLF);
        try {
            String body;
            if (response.body() == null || response.body().contentLength() == 0) {
                body = "It's empty body";
            } else {
                BufferedSource source = response.body().source();
                source.request(Long.MAX_VALUE);
                body = source.buffer().clone().readString(UTF8);
            }
            stringBuilder.append(VERTICAL_LINE).append(" ").append(body).append(CRLF);
        } catch (IOException e) {
            e.printStackTrace();
        }
        stringBuilder.append(BOTTOM_LEFT_LINE).append("-----------------------------------------------------------");
        Log.i("LogInterceptor", stringBuilder.toString());
    }

    private void appendKeyAndValue(StringBuilder stringBuilder, String key, String value) {
        stringBuilder.append(VERTICAL_LINE).append(" ").append(key).append(COLON).append(value).append(CRLF);
    }

    protected String bodyToString(final RequestBody request) {
        try {
            final Buffer buffer = new Buffer();
            if (request == null) {
                return "";
            }
            request.writeTo(buffer);
            return buffer.readUtf8();
        } catch (final IOException e) {
            e.printStackTrace();
            return "";
        }
    }
}


try {
            final Buffer buffer = new Buffer();
            if (request == null) {
                return "";
            }
            request.writeTo(buffer);
            return buffer.readUtf8();
        } catch (final IOException e) {
            e.printStackTrace();
            return "";
        }

package com.abc.lib_multi_download.okhttp.interceptor;

import android.support.annotation.NonNull;
import android.util.Log;
import com.abc.lib_multi_download.BuildConfig;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.List;
import java.util.Map;
import java.util.Random;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okio.Buffer;
import okio.BufferedSource;

public class LogInterceptor implements Interceptor {

    private static final String COLON = ": ";

    private final static String TOP_LEFT_LINE = "┌";

    private final static String MIDDLE_LINE = "├";

    private final static String BOTTOM_LEFT_LINE = "└";

    private final static String CRLF = "\r\n";

    private final static String VERTICAL_LINE = "│";

    private final static String HORIZONTAL_LINE = "─";

    private final static boolean isShow = BuildConfig.BUILD_TYPE.equals("debug");

    private static final Charset UTF8 = Charset.forName("UTF-8");

    private final Random random = new Random();

    @Override
    public Response intercept(@NonNull Chain chain) throws IOException {
        int requestId = random.nextInt(1000000);
        Request request = chain.request();
        buildRequestLog(requestId, request);
        long reqTime = System.currentTimeMillis();
        Response response = chain.proceed(request);
        String url = request.url().uri().toString();
        buildResponseLog(requestId, url, reqTime, response);
        return response;
    }

    private void buildRequestLog(int requestId, Request request) {
        if (!isShow) {
            return;
        }
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("HTTP Log").append(CRLF);
        stringBuilder.append(TOP_LEFT_LINE).append("------------request------------------------------------------").append(CRLF);
        appendKeyAndValue(stringBuilder, "id", requestId + "");
        appendKeyAndValue(stringBuilder, "url", request.url().uri().toString());
        appendKeyAndValue(stringBuilder, "method", request.method());
        stringBuilder.append(VERTICAL_LINE).append(CRLF);
        stringBuilder.append(VERTICAL_LINE).append(" ").append("head params").append(CRLF);
        Map<String, List<String>> headerMap = request.headers().toMultimap();
        for (Map.Entry<String, List<String>> entry : headerMap.entrySet()) {
            String key = entry.getKey();
            for (String value : entry.getValue()) {
                stringBuilder.append(VERTICAL_LINE).append(" ").append(MIDDLE_LINE).append(key).append(COLON).append(value).append(CRLF);
            }
        }
        stringBuilder.append(VERTICAL_LINE).append(CRLF);
        stringBuilder.append(VERTICAL_LINE).append(" ").append(request.body() == null ? "It's empty body" : bodyToString(request.body())).append(CRLF);
        stringBuilder.append(BOTTOM_LEFT_LINE).append("-----------------------------------------------------------");
        Log.i("LogInterceptor", stringBuilder.toString());
    }

    private void buildResponseLog(int requestId, String url, long reqTime, Response response) {
        if (!isShow) {
            return;
        }
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("HTTP Log").append(CRLF);
        stringBuilder.append(TOP_LEFT_LINE).append("------------response------------------------------------------").append(CRLF);
        appendKeyAndValue(stringBuilder, "id", requestId + "");
        appendKeyAndValue(stringBuilder, "time", System.currentTimeMillis() - reqTime + "");
        appendKeyAndValue(stringBuilder, "url", url);
        appendKeyAndValue(stringBuilder, "message", response.message());
        appendKeyAndValue(stringBuilder, "code", response.code() + "");
        stringBuilder.append(VERTICAL_LINE).append(CRLF);
        stringBuilder.append(VERTICAL_LINE).append(" ").append("head params").append(CRLF);
        Map<String, List<String>> headerMap = response.headers().toMultimap();
        for (Map.Entry<String, List<String>> entry : headerMap.entrySet()) {
            String key = entry.getKey();
            for (String value : entry.getValue()) {
                stringBuilder.append(VERTICAL_LINE).append(" ").append(MIDDLE_LINE).append(key).append(COLON).append(value).append(CRLF);
            }
        }
        stringBuilder.append(VERTICAL_LINE).append(CRLF);
        try {
            String body;
            if (response.body() == null || response.body().contentLength() == 0) {
                body = "It's empty body";
            } else {
                BufferedSource source = response.body().source();
                source.request(Long.MAX_VALUE);
                body = source.buffer().clone().readString(UTF8);
            }
            stringBuilder.append(VERTICAL_LINE).append(" ").append(body).append(CRLF);
        } catch (IOException e) {
            e.printStackTrace();
        }
        stringBuilder.append(BOTTOM_LEFT_LINE).append("-----------------------------------------------------------");
        Log.i("LogInterceptor", stringBuilder.toString());
    }

    private void appendKeyAndValue(StringBuilder stringBuilder, String key, String value) {
        stringBuilder.append(VERTICAL_LINE).append(" ").append(key).append(COLON).append(value).append(CRLF);
    }

    protected String bodyToString(final RequestBody request) {


protected final int a(int i, Object... objArr)

package com.tencent.mm.plugin.report.kvdata;

import a.a.a.b;
import com.tencent.mm.ba.a;
import java.util.LinkedList;

public class log_13835 extends a {

    public int clientVersion_;

    public String currChatName_;

    public int device_;

    public int ds_;

    public int import_ds_;

    public LinkedList<IMBehavior> oplist_ = new LinkedList();

    public long time_stamp_;

    public long uin_;

{
        if (i == 0) {
            a.a.a.c.a aVar = (a.a.a.c.a) objArr[0];
            if (this.currChatName_ == null) {
                throw new b("Not all required fields were included: currChatName_");
            }
            aVar.dV(1, this.import_ds_);
            aVar.dV(2, this.ds_);
            aVar.C(3, this.uin_);
            aVar.dV(4, this.device_);
            aVar.dV(5, this.clientVersion_);
            aVar.C(6, this.time_stamp_);
            if (this.currChatName_ != null) {
                aVar.e(7, this.currChatName_);
            }
            aVar.d(8, 8, this.oplist_);
            return 0;
        } else if (i == 1) {
            r0 = (((((a.a.a.a.dS(1, this.import_ds_) + 0) + a.a.a.a.dS(2, this.ds_)) + a.a.a.a.B(3, this.uin_)) + a.a.a.a.dS(4, this.device_)) + a.a.a.a.dS(5, this.clientVersion_)) + a.a.a.a.B(6, this.time_stamp_);
            if (this.currChatName_ != null) {
                r0 += a.a.a.b.b.a.f(7, this.currChatName_);
            }
            return r0 + a.a.a.a.c(8, 8, this.oplist_);
        } else if (i == 2) {
            r0 = (byte[]) objArr[0];
            this.oplist_.clear();
            a.a.a.a.a aVar2 = new a.a.a.a.a(r0, unknownTagHandler);
            for (r0 = a.a(aVar2); r0 > 0; r0 = a.a(aVar2)) {
                if (!super.a(aVar2, this, r0)) {
                    aVar2.bQL();
                }
            }
            if (this.currChatName_ != null) {
                return 0;
            }
            throw new b("Not all required fields were included: currChatName_");
        } else if (i != 3) {
            return -1;
        } else {
            a.a.a.a.a aVar3 = (a.a.a.a.a) objArr[0];
            log_13835 com_tencent_mm_plugin_report_kvdata_log_13835 = (log_13835) objArr[1];
            int intValue = ((Integer) objArr[2]).intValue();
            switch(intValue) {
                case 1:
                    com_tencent_mm_plugin_report_kvdata_log_13835.import_ds_ = aVar3.pMj.mH();
                    return 0;
                case 2:
                    com_tencent_mm_plugin_report_kvdata_log_13835.ds_ = aVar3.pMj.mH();
                    return 0;
                case 3:
                    com_tencent_mm_plugin_report_kvdata_log_13835.uin_ = aVar3.pMj.mI();
                    return 0;
                case 4:
                    com_tencent_mm_plugin_report_kvdata_log_13835.device_ = aVar3.pMj.mH();
                    return 0;
                case 5:
                    com_tencent_mm_plugin_report_kvdata_log_13835.clientVersion_ = aVar3.pMj.mH();
                    return 0;
                case 6:
                    com_tencent_mm_plugin_report_kvdata_log_13835.time_stamp_ = aVar3.pMj.mI();
                    return 0;
                case 7:
                    com_tencent_mm_plugin_report_kvdata_log_13835.currChatName_ = aVar3.pMj.readString();
                    return 0;
                case 8:
                    LinkedList zQ = aVar3.zQ(intValue);
                    int size = zQ.size();
                    for (intValue = 0; intValue < size; intValue++) {
                        r0 = (byte[]) zQ.get(intValue);
                        a iMBehavior = new IMBehavior();
                        a.a.a.a.a aVar4 = new a.a.a.a.a(r0, unknownTagHandler);
                        for (boolean z = true; z; z = iMBehavior.a(aVar4, iMBehavior, a.a(aVar4))) {
                        }
                        com_tencent_mm_plugin_report_kvdata_log_13835.oplist_.add(iMBehavior);
                    }
                    return 0;
                default:
                    return -1;
            }
        }
    }
}


package com.tencent.mm.plugin.report.kvdata;

import a.a.a.b;
import com.tencent.mm.ba.a;
import java.util.LinkedList;

public class log_13835 extends a {

    public int clientVersion_;

    public String currChatName_;

    public int device_;

    public int ds_;

    public int import_ds_;

    public LinkedList<IMBehavior> oplist_ = new LinkedList();

    public long time_stamp_;

    public long uin_;

    protected final int a(int i, Object... objArr) {

        if (i == 0) {
            a.a.a.c.a aVar = (a.a.a.c.a) objArr[0];
            if (this.currChatName_ == null) {
                throw new b("Not all required fields were included: currChatName_");
            }
            aVar.dV(1, this.import_ds_);
            aVar.dV(2, this.ds_);
            aVar.C(3, this.uin_);
            aVar.dV(4, this.device_);
            aVar.dV(5, this.clientVersion_);
            aVar.C(6, this.time_stamp_);
            if (this.currChatName_ != null) {
                aVar.e(7, this.currChatName_);
            }
            aVar.d(8, 8, this.oplist_);
            return 0;
        } else if (i == 1) {
            r0 = (((((a.a.a.a.dS(1, this.import_ds_) + 0) + a.a.a.a.dS(2, this.ds_)) + a.a.a.a.B(3, this.uin_)) + a.a.a.a.dS(4, this.device_)) + a.a.a.a.dS(5, this.clientVersion_)) + a.a.a.a.B(6, this.time_stamp_);
            if (this.currChatName_ != null) {
                r0 += a.a.a.b.b.a.f(7, this.currChatName_);
            }
            return r0 + a.a.a.a.c(8, 8, this.oplist_);
        } else if (i == 2) {
            r0 = (byte[]) objArr[0];
            this.oplist_.clear();
            a.a.a.a.a aVar2 = new a.a.a.a.a(r0, unknownTagHandler);
            for (r0 = a.a(aVar2); r0 > 0; r0 = a.a(aVar2)) {
                if (!super.a(aVar2, this, r0)) {
                    aVar2.bQL();
                }
            }
            if (this.currChatName_ != null) {
                return 0;
            }
            throw new b("Not all required fields were included: currChatName_");
        } else if (i != 3) {
            return -1;
        } else {
            a.a.a.a.a aVar3 = (a.a.a.a.a) objArr[0];
            log_13835 com_tencent_mm_plugin_report_kvdata_log_13835 = (log_13835) objArr[1];
            int intValue = ((Integer) objArr[2]).intValue();
            switch(intValue) {
                case 1:
                    com_tencent_mm_plugin_report_kvdata_log_13835.import_ds_ = aVar3.pMj.mH();
                    return 0;
                case 2:
                    com_tencent_mm_plugin_report_kvdata_log_13835.ds_ = aVar3.pMj.mH();
                    return 0;
                case 3:
                    com_tencent_mm_plugin_report_kvdata_log_13835.uin_ = aVar3.pMj.mI();
                    return 0;
                case 4:
                    com_tencent_mm_plugin_report_kvdata_log_13835.device_ = aVar3.pMj.mH();
                    return 0;
                case 5:
                    com_tencent_mm_plugin_report_kvdata_log_13835.clientVersion_ = aVar3.pMj.mH();
                    return 0;
                case 6:
                    com_tencent_mm_plugin_report_kvdata_log_13835.time_stamp_ = aVar3.pMj.mI();
                    return 0;
                case 7:
                    com_tencent_mm_plugin_report_kvdata_log_13835.currChatName_ = aVar3.pMj.readString();
                    return 0;
                case 8:
                    LinkedList zQ = aVar3.zQ(intValue);
                    int size = zQ.size();
                    for (intValue = 0; intValue < size; intValue++) {
                        r0 = (byte[]) zQ.get(intValue);
                        a iMBehavior = new IMBehavior();
                        a.a.a.a.a aVar4 = new a.a.a.a.a(r0, unknownTagHandler);
                        for (boolean z = true; z; z = iMBehavior.a(aVar4, iMBehavior, a.a(aVar4))) {
                        }
                        com_tencent_mm_plugin_report_kvdata_log_13835.oplist_.add(iMBehavior);
                    }
                    return 0;
                default:
                    return -1;
            }
        }
    }
}


if (i == 0) {
            a.a.a.c.a aVar = (a.a.a.c.a) objArr[0];
            if (this.currChatName_ == null) {
                throw new b("Not all required fields were included: currChatName_");
            }
            aVar.dV(1, this.import_ds_);
            aVar.dV(2, this.ds_);
            aVar.C(3, this.uin_);
            aVar.dV(4, this.device_);
            aVar.dV(5, this.clientVersion_);
            aVar.C(6, this.time_stamp_);
            if (this.currChatName_ != null) {
                aVar.e(7, this.currChatName_);
            }
            aVar.d(8, 8, this.oplist_);
            return 0;
        } else if (i == 1) {
            r0 = (((((a.a.a.a.dS(1, this.import_ds_) + 0) + a.a.a.a.dS(2, this.ds_)) + a.a.a.a.B(3, this.uin_)) + a.a.a.a.dS(4, this.device_)) + a.a.a.a.dS(5, this.clientVersion_)) + a.a.a.a.B(6, this.time_stamp_);
            if (this.currChatName_ != null) {
                r0 += a.a.a.b.b.a.f(7, this.currChatName_);
            }
            return r0 + a.a.a.a.c(8, 8, this.oplist_);
        } else if (i == 2) {
            r0 = (byte[]) objArr[0];
            this.oplist_.clear();
            a.a.a.a.a aVar2 = new a.a.a.a.a(r0, unknownTagHandler);
            for (r0 = a.a(aVar2); r0 > 0; r0 = a.a(aVar2)) {
                if (!super.a(aVar2, this, r0)) {
                    aVar2.bQL();
                }
            }
            if (this.currChatName_ != null) {
                return 0;
            }
            throw new b("Not all required fields were included: currChatName_");
        } else if (i != 3) {
            return -1;
        } else {
            a.a.a.a.a aVar3 = (a.a.a.a.a) objArr[0];
            log_13835 com_tencent_mm_plugin_report_kvdata_log_13835 = (log_13835) objArr[1];
            int intValue = ((Integer) objArr[2]).intValue();
            switch(intValue) {
                case 1:
                    com_tencent_mm_plugin_report_kvdata_log_13835.import_ds_ = aVar3.pMj.mH();
                    return 0;
                case 2:
                    com_tencent_mm_plugin_report_kvdata_log_13835.ds_ = aVar3.pMj.mH();
                    return 0;
                case 3:
                    com_tencent_mm_plugin_report_kvdata_log_13835.uin_ = aVar3.pMj.mI();
                    return 0;
                case 4:
                    com_tencent_mm_plugin_report_kvdata_log_13835.device_ = aVar3.pMj.mH();
                    return 0;
                case 5:
                    com_tencent_mm_plugin_report_kvdata_log_13835.clientVersion_ = aVar3.pMj.mH();
                    return 0;
                case 6:
                    com_tencent_mm_plugin_report_kvdata_log_13835.time_stamp_ = aVar3.pMj.mI();
                    return 0;
                case 7:
                    com_tencent_mm_plugin_report_kvdata_log_13835.currChatName_ = aVar3.pMj.readString();
                    return 0;
                case 8:
                    LinkedList zQ = aVar3.zQ(intValue);
                    int size = zQ.size();
                    for (intValue = 0; intValue < size; intValue++) {
                        r0 = (byte[]) zQ.get(intValue);
                        a iMBehavior = new IMBehavior();
                        a.a.a.a.a aVar4 = new a.a.a.a.a(r0, unknownTagHandler);
                        for (boolean z = true; z; z = iMBehavior.a(aVar4, iMBehavior, a.a(aVar4))) {
                        }
                        com_tencent_mm_plugin_report_kvdata_log_13835.oplist_.add(iMBehavior);
                    }
                    return 0;
                default:
                    return -1;
            }
        }


package com.tencent.mm.plugin.report.kvdata;

import a.a.a.b;
import com.tencent.mm.ba.a;
import java.util.LinkedList;

public class log_13835 extends a {

    public int clientVersion_;

    public String currChatName_;

    public int device_;

    public int ds_;

    public int import_ds_;

    public LinkedList<IMBehavior> oplist_ = new LinkedList();

    public long time_stamp_;

    public long uin_;

    protected final int a(int i, Object... objArr) {
        if (i == 0) {
            a.a.a.c.a aVar = (a.a.a.c.a) objArr[0];
            if (this.currChatName_ == null) {
                throw new b("Not all required fields were included: currChatName_");
            }
            aVar.dV(1, this.import_ds_);
            aVar.dV(2, this.ds_);
            aVar.C(3, this.uin_);
            aVar.dV(4, this.device_);
            aVar.dV(5, this.clientVersion_);
            aVar.C(6, this.time_stamp_);
            if (this.currChatName_ != null) {
                aVar.e(7, this.currChatName_);
            }
            aVar.d(8, 8, this.oplist_);
            return 0;
        } else if (i == 1) {
            r0 = (((((a.a.a.a.dS(1, this.import_ds_) + 0) + a.a.a.a.dS(2, this.ds_)) + a.a.a.a.B(3, this.uin_)) + a.a.a.a.dS(4, this.device_)) + a.a.a.a.dS(5, this.clientVersion_)) + a.a.a.a.B(6, this.time_stamp_);
            if (this.currChatName_ != null) {
                r0 += a.a.a.b.b.a.f(7, this.currChatName_);
            }
            return r0 + a.a.a.a.c(8, 8, this.oplist_);
        } else if (i == 2) {
            r0 = (byte[]) objArr[0];
            this.oplist_.clear();
            a.a.a.a.a aVar2 = new a.a.a.a.a(r0, unknownTagHandler);
            for (r0 = a.a(aVar2); r0 > 0; r0 = a.a(aVar2)) {
                if (!super.a(aVar2, this, r0)) {
                    aVar2.bQL();
                }
            }
            if (this.currChatName_ != null) {
                return 0;
            }
            throw new b("Not all required fields were included: currChatName_");
        } else if (i != 3) {
            return -1;
        } else {
            a.a.a.a.a aVar3 = (a.a.a.a.a) objArr[0];
            log_13835 com_tencent_mm_plugin_report_kvdata_log_13835 = (log_13835) objArr[1];
            int intValue = ((Integer) objArr[2]).intValue();
            switch(intValue) {
                case 1:
                    com_tencent_mm_plugin_report_kvdata_log_13835.import_ds_ = aVar3.pMj.mH();
                    return 0;
                case 2:
                    com_tencent_mm_plugin_report_kvdata_log_13835.ds_ = aVar3.pMj.mH();
                    return 0;
                case 3:
                    com_tencent_mm_plugin_report_kvdata_log_13835.uin_ = aVar3.pMj.mI();
                    return 0;
                case 4:
                    com_tencent_mm_plugin_report_kvdata_log_13835.device_ = aVar3.pMj.mH();
                    return 0;
                case 5:
                    com_tencent_mm_plugin_report_kvdata_log_13835.clientVersion_ = aVar3.pMj.mH();
                    return 0;
                case 6:
                    com_tencent_mm_plugin_report_kvdata_log_13835.time_stamp_ = aVar3.pMj.mI();
                    return 0;
                case 7:
                    com_tencent_mm_plugin_report_kvdata_log_13835.currChatName_ = aVar3.pMj.readString();
                    return 0;
                case 8:
                    LinkedList zQ = aVar3.zQ(intValue);
                    int size = zQ.size();
                    for (intValue = 0; intValue < size; intValue++) {
                        r0 = (byte[]) zQ.get(intValue);
                        a iMBehavior = new IMBehavior();
                        a.a.a.a.a aVar4 = new a.a.a.a.a(r0, unknownTagHandler);
                        for (boolean z = true; z; z = iMBehavior.a(aVar4, iMBehavior, a.a(aVar4))) {
                        }
                        com_tencent_mm_plugin_report_kvdata_log_13835.oplist_.add(iMBehavior);
                    }
                    return 0;
                default:
                    return -1;
            }
        }


if (this.currChatName_ != null) {
                r0 += a.a.a.b.b.a.f(7, this.currChatName_);
            }

package com.tencent.mm.plugin.report.kvdata;

import a.a.a.b;
import com.tencent.mm.ba.a;
import java.util.LinkedList;

public class log_13835 extends a {

    public int clientVersion_;

    public String currChatName_;

    public int device_;

    public int ds_;

    public int import_ds_;

    public LinkedList<IMBehavior> oplist_ = new LinkedList();

    public long time_stamp_;

    public long uin_;

    protected final int a(int i, Object... objArr) {
        if (i == 0) {
            a.a.a.c.a aVar = (a.a.a.c.a) objArr[0];
            if (this.currChatName_ == null) {
                throw new b("Not all required fields were included: currChatName_");
            }
            aVar.dV(1, this.import_ds_);
            aVar.dV(2, this.ds_);
            aVar.C(3, this.uin_);
            aVar.dV(4, this.device_);
            aVar.dV(5, this.clientVersion_);
            aVar.C(6, this.time_stamp_);
            if (this.currChatName_ != null) {
                aVar.e(7, this.currChatName_);
            }
            aVar.d(8, 8, this.oplist_);
            return 0;
        } else if (i == 1) {
            r0 = (((((a.a.a.a.dS(1, this.import_ds_) + 0) + a.a.a.a.dS(2, this.ds_)) + a.a.a.a.B(3, this.uin_)) + a.a.a.a.dS(4, this.device_)) + a.a.a.a.dS(5, this.clientVersion_)) + a.a.a.a.B(6, this.time_stamp_);

            return r0 + a.a.a.a.c(8, 8, this.oplist_);
        } else if (i == 2) {
            r0 = (byte[]) objArr[0];
            this.oplist_.clear();
            a.a.a.a.a aVar2 = new a.a.a.a.a(r0, unknownTagHandler);
            for (r0 = a.a(aVar2); r0 > 0; r0 = a.a(aVar2)) {
                if (!super.a(aVar2, this, r0)) {
                    aVar2.bQL();
                }
            }
            if (this.currChatName_ != null) {
                return 0;
            }
            throw new b("Not all required fields were included: currChatName_");
        } else if (i != 3) {
            return -1;
        } else {
            a.a.a.a.a aVar3 = (a.a.a.a.a) objArr[0];
            log_13835 com_tencent_mm_plugin_report_kvdata_log_13835 = (log_13835) objArr[1];
            int intValue = ((Integer) objArr[2]).intValue();
            switch(intValue) {
                case 1:
                    com_tencent_mm_plugin_report_kvdata_log_13835.import_ds_ = aVar3.pMj.mH();
                    return 0;
                case 2:
                    com_tencent_mm_plugin_report_kvdata_log_13835.ds_ = aVar3.pMj.mH();
                    return 0;
                case 3:
                    com_tencent_mm_plugin_report_kvdata_log_13835.uin_ = aVar3.pMj.mI();
                    return 0;
                case 4:
                    com_tencent_mm_plugin_report_kvdata_log_13835.device_ = aVar3.pMj.mH();
                    return 0;
                case 5:
                    com_tencent_mm_plugin_report_kvdata_log_13835.clientVersion_ = aVar3.pMj.mH();
                    return 0;
                case 6:
                    com_tencent_mm_plugin_report_kvdata_log_13835.time_stamp_ = aVar3.pMj.mI();
                    return 0;
                case 7:
                    com_tencent_mm_plugin_report_kvdata_log_13835.currChatName_ = aVar3.pMj.readString();
                    return 0;
                case 8:
                    LinkedList zQ = aVar3.zQ(intValue);
                    int size = zQ.size();
                    for (intValue = 0; intValue < size; intValue++) {
                        r0 = (byte[]) zQ.get(intValue);
                        a iMBehavior = new IMBehavior();
                        a.a.a.a.a aVar4 = new a.a.a.a.a(r0, unknownTagHandler);
                        for (boolean z = true; z; z = iMBehavior.a(aVar4, iMBehavior, a.a(aVar4))) {
                        }
                        com_tencent_mm_plugin_report_kvdata_log_13835.oplist_.add(iMBehavior);
                    }
                    return 0;
                default:
                    return -1;
            }
        }
    }
}


for (intValue = 0; intValue < size; intValue++) {
                        r0 = (byte[]) zQ.get(intValue);
                        a iMBehavior = new IMBehavior();
                        a.a.a.a.a aVar4 = new a.a.a.a.a(r0, unknownTagHandler);
                        for (boolean z = true; z; z = iMBehavior.a(aVar4, iMBehavior, a.a(aVar4))) {
                        }
                        com_tencent_mm_plugin_report_kvdata_log_13835.oplist_.add(iMBehavior);
                    }

package com.tencent.mm.plugin.report.kvdata;

import a.a.a.b;
import com.tencent.mm.ba.a;
import java.util.LinkedList;

public class log_13835 extends a {

    public int clientVersion_;

    public String currChatName_;

    public int device_;

    public int ds_;

    public int import_ds_;

    public LinkedList<IMBehavior> oplist_ = new LinkedList();

    public long time_stamp_;

    public long uin_;

    protected final int a(int i, Object... objArr) {
        if (i == 0) {
            a.a.a.c.a aVar = (a.a.a.c.a) objArr[0];
            if (this.currChatName_ == null) {
                throw new b("Not all required fields were included: currChatName_");
            }
            aVar.dV(1, this.import_ds_);
            aVar.dV(2, this.ds_);
            aVar.C(3, this.uin_);
            aVar.dV(4, this.device_);
            aVar.dV(5, this.clientVersion_);
            aVar.C(6, this.time_stamp_);
            if (this.currChatName_ != null) {
                aVar.e(7, this.currChatName_);
            }
            aVar.d(8, 8, this.oplist_);
            return 0;
        } else if (i == 1) {
            r0 = (((((a.a.a.a.dS(1, this.import_ds_) + 0) + a.a.a.a.dS(2, this.ds_)) + a.a.a.a.B(3, this.uin_)) + a.a.a.a.dS(4, this.device_)) + a.a.a.a.dS(5, this.clientVersion_)) + a.a.a.a.B(6, this.time_stamp_);
            if (this.currChatName_ != null) {
                r0 += a.a.a.b.b.a.f(7, this.currChatName_);
            }
            return r0 + a.a.a.a.c(8, 8, this.oplist_);
        } else if (i == 2) {
            r0 = (byte[]) objArr[0];
            this.oplist_.clear();
            a.a.a.a.a aVar2 = new a.a.a.a.a(r0, unknownTagHandler);
            for (r0 = a.a(aVar2); r0 > 0; r0 = a.a(aVar2)) {
                if (!super.a(aVar2, this, r0)) {
                    aVar2.bQL();
                }
            }
            if (this.currChatName_ != null) {
                return 0;
            }
            throw new b("Not all required fields were included: currChatName_");
        } else if (i != 3) {
            return -1;
        } else {
            a.a.a.a.a aVar3 = (a.a.a.a.a) objArr[0];
            log_13835 com_tencent_mm_plugin_report_kvdata_log_13835 = (log_13835) objArr[1];
            int intValue = ((Integer) objArr[2]).intValue();
            switch(intValue) {
                case 1:
                    com_tencent_mm_plugin_report_kvdata_log_13835.import_ds_ = aVar3.pMj.mH();
                    return 0;
                case 2:
                    com_tencent_mm_plugin_report_kvdata_log_13835.ds_ = aVar3.pMj.mH();
                    return 0;
                case 3:
                    com_tencent_mm_plugin_report_kvdata_log_13835.uin_ = aVar3.pMj.mI();
                    return 0;
                case 4:
                    com_tencent_mm_plugin_report_kvdata_log_13835.device_ = aVar3.pMj.mH();
                    return 0;
                case 5:
                    com_tencent_mm_plugin_report_kvdata_log_13835.clientVersion_ = aVar3.pMj.mH();
                    return 0;
                case 6:
                    com_tencent_mm_plugin_report_kvdata_log_13835.time_stamp_ = aVar3.pMj.mI();
                    return 0;
                case 7:
                    com_tencent_mm_plugin_report_kvdata_log_13835.currChatName_ = aVar3.pMj.readString();
                    return 0;
                case 8:
                    LinkedList zQ = aVar3.zQ(intValue);
                    int size = zQ.size();

                    return 0;
                default:
                    return -1;
            }
        }
    }
}


public Object encode(Object value) throws EncoderException

package org.apache.commons.codec.net;

import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.StringDecoder;
import org.apache.commons.codec.StringEncoder;
import org.apache.commons.codec.binary.Base64;

/**
 *

 * Identical to the Base64 encoding defined by RFC
 * 1521 and allows a character set to be specified.
 *

 *
 *

 * RFC 1522 describes techniques to allow the encoding of non-ASCII
 * text in various portions of a RFC 822 [2] message header, in a manner which is unlikely to confuse existing message
 * handling software.
 *

 *
 * @see MIME (Multipurpose Internet Mail Extensions) Part Two: Message
 *          Header Extensions for Non-ASCII Text
 *
 * @author Apache Software Foundation
 * @since 1.3
 * @version $Id: BCodec.java,v 1.5 2004/04/13 22:46:37 ggregory Exp $
 */
public class BCodec extends RFC1522Codec implements StringEncoder, StringDecoder {

    /**
     * The default charset used for string decoding and encoding.
     */
    private String charset = StringEncodings.UTF8;

    public BCodec() {
        super();
    }

    /**
     * Constructor which allows for the selection of a default charset
     *
     * @param charset
     *                  the default string charset to use.
     *
     * @see JRE character
     *          encoding names
     */
    public BCodec(final String charset) {
        super();
        this.charset = charset;
    }

    protected String getEncoding() {
        return "B";
    }

    protected byte[] doEncoding(byte[] bytes) throws EncoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.encodeBase64(bytes);
    }

    protected byte[] doDecoding(byte[] bytes) throws DecoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.decodeBase64(bytes);
    }

    /**
     * Encodes a string into its Base64 form using the specified charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @param charset
     *                  the charset for pString
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(final String value, final String charset) throws EncoderException {
        if (value == null) {
            return null;
        }
        try {
            return encodeText(value, charset);
        } catch (UnsupportedEncodingException e) {
            throw new EncoderException(e.getMessage());
        }
    }

    /**
     * Encodes a string into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(String value) throws EncoderException {
        if (value == null) {
            return null;
        }
        return encode(value, getDefaultCharset());
    }

    /**
     * Decodes a Base64 string into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 string to convert into its original form
     *
     * @return original string
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public String decode(String value) throws DecoderException {
        if (value == null) {
            return null;
        }
        try {
            return decodeText(value);
        } catch (UnsupportedEncodingException e) {
            throw new DecoderException(e.getMessage());
        }
    }

    /**
     * Encodes an object into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  object to convert to Base64 form
     * @return Base64 object
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */

{
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return encode((String) value);
        } else {
            throw new EncoderException("Objects of type " + value.getClass().getName() + " cannot be encoded using BCodec");
        }
    }

    /**
     * Decodes a Base64 object into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 object to convert into its original form
     *
     * @return original object
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public Object decode(Object value) throws DecoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return decode((String) value);
        } else {
            throw new DecoderException("Objects of type " + value.getClass().getName() + " cannot be decoded using BCodec");
        }
    }

    /**
     * The default charset used for string decoding and encoding.
     *
     * @return the default string charset.
     */
    public String getDefaultCharset() {
        return this.charset;
    }
}


package org.apache.commons.codec.net;

import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.StringDecoder;
import org.apache.commons.codec.StringEncoder;
import org.apache.commons.codec.binary.Base64;

/**
 *

 * Identical to the Base64 encoding defined by RFC
 * 1521 and allows a character set to be specified.
 *

 *
 *

 * RFC 1522 describes techniques to allow the encoding of non-ASCII
 * text in various portions of a RFC 822 [2] message header, in a manner which is unlikely to confuse existing message
 * handling software.
 *

 *
 * @see MIME (Multipurpose Internet Mail Extensions) Part Two: Message
 *          Header Extensions for Non-ASCII Text
 *
 * @author Apache Software Foundation
 * @since 1.3
 * @version $Id: BCodec.java,v 1.5 2004/04/13 22:46:37 ggregory Exp $
 */
public class BCodec extends RFC1522Codec implements StringEncoder, StringDecoder {

    /**
     * The default charset used for string decoding and encoding.
     */
    private String charset = StringEncodings.UTF8;

    public BCodec() {
        super();
    }

    /**
     * Constructor which allows for the selection of a default charset
     *
     * @param charset
     *                  the default string charset to use.
     *
     * @see JRE character
     *          encoding names
     */
    public BCodec(final String charset) {
        super();
        this.charset = charset;
    }

    protected String getEncoding() {
        return "B";
    }

    protected byte[] doEncoding(byte[] bytes) throws EncoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.encodeBase64(bytes);
    }

    protected byte[] doDecoding(byte[] bytes) throws DecoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.decodeBase64(bytes);
    }

    /**
     * Encodes a string into its Base64 form using the specified charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @param charset
     *                  the charset for pString
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(final String value, final String charset) throws EncoderException {
        if (value == null) {
            return null;
        }
        try {
            return encodeText(value, charset);
        } catch (UnsupportedEncodingException e) {
            throw new EncoderException(e.getMessage());
        }
    }

    /**
     * Encodes a string into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(String value) throws EncoderException {
        if (value == null) {
            return null;
        }
        return encode(value, getDefaultCharset());
    }

    /**
     * Decodes a Base64 string into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 string to convert into its original form
     *
     * @return original string
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public String decode(String value) throws DecoderException {
        if (value == null) {
            return null;
        }
        try {
            return decodeText(value);
        } catch (UnsupportedEncodingException e) {
            throw new DecoderException(e.getMessage());
        }
    }

    /**
     * Encodes an object into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  object to convert to Base64 form
     * @return Base64 object
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public Object encode(Object value) throws EncoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return encode((String) value);
        } else {
            throw new EncoderException("Objects of type " + value.getClass().getName() + " cannot be encoded using BCodec");
        }
    }

    /**
     * Decodes a Base64 object into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 object to convert into its original form
     *
     * @return original object
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public Object decode(Object value) throws DecoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return decode((String) value);
        } else {
            throw new DecoderException("Objects of type " + value.getClass().getName() + " cannot be decoded using BCodec");
        }
    }

    /**
     * The default charset used for string decoding and encoding.
     *
     * @return the default string charset.
     */
    public String getDefaultCharset()


        if (value == null) {
            return null;
        }

package org.apache.commons.codec.net;

import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.StringDecoder;
import org.apache.commons.codec.StringEncoder;
import org.apache.commons.codec.binary.Base64;

/**
 *

 * Identical to the Base64 encoding defined by RFC
 * 1521 and allows a character set to be specified.
 *

 *
 *

 * RFC 1522 describes techniques to allow the encoding of non-ASCII
 * text in various portions of a RFC 822 [2] message header, in a manner which is unlikely to confuse existing message
 * handling software.
 *

 *
 * @see MIME (Multipurpose Internet Mail Extensions) Part Two: Message
 *          Header Extensions for Non-ASCII Text
 *
 * @author Apache Software Foundation
 * @since 1.3
 * @version $Id: BCodec.java,v 1.5 2004/04/13 22:46:37 ggregory Exp $
 */
public class BCodec extends RFC1522Codec implements StringEncoder, StringDecoder {

    /**
     * The default charset used for string decoding and encoding.
     */
    private String charset = StringEncodings.UTF8;

    public BCodec() {
        super();
    }

    /**
     * Constructor which allows for the selection of a default charset
     *
     * @param charset
     *                  the default string charset to use.
     *
     * @see JRE character
     *          encoding names
     */
    public BCodec(final String charset) {
        super();
        this.charset = charset;
    }

    protected String getEncoding() {
        return "B";
    }

    protected byte[] doEncoding(byte[] bytes) throws EncoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.encodeBase64(bytes);
    }

    protected byte[] doDecoding(byte[] bytes) throws DecoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.decodeBase64(bytes);
    }

    /**
     * Encodes a string into its Base64 form using the specified charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @param charset
     *                  the charset for pString
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(final String value, final String charset) throws EncoderException {

        try {
            return encodeText(value, charset);
        } catch (UnsupportedEncodingException e) {
            throw new EncoderException(e.getMessage());
        }
    }

    /**
     * Encodes a string into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(String value) throws EncoderException {
        if (value == null) {
            return null;
        }
        return encode(value, getDefaultCharset());
    }

    /**
     * Decodes a Base64 string into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 string to convert into its original form
     *
     * @return original string
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public String decode(String value) throws DecoderException {
        if (value == null) {
            return null;
        }
        try {
            return decodeText(value);
        } catch (UnsupportedEncodingException e) {
            throw new DecoderException(e.getMessage());
        }
    }

    /**
     * Encodes an object into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  object to convert to Base64 form
     * @return Base64 object
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public Object encode(Object value) throws EncoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return encode((String) value);
        } else {
            throw new EncoderException("Objects of type " + value.getClass().getName() + " cannot be encoded using BCodec");
        }
    }

    /**
     * Decodes a Base64 object into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 object to convert into its original form
     *
     * @return original object
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public Object decode(Object value) throws DecoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return decode((String) value);
        } else {
            throw new DecoderException("Objects of type " + value.getClass().getName() + " cannot be decoded using BCodec");
        }
    }

    /**
     * The default charset used for string decoding and encoding.
     *
     * @return the default string charset.
     */
    public String getDefaultCharset() {
        return this.charset;
    }
}


try {
            return encodeText(value, charset);
        } catch (UnsupportedEncodingException e) {
            throw new EncoderException(e.getMessage());
        }

package org.apache.commons.codec.net;

import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.StringDecoder;
import org.apache.commons.codec.StringEncoder;
import org.apache.commons.codec.binary.Base64;

/**
 *

 * Identical to the Base64 encoding defined by RFC
 * 1521 and allows a character set to be specified.
 *

 *
 *

 * RFC 1522 describes techniques to allow the encoding of non-ASCII
 * text in various portions of a RFC 822 [2] message header, in a manner which is unlikely to confuse existing message
 * handling software.
 *

 *
 * @see MIME (Multipurpose Internet Mail Extensions) Part Two: Message
 *          Header Extensions for Non-ASCII Text
 *
 * @author Apache Software Foundation
 * @since 1.3
 * @version $Id: BCodec.java,v 1.5 2004/04/13 22:46:37 ggregory Exp $
 */
public class BCodec extends RFC1522Codec implements StringEncoder, StringDecoder {

    /**
     * The default charset used for string decoding and encoding.
     */
    private String charset = StringEncodings.UTF8;

    public BCodec() {
        super();
    }

    /**
     * Constructor which allows for the selection of a default charset
     *
     * @param charset
     *                  the default string charset to use.
     *
     * @see JRE character
     *          encoding names
     */
    public BCodec(final String charset) {
        super();
        this.charset = charset;
    }

    protected String getEncoding() {
        return "B";
    }

    protected byte[] doEncoding(byte[] bytes) throws EncoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.encodeBase64(bytes);
    }

    protected byte[] doDecoding(byte[] bytes) throws DecoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.decodeBase64(bytes);
    }

    /**
     * Encodes a string into its Base64 form using the specified charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @param charset
     *                  the charset for pString
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(final String value, final String charset) throws EncoderException {
        if (value == null) {
            return null;
        }

    }

    /**
     * Encodes a string into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(String value) throws EncoderException {
        if (value == null) {
            return null;
        }
        return encode(value, getDefaultCharset());
    }

    /**
     * Decodes a Base64 string into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 string to convert into its original form
     *
     * @return original string
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public String decode(String value) throws DecoderException {
        if (value == null) {
            return null;
        }
        try {
            return decodeText(value);
        } catch (UnsupportedEncodingException e) {
            throw new DecoderException(e.getMessage());
        }
    }

    /**
     * Encodes an object into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  object to convert to Base64 form
     * @return Base64 object
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public Object encode(Object value) throws EncoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return encode((String) value);
        } else {
            throw new EncoderException("Objects of type " + value.getClass().getName() + " cannot be encoded using BCodec");
        }
    }

    /**
     * Decodes a Base64 object into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 object to convert into its original form
     *
     * @return original object
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public Object decode(Object value) throws DecoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return decode((String) value);
        } else {
            throw new DecoderException("Objects of type " + value.getClass().getName() + " cannot be decoded using BCodec");
        }
    }

    /**
     * The default charset used for string decoding and encoding.
     *
     * @return the default string charset.
     */
    public String getDefaultCharset() {
        return this.charset;
    }
}


package org.apache.commons.codec.net;

import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.StringDecoder;
import org.apache.commons.codec.StringEncoder;
import org.apache.commons.codec.binary.Base64;

/**
 *

 * Identical to the Base64 encoding defined by RFC
 * 1521 and allows a character set to be specified.
 *

 *
 *

 * RFC 1522 describes techniques to allow the encoding of non-ASCII
 * text in various portions of a RFC 822 [2] message header, in a manner which is unlikely to confuse existing message
 * handling software.
 *

 *
 * @see MIME (Multipurpose Internet Mail Extensions) Part Two: Message
 *          Header Extensions for Non-ASCII Text
 *
 * @author Apache Software Foundation
 * @since 1.3
 * @version $Id: BCodec.java,v 1.5 2004/04/13 22:46:37 ggregory Exp $
 */
public class BCodec extends RFC1522Codec implements StringEncoder, StringDecoder {

    /**
     * The default charset used for string decoding and encoding.
     */
    private String charset = StringEncodings.UTF8;

    public BCodec() {
        super();
    }

    /**
     * Constructor which allows for the selection of a default charset
     *
     * @param charset
     *                  the default string charset to use.
     *
     * @see JRE character
     *          encoding names
     */
    public BCodec(final String charset) {
        super();
        this.charset = charset;
    }

    protected String getEncoding() {
        return "B";
    }

    protected byte[] doEncoding(byte[] bytes) throws EncoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.encodeBase64(bytes);
    }

    protected byte[] doDecoding(byte[] bytes) throws DecoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.decodeBase64(bytes);
    }

    /**
     * Encodes a string into its Base64 form using the specified charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @param charset
     *                  the charset for pString
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(final String value, final String charset) throws EncoderException {
        if (value == null) {
            return null;
        }
        try {
            return encodeText(value, charset);
        } catch (UnsupportedEncodingException e) {
            throw new EncoderException(e.getMessage());
        }

    /**
     * Encodes a string into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(String value) throws EncoderException {
        if (value == null) {
            return null;
        }
        return encode(value, getDefaultCharset());
    }

    /**
     * Decodes a Base64 string into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 string to convert into its original form
     *
     * @return original string
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public String decode(String value) throws DecoderException {
        if (value == null) {
            return null;
        }
        try {
            return decodeText(value);
        } catch (UnsupportedEncodingException e) {
            throw new DecoderException(e.getMessage());
        }
    }

    /**
     * Encodes an object into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  object to convert to Base64 form
     * @return Base64 object
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public Object encode(Object value) throws EncoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return encode((String) value);
        } else {
            throw new EncoderException("Objects of type " + value.getClass().getName() + " cannot be encoded using BCodec");
        }
    }

    /**
     * Decodes a Base64 object into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 object to convert into its original form
     *
     * @return original object
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public Object decode(Object value) throws DecoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return decode((String) value);
        } else {
            throw new DecoderException("Objects of type " + value.getClass().getName() + " cannot be decoded using BCodec");
        }
    }

    /**
     * The default charset used for string decoding and encoding.
     *
     * @return the default string charset.
     */
    public String getDefaultCharset() {
        return this.charset;
    }
}


package org.apache.commons.codec.net;

import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.StringDecoder;
import org.apache.commons.codec.StringEncoder;
import org.apache.commons.codec.binary.Base64;

/**
 *

 * Identical to the Base64 encoding defined by RFC
 * 1521 and allows a character set to be specified.
 *

 *
 *

 * RFC 1522 describes techniques to allow the encoding of non-ASCII
 * text in various portions of a RFC 822 [2] message header, in a manner which is unlikely to confuse existing message
 * handling software.
 *

 *
 * @see MIME (Multipurpose Internet Mail Extensions) Part Two: Message
 *          Header Extensions for Non-ASCII Text
 *
 * @author Apache Software Foundation
 * @since 1.3
 * @version $Id: BCodec.java,v 1.5 2004/04/13 22:46:37 ggregory Exp $
 */
public class BCodec extends RFC1522Codec implements StringEncoder, StringDecoder {

    /**
     * The default charset used for string decoding and encoding.
     */
    private String charset = StringEncodings.UTF8;

    public BCodec() {
        super();
    }

    /**
     * Constructor which allows for the selection of a default charset
     *
     * @param charset
     *                  the default string charset to use.
     *
     * @see JRE character
     *          encoding names
     */
    public BCodec(final String charset) {
        super();
        this.charset = charset;
    }

    protected String getEncoding() {
        return "B";
    }

    protected byte[] doEncoding(byte[] bytes) throws EncoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.encodeBase64(bytes);
    }

    protected byte[] doDecoding(byte[] bytes) throws DecoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.decodeBase64(bytes);
    }

    /**
     * Encodes a string into its Base64 form using the specified charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @param charset
     *                  the charset for pString
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(final String value, final String charset) throws EncoderException {
        if (value == null) {
            return null;
        }
        try {
            return encodeText(value, charset);
        } catch (UnsupportedEncodingException e) {
            throw new EncoderException(e.getMessage());
        }
    }

    /**
     * Encodes a string into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(String value) throws EncoderException {
        if (value == null) {
            return null;
        }
        return encode(value,

    }

    /**
     * Decodes a Base64 string into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 string to convert into its original form
     *
     * @return original string
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public String decode(String value) throws DecoderException {
        if (value == null) {
            return null;
        }
        try {
            return decodeText(value);
        } catch (UnsupportedEncodingException e) {
            throw new DecoderException(e.getMessage());
        }
    }

    /**
     * Encodes an object into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  object to convert to Base64 form
     * @return Base64 object
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public Object encode(Object value) throws EncoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return encode((String) value);
        } else {
            throw new EncoderException("Objects of type " + value.getClass().getName() + " cannot be encoded using BCodec");
        }
    }

    /**
     * Decodes a Base64 object into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 object to convert into its original form
     *
     * @return original object
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public Object decode(Object value) throws DecoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return decode((String) value);
        } else {
            throw new DecoderException("Objects of type " + value.getClass().getName() + " cannot be decoded using BCodec");
        }
    }

    /**
     * The default charset used for string decoding and encoding.
     *
     * @return the default string charset.
     */
    public String getDefaultCharset() {
        return this.charset;
    }
}


public Object decode(Object value) throws DecoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return decode((String) value);
        } else {
            throw new DecoderException("Objects of type " + value.getClass().getName() + " cannot be decoded using BCodec");
        }
    }

package org.apache.commons.codec.net;

import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.StringDecoder;
import org.apache.commons.codec.StringEncoder;
import org.apache.commons.codec.binary.Base64;

/**
 *

 * Identical to the Base64 encoding defined by RFC
 * 1521 and allows a character set to be specified.
 *

 *
 *

 * RFC 1522 describes techniques to allow the encoding of non-ASCII
 * text in various portions of a RFC 822 [2] message header, in a manner which is unlikely to confuse existing message
 * handling software.
 *

 *
 * @see MIME (Multipurpose Internet Mail Extensions) Part Two: Message
 *          Header Extensions for Non-ASCII Text
 *
 * @author Apache Software Foundation
 * @since 1.3
 * @version $Id: BCodec.java,v 1.5 2004/04/13 22:46:37 ggregory Exp $
 */
public class BCodec extends RFC1522Codec implements StringEncoder, StringDecoder {

    /**
     * The default charset used for string decoding and encoding.
     */
    private String charset = StringEncodings.UTF8;

    public BCodec() {
        super();
    }

    /**
     * Constructor which allows for the selection of a default charset
     *
     * @param charset
     *                  the default string charset to use.
     *
     * @see JRE character
     *          encoding names
     */
    public BCodec(final String charset) {
        super();
        this.charset = charset;
    }

    protected String getEncoding() {
        return "B";
    }

    protected byte[] doEncoding(byte[] bytes) throws EncoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.encodeBase64(bytes);
    }

    protected byte[] doDecoding(byte[] bytes) throws DecoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.decodeBase64(bytes);
    }

    /**
     * Encodes a string into its Base64 form using the specified charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @param charset
     *                  the charset for pString
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(final String value, final String charset) throws EncoderException {
        if (value == null) {
            return null;
        }
        try {
            return encodeText(value, charset);
        } catch (UnsupportedEncodingException e) {
            throw new EncoderException(e.getMessage());
        }
    }

    /**
     * Encodes a string into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(String value) throws EncoderException {
        if (value == null) {
            return null;
        }
        return encode(value, getDefaultCharset());
    }

    /**
     * Decodes a Base64 string into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 string to convert into its original form
     *
     * @return original string
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public String decode(String value) throws DecoderException {
        if (value == null) {
            return null;
        }
        try {
            return decodeText(value);
        } catch (UnsupportedEncodingException e) {
            throw new DecoderException(e.getMessage());
        }
    }

    /**
     * Encodes an object into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  object to convert to Base64 form
     * @return Base64 object
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public Object encode(Object value) throws EncoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return encode((String) value);
        } else {
            throw new EncoderException("Objects of type " + value.getClass().getName() + " cannot be encoded using BCodec");
        }
    }

    /**
     * Decodes a Base64 object into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 object to convert into its original form
     *
     * @return original object
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */

    /**
     * The default charset used for string decoding and encoding.
     *
     * @return the default string charset.
     */
    public String getDefaultCharset() {
        return this.charset;
    }
}


if (value == null) {
            return null;
        } else if (value instanceof String) {
            return encode((String) value);
        } else {
            throw new EncoderException("Objects of type " + value.getClass().getName() + " cannot be encoded using BCodec");
        }

package org.apache.commons.codec.net;

import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.StringDecoder;
import org.apache.commons.codec.StringEncoder;
import org.apache.commons.codec.binary.Base64;

/**
 *

 * Identical to the Base64 encoding defined by RFC
 * 1521 and allows a character set to be specified.
 *

 *
 *

 * RFC 1522 describes techniques to allow the encoding of non-ASCII
 * text in various portions of a RFC 822 [2] message header, in a manner which is unlikely to confuse existing message
 * handling software.
 *

 *
 * @see MIME (Multipurpose Internet Mail Extensions) Part Two: Message
 *          Header Extensions for Non-ASCII Text
 *
 * @author Apache Software Foundation
 * @since 1.3
 * @version $Id: BCodec.java,v 1.5 2004/04/13 22:46:37 ggregory Exp $
 */
public class BCodec extends RFC1522Codec implements StringEncoder, StringDecoder {

    /**
     * The default charset used for string decoding and encoding.
     */
    private String charset = StringEncodings.UTF8;

    public BCodec() {
        super();
    }

    /**
     * Constructor which allows for the selection of a default charset
     *
     * @param charset
     *                  the default string charset to use.
     *
     * @see JRE character
     *          encoding names
     */
    public BCodec(final String charset) {
        super();
        this.charset = charset;
    }

    protected String getEncoding() {
        return "B";
    }

    protected byte[] doEncoding(byte[] bytes) throws EncoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.encodeBase64(bytes);
    }

    protected byte[] doDecoding(byte[] bytes) throws DecoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.decodeBase64(bytes);
    }

    /**
     * Encodes a string into its Base64 form using the specified charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @param charset
     *                  the charset for pString
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(final String value, final String charset) throws EncoderException {
        if (value == null) {
            return null;
        }
        try {
            return encodeText(value, charset);
        } catch (UnsupportedEncodingException e) {
            throw new EncoderException(e.getMessage());
        }
    }

    /**
     * Encodes a string into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(String value) throws EncoderException {
        if (value == null) {
            return null;
        }
        return encode(value, getDefaultCharset());
    }

    /**
     * Decodes a Base64 string into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 string to convert into its original form
     *
     * @return original string
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public String decode(String value) throws DecoderException {
        if (value == null) {
            return null;
        }
        try {
            return decodeText(value);
        } catch (UnsupportedEncodingException e) {
            throw new DecoderException(e.getMessage());
        }
    }

    /**
     * Encodes an object into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  object to convert to Base64 form
     * @return Base64 object
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public Object encode(Object value) throws EncoderException {

    }

    /**
     * Decodes a Base64 object into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 object to convert into its original form
     *
     * @return original object
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public Object decode(Object value) throws DecoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return decode((String) value);
        } else {
            throw new DecoderException("Objects of type " + value.getClass().getName() + " cannot be decoded using BCodec");
        }
    }

    /**
     * The default charset used for string decoding and encoding.
     *
     * @return the default string charset.
     */
    public String getDefaultCharset() {
        return this.charset;
    }
}


try {
            return decodeText(value);
        } catch (UnsupportedEncodingException e) {
            throw new DecoderException(e.getMessage());
        }

package org.apache.commons.codec.net;

import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.StringDecoder;
import org.apache.commons.codec.StringEncoder;
import org.apache.commons.codec.binary.Base64;

/**
 *

 * Identical to the Base64 encoding defined by RFC
 * 1521 and allows a character set to be specified.
 *

 *
 *

 * RFC 1522 describes techniques to allow the encoding of non-ASCII
 * text in various portions of a RFC 822 [2] message header, in a manner which is unlikely to confuse existing message
 * handling software.
 *

 *
 * @see MIME (Multipurpose Internet Mail Extensions) Part Two: Message
 *          Header Extensions for Non-ASCII Text
 *
 * @author Apache Software Foundation
 * @since 1.3
 * @version $Id: BCodec.java,v 1.5 2004/04/13 22:46:37 ggregory Exp $
 */
public class BCodec extends RFC1522Codec implements StringEncoder, StringDecoder {

    /**
     * The default charset used for string decoding and encoding.
     */
    private String charset = StringEncodings.UTF8;

    public BCodec() {
        super();
    }

    /**
     * Constructor which allows for the selection of a default charset
     *
     * @param charset
     *                  the default string charset to use.
     *
     * @see JRE character
     *          encoding names
     */
    public BCodec(final String charset) {
        super();
        this.charset = charset;
    }

    protected String getEncoding() {
        return "B";
    }

    protected byte[] doEncoding(byte[] bytes) throws EncoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.encodeBase64(bytes);
    }

    protected byte[] doDecoding(byte[] bytes) throws DecoderException {
        if (bytes == null) {
            return null;
        }
        return Base64.decodeBase64(bytes);
    }

    /**
     * Encodes a string into its Base64 form using the specified charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @param charset
     *                  the charset for pString
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(final String value, final String charset) throws EncoderException {
        if (value == null) {
            return null;
        }
        try {
            return encodeText(value, charset);
        } catch (UnsupportedEncodingException e) {
            throw new EncoderException(e.getMessage());
        }
    }

    /**
     * Encodes a string into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  string to convert to Base64 form
     * @return Base64 string
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public String encode(String value) throws EncoderException {
        if (value == null) {
            return null;
        }
        return encode(value, getDefaultCharset());
    }

    /**
     * Decodes a Base64 string into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 string to convert into its original form
     *
     * @return original string
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public String decode(String value) throws DecoderException {
        if (value == null) {
            return null;
        }

    }

    /**
     * Encodes an object into its Base64 form using the default charset. Unsafe characters are escaped.
     *
     * @param value
     *                  object to convert to Base64 form
     * @return Base64 object
     *
     * @throws EncoderException
     *                  thrown if a failure condition is encountered during the encoding process.
     */
    public Object encode(Object value) throws EncoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return encode((String) value);
        } else {
            throw new EncoderException("Objects of type " + value.getClass().getName() + " cannot be encoded using BCodec");
        }
    }

    /**
     * Decodes a Base64 object into its original form. Escaped characters are converted back to their original
     * representation.
     *
     * @param value
     *                  Base64 object to convert into its original form
     *
     * @return original object
     *
     * @throws DecoderException
     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
     */
    public Object decode(Object value) throws DecoderException {
        if (value == null) {
            return null;
        } else if (value instanceof String) {
            return decode((String) value);
        } else {
            throw new DecoderException("Objects of type " + value.getClass().getName() + " cannot be decoded using BCodec");
        }
    }

    /**
     * The default charset used for string decoding and encoding.
     *
     * @return the default string charset.
     */
    public String getDefaultCharset() {
        return this.charset;
    }
}


public A withAverageUtilization(java.lang.Integer averageUtilization)

package io.kubernetes.client.openapi.models;

import java.lang.Integer;
import io.kubernetes.client.fluent.BaseFluent;
import io.kubernetes.client.custom.Quantity;
import java.lang.Object;
import java.lang.String;
import java.lang.Boolean;

public class V2beta2MetricValueStatusFluentImpl<A extends io.kubernetes.client.openapi.models.V2beta2MetricValueStatusFluent<A>> extends io.kubernetes.client.fluent.BaseFluent<A> implements io.kubernetes.client.openapi.models.V2beta2MetricValueStatusFluent<A> {

    public V2beta2MetricValueStatusFluentImpl() {
    }

    public V2beta2MetricValueStatusFluentImpl(io.kubernetes.client.openapi.models.V2beta2MetricValueStatus instance) {
        this.withAverageUtilization(instance.getAverageUtilization());
        this.withAverageValue(instance.getAverageValue());
        this.withValue(instance.getValue());
    }

    private java.lang.Integer averageUtilization;

    private io.kubernetes.client.custom.Quantity averageValue;

    private io.kubernetes.client.custom.Quantity value;

    public java.lang.Integer getAverageUtilization() {
        return this.averageUtilization;
    }

{
        this.averageUtilization = averageUtilization;
        return (A) this;
    }

    public java.lang.Boolean hasAverageUtilization() {
        return this.averageUtilization != null;
    }

    public io.kubernetes.client.custom.Quantity getAverageValue() {
        return this.averageValue;
    }

    public A withAverageValue(io.kubernetes.client.custom.Quantity averageValue) {
        this.averageValue = averageValue;
        return (A) this;
    }

    public java.lang.Boolean hasAverageValue() {
        return this.averageValue != null;
    }

    public A withNewAverageValue(java.lang.String value) {
        return (A) withAverageValue(new Quantity(value));
    }

    public io.kubernetes.client.custom.Quantity getValue() {
        return this.value;
    }

    public A withValue(io.kubernetes.client.custom.Quantity value) {
        this.value = value;
        return (A) this;
    }

    public java.lang.Boolean hasValue() {
        return this.value != null;
    }

    public A withNewValue(java.lang.String value) {
        return (A) withValue(new Quantity(value));
    }

    public boolean equals(java.lang.Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;
        V2beta2MetricValueStatusFluentImpl that = (V2beta2MetricValueStatusFluentImpl) o;
        if (averageUtilization != null ? !averageUtilization.equals(that.averageUtilization) : that.averageUtilization != null)
            return false;
        if (averageValue != null ? !averageValue.equals(that.averageValue) : that.averageValue != null)
            return false;
        if (value != null ? !value.equals(that.value) : that.value != null)
            return false;
        return true;
    }

    public int hashCode() {
        return java.util.Objects.hash(averageUtilization, averageValue, value, super.hashCode());
    }
}


package io.kubernetes.client.openapi.models;

import java.lang.Integer;
import io.kubernetes.client.fluent.BaseFluent;
import io.kubernetes.client.custom.Quantity;
import java.lang.Object;
import java.lang.String;
import java.lang.Boolean;

public class V2beta2MetricValueStatusFluentImpl<A extends io.kubernetes.client.openapi.models.V2beta2MetricValueStatusFluent<A>> extends io.kubernetes.client.fluent.BaseFluent<A> implements io.kubernetes.client.openapi.models.V2beta2MetricValueStatusFluent<A> {

    public V2beta2MetricValueStatusFluentImpl() {
    }

    public V2beta2MetricValueStatusFluentImpl(io.kubernetes.client.openapi.models.V2beta2MetricValueStatus instance) {
        this.withAverageUtilization(instance.getAverageUtilization());
        this.withAverageValue(instance.getAverageValue());
        this.withValue(instance.getValue());
    }

    private java.lang.Integer averageUtilization;

    private io.kubernetes.client.custom.Quantity averageValue;

    private io.kubernetes.client.custom.Quantity value;

    public java.lang.Integer getAverageUtilization() {
        return this.averageUtilization;
    }

    public A withAverageUtilization(java.lang.Integer averageUtilization) {
        this.averageUtilization = averageUtilization;
        return (A) this;
    }

    public java.lang.Boolean hasAverageUtilization() {
        return this.averageUtilization != null;
    }

    public io.kubernetes.client.custom.Quantity getAverageValue() {
        return this.averageValue;
    }

    public A withAverageValue(io.kubernetes.client.custom.Quantity averageValue) {
        this.averageValue = averageValue;
        return (A) this;
    }

    public java.lang.Boolean hasAverageValue() {
        return this.averageValue != null;
    }

    public A withNewAverageValue(java.lang.String value) {
        return (A) withAverageValue(new Quantity(value));
    }

    public io.kubernetes.client.custom.Quantity getValue()

    public A withValue(io.kubernetes.client.custom.Quantity value) {
        this.value = value;
        return (A) this;
    }

    public java.lang.Boolean hasValue() {
        return this.value != null;
    }

    public A withNewValue(java.lang.String value) {
        return (A) withValue(new Quantity(value));
    }

    public boolean equals(java.lang.Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;
        V2beta2MetricValueStatusFluentImpl that = (V2beta2MetricValueStatusFluentImpl) o;
        if (averageUtilization != null ? !averageUtilization.equals(that.averageUtilization) : that.averageUtilization != null)
            return false;
        if (averageValue != null ? !averageValue.equals(that.averageValue) : that.averageValue != null)
            return false;
        if (value != null ? !value.equals(that.value) : that.value != null)
            return false;
        return true;
    }

    public int hashCode() {
        return java.util.Objects.hash(averageUtilization, averageValue, value, super.hashCode());
    }
}


        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;

package io.kubernetes.client.openapi.models;

import java.lang.Integer;
import io.kubernetes.client.fluent.BaseFluent;
import io.kubernetes.client.custom.Quantity;
import java.lang.Object;
import java.lang.String;
import java.lang.Boolean;

public class V2beta2MetricValueStatusFluentImpl<A extends io.kubernetes.client.openapi.models.V2beta2MetricValueStatusFluent<A>> extends io.kubernetes.client.fluent.BaseFluent<A> implements io.kubernetes.client.openapi.models.V2beta2MetricValueStatusFluent<A> {

    public V2beta2MetricValueStatusFluentImpl() {
    }

    public V2beta2MetricValueStatusFluentImpl(io.kubernetes.client.openapi.models.V2beta2MetricValueStatus instance) {
        this.withAverageUtilization(instance.getAverageUtilization());
        this.withAverageValue(instance.getAverageValue());
        this.withValue(instance.getValue());
    }

    private java.lang.Integer averageUtilization;

    private io.kubernetes.client.custom.Quantity averageValue;

    private io.kubernetes.client.custom.Quantity value;

    public java.lang.Integer getAverageUtilization() {
        return this.averageUtilization;
    }

    public A withAverageUtilization(java.lang.Integer averageUtilization) {
        this.averageUtilization = averageUtilization;
        return (A) this;
    }

    public java.lang.Boolean hasAverageUtilization() {
        return this.averageUtilization != null;
    }

    public io.kubernetes.client.custom.Quantity getAverageValue() {
        return this.averageValue;
    }

    public A withAverageValue(io.kubernetes.client.custom.Quantity averageValue) {
        this.averageValue = averageValue;
        return (A) this;
    }

    public java.lang.Boolean hasAverageValue() {
        return this.averageValue != null;
    }

    public A withNewAverageValue(java.lang.String value) {
        return (A) withAverageValue(new Quantity(value));
    }

    public io.kubernetes.client.custom.Quantity getValue() {
        return this.value;
    }

    public A withValue(io.kubernetes.client.custom.Quantity value) {
        this.value = value;
        return (A) this;
    }

    public java.lang.Boolean hasValue() {
        return this.value != null;
    }

    public A withNewValue(java.lang.String value) {
        return (A) withValue(new Quantity(value));
    }

    public boolean equals(java.lang.Object o) {

        V2beta2MetricValueStatusFluentImpl that = (V2beta2MetricValueStatusFluentImpl) o;
        if (averageUtilization != null ? !averageUtilization.equals(that.averageUtilization) : that.averageUtilization != null)
            return false;
        if (averageValue != null ? !averageValue.equals(that.averageValue) : that.averageValue != null)
            return false;
        if (value != null ? !value.equals(that.value) : that.value != null)
            return false;
        return true;
    }

    public int hashCode() {
        return java.util.Objects.hash(averageUtilization, averageValue, value, super.hashCode());
    }
}


V2beta2MetricValueStatusFluentImpl that = (V2beta2MetricValueStatusFluentImpl) o;
        if (averageUtilization != null ? !averageUtilization.equals(that.averageUtilization) : that.averageUtilization != null)
            return false;
        if (averageValue != null ? !averageValue.equals(that.averageValue) : that.averageValue != null)
            return false;

package io.kubernetes.client.openapi.models;

import java.lang.Integer;
import io.kubernetes.client.fluent.BaseFluent;
import io.kubernetes.client.custom.Quantity;
import java.lang.Object;
import java.lang.String;
import java.lang.Boolean;

public class V2beta2MetricValueStatusFluentImpl<A extends io.kubernetes.client.openapi.models.V2beta2MetricValueStatusFluent<A>> extends io.kubernetes.client.fluent.BaseFluent<A> implements io.kubernetes.client.openapi.models.V2beta2MetricValueStatusFluent<A> {

    public V2beta2MetricValueStatusFluentImpl() {
    }

    public V2beta2MetricValueStatusFluentImpl(io.kubernetes.client.openapi.models.V2beta2MetricValueStatus instance) {
        this.withAverageUtilization(instance.getAverageUtilization());
        this.withAverageValue(instance.getAverageValue());
        this.withValue(instance.getValue());
    }

    private java.lang.Integer averageUtilization;

    private io.kubernetes.client.custom.Quantity averageValue;

    private io.kubernetes.client.custom.Quantity value;

    public java.lang.Integer getAverageUtilization() {
        return this.averageUtilization;
    }

    public A withAverageUtilization(java.lang.Integer averageUtilization) {
        this.averageUtilization = averageUtilization;
        return (A) this;
    }

    public java.lang.Boolean hasAverageUtilization() {
        return this.averageUtilization != null;
    }

    public io.kubernetes.client.custom.Quantity getAverageValue() {
        return this.averageValue;
    }

    public A withAverageValue(io.kubernetes.client.custom.Quantity averageValue) {
        this.averageValue = averageValue;
        return (A) this;
    }

    public java.lang.Boolean hasAverageValue() {
        return this.averageValue != null;
    }

    public A withNewAverageValue(java.lang.String value) {
        return (A) withAverageValue(new Quantity(value));
    }

    public io.kubernetes.client.custom.Quantity getValue() {
        return this.value;
    }

    public A withValue(io.kubernetes.client.custom.Quantity value) {
        this.value = value;
        return (A) this;
    }

    public java.lang.Boolean hasValue() {
        return this.value != null;
    }

    public A withNewValue(java.lang.String value) {
        return (A) withValue(new Quantity(value));
    }

    public boolean equals(java.lang.Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;

        if (value != null ? !value.equals(that.value) : that.value != null)
            return false;
        return true;
    }

    public int hashCode() {
        return java.util.Objects.hash(averageUtilization, averageValue, value, super.hashCode());
    }
}