text:
Les polis d'ours des cavernes sont le résultat du polissage des parois rocheuses dû aux passages répétés des animaux. Il s'agit d'un processus d'abrasion dû au contact fréquent de la fourrure de l'ours des cavernes contre la roche.

Historique

Les polis d'ours () sont mentionnées pour la première fois en 1826 par le minéralogiste et géologue allemand Johann Jacob Nöggerath. En 1823, il avait observé des spécimens de griffades sur les parois de la Alte Höhle à Sundwig.

Polissage

On suppose que l'ours des cavernes, tout comme aujourd'hui l'ours brun, se roulait dans la boue pour se débarrasser de ses parasites. Les résidus solides contenus dans la boue se collaient à la fourrure de l'animal et produisaient à chaque passage l'effet d'un papier de verre sur les parois des grottes. En circulant dans les cavernes, les ours se frottaient aux roches situées sur leur itinéraire ; au fil du temps, ils ont arrondi et poli les parties proéminentes du rocher, jusqu'à les rendre parfaitement lisses. On ne retrouve des polis qu'à une hauteur comprise entre 0,4 et  au-dessus du niveau du sol des grottes attesté au Pléistocène, ce qui correspond à l'épaule de l'animal, dont la hauteur varie en fonction de l'âge des individus. Les polis se forment surtout dans les passages étroits ou dans les parties saillantes des parois. On en trouve également, à une fréquence moindre, sur des stalagmites et blocs de pierre épars dans des cavités spacieuses ; là où les animaux, en se frottant, cherchaient à laisser leur empreinte olfactive, ce qui leur permettait de s'orienter dans l'obscurité de la grotte.

Extension géographique

Les polis d'ours des cavernes sont particulièrement bien attestés dans des grottes du sud de l'Allemagne, de l'Autriche et de la Suisse, par exemple, dans la Geißenklösterle, dans la grotte de Vogelherd, la grotte de Charlotte, au Hohle Fels, dans la Drachenhöhle et les grottes de Saint-Brais. La grotte de Prélétang, en Isère, présente des polis d'ours remarquables.

Notes et références

Bibliographie

 .

Articles connexes
 Griffades d'ours des cavernes

Ours dans la culture
Paléolithique


Post Banquet Activities Taking the Attendance Videos Meadows Larks Home Jeep's Cheeps!
them for any commercial purpose.
Not Hollywood stars but you'll see some unique characters in the videos!
We are sorry if we have left someone off of the above two lists. If so, please let us know at dcmead@frontier.com or write Janet Meadows at P.O. Box 62, Scioto Furnace, OH 45677. We apologize for any errors and would appreciate being given a chance to correct our mistakes.
Great web page. Enjoyed all the pictures and videos.


The Mercy Futures group is comprised of a diverse group of women who have been in some way touched by God's spirit of Mercy through the Parramatta Sisters. This group is committed to working with the lay Mercy community to ensure that there are opportunities to maintain, develop and carry forward a deep connection to Mercy and to know and live the Mercy values within our complex world.
"We will enjoy and celebrate Earth's beauty and bounty and her many species. We will honour our duty to love and care for her and add to her well-being wherever possible.
The presenters for all these sessions will share their understanding of the complexity and challenges of caring for our world in the present day and will give you opportunities to reflect on how we also can Respond in Mercy.
All sessions will be held at the Parramatta Convent with details of the time and room location in the invitations that will be sent out for each event closer to the date.
We hope that you will be able to attend one or all of these sessions.


text:
package org.deviceconnect.android.deviceplugin.kadecot.profile;

import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;

import org.deviceconnect.android.deviceplugin.kadecot.kadecotdevice.KadecotHomeAirConditioner;
import org.deviceconnect.android.deviceplugin.kadecot.kadecotdevice.KadecotResult;
import org.deviceconnect.android.deviceplugin.kadecot.KadecotDeviceService;
import org.deviceconnect.android.deviceplugin.kadecot.profile.original.AirConditionerProfile;
import org.deviceconnect.android.message.MessageUtils;
import org.deviceconnect.message.DConnectMessage;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

/**
 * Home Air Conditioner Profile.
 *
 * @author NTT DOCOMO, INC.
 */
public class KadecotHomeAirConditionerProfile extends AirConditionerProfile {

    /**
     * Kadecot server query task class.
     */
    public class KadecotServerQueryTask extends AsyncTask<Intent, Void, Void> {

        @Override
        protected Void doInBackground(final Intent... intents) {
            Intent request = intents[0];
            Intent response = intents[1];
            String action = request.getAction();
            String attr = getAttribute(request);
            if (action.endsWith(DConnectMessage.METHOD_GET)) {
                if (attr == null) {
                    getAirConditioner(request, response);
                } else {
                    switch (attr) {
                        case KadecotHomeAirConditionerProfile.ATTRIBUTE_OPERATION_POWER_SAVING:
                            getAirConditionerOperationPowerSaving(request, response);
                            break;
                        case KadecotHomeAirConditionerProfile.ATTRIBUTE_OPERATION_MODE_SETTING:
                            getAirConditionerOperationModeSetting(request, response);
                            break;
                        case KadecotHomeAirConditionerProfile.ATTRIBUTE_ROOM_TEMPERATURE:
                            getAirConditionerRoomTemperature(request, response);
                            break;
                        case KadecotHomeAirConditionerProfile.ATTRIBUTE_TEMPERATURE_VALUE:
                            getAirConditionerTemperatureValue(request, response);
                            break;
                        case KadecotHomeAirConditionerProfile.ATTRIBUTE_AIR_FLOW_VALUE:
                            getAirConditionerAirFlowValue(request, response);
                            break;
                        case KadecotHomeAirConditionerProfile.ATTRIBUTE_ENL_PROPERTY:
                            getAirConditionerECHONETLiteProperty(request, response);
                            break;
                        default:
                            MessageUtils.setNotSupportAttributeError(response);
                            sendResponse(response);
                            break;
                    }
                }
            } else if (action.endsWith(DConnectMessage.METHOD_POST)) {
                MessageUtils.setNotSupportAttributeError(response);
                sendResponse(response);
            } else if (action.endsWith(DConnectMessage.METHOD_PUT)) {
                if (attr == null) {
                    putAirConditioner(request, response);
                } else {
                    switch (attr) {
                        case KadecotHomeAirConditionerProfile.ATTRIBUTE_OPERATION_POWER_SAVING:
                            putAirConditionerOperationPowerSaving(request, response);
                            break;
                        case KadecotHomeAirConditionerProfile.ATTRIBUTE_OPERATION_MODE_SETTING:
                            putAirConditionerOperationModeSetting(request, response);
                            break;
                        case KadecotHomeAirConditionerProfile.ATTRIBUTE_TEMPERATURE_VALUE:
                            putAirConditionerTemperatureValue(request, response);
                            break;
                        case KadecotHomeAirConditionerProfile.ATTRIBUTE_AIR_FLOW_VALUE:
                            putAirConditionerAirFlowValue(request, response);
                            break;
                        case KadecotHomeAirConditionerProfile.ATTRIBUTE_ENL_PROPERTY:
                            putAirConditionerECHONETLiteProperty(request, response);
                            break;
                        default:
                            MessageUtils.setNotSupportAttributeError(response);
                            sendResponse(response);
                            break;
                    }
                }
            } else if (action.endsWith(DConnectMessage.METHOD_DELETE)) {
                if (attr == null) {
                    deleteAirConditioner(request, response);
                } else {
                    MessageUtils.setNotSupportAttributeError(response);
                    sendResponse(response);
                }
            }
            return null;
        }
    }

    /** Kadecot prefix. */
    static final String PREFIX_KADECOT = "kadecot";

    /** "No result" string. */
    static final String NO_RESULT = "{}";

    /** Index of prefix. */
    static final int IDX_PREFIX = 0;

    /** Index of kadecot deviceId. */
    static final int IDX_DEVICEID = 1;

    /** Index of profile name. */
    static final int IDX_PROFILENAME = 2;

    @Override
    protected boolean onGetAirConditioner(final Intent request, final Intent response, final String serviceId) {
        if (checkServiceId(serviceId, response)) {
            new KadecotServerQueryTask().execute(request, response);
            return false;
        }
        return true;
    }

    /**
     * Get air conditioner power status.
     *
     * @param request Request.
     * @param response Response.
     */
    protected void getAirConditioner(final Intent request, final Intent response) {
        KadecotResult result = requestKadecotServer(response, getServiceID(request),
                KadecotHomeAirConditioner.POWERSTATE_GET);
        if (result != null) {
            String propertyName = result.getPropertyName();
            String propertyValue = result.getPropertyValue();
            if (propertyName != null && propertyValue != null) {
                if (propertyName.equals(KadecotHomeAirConditioner.PROP_OPERATIONSTATUS)) {
                    setResult(response, DConnectMessage.RESULT_OK);
                    switch (propertyValue) {
                        case "48":  setPowerStatus(response, "ON");         break;
                        case "49":  setPowerStatus(response, "OFF");        break;
                        default:    setPowerStatus(response, "UNKNOWN");    break;
                    }
                } else if (result.getServerResult().equals(NO_RESULT)) {
                    MessageUtils.setNotSupportAttributeError(response, "This device not support 'get' procedure.");
                } else {
                    createInvalidKadecotResponseError(response);
                }
            } else {
                createInvalidKadecotResponseError(response);
            }
        }
        sendResponse(response);
    }

    @Override
    protected boolean onGetAirConditionerOperationPowerSaving(final Intent request, final Intent response,
                                                              final String serviceId) {
        if (checkServiceId(serviceId, response)) {
            new KadecotServerQueryTask().execute(request, response);
            return false;
        }
        return true;
    }

