185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/* 285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho******************************************************************************* 359d709d503bab6e2b61931737e662dd293b40578ccornelius* Copyright (C) 2003 - 2013, International Business Machines Corporation and * 485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho* others. All Rights Reserved. * 585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho******************************************************************************* 685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho*/ 785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#ifndef COPTCCAL_H 985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#define COPTCCAL_H 1085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 1185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include "unicode/utypes.h" 1285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 1385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#if !UCONFIG_NO_FORMATTING 1485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 1585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include "unicode/calendar.h" 1685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include "cecal.h" 1785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 1885bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoU_NAMESPACE_BEGIN 1985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 2085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/** 2185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Implement the Coptic calendar system. 2285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 2385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 2485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoclass CopticCalendar : public CECalendar { 2585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 2685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hopublic: 2785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 2885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Useful constants for CopticCalendar. 2985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 3085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 3185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho enum EMonths { 3285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 3385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constant for ωογτ/تﻮﺗ, 3485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * the 1st month of the Coptic year. 3585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 3685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TOUT, 3785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 3885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 3985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constant for Παοπι/ﻪﺑﺎﺑ, 4085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * the 2nd month of the Coptic year. 4185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 4285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho BABA, 4385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 4485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 4585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constant for Αθορ/رﻮﺗﺎﻫ, 4685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * the 3rd month of the Coptic year. 4785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 4885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho HATOR, 4985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 5085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 5185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constant for Χοιακ/ﻚﻬﻴﻛ, 5285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * the 4th month of the Coptic year. 5385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 5485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho KIAHK, 5585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 5685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 5785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constant for Τωβι/طﻮﺒﻫ, 5885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * the 5th month of the Coptic year. 5985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 6085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TOBA, 6185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 6285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 6385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constant for Μεϣιρ/ﺮﻴﺸﻣأ, 6485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * the 6th month of the Coptic year. 6585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 6685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho AMSHIR, 6785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 6885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 6985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constant for Παρεμϩατ/تﺎﻬﻣﺮﺑ, 7085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * the 7th month of the Coptic year. 7185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 7285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho BARAMHAT, 7385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 7485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 7585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constant for Φαρμοθι/هدﻮﻣﺮﺑ, 7685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * the 8th month of the Coptic year. 7785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 7885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho BARAMOUDA, 7985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 8085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 8185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constant for Παϣαν/ﺲﻨﺸﺑ, 8285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * the 9th month of the Coptic year. 8385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 8485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho BASHANS, 8585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 8685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 8785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constant for Παωνι/ﻪﻧؤﻮﺑ, 8885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * the 10th month of the Coptic year. 8985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 9085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho PAONA, 9185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 9285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 9385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constant for Επηπ/ﺐﻴﺑأ, 9485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * the 11th month of the Coptic year. 9585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 9685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho EPEP, 9785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 9885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 9985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constant for Μεϲωρη/ىﺮﺴﻣ, 10085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * the 12th month of the Coptic year. 10185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 10285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho MESRA, 10385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 10485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 10585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constant for Πικογϫι 10685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * μαβοτ/ﺮﻴﻐﺼﻟا 10785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * ﺮﻬﺸﻟا, 10885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * the 13th month of the Coptic year. 10985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 11085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho NASIE 11185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho }; 11285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 11385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho enum EEras { 11485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho BCE, // Before the epoch 11585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho CE // After the epoch 11685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho }; 11785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 11885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 11985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constructs a CopticCalendar based on the current time in the default time zone 12085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * with the given locale. 12185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * 12285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param aLocale The given locale. 12385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param success Indicates the status of CopticCalendar object construction. 12485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Returns U_ZERO_ERROR if constructed successfully. 12585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 12685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 12785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho CopticCalendar(const Locale& aLocale, UErrorCode& success); 12885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 12985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 13085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Copy Constructor 13185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 13285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 13385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho CopticCalendar (const CopticCalendar& other); 13485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 13585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 13685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Destructor. 13785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 13885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 13985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual ~CopticCalendar(); 14085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 14185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 14285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Create and return a polymorphic copy of this calendar. 14385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @return return a polymorphic copy of this calendar. 14485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 14585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 14685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual Calendar* clone(void) const; 14785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 14885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 14985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * return the calendar type, "coptic" 15085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @return calendar type 15185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 15285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 15385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const char * getType() const; 15485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 15585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoprotected: 15685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho //------------------------------------------------------------------------- 15785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Calendar framework 15885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho //------------------------------------------------------------------------- 15985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 16085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 16185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Return the extended year defined by the current fields. 16285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 16385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 16485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual int32_t handleGetExtendedYear(); 16585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 16685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 16785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Compute fields from the JD 16885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 16985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 17085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual void handleComputeFields(int32_t julianDay, UErrorCode &status); 17185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 17285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 17385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Returns the date of the start of the default century 17485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @return start of century - in milliseconds since epoch, 1970 17585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 17685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 17785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual UDate defaultCenturyStart() const; 17885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 17985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 18085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Returns the year in which the default century begins 18185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 18285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 18385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual int32_t defaultCenturyStartYear() const; 18485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 18585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 18685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Return the date offset from Julian 18785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 18885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 18985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual int32_t getJDEpochOffset() const; 19085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 19185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 19285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hopublic: 19385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 19485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Override Calendar Returns a unique class ID POLYMORPHICALLY. Pure virtual 19585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * override. This method is to implement a simple version of RTTI, since not all C++ 19685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * compilers support genuine RTTI. Polymorphic operator==() and clone() methods call 19785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * this method. 19885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * 19985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @return The class ID for this object. All objects of a given class have the 20085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * same class ID. Objects of other classes have different class IDs. 20185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 20285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 20385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual UClassID getDynamicClassID(void) const; 20485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 20585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 20685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Return the class ID for this class. This is useful only for comparing to a return 20785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * value from getDynamicClassID(). For example: 20885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * 20985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Base* polymorphic_pointer = createPolymorphicObject(); 21085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * if (polymorphic_pointer->getDynamicClassID() == 21185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Derived::getStaticClassID()) ... 21285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * 21385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @return The class ID for all objects of this class. 21485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 21585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 21685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void); 21785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 21885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#if 0 21985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // We do not want to introduce this API in ICU4C. 22085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // It was accidentally introduced in ICU4J as a public API. 22185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hopublic: 22285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho //------------------------------------------------------------------------- 22385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Calendar system Conversion methods... 22485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho //------------------------------------------------------------------------- 22585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 22685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Convert an Coptic year, month, and day to a Julian day. 22785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * 22885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param year the extended year 22985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param month the month 23085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param day the day 23185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @return Julian day 23285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 23385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 23485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho static int32_t copticToJD(int32_t year, int32_t month, int32_t day); 23585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#endif 23685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho}; 23785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 23885bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoU_NAMESPACE_END 23985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 24085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#endif /* #if !UCONFIG_NO_FORMATTING */ 24185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#endif /* COPTCCAL_H */ 24285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho//eof 243