package com.bailuntec.domain.example;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

public class DcBaseLogisticsExample {
    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    protected String orderByClause;

    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    protected boolean distinct;

    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    protected List<Criteria> oredCriteria;

    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    protected Integer offset;

    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    protected Integer rows;

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    public DcBaseLogisticsExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    public String getOrderByClause() {
        return orderByClause;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    public boolean isDistinct() {
        return distinct;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    public DcBaseLogisticsExample orderBy(String orderByClause) {
        this.setOrderByClause(orderByClause);
        return this;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    public DcBaseLogisticsExample orderBy(String ... orderByClauses) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < orderByClauses.length; i++) {
            sb.append(orderByClauses[i]);
            if (i < orderByClauses.length - 1) {
                sb.append(" , ");
            }
        }
        this.setOrderByClause(sb.toString());
        return this;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria(this);
        return criteria;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
        rows = null;
        offset = null;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    public static Criteria newAndCreateCriteria() {
        DcBaseLogisticsExample example = new DcBaseLogisticsExample();
        return example.createCriteria();
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    public DcBaseLogisticsExample when(boolean condition, IExampleWhen then) {
        if (condition) {
            then.example(this);
        }
        return this;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    public DcBaseLogisticsExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {
        if (condition) {
            then.example(this);
        } else {
            otherwise.example(this);
        }
        return this;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    public void setOffset(Integer offset) {
        this.offset = offset;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    public Integer getOffset() {
        return this.offset;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    public void setRows(Integer rows) {
        this.rows = rows;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    public Integer getRows() {
        return this.rows;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    public DcBaseLogisticsExample limit(Integer rows) {
        this.rows = rows;
        return this;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    public DcBaseLogisticsExample limit(Integer offset, Integer rows) {
        this.offset = offset;
        this.rows = rows;
        return this;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    public DcBaseLogisticsExample page(Integer page, Integer pageSize) {
        this.offset = page * pageSize;
        this.rows = pageSize;
        return this;
    }

    /**
     * This class was generated by MyBatis Generator.
     * This class corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andIdIsNull() {
            addCriterion("id is null");
            return (Criteria) this;
        }

        public Criteria andIdIsNotNull() {
            addCriterion("id is not null");
            return (Criteria) this;
        }

        public Criteria andIdEqualTo(Integer value) {
            addCriterion("id =", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotEqualTo(Integer value) {
            addCriterion("id <>", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThan(Integer value) {
            addCriterion("id >", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("id >=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThan(Integer value) {
            addCriterion("id <", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThanOrEqualTo(Integer value) {
            addCriterion("id <=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdIn(List<Integer> values) {
            addCriterion("id in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotIn(List<Integer> values) {
            addCriterion("id not in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdBetween(Integer value1, Integer value2) {
            addCriterion("id between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotBetween(Integer value1, Integer value2) {
            addCriterion("id not between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andWmsIdIsNull() {
            addCriterion("wms_id is null");
            return (Criteria) this;
        }

        public Criteria andWmsIdIsNotNull() {
            addCriterion("wms_id is not null");
            return (Criteria) this;
        }

        public Criteria andWmsIdEqualTo(Integer value) {
            addCriterion("wms_id =", value, "wmsId");
            return (Criteria) this;
        }

        public Criteria andWmsIdNotEqualTo(Integer value) {
            addCriterion("wms_id <>", value, "wmsId");
            return (Criteria) this;
        }

        public Criteria andWmsIdGreaterThan(Integer value) {
            addCriterion("wms_id >", value, "wmsId");
            return (Criteria) this;
        }

        public Criteria andWmsIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("wms_id >=", value, "wmsId");
            return (Criteria) this;
        }

        public Criteria andWmsIdLessThan(Integer value) {
            addCriterion("wms_id <", value, "wmsId");
            return (Criteria) this;
        }

        public Criteria andWmsIdLessThanOrEqualTo(Integer value) {
            addCriterion("wms_id <=", value, "wmsId");
            return (Criteria) this;
        }

        public Criteria andWmsIdIn(List<Integer> values) {
            addCriterion("wms_id in", values, "wmsId");
            return (Criteria) this;
        }

        public Criteria andWmsIdNotIn(List<Integer> values) {
            addCriterion("wms_id not in", values, "wmsId");
            return (Criteria) this;
        }

        public Criteria andWmsIdBetween(Integer value1, Integer value2) {
            addCriterion("wms_id between", value1, value2, "wmsId");
            return (Criteria) this;
        }

        public Criteria andWmsIdNotBetween(Integer value1, Integer value2) {
            addCriterion("wms_id not between", value1, value2, "wmsId");
            return (Criteria) this;
        }

        public Criteria andCompanyCodeIsNull() {
            addCriterion("company_code is null");
            return (Criteria) this;
        }

        public Criteria andCompanyCodeIsNotNull() {
            addCriterion("company_code is not null");
            return (Criteria) this;
        }

        public Criteria andCompanyCodeEqualTo(String value) {
            addCriterion("company_code =", value, "companyCode");
            return (Criteria) this;
        }

        public Criteria andCompanyCodeNotEqualTo(String value) {
            addCriterion("company_code <>", value, "companyCode");
            return (Criteria) this;
        }

        public Criteria andCompanyCodeGreaterThan(String value) {
            addCriterion("company_code >", value, "companyCode");
            return (Criteria) this;
        }

        public Criteria andCompanyCodeGreaterThanOrEqualTo(String value) {
            addCriterion("company_code >=", value, "companyCode");
            return (Criteria) this;
        }

        public Criteria andCompanyCodeLessThan(String value) {
            addCriterion("company_code <", value, "companyCode");
            return (Criteria) this;
        }

        public Criteria andCompanyCodeLessThanOrEqualTo(String value) {
            addCriterion("company_code <=", value, "companyCode");
            return (Criteria) this;
        }

        public Criteria andCompanyCodeLike(String value) {
            addCriterion("company_code like", value, "companyCode");
            return (Criteria) this;
        }

        public Criteria andCompanyCodeNotLike(String value) {
            addCriterion("company_code not like", value, "companyCode");
            return (Criteria) this;
        }

        public Criteria andCompanyCodeIn(List<String> values) {
            addCriterion("company_code in", values, "companyCode");
            return (Criteria) this;
        }

        public Criteria andCompanyCodeNotIn(List<String> values) {
            addCriterion("company_code not in", values, "companyCode");
            return (Criteria) this;
        }

        public Criteria andCompanyCodeBetween(String value1, String value2) {
            addCriterion("company_code between", value1, value2, "companyCode");
            return (Criteria) this;
        }

        public Criteria andCompanyCodeNotBetween(String value1, String value2) {
            addCriterion("company_code not between", value1, value2, "companyCode");
            return (Criteria) this;
        }

        public Criteria andCompanyNameIsNull() {
            addCriterion("company_name is null");
            return (Criteria) this;
        }

        public Criteria andCompanyNameIsNotNull() {
            addCriterion("company_name is not null");
            return (Criteria) this;
        }

        public Criteria andCompanyNameEqualTo(String value) {
            addCriterion("company_name =", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameNotEqualTo(String value) {
            addCriterion("company_name <>", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameGreaterThan(String value) {
            addCriterion("company_name >", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameGreaterThanOrEqualTo(String value) {
            addCriterion("company_name >=", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameLessThan(String value) {
            addCriterion("company_name <", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameLessThanOrEqualTo(String value) {
            addCriterion("company_name <=", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameLike(String value) {
            addCriterion("company_name like", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameNotLike(String value) {
            addCriterion("company_name not like", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameIn(List<String> values) {
            addCriterion("company_name in", values, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameNotIn(List<String> values) {
            addCriterion("company_name not in", values, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameBetween(String value1, String value2) {
            addCriterion("company_name between", value1, value2, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameNotBetween(String value1, String value2) {
            addCriterion("company_name not between", value1, value2, "companyName");
            return (Criteria) this;
        }

        public Criteria andBillCodeIsNull() {
            addCriterion("bill_code is null");
            return (Criteria) this;
        }

        public Criteria andBillCodeIsNotNull() {
            addCriterion("bill_code is not null");
            return (Criteria) this;
        }

        public Criteria andBillCodeEqualTo(String value) {
            addCriterion("bill_code =", value, "billCode");
            return (Criteria) this;
        }

        public Criteria andBillCodeNotEqualTo(String value) {
            addCriterion("bill_code <>", value, "billCode");
            return (Criteria) this;
        }

        public Criteria andBillCodeGreaterThan(String value) {
            addCriterion("bill_code >", value, "billCode");
            return (Criteria) this;
        }

        public Criteria andBillCodeGreaterThanOrEqualTo(String value) {
            addCriterion("bill_code >=", value, "billCode");
            return (Criteria) this;
        }

        public Criteria andBillCodeLessThan(String value) {
            addCriterion("bill_code <", value, "billCode");
            return (Criteria) this;
        }

        public Criteria andBillCodeLessThanOrEqualTo(String value) {
            addCriterion("bill_code <=", value, "billCode");
            return (Criteria) this;
        }

        public Criteria andBillCodeLike(String value) {
            addCriterion("bill_code like", value, "billCode");
            return (Criteria) this;
        }

        public Criteria andBillCodeNotLike(String value) {
            addCriterion("bill_code not like", value, "billCode");
            return (Criteria) this;
        }

        public Criteria andBillCodeIn(List<String> values) {
            addCriterion("bill_code in", values, "billCode");
            return (Criteria) this;
        }

        public Criteria andBillCodeNotIn(List<String> values) {
            addCriterion("bill_code not in", values, "billCode");
            return (Criteria) this;
        }

        public Criteria andBillCodeBetween(String value1, String value2) {
            addCriterion("bill_code between", value1, value2, "billCode");
            return (Criteria) this;
        }

        public Criteria andBillCodeNotBetween(String value1, String value2) {
            addCriterion("bill_code not between", value1, value2, "billCode");
            return (Criteria) this;
        }

        public Criteria andTrackingNoIsNull() {
            addCriterion("tracking_no is null");
            return (Criteria) this;
        }

        public Criteria andTrackingNoIsNotNull() {
            addCriterion("tracking_no is not null");
            return (Criteria) this;
        }

        public Criteria andTrackingNoEqualTo(String value) {
            addCriterion("tracking_no =", value, "trackingNo");
            return (Criteria) this;
        }

        public Criteria andTrackingNoNotEqualTo(String value) {
            addCriterion("tracking_no <>", value, "trackingNo");
            return (Criteria) this;
        }

        public Criteria andTrackingNoGreaterThan(String value) {
            addCriterion("tracking_no >", value, "trackingNo");
            return (Criteria) this;
        }

        public Criteria andTrackingNoGreaterThanOrEqualTo(String value) {
            addCriterion("tracking_no >=", value, "trackingNo");
            return (Criteria) this;
        }

        public Criteria andTrackingNoLessThan(String value) {
            addCriterion("tracking_no <", value, "trackingNo");
            return (Criteria) this;
        }

        public Criteria andTrackingNoLessThanOrEqualTo(String value) {
            addCriterion("tracking_no <=", value, "trackingNo");
            return (Criteria) this;
        }

        public Criteria andTrackingNoLike(String value) {
            addCriterion("tracking_no like", value, "trackingNo");
            return (Criteria) this;
        }

        public Criteria andTrackingNoNotLike(String value) {
            addCriterion("tracking_no not like", value, "trackingNo");
            return (Criteria) this;
        }

        public Criteria andTrackingNoIn(List<String> values) {
            addCriterion("tracking_no in", values, "trackingNo");
            return (Criteria) this;
        }

        public Criteria andTrackingNoNotIn(List<String> values) {
            addCriterion("tracking_no not in", values, "trackingNo");
            return (Criteria) this;
        }

        public Criteria andTrackingNoBetween(String value1, String value2) {
            addCriterion("tracking_no between", value1, value2, "trackingNo");
            return (Criteria) this;
        }

        public Criteria andTrackingNoNotBetween(String value1, String value2) {
            addCriterion("tracking_no not between", value1, value2, "trackingNo");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgIsNull() {
            addCriterion("merchant_output_weight_kg is null");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgIsNotNull() {
            addCriterion("merchant_output_weight_kg is not null");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgEqualTo(BigDecimal value) {
            addCriterion("merchant_output_weight_kg =", value, "merchantOutputWeightKg");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgNotEqualTo(BigDecimal value) {
            addCriterion("merchant_output_weight_kg <>", value, "merchantOutputWeightKg");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgGreaterThan(BigDecimal value) {
            addCriterion("merchant_output_weight_kg >", value, "merchantOutputWeightKg");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("merchant_output_weight_kg >=", value, "merchantOutputWeightKg");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgLessThan(BigDecimal value) {
            addCriterion("merchant_output_weight_kg <", value, "merchantOutputWeightKg");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgLessThanOrEqualTo(BigDecimal value) {
            addCriterion("merchant_output_weight_kg <=", value, "merchantOutputWeightKg");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgIn(List<BigDecimal> values) {
            addCriterion("merchant_output_weight_kg in", values, "merchantOutputWeightKg");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgNotIn(List<BigDecimal> values) {
            addCriterion("merchant_output_weight_kg not in", values, "merchantOutputWeightKg");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("merchant_output_weight_kg between", value1, value2, "merchantOutputWeightKg");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("merchant_output_weight_kg not between", value1, value2, "merchantOutputWeightKg");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostCnyIsNull() {
            addCriterion("merchant_shipment_cost_cny is null");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostCnyIsNotNull() {
            addCriterion("merchant_shipment_cost_cny is not null");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostCnyEqualTo(BigDecimal value) {
            addCriterion("merchant_shipment_cost_cny =", value, "merchantShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostCnyNotEqualTo(BigDecimal value) {
            addCriterion("merchant_shipment_cost_cny <>", value, "merchantShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostCnyGreaterThan(BigDecimal value) {
            addCriterion("merchant_shipment_cost_cny >", value, "merchantShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostCnyGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("merchant_shipment_cost_cny >=", value, "merchantShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostCnyLessThan(BigDecimal value) {
            addCriterion("merchant_shipment_cost_cny <", value, "merchantShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostCnyLessThanOrEqualTo(BigDecimal value) {
            addCriterion("merchant_shipment_cost_cny <=", value, "merchantShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostCnyIn(List<BigDecimal> values) {
            addCriterion("merchant_shipment_cost_cny in", values, "merchantShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostCnyNotIn(List<BigDecimal> values) {
            addCriterion("merchant_shipment_cost_cny not in", values, "merchantShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostCnyBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("merchant_shipment_cost_cny between", value1, value2, "merchantShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostCnyNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("merchant_shipment_cost_cny not between", value1, value2, "merchantShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andMerchantReconciliationTimeIsNull() {
            addCriterion("merchant_reconciliation_time is null");
            return (Criteria) this;
        }

        public Criteria andMerchantReconciliationTimeIsNotNull() {
            addCriterion("merchant_reconciliation_time is not null");
            return (Criteria) this;
        }

        public Criteria andMerchantReconciliationTimeEqualTo(LocalDateTime value) {
            addCriterion("merchant_reconciliation_time =", value, "merchantReconciliationTime");
            return (Criteria) this;
        }

        public Criteria andMerchantReconciliationTimeNotEqualTo(LocalDateTime value) {
            addCriterion("merchant_reconciliation_time <>", value, "merchantReconciliationTime");
            return (Criteria) this;
        }

        public Criteria andMerchantReconciliationTimeGreaterThan(LocalDateTime value) {
            addCriterion("merchant_reconciliation_time >", value, "merchantReconciliationTime");
            return (Criteria) this;
        }

        public Criteria andMerchantReconciliationTimeGreaterThanOrEqualTo(LocalDateTime value) {
            addCriterion("merchant_reconciliation_time >=", value, "merchantReconciliationTime");
            return (Criteria) this;
        }

        public Criteria andMerchantReconciliationTimeLessThan(LocalDateTime value) {
            addCriterion("merchant_reconciliation_time <", value, "merchantReconciliationTime");
            return (Criteria) this;
        }

        public Criteria andMerchantReconciliationTimeLessThanOrEqualTo(LocalDateTime value) {
            addCriterion("merchant_reconciliation_time <=", value, "merchantReconciliationTime");
            return (Criteria) this;
        }

        public Criteria andMerchantReconciliationTimeIn(List<LocalDateTime> values) {
            addCriterion("merchant_reconciliation_time in", values, "merchantReconciliationTime");
            return (Criteria) this;
        }

        public Criteria andMerchantReconciliationTimeNotIn(List<LocalDateTime> values) {
            addCriterion("merchant_reconciliation_time not in", values, "merchantReconciliationTime");
            return (Criteria) this;
        }

        public Criteria andMerchantReconciliationTimeBetween(LocalDateTime value1, LocalDateTime value2) {
            addCriterion("merchant_reconciliation_time between", value1, value2, "merchantReconciliationTime");
            return (Criteria) this;
        }

        public Criteria andMerchantReconciliationTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {
            addCriterion("merchant_reconciliation_time not between", value1, value2, "merchantReconciliationTime");
            return (Criteria) this;
        }

        public Criteria andReconciliationTypeIsNull() {
            addCriterion("reconciliation_type is null");
            return (Criteria) this;
        }

        public Criteria andReconciliationTypeIsNotNull() {
            addCriterion("reconciliation_type is not null");
            return (Criteria) this;
        }

        public Criteria andReconciliationTypeEqualTo(String value) {
            addCriterion("reconciliation_type =", value, "reconciliationType");
            return (Criteria) this;
        }

        public Criteria andReconciliationTypeNotEqualTo(String value) {
            addCriterion("reconciliation_type <>", value, "reconciliationType");
            return (Criteria) this;
        }

        public Criteria andReconciliationTypeGreaterThan(String value) {
            addCriterion("reconciliation_type >", value, "reconciliationType");
            return (Criteria) this;
        }

        public Criteria andReconciliationTypeGreaterThanOrEqualTo(String value) {
            addCriterion("reconciliation_type >=", value, "reconciliationType");
            return (Criteria) this;
        }

        public Criteria andReconciliationTypeLessThan(String value) {
            addCriterion("reconciliation_type <", value, "reconciliationType");
            return (Criteria) this;
        }

        public Criteria andReconciliationTypeLessThanOrEqualTo(String value) {
            addCriterion("reconciliation_type <=", value, "reconciliationType");
            return (Criteria) this;
        }

        public Criteria andReconciliationTypeLike(String value) {
            addCriterion("reconciliation_type like", value, "reconciliationType");
            return (Criteria) this;
        }

        public Criteria andReconciliationTypeNotLike(String value) {
            addCriterion("reconciliation_type not like", value, "reconciliationType");
            return (Criteria) this;
        }

        public Criteria andReconciliationTypeIn(List<String> values) {
            addCriterion("reconciliation_type in", values, "reconciliationType");
            return (Criteria) this;
        }

        public Criteria andReconciliationTypeNotIn(List<String> values) {
            addCriterion("reconciliation_type not in", values, "reconciliationType");
            return (Criteria) this;
        }

        public Criteria andReconciliationTypeBetween(String value1, String value2) {
            addCriterion("reconciliation_type between", value1, value2, "reconciliationType");
            return (Criteria) this;
        }

        public Criteria andReconciliationTypeNotBetween(String value1, String value2) {
            addCriterion("reconciliation_type not between", value1, value2, "reconciliationType");
            return (Criteria) this;
        }

        public Criteria andInfoIdIsNull() {
            addCriterion("info_id is null");
            return (Criteria) this;
        }

        public Criteria andInfoIdIsNotNull() {
            addCriterion("info_id is not null");
            return (Criteria) this;
        }

        public Criteria andInfoIdEqualTo(String value) {
            addCriterion("info_id =", value, "infoId");
            return (Criteria) this;
        }

        public Criteria andInfoIdNotEqualTo(String value) {
            addCriterion("info_id <>", value, "infoId");
            return (Criteria) this;
        }

        public Criteria andInfoIdGreaterThan(String value) {
            addCriterion("info_id >", value, "infoId");
            return (Criteria) this;
        }

        public Criteria andInfoIdGreaterThanOrEqualTo(String value) {
            addCriterion("info_id >=", value, "infoId");
            return (Criteria) this;
        }

        public Criteria andInfoIdLessThan(String value) {
            addCriterion("info_id <", value, "infoId");
            return (Criteria) this;
        }

        public Criteria andInfoIdLessThanOrEqualTo(String value) {
            addCriterion("info_id <=", value, "infoId");
            return (Criteria) this;
        }

        public Criteria andInfoIdLike(String value) {
            addCriterion("info_id like", value, "infoId");
            return (Criteria) this;
        }

        public Criteria andInfoIdNotLike(String value) {
            addCriterion("info_id not like", value, "infoId");
            return (Criteria) this;
        }

        public Criteria andInfoIdIn(List<String> values) {
            addCriterion("info_id in", values, "infoId");
            return (Criteria) this;
        }

        public Criteria andInfoIdNotIn(List<String> values) {
            addCriterion("info_id not in", values, "infoId");
            return (Criteria) this;
        }

        public Criteria andInfoIdBetween(String value1, String value2) {
            addCriterion("info_id between", value1, value2, "infoId");
            return (Criteria) this;
        }

        public Criteria andInfoIdNotBetween(String value1, String value2) {
            addCriterion("info_id not between", value1, value2, "infoId");
            return (Criteria) this;
        }

        public Criteria andOutputWeightKgIsNull() {
            addCriterion("output_weight_kg is null");
            return (Criteria) this;
        }

        public Criteria andOutputWeightKgIsNotNull() {
            addCriterion("output_weight_kg is not null");
            return (Criteria) this;
        }

        public Criteria andOutputWeightKgEqualTo(BigDecimal value) {
            addCriterion("output_weight_kg =", value, "outputWeightKg");
            return (Criteria) this;
        }

        public Criteria andOutputWeightKgNotEqualTo(BigDecimal value) {
            addCriterion("output_weight_kg <>", value, "outputWeightKg");
            return (Criteria) this;
        }

        public Criteria andOutputWeightKgGreaterThan(BigDecimal value) {
            addCriterion("output_weight_kg >", value, "outputWeightKg");
            return (Criteria) this;
        }

        public Criteria andOutputWeightKgGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("output_weight_kg >=", value, "outputWeightKg");
            return (Criteria) this;
        }

        public Criteria andOutputWeightKgLessThan(BigDecimal value) {
            addCriterion("output_weight_kg <", value, "outputWeightKg");
            return (Criteria) this;
        }

        public Criteria andOutputWeightKgLessThanOrEqualTo(BigDecimal value) {
            addCriterion("output_weight_kg <=", value, "outputWeightKg");
            return (Criteria) this;
        }

        public Criteria andOutputWeightKgIn(List<BigDecimal> values) {
            addCriterion("output_weight_kg in", values, "outputWeightKg");
            return (Criteria) this;
        }

        public Criteria andOutputWeightKgNotIn(List<BigDecimal> values) {
            addCriterion("output_weight_kg not in", values, "outputWeightKg");
            return (Criteria) this;
        }

        public Criteria andOutputWeightKgBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("output_weight_kg between", value1, value2, "outputWeightKg");
            return (Criteria) this;
        }

        public Criteria andOutputWeightKgNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("output_weight_kg not between", value1, value2, "outputWeightKg");
            return (Criteria) this;
        }

        public Criteria andBailunShipmentCostCnyIsNull() {
            addCriterion("bailun_shipment_cost_cny is null");
            return (Criteria) this;
        }

        public Criteria andBailunShipmentCostCnyIsNotNull() {
            addCriterion("bailun_shipment_cost_cny is not null");
            return (Criteria) this;
        }

        public Criteria andBailunShipmentCostCnyEqualTo(BigDecimal value) {
            addCriterion("bailun_shipment_cost_cny =", value, "bailunShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andBailunShipmentCostCnyNotEqualTo(BigDecimal value) {
            addCriterion("bailun_shipment_cost_cny <>", value, "bailunShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andBailunShipmentCostCnyGreaterThan(BigDecimal value) {
            addCriterion("bailun_shipment_cost_cny >", value, "bailunShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andBailunShipmentCostCnyGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("bailun_shipment_cost_cny >=", value, "bailunShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andBailunShipmentCostCnyLessThan(BigDecimal value) {
            addCriterion("bailun_shipment_cost_cny <", value, "bailunShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andBailunShipmentCostCnyLessThanOrEqualTo(BigDecimal value) {
            addCriterion("bailun_shipment_cost_cny <=", value, "bailunShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andBailunShipmentCostCnyIn(List<BigDecimal> values) {
            addCriterion("bailun_shipment_cost_cny in", values, "bailunShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andBailunShipmentCostCnyNotIn(List<BigDecimal> values) {
            addCriterion("bailun_shipment_cost_cny not in", values, "bailunShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andBailunShipmentCostCnyBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("bailun_shipment_cost_cny between", value1, value2, "bailunShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andBailunShipmentCostCnyNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("bailun_shipment_cost_cny not between", value1, value2, "bailunShipmentCostCny");
            return (Criteria) this;
        }

        public Criteria andShipmentTimeIsNull() {
            addCriterion("shipment_time is null");
            return (Criteria) this;
        }

        public Criteria andShipmentTimeIsNotNull() {
            addCriterion("shipment_time is not null");
            return (Criteria) this;
        }

        public Criteria andShipmentTimeEqualTo(LocalDateTime value) {
            addCriterion("shipment_time =", value, "shipmentTime");
            return (Criteria) this;
        }

        public Criteria andShipmentTimeNotEqualTo(LocalDateTime value) {
            addCriterion("shipment_time <>", value, "shipmentTime");
            return (Criteria) this;
        }

        public Criteria andShipmentTimeGreaterThan(LocalDateTime value) {
            addCriterion("shipment_time >", value, "shipmentTime");
            return (Criteria) this;
        }

        public Criteria andShipmentTimeGreaterThanOrEqualTo(LocalDateTime value) {
            addCriterion("shipment_time >=", value, "shipmentTime");
            return (Criteria) this;
        }

        public Criteria andShipmentTimeLessThan(LocalDateTime value) {
            addCriterion("shipment_time <", value, "shipmentTime");
            return (Criteria) this;
        }

        public Criteria andShipmentTimeLessThanOrEqualTo(LocalDateTime value) {
            addCriterion("shipment_time <=", value, "shipmentTime");
            return (Criteria) this;
        }

        public Criteria andShipmentTimeIn(List<LocalDateTime> values) {
            addCriterion("shipment_time in", values, "shipmentTime");
            return (Criteria) this;
        }

        public Criteria andShipmentTimeNotIn(List<LocalDateTime> values) {
            addCriterion("shipment_time not in", values, "shipmentTime");
            return (Criteria) this;
        }

        public Criteria andShipmentTimeBetween(LocalDateTime value1, LocalDateTime value2) {
            addCriterion("shipment_time between", value1, value2, "shipmentTime");
            return (Criteria) this;
        }

        public Criteria andShipmentTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {
            addCriterion("shipment_time not between", value1, value2, "shipmentTime");
            return (Criteria) this;
        }

        public Criteria andDiffStateTypeIsNull() {
            addCriterion("diff_state_type is null");
            return (Criteria) this;
        }

        public Criteria andDiffStateTypeIsNotNull() {
            addCriterion("diff_state_type is not null");
            return (Criteria) this;
        }

        public Criteria andDiffStateTypeEqualTo(String value) {
            addCriterion("diff_state_type =", value, "diffStateType");
            return (Criteria) this;
        }

        public Criteria andDiffStateTypeNotEqualTo(String value) {
            addCriterion("diff_state_type <>", value, "diffStateType");
            return (Criteria) this;
        }

        public Criteria andDiffStateTypeGreaterThan(String value) {
            addCriterion("diff_state_type >", value, "diffStateType");
            return (Criteria) this;
        }

        public Criteria andDiffStateTypeGreaterThanOrEqualTo(String value) {
            addCriterion("diff_state_type >=", value, "diffStateType");
            return (Criteria) this;
        }

        public Criteria andDiffStateTypeLessThan(String value) {
            addCriterion("diff_state_type <", value, "diffStateType");
            return (Criteria) this;
        }

        public Criteria andDiffStateTypeLessThanOrEqualTo(String value) {
            addCriterion("diff_state_type <=", value, "diffStateType");
            return (Criteria) this;
        }

        public Criteria andDiffStateTypeLike(String value) {
            addCriterion("diff_state_type like", value, "diffStateType");
            return (Criteria) this;
        }

        public Criteria andDiffStateTypeNotLike(String value) {
            addCriterion("diff_state_type not like", value, "diffStateType");
            return (Criteria) this;
        }

        public Criteria andDiffStateTypeIn(List<String> values) {
            addCriterion("diff_state_type in", values, "diffStateType");
            return (Criteria) this;
        }

        public Criteria andDiffStateTypeNotIn(List<String> values) {
            addCriterion("diff_state_type not in", values, "diffStateType");
            return (Criteria) this;
        }

        public Criteria andDiffStateTypeBetween(String value1, String value2) {
            addCriterion("diff_state_type between", value1, value2, "diffStateType");
            return (Criteria) this;
        }

        public Criteria andDiffStateTypeNotBetween(String value1, String value2) {
            addCriterion("diff_state_type not between", value1, value2, "diffStateType");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgOriginalIsNull() {
            addCriterion("merchant_output_weight_kg_original is null");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgOriginalIsNotNull() {
            addCriterion("merchant_output_weight_kg_original is not null");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgOriginalEqualTo(BigDecimal value) {
            addCriterion("merchant_output_weight_kg_original =", value, "merchantOutputWeightKgOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgOriginalNotEqualTo(BigDecimal value) {
            addCriterion("merchant_output_weight_kg_original <>", value, "merchantOutputWeightKgOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgOriginalGreaterThan(BigDecimal value) {
            addCriterion("merchant_output_weight_kg_original >", value, "merchantOutputWeightKgOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgOriginalGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("merchant_output_weight_kg_original >=", value, "merchantOutputWeightKgOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgOriginalLessThan(BigDecimal value) {
            addCriterion("merchant_output_weight_kg_original <", value, "merchantOutputWeightKgOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgOriginalLessThanOrEqualTo(BigDecimal value) {
            addCriterion("merchant_output_weight_kg_original <=", value, "merchantOutputWeightKgOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgOriginalIn(List<BigDecimal> values) {
            addCriterion("merchant_output_weight_kg_original in", values, "merchantOutputWeightKgOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgOriginalNotIn(List<BigDecimal> values) {
            addCriterion("merchant_output_weight_kg_original not in", values, "merchantOutputWeightKgOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgOriginalBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("merchant_output_weight_kg_original between", value1, value2, "merchantOutputWeightKgOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantOutputWeightKgOriginalNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("merchant_output_weight_kg_original not between", value1, value2, "merchantOutputWeightKgOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostSnyOriginalIsNull() {
            addCriterion("merchant_shipment_cost_sny_original is null");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostSnyOriginalIsNotNull() {
            addCriterion("merchant_shipment_cost_sny_original is not null");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostSnyOriginalEqualTo(BigDecimal value) {
            addCriterion("merchant_shipment_cost_sny_original =", value, "merchantShipmentCostSnyOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostSnyOriginalNotEqualTo(BigDecimal value) {
            addCriterion("merchant_shipment_cost_sny_original <>", value, "merchantShipmentCostSnyOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostSnyOriginalGreaterThan(BigDecimal value) {
            addCriterion("merchant_shipment_cost_sny_original >", value, "merchantShipmentCostSnyOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostSnyOriginalGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("merchant_shipment_cost_sny_original >=", value, "merchantShipmentCostSnyOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostSnyOriginalLessThan(BigDecimal value) {
            addCriterion("merchant_shipment_cost_sny_original <", value, "merchantShipmentCostSnyOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostSnyOriginalLessThanOrEqualTo(BigDecimal value) {
            addCriterion("merchant_shipment_cost_sny_original <=", value, "merchantShipmentCostSnyOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostSnyOriginalIn(List<BigDecimal> values) {
            addCriterion("merchant_shipment_cost_sny_original in", values, "merchantShipmentCostSnyOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostSnyOriginalNotIn(List<BigDecimal> values) {
            addCriterion("merchant_shipment_cost_sny_original not in", values, "merchantShipmentCostSnyOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostSnyOriginalBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("merchant_shipment_cost_sny_original between", value1, value2, "merchantShipmentCostSnyOriginal");
            return (Criteria) this;
        }

        public Criteria andMerchantShipmentCostSnyOriginalNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("merchant_shipment_cost_sny_original not between", value1, value2, "merchantShipmentCostSnyOriginal");
            return (Criteria) this;
        }

        public Criteria andCostDiffDecimalIsNull() {
            addCriterion("cost_diff_decimal is null");
            return (Criteria) this;
        }

        public Criteria andCostDiffDecimalIsNotNull() {
            addCriterion("cost_diff_decimal is not null");
            return (Criteria) this;
        }

        public Criteria andCostDiffDecimalEqualTo(BigDecimal value) {
            addCriterion("cost_diff_decimal =", value, "costDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andCostDiffDecimalNotEqualTo(BigDecimal value) {
            addCriterion("cost_diff_decimal <>", value, "costDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andCostDiffDecimalGreaterThan(BigDecimal value) {
            addCriterion("cost_diff_decimal >", value, "costDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andCostDiffDecimalGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("cost_diff_decimal >=", value, "costDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andCostDiffDecimalLessThan(BigDecimal value) {
            addCriterion("cost_diff_decimal <", value, "costDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andCostDiffDecimalLessThanOrEqualTo(BigDecimal value) {
            addCriterion("cost_diff_decimal <=", value, "costDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andCostDiffDecimalIn(List<BigDecimal> values) {
            addCriterion("cost_diff_decimal in", values, "costDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andCostDiffDecimalNotIn(List<BigDecimal> values) {
            addCriterion("cost_diff_decimal not in", values, "costDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andCostDiffDecimalBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("cost_diff_decimal between", value1, value2, "costDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andCostDiffDecimalNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("cost_diff_decimal not between", value1, value2, "costDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andWeightDiffDecimalIsNull() {
            addCriterion("weight_diff_decimal is null");
            return (Criteria) this;
        }

        public Criteria andWeightDiffDecimalIsNotNull() {
            addCriterion("weight_diff_decimal is not null");
            return (Criteria) this;
        }

        public Criteria andWeightDiffDecimalEqualTo(BigDecimal value) {
            addCriterion("weight_diff_decimal =", value, "weightDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andWeightDiffDecimalNotEqualTo(BigDecimal value) {
            addCriterion("weight_diff_decimal <>", value, "weightDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andWeightDiffDecimalGreaterThan(BigDecimal value) {
            addCriterion("weight_diff_decimal >", value, "weightDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andWeightDiffDecimalGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("weight_diff_decimal >=", value, "weightDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andWeightDiffDecimalLessThan(BigDecimal value) {
            addCriterion("weight_diff_decimal <", value, "weightDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andWeightDiffDecimalLessThanOrEqualTo(BigDecimal value) {
            addCriterion("weight_diff_decimal <=", value, "weightDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andWeightDiffDecimalIn(List<BigDecimal> values) {
            addCriterion("weight_diff_decimal in", values, "weightDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andWeightDiffDecimalNotIn(List<BigDecimal> values) {
            addCriterion("weight_diff_decimal not in", values, "weightDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andWeightDiffDecimalBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("weight_diff_decimal between", value1, value2, "weightDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andWeightDiffDecimalNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("weight_diff_decimal not between", value1, value2, "weightDiffDecimal");
            return (Criteria) this;
        }

        public Criteria andLineNameIsNull() {
            addCriterion("line_name is null");
            return (Criteria) this;
        }

        public Criteria andLineNameIsNotNull() {
            addCriterion("line_name is not null");
            return (Criteria) this;
        }

        public Criteria andLineNameEqualTo(String value) {
            addCriterion("line_name =", value, "lineName");
            return (Criteria) this;
        }

        public Criteria andLineNameNotEqualTo(String value) {
            addCriterion("line_name <>", value, "lineName");
            return (Criteria) this;
        }

        public Criteria andLineNameGreaterThan(String value) {
            addCriterion("line_name >", value, "lineName");
            return (Criteria) this;
        }

        public Criteria andLineNameGreaterThanOrEqualTo(String value) {
            addCriterion("line_name >=", value, "lineName");
            return (Criteria) this;
        }

        public Criteria andLineNameLessThan(String value) {
            addCriterion("line_name <", value, "lineName");
            return (Criteria) this;
        }

        public Criteria andLineNameLessThanOrEqualTo(String value) {
            addCriterion("line_name <=", value, "lineName");
            return (Criteria) this;
        }

        public Criteria andLineNameLike(String value) {
            addCriterion("line_name like", value, "lineName");
            return (Criteria) this;
        }

        public Criteria andLineNameNotLike(String value) {
            addCriterion("line_name not like", value, "lineName");
            return (Criteria) this;
        }

        public Criteria andLineNameIn(List<String> values) {
            addCriterion("line_name in", values, "lineName");
            return (Criteria) this;
        }

        public Criteria andLineNameNotIn(List<String> values) {
            addCriterion("line_name not in", values, "lineName");
            return (Criteria) this;
        }

        public Criteria andLineNameBetween(String value1, String value2) {
            addCriterion("line_name between", value1, value2, "lineName");
            return (Criteria) this;
        }

        public Criteria andLineNameNotBetween(String value1, String value2) {
            addCriterion("line_name not between", value1, value2, "lineName");
            return (Criteria) this;
        }

        public Criteria andFeeCodeIsNull() {
            addCriterion("fee_code is null");
            return (Criteria) this;
        }

        public Criteria andFeeCodeIsNotNull() {
            addCriterion("fee_code is not null");
            return (Criteria) this;
        }

        public Criteria andFeeCodeEqualTo(String value) {
            addCriterion("fee_code =", value, "feeCode");
            return (Criteria) this;
        }

        public Criteria andFeeCodeNotEqualTo(String value) {
            addCriterion("fee_code <>", value, "feeCode");
            return (Criteria) this;
        }

        public Criteria andFeeCodeGreaterThan(String value) {
            addCriterion("fee_code >", value, "feeCode");
            return (Criteria) this;
        }

        public Criteria andFeeCodeGreaterThanOrEqualTo(String value) {
            addCriterion("fee_code >=", value, "feeCode");
            return (Criteria) this;
        }

        public Criteria andFeeCodeLessThan(String value) {
            addCriterion("fee_code <", value, "feeCode");
            return (Criteria) this;
        }

        public Criteria andFeeCodeLessThanOrEqualTo(String value) {
            addCriterion("fee_code <=", value, "feeCode");
            return (Criteria) this;
        }

        public Criteria andFeeCodeLike(String value) {
            addCriterion("fee_code like", value, "feeCode");
            return (Criteria) this;
        }

        public Criteria andFeeCodeNotLike(String value) {
            addCriterion("fee_code not like", value, "feeCode");
            return (Criteria) this;
        }

        public Criteria andFeeCodeIn(List<String> values) {
            addCriterion("fee_code in", values, "feeCode");
            return (Criteria) this;
        }

        public Criteria andFeeCodeNotIn(List<String> values) {
            addCriterion("fee_code not in", values, "feeCode");
            return (Criteria) this;
        }

        public Criteria andFeeCodeBetween(String value1, String value2) {
            addCriterion("fee_code between", value1, value2, "feeCode");
            return (Criteria) this;
        }

        public Criteria andFeeCodeNotBetween(String value1, String value2) {
            addCriterion("fee_code not between", value1, value2, "feeCode");
            return (Criteria) this;
        }

        public Criteria andRemarkIsNull() {
            addCriterion("remark is null");
            return (Criteria) this;
        }

        public Criteria andRemarkIsNotNull() {
            addCriterion("remark is not null");
            return (Criteria) this;
        }

        public Criteria andRemarkEqualTo(String value) {
            addCriterion("remark =", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkNotEqualTo(String value) {
            addCriterion("remark <>", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkGreaterThan(String value) {
            addCriterion("remark >", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkGreaterThanOrEqualTo(String value) {
            addCriterion("remark >=", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkLessThan(String value) {
            addCriterion("remark <", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkLessThanOrEqualTo(String value) {
            addCriterion("remark <=", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkLike(String value) {
            addCriterion("remark like", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkNotLike(String value) {
            addCriterion("remark not like", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkIn(List<String> values) {
            addCriterion("remark in", values, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkNotIn(List<String> values) {
            addCriterion("remark not in", values, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkBetween(String value1, String value2) {
            addCriterion("remark between", value1, value2, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkNotBetween(String value1, String value2) {
            addCriterion("remark not between", value1, value2, "remark");
            return (Criteria) this;
        }

        public Criteria andGenerateBillStatusIsNull() {
            addCriterion("generate_bill_status is null");
            return (Criteria) this;
        }

        public Criteria andGenerateBillStatusIsNotNull() {
            addCriterion("generate_bill_status is not null");
            return (Criteria) this;
        }

        public Criteria andGenerateBillStatusEqualTo(String value) {
            addCriterion("generate_bill_status =", value, "generateBillStatus");
            return (Criteria) this;
        }

        public Criteria andGenerateBillStatusNotEqualTo(String value) {
            addCriterion("generate_bill_status <>", value, "generateBillStatus");
            return (Criteria) this;
        }

        public Criteria andGenerateBillStatusGreaterThan(String value) {
            addCriterion("generate_bill_status >", value, "generateBillStatus");
            return (Criteria) this;
        }

        public Criteria andGenerateBillStatusGreaterThanOrEqualTo(String value) {
            addCriterion("generate_bill_status >=", value, "generateBillStatus");
            return (Criteria) this;
        }

        public Criteria andGenerateBillStatusLessThan(String value) {
            addCriterion("generate_bill_status <", value, "generateBillStatus");
            return (Criteria) this;
        }

        public Criteria andGenerateBillStatusLessThanOrEqualTo(String value) {
            addCriterion("generate_bill_status <=", value, "generateBillStatus");
            return (Criteria) this;
        }

        public Criteria andGenerateBillStatusLike(String value) {
            addCriterion("generate_bill_status like", value, "generateBillStatus");
            return (Criteria) this;
        }

        public Criteria andGenerateBillStatusNotLike(String value) {
            addCriterion("generate_bill_status not like", value, "generateBillStatus");
            return (Criteria) this;
        }

        public Criteria andGenerateBillStatusIn(List<String> values) {
            addCriterion("generate_bill_status in", values, "generateBillStatus");
            return (Criteria) this;
        }

        public Criteria andGenerateBillStatusNotIn(List<String> values) {
            addCriterion("generate_bill_status not in", values, "generateBillStatus");
            return (Criteria) this;
        }

        public Criteria andGenerateBillStatusBetween(String value1, String value2) {
            addCriterion("generate_bill_status between", value1, value2, "generateBillStatus");
            return (Criteria) this;
        }

        public Criteria andGenerateBillStatusNotBetween(String value1, String value2) {
            addCriterion("generate_bill_status not between", value1, value2, "generateBillStatus");
            return (Criteria) this;
        }

        public Criteria andFeeProductTypeIsNull() {
            addCriterion("fee_product_type is null");
            return (Criteria) this;
        }

        public Criteria andFeeProductTypeIsNotNull() {
            addCriterion("fee_product_type is not null");
            return (Criteria) this;
        }

        public Criteria andFeeProductTypeEqualTo(String value) {
            addCriterion("fee_product_type =", value, "feeProductType");
            return (Criteria) this;
        }

        public Criteria andFeeProductTypeNotEqualTo(String value) {
            addCriterion("fee_product_type <>", value, "feeProductType");
            return (Criteria) this;
        }

        public Criteria andFeeProductTypeGreaterThan(String value) {
            addCriterion("fee_product_type >", value, "feeProductType");
            return (Criteria) this;
        }

        public Criteria andFeeProductTypeGreaterThanOrEqualTo(String value) {
            addCriterion("fee_product_type >=", value, "feeProductType");
            return (Criteria) this;
        }

        public Criteria andFeeProductTypeLessThan(String value) {
            addCriterion("fee_product_type <", value, "feeProductType");
            return (Criteria) this;
        }

        public Criteria andFeeProductTypeLessThanOrEqualTo(String value) {
            addCriterion("fee_product_type <=", value, "feeProductType");
            return (Criteria) this;
        }

        public Criteria andFeeProductTypeLike(String value) {
            addCriterion("fee_product_type like", value, "feeProductType");
            return (Criteria) this;
        }

        public Criteria andFeeProductTypeNotLike(String value) {
            addCriterion("fee_product_type not like", value, "feeProductType");
            return (Criteria) this;
        }

        public Criteria andFeeProductTypeIn(List<String> values) {
            addCriterion("fee_product_type in", values, "feeProductType");
            return (Criteria) this;
        }

        public Criteria andFeeProductTypeNotIn(List<String> values) {
            addCriterion("fee_product_type not in", values, "feeProductType");
            return (Criteria) this;
        }

        public Criteria andFeeProductTypeBetween(String value1, String value2) {
            addCriterion("fee_product_type between", value1, value2, "feeProductType");
            return (Criteria) this;
        }

        public Criteria andFeeProductTypeNotBetween(String value1, String value2) {
            addCriterion("fee_product_type not between", value1, value2, "feeProductType");
            return (Criteria) this;
        }

        public Criteria andLastModificationTimeIsNull() {
            addCriterion("last_modification_time is null");
            return (Criteria) this;
        }

        public Criteria andLastModificationTimeIsNotNull() {
            addCriterion("last_modification_time is not null");
            return (Criteria) this;
        }

        public Criteria andLastModificationTimeEqualTo(LocalDateTime value) {
            addCriterion("last_modification_time =", value, "lastModificationTime");
            return (Criteria) this;
        }

        public Criteria andLastModificationTimeNotEqualTo(LocalDateTime value) {
            addCriterion("last_modification_time <>", value, "lastModificationTime");
            return (Criteria) this;
        }

        public Criteria andLastModificationTimeGreaterThan(LocalDateTime value) {
            addCriterion("last_modification_time >", value, "lastModificationTime");
            return (Criteria) this;
        }

        public Criteria andLastModificationTimeGreaterThanOrEqualTo(LocalDateTime value) {
            addCriterion("last_modification_time >=", value, "lastModificationTime");
            return (Criteria) this;
        }

        public Criteria andLastModificationTimeLessThan(LocalDateTime value) {
            addCriterion("last_modification_time <", value, "lastModificationTime");
            return (Criteria) this;
        }

        public Criteria andLastModificationTimeLessThanOrEqualTo(LocalDateTime value) {
            addCriterion("last_modification_time <=", value, "lastModificationTime");
            return (Criteria) this;
        }

        public Criteria andLastModificationTimeIn(List<LocalDateTime> values) {
            addCriterion("last_modification_time in", values, "lastModificationTime");
            return (Criteria) this;
        }

        public Criteria andLastModificationTimeNotIn(List<LocalDateTime> values) {
            addCriterion("last_modification_time not in", values, "lastModificationTime");
            return (Criteria) this;
        }

        public Criteria andLastModificationTimeBetween(LocalDateTime value1, LocalDateTime value2) {
            addCriterion("last_modification_time between", value1, value2, "lastModificationTime");
            return (Criteria) this;
        }

        public Criteria andLastModificationTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {
            addCriterion("last_modification_time not between", value1, value2, "lastModificationTime");
            return (Criteria) this;
        }

        public Criteria andGmtCreateTimeIsNull() {
            addCriterion("gmt_create_time is null");
            return (Criteria) this;
        }

        public Criteria andGmtCreateTimeIsNotNull() {
            addCriterion("gmt_create_time is not null");
            return (Criteria) this;
        }

        public Criteria andGmtCreateTimeEqualTo(LocalDateTime value) {
            addCriterion("gmt_create_time =", value, "gmtCreateTime");
            return (Criteria) this;
        }

        public Criteria andGmtCreateTimeNotEqualTo(LocalDateTime value) {
            addCriterion("gmt_create_time <>", value, "gmtCreateTime");
            return (Criteria) this;
        }

        public Criteria andGmtCreateTimeGreaterThan(LocalDateTime value) {
            addCriterion("gmt_create_time >", value, "gmtCreateTime");
            return (Criteria) this;
        }

        public Criteria andGmtCreateTimeGreaterThanOrEqualTo(LocalDateTime value) {
            addCriterion("gmt_create_time >=", value, "gmtCreateTime");
            return (Criteria) this;
        }

        public Criteria andGmtCreateTimeLessThan(LocalDateTime value) {
            addCriterion("gmt_create_time <", value, "gmtCreateTime");
            return (Criteria) this;
        }

        public Criteria andGmtCreateTimeLessThanOrEqualTo(LocalDateTime value) {
            addCriterion("gmt_create_time <=", value, "gmtCreateTime");
            return (Criteria) this;
        }

        public Criteria andGmtCreateTimeIn(List<LocalDateTime> values) {
            addCriterion("gmt_create_time in", values, "gmtCreateTime");
            return (Criteria) this;
        }

        public Criteria andGmtCreateTimeNotIn(List<LocalDateTime> values) {
            addCriterion("gmt_create_time not in", values, "gmtCreateTime");
            return (Criteria) this;
        }

        public Criteria andGmtCreateTimeBetween(LocalDateTime value1, LocalDateTime value2) {
            addCriterion("gmt_create_time between", value1, value2, "gmtCreateTime");
            return (Criteria) this;
        }

        public Criteria andGmtCreateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {
            addCriterion("gmt_create_time not between", value1, value2, "gmtCreateTime");
            return (Criteria) this;
        }

        public Criteria andGmtModifyTimeIsNull() {
            addCriterion("gmt_modify_time is null");
            return (Criteria) this;
        }

        public Criteria andGmtModifyTimeIsNotNull() {
            addCriterion("gmt_modify_time is not null");
            return (Criteria) this;
        }

        public Criteria andGmtModifyTimeEqualTo(LocalDateTime value) {
            addCriterion("gmt_modify_time =", value, "gmtModifyTime");
            return (Criteria) this;
        }

        public Criteria andGmtModifyTimeNotEqualTo(LocalDateTime value) {
            addCriterion("gmt_modify_time <>", value, "gmtModifyTime");
            return (Criteria) this;
        }

        public Criteria andGmtModifyTimeGreaterThan(LocalDateTime value) {
            addCriterion("gmt_modify_time >", value, "gmtModifyTime");
            return (Criteria) this;
        }

        public Criteria andGmtModifyTimeGreaterThanOrEqualTo(LocalDateTime value) {
            addCriterion("gmt_modify_time >=", value, "gmtModifyTime");
            return (Criteria) this;
        }

        public Criteria andGmtModifyTimeLessThan(LocalDateTime value) {
            addCriterion("gmt_modify_time <", value, "gmtModifyTime");
            return (Criteria) this;
        }

        public Criteria andGmtModifyTimeLessThanOrEqualTo(LocalDateTime value) {
            addCriterion("gmt_modify_time <=", value, "gmtModifyTime");
            return (Criteria) this;
        }

        public Criteria andGmtModifyTimeIn(List<LocalDateTime> values) {
            addCriterion("gmt_modify_time in", values, "gmtModifyTime");
            return (Criteria) this;
        }

        public Criteria andGmtModifyTimeNotIn(List<LocalDateTime> values) {
            addCriterion("gmt_modify_time not in", values, "gmtModifyTime");
            return (Criteria) this;
        }

        public Criteria andGmtModifyTimeBetween(LocalDateTime value1, LocalDateTime value2) {
            addCriterion("gmt_modify_time between", value1, value2, "gmtModifyTime");
            return (Criteria) this;
        }

        public Criteria andGmtModifyTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {
            addCriterion("gmt_modify_time not between", value1, value2, "gmtModifyTime");
            return (Criteria) this;
        }
    }

    /**
     * This class was generated by MyBatis Generator.
     * This class corresponds to the database table dc_base_logistics
     *
     * @mbg.generated do_not_delete_during_merge
     */
    public static class Criteria extends GeneratedCriteria {
        /**
         * This field was generated by MyBatis Generator.
         * This field corresponds to the database table dc_base_logistics
         *
         * @mbg.generated
         * @project https://github.com/itfsw/mybatis-generator-plugin
         */
        private DcBaseLogisticsExample example;

        /**
         * This method was generated by MyBatis Generator.
         * This method corresponds to the database table dc_base_logistics
         *
         * @mbg.generated
         * @project https://github.com/itfsw/mybatis-generator-plugin
         */
        protected Criteria(DcBaseLogisticsExample example) {
            super();
            this.example = example;
        }

        /**
         * This method was generated by MyBatis Generator.
         * This method corresponds to the database table dc_base_logistics
         *
         * @mbg.generated
         * @project https://github.com/itfsw/mybatis-generator-plugin
         */
        public DcBaseLogisticsExample example() {
            return this.example;
        }

        /**
         * This method was generated by MyBatis Generator.
         * This method corresponds to the database table dc_base_logistics
         *
         * @mbg.generated
         * @project https://github.com/itfsw/mybatis-generator-plugin
         */
        @Deprecated
        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {
            if (ifAdd) {
                add.add(this);
            }
            return this;
        }

        /**
         * This method was generated by MyBatis Generator.
         * This method corresponds to the database table dc_base_logistics
         *
         * @mbg.generated
         * @project https://github.com/itfsw/mybatis-generator-plugin
         */
        public Criteria when(boolean condition, ICriteriaWhen then) {
            if (condition) {
                then.criteria(this);
            }
            return this;
        }

        /**
         * This method was generated by MyBatis Generator.
         * This method corresponds to the database table dc_base_logistics
         *
         * @mbg.generated
         * @project https://github.com/itfsw/mybatis-generator-plugin
         */
        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {
            if (condition) {
                then.criteria(this);
            } else {
                otherwise.criteria(this);
            }
            return this;
        }

        /**
         * This interface was generated by MyBatis Generator.
         * This interface corresponds to the database table dc_base_logistics
         *
         * @mbg.generated
         * @project https://github.com/itfsw/mybatis-generator-plugin
         */
        @Deprecated
        public interface ICriteriaAdd {
            /**
             * This method was generated by MyBatis Generator.
             * This method corresponds to the database table dc_base_logistics
             *
             * @mbg.generated
             * @project https://github.com/itfsw/mybatis-generator-plugin
             */
            Criteria add(Criteria add);
        }
    }

    /**
     * This class was generated by MyBatis Generator.
     * This class corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     */
    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }

    /**
     * This interface was generated by MyBatis Generator.
     * This interface corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    public interface ICriteriaWhen {
        /**
         * This method was generated by MyBatis Generator.
         * This method corresponds to the database table dc_base_logistics
         *
         * @mbg.generated
         * @project https://github.com/itfsw/mybatis-generator-plugin
         */
        void criteria(Criteria criteria);
    }

    /**
     * This interface was generated by MyBatis Generator.
     * This interface corresponds to the database table dc_base_logistics
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    public interface IExampleWhen {
        /**
         * This method was generated by MyBatis Generator.
         * This method corresponds to the database table dc_base_logistics
         *
         * @mbg.generated
         * @project https://github.com/itfsw/mybatis-generator-plugin
         */
        void example(DcBaseLogisticsExample example);
    }
}