    /**
     * Get air conditioner operation power saving status.
     *
     * @param request Request.
     * @param response Response.
     */
    protected void getAirConditionerOperationPowerSaving(final Intent request, final Intent response) {
        KadecotResult result = requestKadecotServer(response, getServiceID(request),
                KadecotHomeAirConditioner.POWERSAVING_GET);
        if (result != null) {
            String propertyName = result.getPropertyName();
            String propertyValue = result.getPropertyValue();
            if (propertyName != null && propertyValue != null) {
                if (propertyName.equals(KadecotHomeAirConditioner.PROP_POWERSAVINGOPERATIONSETTING)) {
                    setResult(response, DConnectMessage.RESULT_OK);
                    switch (propertyValue) {
                        case "65":  setOperationPowerSaving(response, "PowerSaving");   break;
                        case "66":  setOperationPowerSaving(response, "Normal");        break;
                        default:    setOperationPowerSaving(response, "UNKNOWN");       break;
                    }
                } else if (result.getServerResult().equals(NO_RESULT)) {
                    MessageUtils.setNotSupportAttributeError(response, "This device not support 'get' procedure.");
                } else {
                    createInvalidKadecotResponseError(response);
                }
            } else {
                createInvalidKadecotResponseError(response);
            }
        }
        sendResponse(response);
    }

    @Override
    protected boolean onGetAirConditionerOperationModeSetting(final Intent request, final Intent response,
                                                              final String serviceId) {
        if (checkServiceId(serviceId, response)) {
            new KadecotServerQueryTask().execute(request, response);
            return false;
        }
        return true;
    }

    /**
     * Get air conditioner operation mode setting status.
     *
     * @param request Request.
     * @param response Response.
     */
    protected void getAirConditionerOperationModeSetting(final Intent request, final Intent response) {
        KadecotResult result = requestKadecotServer(response, getServiceID(request),
                KadecotHomeAirConditioner.OPERATIONMODE_GET);
        if (result != null) {
            String propertyName = result.getPropertyName();
            String propertyValue = result.getPropertyValue();
            if (propertyName != null && propertyValue != null) {
                if (propertyName.equals(KadecotHomeAirConditioner.PROP_OPERATIONMODESETTING)) {
                    setResult(response, DConnectMessage.RESULT_OK);
                    switch (propertyValue) {
                        case "64":  setOperationModeSetting(response, "Other");             break;
                        case "65":  setOperationModeSetting(response, "Automatic");         break;
                        case "66":  setOperationModeSetting(response, "Cooling");           break;
                        case "67":  setOperationModeSetting(response, "Heating");           break;
                        case "68":  setOperationModeSetting(response, "Dehumidification");  break;
                        case "69":  setOperationModeSetting(response, "AirCirculator");     break;
                        default:    setOperationModeSetting(response, "UNKNOWN");           break;
                    }
                } else if (result.getServerResult().equals(NO_RESULT)) {
                    MessageUtils.setNotSupportAttributeError(response, "This device not support 'get' procedure.");
                } else {
                    createInvalidKadecotResponseError(response);
                }
            } else {
                createInvalidKadecotResponseError(response);
            }
        }
        sendResponse(response);
    }

    @Override
    protected boolean onGetAirConditionerRoomTemperature(final Intent request, final Intent response,
                                                         final String serviceId) {
        if (checkServiceId(serviceId, response)) {
            new KadecotServerQueryTask().execute(request, response);
            return false;
        }
        return true;
    }

    /**
     * Get air conditioner room temperature.
     *
     * @param request Request.
     * @param response Response.
     */
    protected void getAirConditionerRoomTemperature(final Intent request, final Intent response) {
        KadecotResult result = requestKadecotServer(response, getServiceID(request),
                KadecotHomeAirConditioner.ROOMTEMPERATURE_GET);
        if (result != null) {
            String propertyName = result.getPropertyName();
            String propertyValue = result.getPropertyValue();
            if (propertyName != null && propertyValue != null) {
                if (propertyName.equals(KadecotHomeAirConditioner.PROP_MEASUREDVALUEOFROOMTEMPERATURE)) {
                    setResult(response, DConnectMessage.RESULT_OK);
                    int value = Integer.parseInt(propertyValue);
                    if ((value & 0x80) == 0x80) {
                        value = ((~(value) & 0x7F) + 1) * -1;
                    }
                    setRoomTemperature(response, String.valueOf(value));
                } else if (result.getServerResult().equals(NO_RESULT)) {
                    MessageUtils.setNotSupportAttributeError(response, "This device not support 'get' procedure.");
                } else {
                    createInvalidKadecotResponseError(response);
                }
            } else {
                createInvalidKadecotResponseError(response);
            }
        }
        sendResponse(response);
    }

    @Override
    protected boolean onGetAirConditionerTemperatureValue(final Intent request, final Intent response,
                                                          final String serviceId) {
        if (checkServiceId(serviceId, response)) {
            new KadecotServerQueryTask().execute(request, response);
            return false;
        }
        return true;
    }

    /**
     * Get air conditioner temperature value.
     *
     * @param request Request.
     * @param response Response.
     */
    protected void getAirConditionerTemperatureValue(final Intent request, final Intent response) {
        KadecotResult result = requestKadecotServer(response, getServiceID(request),
                KadecotHomeAirConditioner.TEMPERATUREVALUE_GET);
        if (result != null) {
            String propertyName = result.getPropertyName();
            String propertyValue = result.getPropertyValue();
            if (propertyName != null && propertyValue != null) {
                if (propertyName.equals(KadecotHomeAirConditioner.PROP_SETTEMPERATUREVALUE)) {
                    setResult(response, DConnectMessage.RESULT_OK);
                    setTemperatureValue(response, propertyValue);
                } else if (result.getServerResult().equals(NO_RESULT)) {
                    MessageUtils.setNotSupportAttributeError(response, "This device not support 'get' procedure.");
                } else {
                    createInvalidKadecotResponseError(response);
                }
            } else {
                createInvalidKadecotResponseError(response);
            }
        }
        sendResponse(response);
    }

    @Override
    protected boolean onGetAirConditionerAirFlowValue(final Intent request, final Intent response,
                                                      final String serviceId) {
        if (checkServiceId(serviceId, response)) {
            new KadecotServerQueryTask().execute(request, response);
            return false;
        }
        return true;
    }

    /**
     * Get air conditioner air flow value.
     *
     * @param request Request.
     * @param response Response.
     */
    protected void getAirConditionerAirFlowValue(final Intent request, final Intent response) {
        KadecotResult result = requestKadecotServer(response, getServiceID(request),
                KadecotHomeAirConditioner.AIRFLOW_GET);
        if (result != null) {
            String propertyName = result.getPropertyName();
            String propertyValue = result.getPropertyValue();
            if (propertyName != null && propertyValue != null) {
                if (propertyName.equals(KadecotHomeAirConditioner.PROP_AIRFLOWRATESETTING)) {
                    setResult(response, DConnectMessage.RESULT_OK);
                    setAirFlowAuto(response, "false");
                    switch (propertyValue) {
                        case "49":  setAirFlowValue(response, "0.11");  break;
                        case "50":  setAirFlowValue(response, "0.24");  break;
                        case "51":  setAirFlowValue(response, "0.37");  break;
                        case "52":  setAirFlowValue(response, "0.50");  break;
                        case "53":  setAirFlowValue(response, "0.63");  break;
                        case "54":  setAirFlowValue(response, "0.76");  break;
                        case "55":  setAirFlowValue(response, "0.89");  break;
                        case "56":  setAirFlowValue(response, "1.0");   break;
                        case "65":
                            setAirFlowValue(response, "0.0");
                            setAirFlowAuto(response, "true");
                            break;
                        default:    setAirFlowValue(response, "-1.0");  break;
                    }
                } else if (result.getServerResult().equals(NO_RESULT)) {
                    MessageUtils.setNotSupportAttributeError(response, "This device not support 'get' procedure.");
                } else {
                    createInvalidKadecotResponseError(response);
                }
            } else {
                createInvalidKadecotResponseError(response);
            }
        }
        sendResponse(response);
    }

    @Override
    protected boolean onGetAirConditionerECHONETLiteProperty(final Intent request, final Intent response,
                                                             final String serviceId) {
        if (checkServiceId(serviceId, response)) {
            new KadecotServerQueryTask().execute(request, response);
            return false;
        }
        return true;
    }

    /**
     * Get air conditioner ECHONET Lite property.
     *
     * @param request Request.
     * @param response Response.
     */
    protected void getAirConditionerECHONETLiteProperty(final Intent request, final Intent response) {
        KadecotDeviceService service = (KadecotDeviceService) getContext();
        String[] element = service.getElementFromServiceId(getServiceID(request));
        if (element[IDX_PREFIX].equals(PREFIX_KADECOT) && element[IDX_DEVICEID] != null
                && element[IDX_PROFILENAME].equals(PROFILE_NAME)) {
            String strEpcs = getEpc(request);
            if (strEpcs == null) {
                MessageUtils.setInvalidRequestParameterError(response);
                sendResponse(response);
                return;
            }

            Pattern p = Pattern.compile(",");
            String[] epcs = p.split(strEpcs);
            List<Bundle> dataList = new ArrayList<>();
            Bundle resultData = new Bundle();

            for (int i = 0; i < epcs.length; i++) {
                String strValue = epcs[i].trim();
                try {
                    int checkInt = Integer.decode(strValue);
                    if (checkInt < 0x0 || checkInt >= 0x100) {
                        MessageUtils.setInvalidRequestParameterError(response);
                        sendResponse(response);
                        return;
                    }
                    epcs[i] = "0x" + Integer.toHexString(checkInt);
                } catch (NumberFormatException e) {
                    MessageUtils.setInvalidRequestParameterError(response);
                    sendResponse(response);
                    return;
                }
            }

            for (String epc : epcs) {
                String urlstr = "content://com.sonycsl.kadecot.json.provider/jsonp/v1/devices/"
                        + element[IDX_DEVICEID] + "?procedure=get&params={\"propertyName\":\"" + epc + "\"}";
                Cursor cursor = getContext().getContentResolver().query(Uri.parse(urlstr), null, null, null, null);
                if (cursor != null) {
                    cursor.moveToFirst();
                    String result = cursor.getString(0);
                    String propertyName = service.getPropertyName(result);
                    String propertyValue = service.getPropertyValue(result);
                    if (propertyName != null && propertyValue != null) {
                        if (result.equals(NO_RESULT)) {
                            cursor.close();
                            MessageUtils.setNotSupportAttributeError(response,
                                    "This device not support 'get' procedure.");
                            sendResponse(response);
                            return;
                        } else {
                            resultData.putString(PARAM_EPC, propertyName);
                            resultData.putString(PARAM_VALUE, propertyValue);
                            dataList.add((Bundle) resultData.clone());
                        }
                    } else {
                        cursor.close();
                        createInvalidKadecotResponseError(response);
                        sendResponse(response);
                        return;
                    }
                    cursor.close();
                } else {
                    createInvalidKadecotResponseError(response);
                    sendResponse(response);
                    return;
                }
            }
            setResult(response, DConnectMessage.RESULT_OK);
            response.putExtra(PARAM_PROPERTIES, dataList.toArray(new Bundle[dataList.size()]));
        } else {
            createInvalidKadecotResponseError(response);
        }
        sendResponse(response);
    }

    @Override
    protected boolean onPutAirConditioner(final Intent request, final Intent response, final String serviceId) {
        if (checkServiceId(serviceId, response)) {
            new KadecotServerQueryTask().execute(request, response);
            return false;
        }
        return true;
    }

    /**
     * Put air conditioner power status.
     *
     * @param request Request.
     * @param response Response.
     */
    protected void putAirConditioner(final Intent request, final Intent response) {
        KadecotResult result = requestKadecotServer(response, getServiceID(request),
                KadecotHomeAirConditioner.POWERSTATE_ON);
        if (result != null) {
            String propertyName = result.getPropertyName();
            String propertyValue = result.getPropertyValue();
            if (propertyName != null && propertyValue != null) {
                if (propertyName.equals(KadecotHomeAirConditioner.PROP_OPERATIONSTATUS)) {
                    setResult(response, DConnectMessage.RESULT_OK);
                    switch (propertyValue) {
                        case "48":  setResult(response, DConnectMessage.RESULT_OK);     break;
                        case "49":  setResult(response, DConnectMessage.RESULT_ERROR);  break;
                        default:    createInvalidKadecotResponseError(response);        break;
                    }
                } else if (result.getServerResult().equals(NO_RESULT)) {
                    MessageUtils.setNotSupportAttributeError(response, "This device not support 'get' procedure.");
                } else {
                    createInvalidKadecotResponseError(response);
                }
            } else {
                createInvalidKadecotResponseError(response);
            }
        }
        sendResponse(response);
    }

    @Override
    protected boolean onPutAirConditionerOperationPowerSaving(final Intent request, final Intent response,
                                                              final String serviceId) {
        if (checkServiceId(serviceId, response)) {
            new KadecotServerQueryTask().execute(request, response);
            return false;
        }
        return true;
    }

    /**
     * Put air conditioner operation power saving status.
     *
     * @param request Request.
     * @param response Response.
     */
    protected void putAirConditionerOperationPowerSaving(final Intent request, final Intent response) {
        int index;
        String status = getPowerSaving(request);
        if (status == null) {
            MessageUtils.setInvalidRequestParameterError(response);
            sendResponse(response);
            return;
        }

        switch (status) {
            case "Normal":      index = KadecotHomeAirConditioner.POWERSAVING_OFF; break;
            case "PowerSaving": index = KadecotHomeAirConditioner.POWERSAVING_ON;  break;
            default:
                MessageUtils.setInvalidRequestParameterError(response);
                sendResponse(response);
                return;
        }

        KadecotResult result = requestKadecotServer(response, getServiceID(request), index);
        if (result != null) {
            String propertyName = result.getPropertyName();
            String propertyValue = result.getPropertyValue();
            if (propertyName != null && propertyValue != null) {
                if (propertyName.equals(KadecotHomeAirConditioner.PROP_POWERSAVINGOPERATIONSETTING)) {
                    String powersaving = getPowerSaving(request);
                    switch (propertyValue) {
                        case "65":  checkResult(response, powersaving, "PowerSaving");  break;
                        case "66":  checkResult(response, powersaving, "Normal");       break;
                        default:    createInvalidKadecotResponseError(response);        break;
                    }
                } else if (result.getServerResult().equals(NO_RESULT)) {
                    MessageUtils.setNotSupportAttributeError(response, "This device not support 'get' procedure.");
                } else {
                    createInvalidKadecotResponseError(response);
                }
            } else {
                createInvalidKadecotResponseError(response);
            }
        }
        sendResponse(response);
    }

    @Override
    protected boolean onPutAirConditionerOperationModeSetting(final Intent request, final Intent response,
                                                              final String serviceId) {
        if (checkServiceId(serviceId, response)) {
            new KadecotServerQueryTask().execute(request, response);
            return false;
        }
        return true;
    }

    /**
     * Put air conditioner operation mode setting status.
     *
     * @param request Request.
     * @param response Response.
     */
    protected void putAirConditionerOperationModeSetting(final Intent request, final Intent response) {
        int index;
        String status = getOperationModeSetting(request);
        if (status == null) {
            MessageUtils.setInvalidRequestParameterError(response);
            sendResponse(response);
            return;
        }

        switch (getOperationModeSetting(request)) {
            case "Other":               index = KadecotHomeAirConditioner.OPERATIONMODE_OTHER; break;
            case "Automatic":           index = KadecotHomeAirConditioner.OPERATIONMODE_AUTO;  break;
            case "Cooling":             index = KadecotHomeAirConditioner.OPERATIONMODE_COOL;  break;
            case "Heating":             index = KadecotHomeAirConditioner.OPERATIONMODE_HEAT;  break;
            case "Dehumidification":    index = KadecotHomeAirConditioner.OPERATIONMODE_DRY;   break;
            case "AirCirculator":       index = KadecotHomeAirConditioner.OPERATIONMODE_WIND;  break;
            default:
                MessageUtils.setInvalidRequestParameterError(response);
                sendResponse(response);
                return;
        }

        KadecotResult result = requestKadecotServer(response, getServiceID(request), index);
        if (result != null) {
            String propertyName = result.getPropertyName();
            String propertyValue = result.getPropertyValue();
            if (propertyName != null && propertyValue != null) {
                if (propertyName.equals(KadecotHomeAirConditioner.PROP_OPERATIONMODESETTING)) {
                    String mode = getOperationModeSetting(request);
                    switch (propertyValue) {
                        case "64":  checkResult(response, mode, "Other");               break;
                        case "65":  checkResult(response, mode, "Automatic");           break;
                        case "66":  checkResult(response, mode, "Cooling");             break;
                        case "67":  checkResult(response, mode, "Heating");             break;
                        case "68":  checkResult(response, mode, "Dehumidification");    break;
                        case "69":  checkResult(response, mode, "AirCirculator");       break;
                        default:    createInvalidKadecotResponseError(response);        break;
                    }
                } else if (result.getServerResult().equals(NO_RESULT)) {
                    MessageUtils.setNotSupportAttributeError(response, "This device not support 'get' procedure.");
                } else {
                    createInvalidKadecotResponseError(response);
                }
            } else {
                createInvalidKadecotResponseError(response);
            }
        }
        sendResponse(response);
    }

    @Override
    protected boolean onPutAirConditionerTemperatureValue(final Intent request, final Intent response,
                                                          final String serviceId) {
        if (checkServiceId(serviceId, response)) {
            new KadecotServerQueryTask().execute(request, response);
            return false;
        }
        return true;
    }

    /**
     * Put air conditioner temperature value.
     *
     * @param request Request.
     * @param response Response.
     */
    protected void putAirConditionerTemperatureValue(final Intent request, final Intent response) {
        int value = getTemperatureValue(request);
        if (value == -1 || value < 0 || value > 50) {
            MessageUtils.setInvalidRequestParameterError(response);
            sendResponse(response);
            return;
        }

        KadecotResult result = requestKadecotServer(response, getServiceID(request),
                KadecotHomeAirConditioner.TEMPERATUREVALUE_SET, value);
        if (result != null) {
            String propertyName = result.getPropertyName();
            String propertyValue = result.getPropertyValue();
            if (propertyName != null && propertyValue != null) {
                if (propertyName.equals(KadecotHomeAirConditioner.PROP_SETTEMPERATUREVALUE)) {
                    if (Integer.parseInt(propertyValue) == value) {
                        setResult(response, DConnectMessage.RESULT_OK);
                    } else {
                        setResult(response, DConnectMessage.RESULT_ERROR);
                    }
                } else if (result.getServerResult().equals(NO_RESULT)) {
                    MessageUtils.setNotSupportAttributeError(response, "This device not support 'get' procedure.");
                } else {
                    createInvalidKadecotResponseError(response);
                }
            } else {
                createInvalidKadecotResponseError(response);
            }
        }
        sendResponse(response);
    }

    @Override
    protected boolean onPutAirConditionerAirFlowValue(final Intent request, final Intent response,
                                                      final String serviceId) {
        if (checkServiceId(serviceId, response)) {
            new KadecotServerQueryTask().execute(request, response);
            return false;
        }
        return true;
    }

    /**
     * Put air conditioner air flow value.
     *
     * @param request Request.
     * @param response Response.
     */
    protected void putAirConditionerAirFlowValue(final Intent request, final Intent response) {
        if (isNullAirFlowValue(request) && isNullAirFlowAuto(request)) {
            MessageUtils.setInvalidRequestParameterError(response);
            sendResponse(response);
            return;
        }

        boolean auto = getAirFlowAuto(request);
        int param;

        if (auto) {
            param = KadecotHomeAirConditioner.AIRFLOW_AUTO;
        } else {
            int value = (int) (getAirFlowValue(request) * 100);
            if (value >= 0 && value < 12) {
                param = KadecotHomeAirConditioner.AIRFLOW_LV1;
            } else if (value >= 12 && value < 25) {
                param = KadecotHomeAirConditioner.AIRFLOW_LV2;
            } else if (value >= 25 && value < 38) {
                param = KadecotHomeAirConditioner.AIRFLOW_LV3;
            } else if (value >= 38 && value < 51) {
                param = KadecotHomeAirConditioner.AIRFLOW_LV4;
            } else if (value >= 51 && value < 64) {
                param = KadecotHomeAirConditioner.AIRFLOW_LV5;
            } else if (value >= 64 && value < 77) {
                param = KadecotHomeAirConditioner.AIRFLOW_LV6;
            } else if (value >= 77 && value < 90) {
                param = KadecotHomeAirConditioner.AIRFLOW_LV7;
            } else if (value >= 90 && value <= 100) {
                param = KadecotHomeAirConditioner.AIRFLOW_LV8;
            } else {
                MessageUtils.setInvalidRequestParameterError(response);
                sendResponse(response);
                return;
            }
        }

        KadecotResult result = requestKadecotServer(response, getServiceID(request), param);
        if (result != null) {
            String propertyName = result.getPropertyName();
            String propertyValue = result.getPropertyValue();
            if (propertyName != null && propertyValue != null) {
                if (propertyName.equals(KadecotHomeAirConditioner.PROP_AIRFLOWRATESETTING)) {
                    if (propertyName.equals(KadecotHomeAirConditioner.PROP_AIRFLOWRATESETTING)) {
                        switch (propertyValue) {
                            case "49":
                                checkResult(response, param, KadecotHomeAirConditioner.AIRFLOW_LV1);
                                break;
                            case "50":
                                checkResult(response, param, KadecotHomeAirConditioner.AIRFLOW_LV2);
                                break;
                            case "51":
                                checkResult(response, param, KadecotHomeAirConditioner.AIRFLOW_LV3);
                                break;
                            case "52":
                                checkResult(response, param, KadecotHomeAirConditioner.AIRFLOW_LV4);
                                break;
                            case "53":
                                checkResult(response, param, KadecotHomeAirConditioner.AIRFLOW_LV5);
                                break;
                            case "54":
                                checkResult(response, param, KadecotHomeAirConditioner.AIRFLOW_LV6);
                                break;
                            case "55":
                                checkResult(response, param, KadecotHomeAirConditioner.AIRFLOW_LV7);
                                break;
                            case "56":
                                checkResult(response, param, KadecotHomeAirConditioner.AIRFLOW_LV8);
                                break;
                            case "65":
                                checkResult(response, param, KadecotHomeAirConditioner.AIRFLOW_AUTO);
                                break;
                            default:
                                createInvalidKadecotResponseError(response);
                                break;
                        }
                    } else {
                        createInvalidKadecotResponseError(response);
                    }
                } else if (result.getServerResult().equals(NO_RESULT)) {
                    MessageUtils.setNotSupportAttributeError(response, "This device not support 'get' procedure.");
                } else {
                    createInvalidKadecotResponseError(response);
                }
            } else {
                createInvalidKadecotResponseError(response);
            }
        }
        sendResponse(response);
    }

    @Override
    protected boolean onPutAirConditionerECHONETLiteProperty(final Intent request, final Intent response,
                                                             final String serviceId) {
        if (checkServiceId(serviceId, response)) {
            new KadecotServerQueryTask().execute(request, response);
            return false;
        }
        return true;
    }

    /**
     * Put air conditioner ECHONET Lite property.
     *
     * @param request Request.
     * @param response Response.
     */
    protected void putAirConditionerECHONETLiteProperty(final Intent request, final Intent response) {
        KadecotDeviceService service = (KadecotDeviceService) getContext();
        String[] element = service.getElementFromServiceId(getServiceID(request));
        if (element[IDX_PREFIX].equals(PREFIX_KADECOT) && element[IDX_DEVICEID] != null
                && element[IDX_PROFILENAME].equals(PROFILE_NAME)) {
            String epc = getEpc(request);
            String value = getEpcValue(request);
            if (epc == null || value == null) {
                MessageUtils.setInvalidRequestParameterError(response);
                sendResponse(response);
                return;
            }

            try {
                int checkInt = Integer.decode(epc);
                if (checkInt < 0x0 || checkInt >= 0x100) {
                    MessageUtils.setInvalidRequestParameterError(response);
                    sendResponse(response);
                    return;
                }
                epc = "0x" + Integer.toHexString(checkInt);
            } catch (NumberFormatException e) {
                MessageUtils.setInvalidRequestParameterError(response);
                sendResponse(response);
                return;
            }

            Pattern p = Pattern.compile(",");
            String[] values = p.split(value);
            for (int i = 0; i < values.length; i++) {
                String strValue = values[i].trim();
                try {
                    int checkInt = Integer.decode(strValue);
                    if (checkInt < 0x0 || checkInt >= 0x100) {
                        MessageUtils.setInvalidRequestParameterError(response);
                        sendResponse(response);
                        return;
                    }
                    values[i] = "0x" + Integer.toHexString(checkInt);
                } catch (NumberFormatException e) {
                    MessageUtils.setInvalidRequestParameterError(response);
                    sendResponse(response);
                    return;
                }
            }
            StringBuilder buf = new StringBuilder();
            for (int i = 0; i < values.length; i++) {
                if (i != 0) {
                    buf.append(",");
                }
                buf.append(values[i]);
            }

            String urlstr = "content://com.sonycsl.kadecot.json.provider/jsonp/v1/devices/"
                    + element[IDX_DEVICEID] + "?procedure=set&params={\"propertyName\":\"" + epc
                    + "\",\"propertyValue\":[" + buf.toString() + "]}";

            Cursor cursor = getContext().getContentResolver().query(Uri.parse(urlstr), null, null, null, null);
            if (cursor != null) {
                cursor.moveToFirst();
                String result = cursor.getString(0);
                String propertyName = service.getPropertyName(result);
                String propertyValue = service.getPropertyValue(result);
                if (propertyName != null && propertyValue != null) {
                    if (result.equals(NO_RESULT)) {
                        MessageUtils.setNotSupportAttributeError(response,
                                "This device not support 'get' procedure.");
                    } else {
                        setResult(response, DConnectMessage.RESULT_OK);
                        setEpc(response, propertyName);
                        setValue(response, propertyValue);
                    }
                } else {
                    createInvalidKadecotResponseError(response);
                }
                cursor.close();
            } else {
                createInvalidKadecotResponseError(response);
            }
        } else {
            createInvalidKadecotResponseError(response);
        }
        sendResponse(response);
    }

    @Override
    protected boolean onDeleteAirConditioner(final Intent request, final Intent response, final String serviceId) {
        if (checkServiceId(serviceId, response)) {
            new KadecotServerQueryTask().execute(request, response);
            return false;
        }
        return true;
    }

    /**
     * Delete air conditioner power status.
     *
     * @param request Request.
     * @param response Response.
     */
    protected void deleteAirConditioner(final Intent request, final Intent response) {
        KadecotResult result = requestKadecotServer(response, getServiceID(request),
                KadecotHomeAirConditioner.POWERSTATE_OFF);
        if (result != null) {
            String propertyName = result.getPropertyName();
            String propertyValue = result.getPropertyValue();
            if (propertyName != null && propertyValue != null) {
                if (propertyName.equals(KadecotHomeAirConditioner.PROP_OPERATIONSTATUS)) {
                    switch (propertyValue) {
                        case "48":  setResult(response, DConnectMessage.RESULT_ERROR);  break;
                        case "49":  setResult(response, DConnectMessage.RESULT_OK);     break;
                        default:    createInvalidKadecotResponseError(response);        break;
                    }
                } else if (result.getServerResult().equals(NO_RESULT)) {
                    MessageUtils.setNotSupportAttributeError(response, "This device not support 'get' procedure.");
                } else {
                    createInvalidKadecotResponseError(response);
                }
            } else {
                createInvalidKadecotResponseError(response);
            }
        }
        sendResponse(response);
    }

    /**
     * Check serviceID.
     *
     * @param serviceId ServiceId.
     * @param response Response intent.
     * @return Normal(true) / Abnormal(false).
     */
    private boolean checkServiceId(final String serviceId, final Intent response) {
        KadecotDeviceService service = (KadecotDeviceService) getContext();
        if (serviceId == null) {
            createEmptyServiceId(response);
            return false;
        } else if (!(service.checkServiceId(serviceId))) {
            createNotFoundService(response);
            return false;
        } else {
            return true;
        }
    }

    /**
     * Check result (Int).
     *
     * @param response Response intent.
     * @param param1 parameter 1.
     * @param param2 parameter 2.
     */
    private void checkResult(final Intent response, final int param1, final int param2) {
        if (param1 == param2) {
            setResult(response, DConnectMessage.RESULT_OK);
        } else {
            setResult(response, DConnectMessage.RESULT_ERROR);
        }
    }

    /**
     * Check result (String).
     *
     * @param response Response intent.
     * @param param1 parameter 1.
     * @param param2 parameter 2.
     */
    private void checkResult(final Intent response, final String param1, final String param2) {
        if (param1.equals(param2)) {
            setResult(response, DConnectMessage.RESULT_OK);
        } else {
            setResult(response, DConnectMessage.RESULT_ERROR);
        }
    }

    /**
     * Creates an error of "serviceId is empty".
     *
     * @param response Intent to store the response.
     */
    private void createEmptyServiceId(final Intent response) {
        MessageUtils.setEmptyServiceIdError(response);
    }

    /**
     * Creates an error of "service not found".
     *
     * @param response Intent to store the response.
     */
    private void createNotFoundService(final Intent response) {
        MessageUtils.setNotFoundServiceError(response);
    }

    /**
     * Creates an error of "unknown error" for Kadecot server response.
     *
     * @param response Intent to store the response.
     */
    private void createInvalidKadecotResponseError(final Intent response) {
        MessageUtils.setUnknownError(response, "There is a problem with the response from the Kadecot server.");
    }

    /**
     * Request Kadecot server.
     *
     * @param response Response.
     * @param serviceId Service ID.
     * @param property Request property.
     * @return Request result. (Processing error is null.)
     */
    protected KadecotResult requestKadecotServer(final Intent response, final String serviceId, final int property) {
        KadecotDeviceService service = (KadecotDeviceService) getContext();
        String[] element = service.getElementFromServiceId(serviceId);
        if (element[IDX_PREFIX].equals(PREFIX_KADECOT) && element[IDX_DEVICEID] != null
                && element[IDX_PROFILENAME].equals(PROFILE_NAME)) {
            KadecotHomeAirConditioner khac = new KadecotHomeAirConditioner();
            String urlstr = khac.exchangeJsonString(element[IDX_DEVICEID], property);
            Cursor cursor = getContext().getContentResolver().query(Uri.parse(urlstr), null, null, null, null);
            if (cursor != null) {
                cursor.moveToFirst();
                KadecotResult result = new KadecotResult();
                String strResult = cursor.getString(0);
                result.setServerResult(strResult);
                result.setPropertyName(service.getPropertyName(strResult));
                result.setPropertyValue(service.getPropertyValue(strResult));
                cursor.close();
                return result;
            } else {
                createInvalidKadecotResponseError(response);
                return null;
            }
        } else {
            createInvalidKadecotResponseError(response);
            return null;
        }
    }

    /**
     * Request Kadecot server.
     *
     * @param response Response.
     * @param serviceId Service ID.
     * @param property Request property.
     * @param value Set property value.
     * @return Request result. (Processing error is null.)
     */
    protected KadecotResult requestKadecotServer(final Intent response, final String serviceId, final int property,
                                                 final int value) {
        KadecotDeviceService service = (KadecotDeviceService) getContext();
        String[] element = service.getElementFromServiceId(serviceId);
        if (element[IDX_PREFIX].equals(PREFIX_KADECOT) && element[IDX_DEVICEID] != null
                && element[IDX_PROFILENAME].equals(PROFILE_NAME)) {
            KadecotHomeAirConditioner khac = new KadecotHomeAirConditioner();
            String urlstr = khac.exchangeJsonString(element[IDX_DEVICEID], property, value);
            Cursor cursor = getContext().getContentResolver().query(Uri.parse(urlstr), null, null, null, null);
            if (cursor != null) {
                cursor.moveToFirst();
                KadecotResult result = new KadecotResult();
                String strResult = cursor.getString(0);
                result.setServerResult(strResult);
                result.setPropertyName(service.getPropertyName(strResult));
                result.setPropertyValue(service.getPropertyValue(strResult));
                cursor.close();
                return result;
            } else {
                createInvalidKadecotResponseError(response);
                return null;
            }
        } else {
            createInvalidKadecotResponseError(response);
            return null;
        }
    }

}

redpajama_set_name: RedPajamaGithub


Liver allocation based on model for end-stage liver disease-sodium (MELD-Na) score improved waitlist outcomes and provided significant benefit to patients with hyponatremia, researchers report in the November issue of Gastroenterology. However, there are discrepancies in transplantation survival benefit, so current rules for liver allocation might require revision, the authors state.
Cumulative incidence of waitlist mortality and transplantation.
The MELD score had been used to allocate deceased donor liver grafts in the United States since 2002. Based on laboratory data, it provides an estimate of how urgently patients on the transplant waitlist need a liver—patients with higher scores have priority for liver transplantation.
Hyponatremia is an independent prognostic factor in patients with cirrhosis that was not included in the original MELD score calculation. Researchers therefore developed a modified scoring system to further decrease waitlist mortality that incorporated serum sodium concentration into the MELD equation (MELD-Na). This MELD-Na score was officially implemented for liver graft allocation in January 2016. The Share 35 rule offers livers to local and regional patients on the waitlist with MELD (and MELD-Na) scores of at least 35.
To determine the effects of the liver allocation based on MELD-Na score, Shunji Nagai et al compared waitlist outcomes and post-transplantation outcomes between the MELD and MELD-Na periods after Share 35 was implemented. They also evaluated the survival benefit of LT in the MELD-Na period.
The authors examined 2 groups of patients in the United Network for Organ Sharing registry. The MELD-period group comprised 18,850 patients who were registered as transplant candidates from June 18, 2013 through January 10, 2016 and the MELD-Na period group comprised 14,512 patients who were registered from January 11, 2016 through September 30, 2017. Nagai et al compared waitlist and post-transplantation outcomes and association with serum sodium concentrations between groups.
They found that mortality within 90 days on the liver waitlist decreased (hazard ratio, 0.738) and transplantation probability increased significantly (hazard ratio, 1.217) in the MELD-Na period.
Although mild, moderate, and severe hyponatremia (130–134, 125–129, and below 125 mmol/L) were independent risk factors for waitlist mortality in the MELD period, risk decreased in the MELD-Na period.
Nagai et al performed propensity score matching for waitlist patients between the MELD and MELD-Na period groups to validate their findings; 14,244 waitlisted patients were selected from each group. Compared with the MELD period group, a lower proportion of patients in the MELD-Na period died within 90 days on the waitlist (8.1% vs 10.5% for MELD period) and a higher proportion received a liver transplantat (34.8% vs 30.0% in the MELD period, see figure). When the authors included propensity scores in a risk adjustment model, the hazard ratios of 90-day waitlist mortality and transplantation probability were 0.750 and 1.186, respectively, in the MELD-Na period.
In the MELD period, the risks of 90-day waitlist mortality in patients with mild, moderate, and severe hyponatremia were 1.354-fold, 1.762-fold, and 2.656-fold those of patients normal sodium levels. This effect decreased significantly in the MELD-Na period, to 1.092-fold, 1.271-fold, and 1.374-fold, respectively.
The overall waitlist mortality rates were 169.2 and 170.7 deaths per 1000 patient-years in the MELD-Na and MELD periods, respectively. The mortalities of in transplant recipients with 1-year follow-up were 114.1 and 98.3 deaths per 1000 patient-years in the MELD-Na and MELD periods, respectively.
The adjusted survival benefit of transplant recipients vs patients placed on the waitlist in the same score categories was definitive for patients with MELD-Na scores of 21–23 in the MELD-Na era (HR 0.336) compared with MELD scores of 15–17 in the MELD era (HR 0.365).
Hyponatremia determines MELD-Na scores, which might benefit hyponatremic patients with a MELD score that does not meet the cutoff for liver regional share programs (Share15 or Share35). Patients who had an initial and final MELD score lower than 15 but a MELD-Na score of at least 15 had a significantly greater likelihood of transplantation within 90 days in the MELD-Na period (26.1%) vs 12.7% in the MELD period, and they had significantly lower 90-day waitlist mortality in the MELD-Na period (1.9%) vs 10.6% in the MELD period.
Nagai et al acknowledge that the effective therapies for HCV infection developed probably improved waitlist outcomes. However, a subgroup analysis of HCV and non-HCV groups showed that the improvement in waitlist outcomes was greater among patients without HCV infection, compared to those HCV infection.
The effects of the MELD-Na score were less pronounced in patients with higher scores. The authors believe this was because the additional points added for hyponatremia are smaller in higher MELD score groups. Patients whose MELD-Na score was increased by hyponatremia to above 35 did benefit with the MELD-Na period, but the benefit observed was less obvious than in patients in lower score categories.
Nagai et al conclude that liver allocation based on the MELD-Na score has decreased waitlist mortality. Patients with hyponatremia and low MELD benefit from MELD-Na based allocation and the Share 15 rule, but the effects are less pronounced in patients with higher scores. The survival benefit of liver transplatation has shifted toward patients with higher scores in the MELD-Na period. The authors state that liver allocation rules such as Share 15 and Share 35 should be revised to fulfill the Final Rule under the MELD-Na based allocation.
What is the Best Treatment Option for Fistulizing Crohn's Disease?


Mumbai: A court here today rejected Enforcement Directorate's plea for further custody of former Maharashtra Deputy Chief Minister of Chhagan Bhujbal, arrested in a money laundering case, saying sufficient grounds were not made out for this.
Former Maharashtra Deputy Chief Minister Chhagan Bhujbal, was arrested on March 14.
ED had sought seven more days custody of Bhujbal but judge P R Bhavke of the special court for Prevention of Money Laundering Act cases sent the senior NCP leader in judicial custody till March 31, saying "sufficient ground was not made out for further remand".
Bhujbal, arrested on March 14, will be lodged in high- security Arthur Road jail here now.
Bhujbal told the court today that statements of some of the witnesses were lies and concocted stories.
Referring to the statement of one of the witnesses who is employee of the Mumbai Education Trust controlled by the Bhujbal family that he had seen bags of cash being brought to the office, Bhujbal questioned what was he doing there.
"I had gone gone to MET office's guest house late in the night (that day) as I had to catch a flight early in the morning. What was this witness….doing there late at night when the people at MET leave for home at 5.30 pm?" he said.
The NCP leader also complained that yesterday ED officers recorded his statement till 4.30 pm and again turned up to question him further at 11.30 at night.
"I told them they can take my statement early in the morning today. I woke up early today. I told the ED officials that we have to go to the court today, so why were they delaying. They said they were busy with other work and kept me waiting," he told the court.
Bhujbal is accused of receiving kickbacks in awarding of contract for the state guest-house `Maharashtra Sadan' in New Delhi and laundering this money through various ways.


With each passing day, coconut oil is growing to become one of the most important natural skin care products. It is known to possess several qualities which are highly beneficial on the road to flawless skin, some of those properties include anti-inflammatory, antioxidant, antifungal, and antibacterial properties. Asides these it is said to be a great moisturizer which helps to lubricate dry skin and keep it from breaking and wrinkling, it also helps to clear fine lines, acne, scars and dark patches. It is recommended that coconut oil be added to our skin care routine on a daily basis to get a healthy and clear skin.
This infers that coconut face mask is just a great way to keep the skin bright and firm, let us take a look at some ways to make the coconut face mask and the benefits they provide.
Pour all the ingredients in a bowl and mix for a homogenous mixture.
Apply the mixture on the face by massaging in a circular manner and allow to stay for about 20 minutes.
Wipe off with a neat face towel.
This can be done twice or three times a week for clear skin.
Put all the ingredients in a glass dropper bottle and shake vigorously to achieve a uniform mixture.
Rinse the face with water, dab dry and apply the mixture.
Leave it for 5 minutes and wipe off with a damp towel.
Mix ingredients in a clean bowl and apply to a clean face.
Massage circularly to the face and allow to stay for 30 minutes then wipe with a damp towel.


text:
Nano-Cerium Oxide/Aluminum Oxide as an Efficient Catalyst for the Synthesis of Xanthene Derivatives as Potential Antiviral and Anti-Inflammatory Agents
Bita Baghernejad
Maral Alikhani
Department of Chemistry, Payame Noor University, P.O. BOX 19395-4697 Tehran, Iran
https://doi.org/10.22034/jaoc.2022.154819
Xanthenes have been considered in medicine and biology. Their medicinal properties include antiviral, antibacterial, anti-inflammatory, and therapeutic photodynamic activities, as well as the antagonist for paralytic action. 1,8-Dioxo-octahydroxanthenes have synthesized good yields via a reaction of aldehydes and dimedone in the presence of cerium oxide/aluminum oxide nano-catalyst as a catalyst. High efficiency, short time and reuseability of catalyst are the advantages of this method.
Multicomponent reactions (MCRs)
nano- cerium oxide/aluminum oxide
xanthenes derivatives
one-pot synthesis
Among many heteroaromatic compounds, xanthenes, as one of the most important organic compounds, have attracted the attention of many pharmaceutical and organic compounds researchers due to their strong biological and medicinal activities such as antiviral, antibacterial, and anti-malarial actions [1].
In particular, xanthenes form a structural unit in a number of natural products and are used in a variety of compounds due to the strong reaction of the inner pyran ring. Therefore, artificial methods have been developed for the production of xanthenes. However, some of these methods have disadvantages such as low product yields, long reaction time, use of toxic solvents and reagents, and harsh reaction conditions. One of the available methods for the synthesis of xanthenes is the reaction of dimedone with aldehydes using various catalysts [2-12]. Practical applications of metal oxides as catalysts in organic synthesis have increased due to their large surface area and high catalytic activity. 1,8-Dioxo-octahydroxanthenes are an important group of oxygenated heterocycles in which a pyran is replaced with a phenyl ring attached to two cyclohexenone rings on either side. Xanthenes are useful medicinal compounds that are very important in the field of pharmaceutical and biological activities. They can be used as an antidepressant, antibacterial drug, for staining the cytoplasm, collagen, and muscle fibers, anti-cancer drug and as a ligand [13-17]. In most chemical reactions, a catalyst is used to increase the reaction rate. The goal of chemists is to produce catalysts with high activity and efficiency, complete selectivity, the ability to separate and recover from the reaction mixture, low energy consumption, and long life. Among the types of catalysts, nanocatalysts are one of the most widely used. High efficiency, economic efficiency, low waste of chemicals, low heat and energy consumption, as well as optimal use of raw chemicals, are the advantages of using them. Given the importance of this type of research compounds in the field of nanocatalysts, it is always one of the most interesting topics in nanochemistry. The nanoscale has provided excellent conditions for the use of nanoparticles as catalysts. Their high active surface and excellent selectivity increase the pace and efficiency of the reaction. Nanocatalysts have the advantages of both homogeneous (high level) and heterogeneous (separability) catalysts. Nanocatalysts can be classified into the following groups: 1) Metal nanoparticles, 2) Protected metal nanoparticles, 3) Nano metal oxides, 4) A mixture of two or more metal nanoparticles, and 5) Nano-press systems [18-20].
Metal oxides play an important role in many fields of chemistry, physics, and materials science. Metallic elements are able to form a wide variety of oxides. They can adopt a large number of structures. Geometries with electronic structures can represent metal, semiconductor, or insulation characteristics. In technological applications, oxides are used in the manufacture of microelectronic circuits, sensors, piezoelectric devices, fuel cells, coatings against corrosion, and as catalysts. Cerium oxide/aluminum oxide nano-catalyst is an important rare oxide from the earth that attracts more attention due to its diversity. This oxide has been used in fuel cells, oxygen gas sensors, polishing materials, oxygen permeation membrane systems, and as a catalyst in various technological processes. Ceria is the main component of the three-way catalyst (TWC), which is also used for environmental cleaning purposes, various emerging fields of analysis such as hydrocarbon oxidation, removal of all organic carbons from waste, and conversion of car exhaust gas.
Materials and equipment
Chemicals were supplied from Merck (Darmstadt, Germany) and Sigma-Aldrich chemical Co. (USA). Melting points were taken as uncorrected using a digital Electrothermal melting point apparatus (model 9100, Electrothermal Engineering Ltd., Essex, UK). 1H-NMR spectra were obtained using a Bruker 300 MHz (model AMX, Karlsruhe, Germany) spectrometer (Internal standard: TMS) and values were expressed in ppm. The IR spectra were recorded using a Thermo Nicolet FT-IR (model Nexus-870, Nicolet Instrument Corp, Madison, Wisconsin, U.S.A.) spectrometer. Mass spectra were obtained using an Agilent Technologies 5973, Mass Selective Detector (MSD) spectrometer (Wilmington, USA). The purity of compounds was confirmed by TLC. Thin layer chromatography (TLC) on commercial aluminum-backed plates of silica gel, 60 F254 was used to monitor the progress of reactions.
General procedure for the synthesis of xanthene derivatives
Dimedone (2 mmol), desired aldehyde (1 mmol), CeO2/Al2O3 nano-catalyst(0.05 g), and ethanol (5 mL) were mixed, as the solvent, in a 50 mL flask. The mixture was stirred by a magnetic stirrer under reflux conditions to evaluate the progress of the reaction with TLC papers in a mixture of hexene and ethyl acetate at a ratio of 3:1. After the reaction is complete, the temperature of the flask was allowed to reach ambient temperature, then the contents of the flask were filtered. Water was added drop-wise to the resultant filtrate to obtain a precipitate. It was then filtered, and the obtained solid was recrystallized from ethanol (96%).(Scheme 1, Table 1).
Scheme1. Synthesis of xanthenes
(3a): M.p: 202-204 ºC. IR (KBr) (νmax, cm−1): 1671, 1676 (C=O); 1H NMR (CDC13, 300 MHz) δH (ppm): 1.16 (6H, s ), 1.21 (6H, S), 2.04(4H, dd ), 2.13 (4H,dd), 3.46 (1H, s ), 7.25-7.67 (m, 5H, CH aromatic).
Preparation of cerium oxide/aluminum oxide nano-catalyst
Al2O3-CeO2 nanoparticles were prepared at room temperature by wet chemical method. 50 mL of 0.1 M solution of cerium nitrate and 50 mL of 0.1 M solution of aluminum sulfate were mixed. 100 mL of 2 M sodium hydroxide solution was added to the mixture. The resulting solution was maintained at 80 °C for 3 h. The resulting white precipitate was washed several times with deionized water to remove impurities. The precipitate was dried at room temperature and calcinated at 700 °C [22]. The size of synthesized nanoparticles was further confirmed by SEM and TEM (Figures 1 and 2). The size of the catalyst is found to be in the range of 20–50 nm.
Figure 1. SEM of nano-CeO2/Al2O3
Figure 2. TEM of nano-CeO2/Al2O3
Result and Discussion
In this reaction, optimization was performed by changing the solvent. The best solvent for the reaction was found to be the ethanol solvent (Table 2).
Reusability of nano CeO2/Al2O3
After the reaction, 10 mL of ethyl acetate was added to the compounds on filter paper containing catalyst. The mixture was stirred at room temperature for 5 minutes using a magnetic stirrer. The reaction mixture was filtered, and the catalyst remained on filter paper due to its insolubility in ethyl acetate solvent. Then, in order to reuse the catalyst, the filter material was washed several times with acetone. After drying, the reaction was repeated to check the potency of the catalyst (Figure 3).
Comparison of the performance of cerium oxide/aluminum oxide nano-catalyst with a number of different catalysts in the synthesis of xanthene derivatives
Comparing the reaction results with other methods, we found that the cerium oxide/aluminum oxide catalyst performed the reaction in a shorter time and with higher efficiency (Table 3).
To optimize the amount of catalyst, various amounts (0.01, 0.02, 0.03, 0.05, and 0.08 g) of cerium oxide nano-catalyst were used. Table 4 represents the test results performed to optimize the amount of catalyst in the presence of different amounts of cerium oxide/aluminum oxide nano-catalyst. The results presented in the table show that the amount of 0.05 g of cerium oxide/aluminum oxide nano-catalyst had the best efficiency.
The proposed mechanism for the preparation of 1,8-dioxo-octahydroxanthenes is as follows (Scheme 2):
Table 1. Synthesis of xanthene derivatives catalyzed by cerium oxide/aluminum oxide nano-catalyst
Aldehyde
Reported [21]
Melting Pint
Scheme 2. Mechanism for the synthesis of xanthenes
Table 2. Synthesis of 3a in the presence of different solvents using nano-CeO2/Al2O3 as a catalyst
Yield (%)a
CH3CN
CHCl3
Solvent-free
Isolated yields
Figure 3. Reusing of Fe-MCM-41for the synthesis of 3a
Table 3. Comparison of various catalysts for the synthesis of 3a
Time(h)
Yield (%)
Selecfluor
DABCO – bromine
Present study
nano CeO2/Al2O3
Table 4. Comparison of amount of catalysts for the synthesis of 3a
Amount of catalyst(g)
Xanthene derivatives are the main constituents of many synthetic and natural derivatives and have occupied an important place in the medical chemistry industry. Due to the great importance of compounds with xanthene core and their application in the pharmaceutical industry, various methods have been proposed to optimize these reactions. Many of these reactions are expensive, or their synthesis requires difficult conditions. In some cases, very high reaction temperatures and long reaction times have been reported. We report here a facile and improved protocol for preparation of xanthene derivatives using nano-cerium oxide/aluminum oxide as an efficient and recyclable catalyst from the reaction of dimedone and aldehydes. A simple experimental and work-up procedure, cleaner reaction, mild reaction conditions and also high yields of products are all advantages of this method which makes it useful and noteworthy for the synthesis of these compounds.
The authors gratefully acknowledge the support of this work by Payame Noor University.
Citation B. Baghernejad*, M. Alikhani. Nano-Cerium Oxide/Aluminum Oxide as an Efficient Catalyst for the Synthesis of Xanthene Derivatives as Potential Antiviral and Anti-Inflammatory Agents. J. Appl. Organomet. Chem., 2022, 2(3), 155-162.
Copyright © 2022 by SPC (Sami Publishing Company) + is an open access article distributed under the Creative Commons Attribution License(CC BY) license (https://creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.
[1] A. Walter, Am. Soc. Clinical. Oncolog., 2010, 35, 469–474.  [Google Scholar], [Publisher]
[2] B. Baghernejad, M. Alikhani, Iran. Chem. Commun., 2020, 8, 240-248. [Google Scholar]
[3] Z. Arzehgar, H. Ahmadi, J. Chin. Chem. Soc., 2019, 66, 303-306. [Crossref], [Google Scholar], [Publisher]
[4] S.C. Azimi, E. Abbaspour-Gilandeh, Iran. Chem. Commun., 2016, 4, 236-258.
[5] R. Khoeiniha, A. Ezabadi, A. Olyaei, Iran. Chem. Commun., 2016, 4, 273-282. [Google Scholar], [Publisher]
[6] B. Zakerinasab, M. Nasseri, H. Hassani, Iran. Chem. Commun., 2016, 4, 133-235. [Google Scholar], [Publisher]
[7] A. Davoodnia, H. Nakhaei, J. Chem. Rev., 2019, 1, 139-153. [Crossref], [Google Scholar], [Publisher]
[8] A. Nakhaei, S. Yadegarian, J. Appl. Chem. Research., 2017, 11, 72-83. [Crossref], [Google Scholar], [Publisher]
[9] A. Davoodnia, Russ. J. General. Chem., 2016, 86, 2849-2854. [Crossref], [Google Scholar], [Publisher]
[10] A. Nakhaei, A. Davoodnia, A. Morsali, Research. Chem. Intermediat., 2015, 41, 7815-7826. [Crossref], [Google Scholar], [Publisher]
[11] A. Davoodnia, A. Nakhaei, S. Basafa, N. Tavakoli-Hoseini, Adv. J. Chem-Sect. A., 2018, 1, 96-104. [Crossref], [Google Scholar], [Publisher]
[12] E. Ezzatzadeha, S. Nazaraliana , F. Sheikholeslami, Iran. J. Org. Chem., 2017, 9, 2057-2065.
[13] M.P. Lande, T. Gadekar, G. Pawar, R. Magar, Bull. Chem. React. Eng. Catal., 2018, 3, 436-437.
[14] Sh. Babadoust, Int. J. Chem. Biochem. Sci., 2014, 6, 72-73. [Google Scholar], [PDF]
[15] F. Darviche, S. Balalaie, F. Chadegani, P. Salehi, Synth. Commun., 2007, 37,1059-1063. [Crossref], [Google Scholar], [Publisher]
[16] S. Deshmukh, G.U. Kadam, K. Shisodia, M.V. Int. J. Chem. Phys. Scienc., 2018, 7, 75-76.
[17] F. Noori Sadeh, M. Fatahpour, N. Hazeri, M. Taher maghsoodlou, M. Lashkari, Acta. Chemica. Iasi., 2017, 25, 24-37. [Google Scholar]
[18] K.P. Nandre, V.S. Patil, S. Bhosale, Chin. Chem. Lett., 2011, 22, 777-780. [Crossref], [Google Scholar], [Publisher]
[19] G. Ertl, H. Knozinger, J. Weitkamp, Handbook of Heterogeneous Catalysis, VCH. Weinheim, 1997, 1, 16. [Google Scholar], [PDF]
[20] V. Polshettiwar, S. Rajender, Green. Chem., 2010, 12, 743–754. [Google Scholar]
[21] A. Gosslau, S. Pabbaraja, S. Knapp, K.Y. Chen, Eur. J. Pharmacol., 2008, 587, 25-34. [Crossref], [Google Scholar], [Publisher]
[22] R.R. Muthuchudarkodi, S. Kalaiarasi, Int. J. ChemTech Res., 2016, 9, 813-821.  [Google Scholar]
[23] T. Hideo, Chemical Abstract., 1981, 95, 80922b. [Google Scholar]
[24] J.P. Poupelin, G. Saint-Ruf, O. Foussard-Blanpin, G. Narcisse, G. Uehida, R. Lacroix, Europ. J. Med. Chem., 1978, 13, 67-71. [Google Scholar]
[25] G. Saint-Ruf, H.T. Hieu, Bull. Chem. Soc. Jap., 1972, 7, 83-86. [Google Scholar]
[26] A. Cvetkovic, J. Adrie, J. Straathof, K. Rajamani, A.M. Luuk, Derwielen. Langmuir., 2005, 21, 1475-1478. [Crossref], [Google Scholar], [Publisher]
[27] J.F. Callan, P. De Silva, D. Magri, Tetrahedron., 2005, 61, 8551-8588. [Google Scholar]
Receive Date: 24 February 2022
Accept Date: 01 August 2022
Baghernejad, B., & Alikhani, M. (2022). Nano-Cerium Oxide/Aluminum Oxide as an Efficient Catalyst for the Synthesis of Xanthene Derivatives as Potential Antiviral and Anti-Inflammatory Agents. Journal of Applied Organometallic Chemistry, 2(3), 155-162. doi: 10.22034/jaoc.2022.154819
Bita Baghernejad; Maral Alikhani. "Nano-Cerium Oxide/Aluminum Oxide as an Efficient Catalyst for the Synthesis of Xanthene Derivatives as Potential Antiviral and Anti-Inflammatory Agents". Journal of Applied Organometallic Chemistry, 2, 3, 2022, 155-162. doi: 10.22034/jaoc.2022.154819
Baghernejad, B., Alikhani, M. (2022). 'Nano-Cerium Oxide/Aluminum Oxide as an Efficient Catalyst for the Synthesis of Xanthene Derivatives as Potential Antiviral and Anti-Inflammatory Agents', Journal of Applied Organometallic Chemistry, 2(3), pp. 155-162. doi: 10.22034/jaoc.2022.154819
Baghernejad, B., Alikhani, M. Nano-Cerium Oxide/Aluminum Oxide as an Efficient Catalyst for the Synthesis of Xanthene Derivatives as Potential Antiviral and Anti-Inflammatory Agents. Journal of Applied Organometallic Chemistry, 2022; 2(3): 155-162. doi: 10.22034/jaoc.2022.154819

redpajama_set_name: RedPajamaCommonCrawl


It was set up in 1984s by merging the Centre for Instructional Technology and Department of Educating Aids. As one of the largest providers of Initial Trainer Coaching programs in London and the South East many academics have come by means of our doors by our PGCE, Faculty Direct and BA Primary programmes. There was a huge leap in including private finance materials to school requirements from 1998 to 2000, and the requirements to implement these standards have grown over time. Graduates from the BA Schooling are guaranteed a one-12 months instructing post with assist to realize registration to show in Scotland.


text:
The 2007 Nigerian Senate election in Borno State was held on April 21, 2007, to elect members of the Nigerian Senate to represent Borno State. Omar Hambagda representing Borno South, Maina Maaji Lawan representing Borno North and Kaka Mallam Yale representing Borno Central all won on the platform of the All Nigeria Peoples Party.

Overview

Summary

Results

Borno South
The election was won by Omar Hambagda of the All Nigeria Peoples Party.

Borno North
The election was won by Maina Maaji Lawan of the All Nigeria Peoples Party.

Borno Central
The election was won by Kaka Mallam Yale of the All Nigeria Peoples Party.

References

April 2007 events in Nigeria
Borno State Senate elections
Bor

redpajama_set_name: RedPajamaWikipedia


text:
HomeMenlo ParkFormer fugitive gets 9 years in prison for hit-and-run death of 6-year-old
Former fugitive gets 9 years in prison for hit-and-run death of 6-year-old
Classmates of Lisa Xavier mourned her death at a vigil on Dec. 9, 2009 in Menlo Park. Post file photo by Dave Price.
A former fugitive has been sentenced to nine years in prison for killing a 6-year-old Menlo Park girl in a hit-and-run accident in 2009.
Shannon Steven Fox
Shannon Steven Fox, 33, pleaded no contest on Friday (May 31) to vehicular manslaughter and hit and run, said Chief Deputy District Attorney Al Serrato.
Fox was wanted in connection with the death of Lisa Xavier in a collision at the intersection of Willow Road and Bayfront Expressway in Menlo Park on Nov. 12, 2009.
Fox was driving a Ford Mustang that was racing another car on northbound Bayfront Expressway when he struck a Toyota Camry carrying Lisa and her parents, Charles Suresh and Shiji Varghese.
Lisa, who was a first-grader at Laurel Elementary School, died a day after the crash, and her mother suffered serious injuries but has since recovered. Her father was uninjured.
Lisa Xavier
Investigators determined that after striking the girl, Fox fled in the Honda Prelude he had been racing.
Officers tried to find Fox, who lived in East Palo Alto at the time, but learned that he had traveled to Mexico and eventually made his way to Central America.
In June 2010, the San Mateo County District Attorney's Office obtained an indictment against Fox for vehicular manslaughter, felony hit-and-run causing death and participating in a speed contest.
Investigators worked with the FBI, who learned that Fox was living in Central America and may have been helped by relatives there.
In December 2016, the FBI was able to find Fox in Guatemala, and he was arrested there.
For nearly two years, he and his lawyers fought attempts to extradite him back to the U.S., but he lost his final appeal in April 2018 to the Guatemalan Supreme Court, police said.
On Aug. 30, 2018, Fox landed at San Francisco International Airport, where FBI agents turned him over to San Mateo County Sheriff's deputies.
Fox will only have to serve five years of the nine year sentence because he gets credit for the time he spent in custody while fighting extradition. He also gets credit for good behavior while he was jailed from August 2018 until his sentencing.
Council to consider housing at Cubberley tonight (June 3)
Suspect in fatal hit-and-run fought extradition from Guatemala for more than a year
From staff and wire reports The fugitive who is accused of killing a 6-year-old Menlo Park girl in a hit-and-run accident fought his extradition from Guatemala for more than a […]
Fugitive arrested in hit-and-run death of 6-year-old Lisa Xavier
By the Daily Post staff Menlo Park police said today (Aug. 28) that a wanted fugitive has been arrested in the Nov. 12, 2009, hit-and-run death of 6-year-old Lisa Xavier. […]
DA rebukes harbor board member Brennan over open meetings law
BY EMILY MIBACH Daily Post Staff Writer The San Mateo County District Attorney's Office on Thursday (Jan. 18) reprimanded county harbor commissioner member Sabrina Brennan over the state open meetings […]
WM1009 says:
June 3, 2019 10:35 am at 10:35 am
he'll only serve 5 years? for killing a little girl and then fleeing the country to avoid responsibility — and the penalty is 5 years? that's ridiculous. i don't understand why they would let him off so easy?
Carrie D says:
June 3, 2019 12:37 pm at 12:37 pm
Life is cheap in Menlo Park, esp in that neighborhood
Menlo Park resident says:
This is a disappointing conclusion to this tragic case. I don't think the District Attorney appreciated the gravity of this case. I'm not one for seeking vengeance, but the sentence should be proportional to the crime … and this sentence doesn't come anywhere close to being proportional.


text:
Full list of 2019 San Diego SPJ award winners
The SPJ San Diego Pro Chapter is pleased to announce the winners of the 2019 SPJ San Diego Area Journalism Awards Contest.
Click here for the list of first place, second place and honorable mention awards.
You'll have to wait until the banquet to find out who won what!
Please join us to celebrate all of this year's award winners at our annual banquet on Wednesday, July 17, at Kona Kai.
What: SD-SPJ 2019 awards banquet
When: Wednesday, July 17, 2019. Reception at 5:30 p.m., dinner and program starts at 6:30 p.m.
Where: The Kona Kai Resort & Spa, 1551 Shelter Island Dr, San Diego, CA 92106. Cocktail hour on the Point Loma Terrace, banquet in the Ballroom.
Cost: $65 per person, $55 for students, $480 for reserved tables of eight
Registration: Please register and pay here: https://events.r20.constantcontact.com/register/eventReg?oeidk=a07egd0q6ff1411f139&oseq=&c=&ch=
Join us as we 'Grade the Media'
The San Diego Society of Professional Journalists is proud to host its annual Grade the Media event at Point Loma Nazarene University on Wednesday, April 17. These panelists were involved in big news stories this past year, and now's their chance to talk about what it was like to be under the spotlight. The panel is moderated by Andrew Bowen of KPBS. Guests include:
Ammar Campa-Najjar – The Democratic congressional candidate who lost a hard-fought race against Republican incumbent Duncan Hunter.
Tasha Willamson – A community activist who has advocated for families that have lost loved ones to police violence.
Judith Castro-Rangel – The special education aide who shot viral video of a woman being taken away from her children by Border Patrol agents in National City.
Ron Roberts – A longtime San Diego County supervisor whose term expired last year.
Where: Fermanian Conference Center on the campus of Point Loma Nazarene University, 3900 Lomaland Drive, San Diego
When: Wednesday, April 17, 2019 Social hour at 6:30 p.m., panel at 7 p.m.
Admission: Free; light refreshments provided.
Grade the Media
Better Journalism Workshop: Reporting on Trauma
Interviewing someone who's recently experienced trauma — the death of a loved one, a serious illness or injury, or a natural disaster — is one of the more difficult things we do as reporters. How do you approach someone in a way that's not intrusive? What questions are OK to ask and how should you ask them? And what about the impact on yourself as a reporter? What should you do to maintain your sanity when covering a difficult topic?
Join the San Diego chapter of the Society of Professional Journalists at the San Diego Central Library at 6:30 p.m. Tuesday, Nov. 27, for a panel discussion on covering trauma. We'll delve into ethical issues, do's and don'ts, and how to minimize your own stress level when reporting on troubling subjects.
WHAT: Panel on Reporting on Trauma
WHO: Rory Devine, NBC San Diego; Lyndsay Winkley, San Diego Union-Tribune; Melanie Barker, LCSW, clinical director, SDSU Research Foundation; Kelly Davis (moderator), independent reporter
WHEN: Tuesday, Nov. 27, 6:30 p.m. (social), 7 p.m. (panel)
WHERE: San Diego Central Library, 330 Park Blvd., San Diego 92101. Shiley Suite on the ninth floor. FREE PARKING IN LIBRARY GARAGE WITH VALIDATION STAMP IN LOBBY.
Bring your questions or send them in advance to spjsandiego@gmail.com.
And let us know that you're coming with an RSVP to Facebook.


When the Avengers team needs a leader, they turn to the hero who was practically made for the job: Captain America. The Avengers need a leader, and that's where your Captain America figure comes in!
This super soldier figure has the strength and powerful shield to take on the bad guys with Earth's Mightiest Heroes at his side! Pose his arm to attack with his shield in the ultimate Avengers combat!
Captain America figure looks like the patriotic superhero. Figure holds his signature shield. Collect them all (each sold separately). Ages 4 and up.


The Original Flap Happy Hat UPF 50+: Designed to provide excellent sun protection from damaging UV rays. The hat has a large brim to shade the face and the flap covers the ears and neck from the harsh rays of the sun with an elastic band to help fit snuggly around the head. The ties help secure the hat when the wind blows. This hat looks terrific when paired with Flap Happy Swimwear or Playwear. Perfect for any outdoor or water activity and practical and good looking for every day of the year. Your child will love to wear this hat for its comfort. Available in an array of colors and fun prints. Makes a Great Gift.
Click the button below to add the UPF 50+ Original Flap Hat w/ Ties | Pink Stripe Seersucker to your wish list.


Jobseekers can access all of our up-to-date news, advice, tips and features about flexible working and finding a part time job here in our jobseeker archive. Read about the Top Employers leading the way with flexible working, find out who is recruiting now, and get careers advice to help you. Plus read about other mums juggling it all in our work life balance section.