+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
/************************************************************************
- * Copyright (C) 1996-2004, International Business Machines Corporation *
- * and others. All Rights Reserved. *
+ * Copyright (C) 1996-2014, International Business Machines Corporation
+ * and others. All Rights Reserved.
************************************************************************
* 2003-nov-07 srl Port from Java
*/
#if !UCONFIG_NO_FORMATTING
#include "unicode/calendar.h"
-#include "math.h"
+#include <math.h>
#include <float.h>
#include "unicode/putil.h"
#include "uhash.h"
#include "putilimp.h"
#include <stdio.h> // for toString()
+#if defined (PI)
+#undef PI
+#endif
+
#ifdef U_DEBUG_ASTRO
# include "uresimp.h" // for debugging
return(uprv_isNaN(d));
}
-static UMTX ccLock = NULL;
+static icu::UMutex *ccLock() {
+ static icu::UMutex *m = STATIC_NEW(icu::UMutex);
+ return m;
+}
U_CDECL_BEGIN
static UBool calendar_astro_cleanup(void) {
- umtx_destroy(&ccLock);
return TRUE;
}
U_CDECL_END
#define DEG_RAD ( CalendarAstronomer::PI / 180 ) // degrees -> radians
#define RAD_DEG ( 180 / CalendarAstronomer::PI ) // radians -> degrees
+/***
+ * Given 'value', add or subtract 'range' until 0 <= 'value' < range.
+ * The modulus operator.
+ */
+inline static double normalize(double value, double range) {
+ return value - range * ClockMath::floorDivide(value, range);
+}
+
+/**
+ * Normalize an angle so that it's in the range 0 - 2pi.
+ * For positive angles this is just (angle % 2pi), but the Java
+ * mod operator doesn't work that way for negative numbers....
+ */
+inline static double norm2PI(double angle) {
+ return normalize(angle, CalendarAstronomer::PI * 2.0);
+}
+
+/**
+ * Normalize an angle into the range -PI - PI
+ */
+inline static double normPI(double angle) {
+ return normalize(angle + CalendarAstronomer::PI, CalendarAstronomer::PI * 2.0) - CalendarAstronomer::PI;
+}
+
//-------------------------------------------------------------------------
// Constructors
//-------------------------------------------------------------------------
* @deprecated ICU 2.4. This class may be removed or modified.
*/
void CalendarAstronomer::setTime(UDate aTime) {
- fTime = aTime;
- U_DEBUG_ASTRO_MSG(("setTime(%.1lf, %sL)\n", aTime, debug_astro_date(aTime+fGmtOffset)));
- clearCache();
+ fTime = aTime;
+ U_DEBUG_ASTRO_MSG(("setTime(%.1lf, %sL)\n", aTime, debug_astro_date(aTime+fGmtOffset)));
+ clearCache();
}
/**
* @deprecated ICU 2.4. This class may be removed or modified.
*/
void CalendarAstronomer::setJulianDay(double jdn) {
- fTime = (double)(jdn * DAY_MS) + JULIAN_EPOCH_MS;
- clearCache();
- julianDay = jdn;
+ fTime = (double)(jdn * DAY_MS) + JULIAN_EPOCH_MS;
+ clearCache();
+ julianDay = jdn;
}
/**
* @deprecated ICU 2.4. This class may be removed or modified.
*/
UDate CalendarAstronomer::getTime() {
- return fTime;
+ return fTime;
}
/**
* @deprecated ICU 2.4. This class may be removed or modified.
*/
double CalendarAstronomer::getJulianDay() {
- if (isINVALID(julianDay)) {
- julianDay = (fTime - (double)JULIAN_EPOCH_MS) / (double)DAY_MS;
- }
- return julianDay;
+ if (isINVALID(julianDay)) {
+ julianDay = (fTime - (double)JULIAN_EPOCH_MS) / (double)DAY_MS;
+ }
+ return julianDay;
}
/**
* @deprecated ICU 2.4. This class may be removed or modified.
*/
double CalendarAstronomer::getJulianCentury() {
- if (isINVALID(julianCentury)) {
- julianCentury = (getJulianDay() - 2415020.0) / 36525.0;
- }
- return julianCentury;
+ if (isINVALID(julianCentury)) {
+ julianCentury = (getJulianDay() - 2415020.0) / 36525.0;
+ }
+ return julianCentury;
}
/**
* @deprecated ICU 2.4. This class may be removed or modified.
*/
double CalendarAstronomer::getGreenwichSidereal() {
- if (isINVALID(siderealTime)) {
- // See page 86 of "Practial Astronomy with your Calculator",
- // by Peter Duffet-Smith, for details on the algorithm.
+ if (isINVALID(siderealTime)) {
+ // See page 86 of "Practical Astronomy with your Calculator",
+ // by Peter Duffet-Smith, for details on the algorithm.
- double UT = normalize(fTime/(double)HOUR_MS, 24.);
+ double UT = normalize(fTime/(double)HOUR_MS, 24.);
- siderealTime = normalize(getSiderealOffset() + UT*1.002737909, 24.);
- }
- return siderealTime;
+ siderealTime = normalize(getSiderealOffset() + UT*1.002737909, 24.);
+ }
+ return siderealTime;
}
double CalendarAstronomer::getSiderealOffset() {
- if (isINVALID(siderealT0)) {
- double JD = uprv_floor(getJulianDay() - 0.5) + 0.5;
- double S = JD - 2451545.0;
- double T = S / 36525.0;
- siderealT0 = normalize(6.697374558 + 2400.051336*T + 0.000025862*T*T, 24);
- }
- return siderealT0;
+ if (isINVALID(siderealT0)) {
+ double JD = uprv_floor(getJulianDay() - 0.5) + 0.5;
+ double S = JD - 2451545.0;
+ double T = S / 36525.0;
+ siderealT0 = normalize(6.697374558 + 2400.051336*T + 0.000025862*T*T, 24);
+ }
+ return siderealT0;
}
/**
* @deprecated ICU 2.4. This class may be removed or modified.
*/
double CalendarAstronomer::getLocalSidereal() {
- return normalize(getGreenwichSidereal() + (fGmtOffset/(double)HOUR_MS), 24.);
+ return normalize(getGreenwichSidereal() + (fGmtOffset/(double)HOUR_MS), 24.);
}
/**
* 1 Jan 1970, GMT.
*/
double CalendarAstronomer::lstToUT(double lst) {
- // Convert to local mean time
- double lt = normalize((lst - getSiderealOffset()) * 0.9972695663, 24);
+ // Convert to local mean time
+ double lt = normalize((lst - getSiderealOffset()) * 0.9972695663, 24);
- // Then find local midnight on this day
- double base = (DAY_MS * Math::floorDivide(fTime + fGmtOffset,(double)DAY_MS)) - fGmtOffset;
+ // Then find local midnight on this day
+ double base = (DAY_MS * ClockMath::floorDivide(fTime + fGmtOffset,(double)DAY_MS)) - fGmtOffset;
- //out(" lt =" + lt + " hours");
- //out(" base=" + new Date(base));
+ //out(" lt =" + lt + " hours");
+ //out(" base=" + new Date(base));
- return base + (long)(lt * HOUR_MS);
+ return base + (long)(lt * HOUR_MS);
}
*/
CalendarAstronomer::Equatorial& CalendarAstronomer::eclipticToEquatorial(CalendarAstronomer::Equatorial& result, const CalendarAstronomer::Ecliptic& ecliptic)
{
- return eclipticToEquatorial(result, ecliptic.longitude, ecliptic.latitude);
+ return eclipticToEquatorial(result, ecliptic.longitude, ecliptic.latitude);
}
/**
*/
CalendarAstronomer::Equatorial& CalendarAstronomer::eclipticToEquatorial(CalendarAstronomer::Equatorial& result, double eclipLong, double eclipLat)
{
- // See page 42 of "Practial Astronomy with your Calculator",
- // by Peter Duffet-Smith, for details on the algorithm.
+ // See page 42 of "Practical Astronomy with your Calculator",
+ // by Peter Duffet-Smith, for details on the algorithm.
- double obliq = eclipticObliquity();
- double sinE = ::sin(obliq);
- double cosE = cos(obliq);
+ double obliq = eclipticObliquity();
+ double sinE = ::sin(obliq);
+ double cosE = cos(obliq);
- double sinL = ::sin(eclipLong);
- double cosL = cos(eclipLong);
+ double sinL = ::sin(eclipLong);
+ double cosL = cos(eclipLong);
- double sinB = ::sin(eclipLat);
- double cosB = cos(eclipLat);
- double tanB = tan(eclipLat);
+ double sinB = ::sin(eclipLat);
+ double cosB = cos(eclipLat);
+ double tanB = tan(eclipLat);
- result.set(atan2(sinL*cosE - tanB*sinE, cosL),
- asin(sinB*cosE + cosB*sinE*sinL) );
- return result;
+ result.set(atan2(sinL*cosE - tanB*sinE, cosL),
+ asin(sinB*cosE + cosB*sinE*sinL) );
+ return result;
}
/**
*/
CalendarAstronomer::Equatorial& CalendarAstronomer::eclipticToEquatorial(CalendarAstronomer::Equatorial& result, double eclipLong)
{
- return eclipticToEquatorial(result, eclipLong, 0); // TODO: optimize
+ return eclipticToEquatorial(result, eclipLong, 0); // TODO: optimize
}
/**
*/
CalendarAstronomer::Horizon& CalendarAstronomer::eclipticToHorizon(CalendarAstronomer::Horizon& result, double eclipLong)
{
- Equatorial equatorial;
- eclipticToEquatorial(equatorial, eclipLong);
+ Equatorial equatorial;
+ eclipticToEquatorial(equatorial, eclipLong);
- double H = getLocalSidereal()*CalendarAstronomer::PI/12 - equatorial.ascension; // Hour-angle
+ double H = getLocalSidereal()*CalendarAstronomer::PI/12 - equatorial.ascension; // Hour-angle
- double sinH = ::sin(H);
- double cosH = cos(H);
- double sinD = ::sin(equatorial.declination);
- double cosD = cos(equatorial.declination);
- double sinL = ::sin(fLatitude);
- double cosL = cos(fLatitude);
+ double sinH = ::sin(H);
+ double cosH = cos(H);
+ double sinD = ::sin(equatorial.declination);
+ double cosD = cos(equatorial.declination);
+ double sinL = ::sin(fLatitude);
+ double cosL = cos(fLatitude);
- double altitude = asin(sinD*sinL + cosD*cosL*cosH);
- double azimuth = atan2(-cosD*cosL*sinH, sinD - sinL * ::sin(altitude));
+ double altitude = asin(sinD*sinL + cosD*cosL*cosH);
+ double azimuth = atan2(-cosD*cosL*sinH, sinD - sinL * ::sin(altitude));
- result.set(azimuth, altitude);
- return result;
+ result.set(azimuth, altitude);
+ return result;
}
//double sunR0 1.495585e8 // Semi-major axis in KM
//double sunTheta0 (0.533128 * CalendarAstronomer::PI/180) // Angular diameter at R0
+// winter solstice moon date/times 1900-2100 (in UTC)
+// These are in UDate/10000.0 (i.e. in units of 10 seconds) to fit into 32 bits.
+// sources from e.g.
+// http://www.timeanddate.com/calendar/seasons.html?year=1900&n=0
+// http://astropixels.com/ephemeris/soleq2001.html
+// These 2 tables are just 808 bytes each but but greatly improve both the
+// accuracy (and speed for one) of the relevant methods for the relevant time range.
+// For getSunTime:
+// before fix, errors of up to +73 / -101 min or more; after, errors always less than 1 min.
+// about 17 times faster with the fix.
+// For getSunLongitude:
+// before fix, only accurate to about 0.07 degree; this was enough so Chinese calendar
+// calculations were off by a month in some cases.
+// after fix, about 100 times more accurate.
+// speed is about the same.
+static const int32_t winterSolsticeDates[] = {
+// millis/10K date
+ -220984944, // 1899 Dec 22, 00:56
+ -217829274, // 1900 Dec 22, 06:41
+ -214673538, // 1901 Dec 22, 12:37
+ -211517790, // 1902 Dec 22, 18:35
+ -208362120, // 1903 Dec 23, 00:20
+ -205206396, // 1904 Dec 22, 06:14
+ -202050696, // 1905 Dec 22, 12:04
+ -198895002, // 1906 Dec 22, 17:53
+ -195739254, // 1907 Dec 22, 23:51
+ -192583602, // 1908 Dec 22, 05:33
+ -189427920, // 1909 Dec 22, 11:20
+ -186272208, // 1910 Dec 22, 17:12
+ -183116562, // 1911 Dec 22, 22:53
+ -179960850, // 1912 Dec 22, 04:45
+ -176805150, // 1913 Dec 22, 10:35
+ -173649468, // 1914 Dec 22, 16:22
+ -170493744, // 1915 Dec 22, 22:16
+ -167338086, // 1916 Dec 22, 03:59
+ -164182404, // 1917 Dec 22, 09:46
+ -161026674, // 1918 Dec 22, 15:41
+ -157870998, // 1919 Dec 22, 21:27
+ -154715298, // 1920 Dec 22, 03:17
+ -151559592, // 1921 Dec 22, 09:08
+ -148403898, // 1922 Dec 22, 14:57
+ -145248162, // 1923 Dec 22, 20:53
+ -142092450, // 1924 Dec 22, 02:45
+ -138936738, // 1925 Dec 22, 08:37
+ -135781002, // 1926 Dec 22, 14:33
+ -132625332, // 1927 Dec 22, 20:18
+ -129469656, // 1928 Dec 22, 02:04
+ -126313962, // 1929 Dec 22, 07:53
+ -123158286, // 1930 Dec 22, 13:39
+ -120002586, // 1931 Dec 22, 19:29
+ -116846916, // 1932 Dec 22, 01:14
+ -113691252, // 1933 Dec 22, 06:58
+ -110535546, // 1934 Dec 22, 12:49
+ -107379858, // 1935 Dec 22, 18:37
+ -104224158, // 1936 Dec 22, 00:27
+ -101068428, // 1937 Dec 22, 06:22
+ -97912722, // 1938 Dec 22, 12:13
+ -94757004, // 1939 Dec 22, 18:06
+ -91601310, // 1940 Dec 21, 23:55
+ -88445616, // 1941 Dec 22, 05:44
+ -85289886, // 1942 Dec 22, 11:39
+ -82134186, // 1943 Dec 22, 17:29
+ -78978510, // 1944 Dec 21, 23:15
+ -75822822, // 1945 Dec 22, 05:03
+ -72667122, // 1946 Dec 22, 10:53
+ -69511422, // 1947 Dec 22, 16:43
+ -66355722, // 1948 Dec 21, 22:33
+ -63200022, // 1949 Dec 22, 04:23
+ -60044322, // 1950 Dec 22, 10:13
+ -56888640, // 1951 Dec 22, 16:00
+ -53732982, // 1952 Dec 21, 21:43
+ -50577294, // 1953 Dec 22, 03:31
+ -47421576, // 1954 Dec 22, 09:24
+ -44265894, // 1955 Dec 22, 15:11
+ -41110200, // 1956 Dec 21, 21:00
+ -37954506, // 1957 Dec 22, 02:49
+ -34798800, // 1958 Dec 22, 08:40
+ -31643076, // 1959 Dec 22, 14:34
+ -28487364, // 1960 Dec 21, 20:26
+ -25331646, // 1961 Dec 22, 02:19
+ -22175910, // 1962 Dec 22, 08:15
+ -19020228, // 1963 Dec 22, 14:02
+ -15864546, // 1964 Dec 21, 19:49
+ -12708840, // 1965 Dec 22, 01:40
+ -9553152, // 1966 Dec 22, 07:28
+ -6397464, // 1967 Dec 22, 13:16
+ -3241800, // 1968 Dec 21, 19:00
+ -86136, // 1969 Dec 22, 00:44
+ 3069576, // 1970 Dec 22, 06:36
+ 6225264, // 1971 Dec 22, 12:24
+ 9380958, // 1972 Dec 21, 18:13
+ 12536688, // 1973 Dec 22, 00:08
+ 15692376, // 1974 Dec 22, 05:56
+ 18848070, // 1975 Dec 22, 11:45
+ 22003770, // 1976 Dec 21, 17:35
+ 25159458, // 1977 Dec 21, 23:23
+ 28315206, // 1978 Dec 22, 05:21
+ 31470900, // 1979 Dec 22, 11:10
+ 34626576, // 1980 Dec 21, 16:56
+ 37782306, // 1981 Dec 21, 22:51
+ 40937988, // 1982 Dec 22, 04:38
+ 44093700, // 1983 Dec 22, 10:30
+ 47249418, // 1984 Dec 21, 16:23
+ 50405088, // 1985 Dec 21, 22:08
+ 53560812, // 1986 Dec 22, 04:02
+ 56716476, // 1987 Dec 22, 09:46
+ 59872128, // 1988 Dec 21, 15:28
+ 63027852, // 1989 Dec 21, 21:22
+ 66183522, // 1990 Dec 22, 03:07
+ 69339198, // 1991 Dec 22, 08:53
+ 72494898, // 1992 Dec 21, 14:43
+ 75650556, // 1993 Dec 21, 20:26
+ 78806298, // 1994 Dec 22, 02:23
+ 81962022, // 1995 Dec 22, 08:17
+ 85117716, // 1996 Dec 21, 14:06
+ 88273482, // 1997 Dec 21, 20:07
+ 91429176, // 1998 Dec 22, 01:56
+ 94584864, // 1999 Dec 22, 07:44
+ 97740588, // 2000 Dec 21, 13:38
+ 100896246, // 2001 Dec 21, 19:21
+ 104051964, // 2002 Dec 22, 01:14
+ 107207664, // 2003 Dec 22, 07:04
+ 110363292, // 2004 Dec 21, 12:42
+ 113519010, // 2005 Dec 21, 18:35
+ 116674692, // 2006 Dec 22, 00:22
+ 119830362, // 2007 Dec 22, 06:07
+ 122986104, // 2008 Dec 21, 12:04
+ 126141762, // 2009 Dec 21, 17:47
+ 129297468, // 2010 Dec 21, 23:38
+ 132453180, // 2011 Dec 22, 05:30
+ 135608832, // 2012 Dec 21, 11:12
+ 138764586, // 2013 Dec 21, 17:11
+ 141920298, // 2014 Dec 21, 23:03
+ 145075968, // 2015 Dec 22, 04:48
+ 148231704, // 2016 Dec 21, 10:44
+ 151387368, // 2017 Dec 21, 16:28
+ 154543092, // 2018 Dec 21, 22:22
+ 157698834, // 2019 Dec 22, 04:19
+ 160854492, // 2020 Dec 21, 10:02
+ 164010234, // 2021 Dec 21, 15:59
+ 167165928, // 2022 Dec 21, 21:48
+ 170321562, // 2023 Dec 22, 03:27
+ 173477280, // 2024 Dec 21, 09:20
+ 176632938, // 2025 Dec 21, 15:03
+ 179788620, // 2026 Dec 21, 20:50
+ 182944332, // 2027 Dec 22, 02:42
+ 186099960, // 2028 Dec 21, 08:20
+ 189255684, // 2029 Dec 21, 14:14
+ 192411414, // 2030 Dec 21, 20:09
+ 195567090, // 2031 Dec 22, 01:55
+ 198722856, // 2032 Dec 21, 07:56
+ 201878550, // 2033 Dec 21, 13:45
+ 205034244, // 2034 Dec 21, 19:34
+ 208189986, // 2035 Dec 22, 01:31
+ 211345638, // 2036 Dec 21, 07:13
+ 214501362, // 2037 Dec 21, 13:07
+ 217657092, // 2038 Dec 21, 19:02
+ 220812720, // 2039 Dec 22, 00:40
+ 223968438, // 2040 Dec 21, 06:33
+ 227124108, // 2041 Dec 21, 12:18
+ 230279784, // 2042 Dec 21, 18:04
+ 233435526, // 2043 Dec 22, 00:01
+ 236591184, // 2044 Dec 21, 05:44
+ 239746890, // 2045 Dec 21, 11:35
+ 242902608, // 2046 Dec 21, 17:28
+ 246058242, // 2047 Dec 21, 23:07
+ 249213972, // 2048 Dec 21, 05:02
+ 252369672, // 2049 Dec 21, 10:52
+ 255525348, // 2050 Dec 21, 16:38
+ 258681078, // 2051 Dec 21, 22:33
+ 261836742, // 2052 Dec 21, 04:17
+ 264992454, // 2053 Dec 21, 10:09
+ 268148214, // 2054 Dec 21, 16:09
+ 271303890, // 2055 Dec 21, 21:55
+ 274459626, // 2056 Dec 21, 03:51
+ 277615332, // 2057 Dec 21, 09:42
+ 280770990, // 2058 Dec 21, 15:25
+ 283926708, // 2059 Dec 21, 21:18
+ 287082366, // 2060 Dec 21, 03:01
+ 290238048, // 2061 Dec 21, 08:48
+ 293393772, // 2062 Dec 21, 14:42
+ 296549406, // 2063 Dec 21, 20:21
+ 299705088, // 2064 Dec 21, 02:08
+ 302860800, // 2065 Dec 21, 08:00
+ 306016470, // 2066 Dec 21, 13:45
+ 309172218, // 2067 Dec 21, 19:43
+ 312327912, // 2068 Dec 21, 01:32
+ 315483612, // 2069 Dec 21, 07:22
+ 318639354, // 2070 Dec 21, 13:19
+ 321795018, // 2071 Dec 21, 19:03
+ 324950736, // 2072 Dec 21, 00:56
+ 328106460, // 2073 Dec 21, 06:50
+ 331262130, // 2074 Dec 21, 12:35
+ 334417842, // 2075 Dec 21, 18:27
+ 337573518, // 2076 Dec 21, 00:13
+ 340729200, // 2077 Dec 21, 06:00
+ 343884942, // 2078 Dec 21, 11:57
+ 347040624, // 2079 Dec 21, 17:44
+ 350196312, // 2080 Dec 20, 23:32
+ 353352012, // 2081 Dec 21, 05:22
+ 356507664, // 2082 Dec 21, 11:04
+ 359663358, // 2083 Dec 21, 16:53
+ 362819046, // 2084 Dec 20, 22:41
+ 365974728, // 2085 Dec 21, 04:28
+ 369130452, // 2086 Dec 21, 10:22
+ 372286128, // 2087 Dec 21, 16:08
+ 375441816, // 2088 Dec 20, 21:56
+ 378597552, // 2089 Dec 21, 03:52
+ 381753258, // 2090 Dec 21, 09:43
+ 384908988, // 2091 Dec 21, 15:38
+ 388064706, // 2092 Dec 20, 21:31
+ 391220400, // 2093 Dec 21, 03:20
+ 394376118, // 2094 Dec 21, 09:13
+ 397531800, // 2095 Dec 21, 15:00
+ 400687476, // 2096 Dec 20, 20:46
+ 403843176, // 2097 Dec 21, 02:36
+ 406998840, // 2098 Dec 21, 08:20
+ 410154504, // 2099 Dec 21, 14:04
+ 413310186, // 2100 Dec 21, 19:51
+};
+enum { kWinterSolsticeDatesCount = sizeof(winterSolsticeDates)/sizeof(winterSolsticeDates[0]) };
+
+static const UDate winterSolsticeDatesFirst = 10000.0 * -220984944; // winterSolsticeDates[0];
+static const UDate winterSolsticeDatesLast = 10000.0 * 413310186; // winterSolsticeDates[kWinterSolsticeDatesCount-1];
+static const UDate winterSolsticeDatesRange = 10000.0 * (413310186 + 220984944); // winterSolsticeDatesLast - winterSolsticeDatesFirst;
+
+static const int8_t sunLongitudeAdjustmts[][4] = {
+// adjustments x 100000 for
+// computed solar longitudes
+// (in radians) at times
+// corresponding to actual
+// longitudes (degrees) of
+// 270 0 90 180 for 12 months from
+// --- --- --- --- ------------------
+ { 85, 25, -89, -32 }, // 1899 Dec 22, 00:56
+ { 90, 30, -88, -33 }, // 1900 Dec 22, 06:41
+ { 81, 26, -86, -29 }, // 1901 Dec 22, 12:37
+ { 69, 14, -87, -30 }, // 1902 Dec 22, 18:35
+ { 74, 21, -84, -38 }, // 1903 Dec 23, 00:20
+ { 68, 7, -98, -40 }, // 1904 Dec 22, 06:14
+ { 66, 0, -100, -35 }, // 1905 Dec 22, 12:04
+ { 66, 10, -91, -41 }, // 1906 Dec 22, 17:53
+ { 54, 3, -100, -42 }, // 1907 Dec 22, 23:51
+ { 63, 7, -97, -40 }, // 1908 Dec 22, 05:33
+ { 65, 6, -90, -36 }, // 1909 Dec 22, 11:20
+ { 61, 3, -88, -33 }, // 1910 Dec 22, 17:12
+ { 70, 20, -79, -36 }, // 1911 Dec 22, 22:53
+ { 66, 19, -84, -31 }, // 1912 Dec 22, 04:45
+ { 65, 14, -80, -22 }, // 1913 Dec 22, 10:35
+ { 67, 25, -64, -24 }, // 1914 Dec 22, 16:22
+ { 61, 16, -71, -26 }, // 1915 Dec 22, 22:16
+ { 68, 14, -72, -22 }, // 1916 Dec 22, 03:59
+ { 70, 15, -68, -19 }, // 1917 Dec 22, 09:46
+ { 62, 9, -74, -20 }, // 1918 Dec 22, 15:41
+ { 66, 20, -71, -24 }, // 1919 Dec 22, 21:27
+ { 64, 16, -80, -28 }, // 1920 Dec 22, 03:17
+ { 61, 6, -82, -29 }, // 1921 Dec 22, 09:08
+ { 61, 15, -67, -34 }, // 1922 Dec 22, 14:57
+ { 52, 12, -76, -43 }, // 1923 Dec 22, 20:53
+ { 48, 8, -78, -37 }, // 1924 Dec 22, 02:45
+ { 44, 8, -68, -32 }, // 1925 Dec 22, 08:37
+ { 35, -2, -72, -33 }, // 1926 Dec 22, 14:33
+ { 40, 2, -67, -32 }, // 1927 Dec 22, 20:18
+ { 43, 0, -74, -30 }, // 1928 Dec 22, 02:04
+ { 43, -6, -78, -24 }, // 1929 Dec 22, 07:53
+ { 46, 7, -62, -22 }, // 1930 Dec 22, 13:39
+ { 45, 8, -69, -27 }, // 1931 Dec 22, 19:29
+ { 49, 7, -69, -23 }, // 1932 Dec 22, 01:14
+ { 55, 13, -54, -17 }, // 1933 Dec 22, 06:58
+ { 52, 10, -56, -22 }, // 1934 Dec 22, 12:49
+ { 53, 22, -49, -21 }, // 1935 Dec 22, 18:37
+ { 52, 23, -52, -19 }, // 1936 Dec 22, 00:27
+ { 44, 12, -54, -17 }, // 1937 Dec 22, 06:22
+ { 41, 16, -40, -18 }, // 1938 Dec 22, 12:13
+ { 36, 8, -49, -26 }, // 1939 Dec 22, 18:06
+ { 36, 0, -59, -25 }, // 1940 Dec 21, 23:55
+ { 35, -2, -52, -20 }, // 1941 Dec 22, 05:44
+ { 28, -7, -60, -26 }, // 1942 Dec 22, 11:39
+ { 26, -2, -62, -27 }, // 1943 Dec 22, 17:29
+ { 30, -2, -63, -28 }, // 1944 Dec 21, 23:15
+ { 31, -11, -68, -30 }, // 1945 Dec 22, 05:03
+ { 29, -1, -51, -29 }, // 1946 Dec 22, 10:53
+ { 27, 4, -55, -34 }, // 1947 Dec 22, 16:43
+ { 26, 1, -59, -29 }, // 1948 Dec 21, 22:33
+ { 24, 3, -40, -16 }, // 1949 Dec 22, 04:23
+ { 23, 1, -41, -21 }, // 1950 Dec 22, 10:13
+ { 25, 3, -40, -19 }, // 1951 Dec 22, 16:00
+ { 32, 4, -38, -11 }, // 1952 Dec 21, 21:43
+ { 33, 0, -44, -12 }, // 1953 Dec 22, 03:31
+ { 28, 8, -31, -8 }, // 1954 Dec 22, 09:24
+ { 30, 11, -35, -14 }, // 1955 Dec 22, 15:11
+ { 30, 4, -45, -17 }, // 1956 Dec 21, 21:00
+ { 29, 4, -30, -10 }, // 1957 Dec 22, 02:49
+ { 27, 2, -35, -22 }, // 1958 Dec 22, 08:40
+ { 20, 3, -39, -25 }, // 1959 Dec 22, 14:34
+ { 16, 3, -38, -18 }, // 1960 Dec 21, 20:26
+ { 11, -6, -44, -24 }, // 1961 Dec 22, 02:19
+ { 2, -9, -34, -23 }, // 1962 Dec 22, 08:15
+ { 4, -10, -39, -28 }, // 1963 Dec 22, 14:02
+ { 6, -18, -50, -29 }, // 1964 Dec 21, 19:49
+ { 4, -16, -37, -15 }, // 1965 Dec 22, 01:40
+ { 4, -11, -38, -22 }, // 1966 Dec 22, 07:28
+ { 5, -7, -40, -21 }, // 1967 Dec 22, 13:16
+ { 11, -4, -32, -12 }, // 1968 Dec 21, 19:00
+ { 17, -3, -31, -16 }, // 1969 Dec 22, 00:44
+ { 13, 5, -16, -13 }, // 1970 Dec 22, 06:36
+ { 14, 11, -14, -12 }, // 1971 Dec 22, 12:24
+ { 14, 9, -21, -11 }, // 1972 Dec 21, 18:13
+ { 6, 2, -7, 1 }, // 1973 Dec 22, 00:08
+ { 7, 0, -7, -7 }, // 1974 Dec 22, 05:56
+ { 7, -3, -18, -12 }, // 1975 Dec 22, 11:45
+ { 5, -8, -19, -2 }, // 1976 Dec 21, 17:35
+ { 6, -11, -28, -12 }, // 1977 Dec 21, 23:23
+ { -4, -11, -24, -14 }, // 1978 Dec 22, 05:21
+ { -5, -10, -27, -18 }, // 1979 Dec 22, 11:10
+ { -1, -15, -38, -27 }, // 1980 Dec 21, 16:56
+ { -9, -19, -25, -18 }, // 1981 Dec 21, 22:51
+ { -7, -14, -21, -26 }, // 1982 Dec 22, 04:38
+ { -11, -9, -27, -29 }, // 1983 Dec 22, 10:30
+ { -16, -11, -19, -12 }, // 1984 Dec 21, 16:23
+ { -11, -11, -16, -16 }, // 1985 Dec 21, 22:08
+ { -18, -11, -7, -12 }, // 1986 Dec 22, 04:02
+ { -12, -9, -3, -7 }, // 1987 Dec 22, 09:46
+ { -4, -9, -12, -10 }, // 1988 Dec 21, 15:28
+ { -10, -12, -2, 6 }, // 1989 Dec 21, 21:22
+ { -6, -5, 0, 1 }, // 1990 Dec 22, 03:07
+ { -2, -2, -6, -6 }, // 1991 Dec 22, 08:53
+ { -4, -7, -3, 5 }, // 1992 Dec 21, 14:43
+ { 2, -5, -2, -4 }, // 1993 Dec 21, 20:26
+ { -7, -3, 0, -10 }, // 1994 Dec 22, 02:23
+ { -13, -2, 0, -8 }, // 1995 Dec 22, 08:17
+ { -13, -6, -9, -17 }, // 1996 Dec 21, 14:06
+ { -29, -18, -2, -9 }, // 1997 Dec 21, 20:07
+ { -29, -22, 0, -14 }, // 1998 Dec 22, 01:56
+ { -28, -22, -11, -23 }, // 1999 Dec 22, 07:44
+ { -34, -31, -12, -9 }, // 2000 Dec 21, 13:38
+ { -27, -26, -10, -11 }, // 2001 Dec 21, 19:21
+ { -33, -21, -7, -15 }, // 2002 Dec 22, 01:14
+ { -34, -20, -4, -8 }, // 2003 Dec 22, 07:04
+ { -21, -15, -4, -13 }, // 2004 Dec 21, 12:42
+ { -26, -19, 5, -4 }, // 2005 Dec 21, 18:35
+ { -24, -11, 15, -2 }, // 2006 Dec 22, 00:22
+ { -19, -2, 10, -7 }, // 2007 Dec 22, 06:07
+ { -29, -10, 12, 9 }, // 2008 Dec 21, 12:04
+ { -22, -10, 19, 7 }, // 2009 Dec 21, 17:47
+ { -25, -10, 21, 0 }, // 2010 Dec 21, 23:38
+ { -29, -15, 17, 4 }, // 2011 Dec 22, 05:30
+ { -21, -14, 9, -2 }, // 2012 Dec 21, 11:12
+ { -33, -22, 11, 1 }, // 2013 Dec 21, 17:11
+ { -37, -21, 13, 0 }, // 2014 Dec 21, 23:03
+ { -33, -16, 5, -15 }, // 2015 Dec 22, 04:48
+ { -42, -29, 3, -6 }, // 2016 Dec 21, 10:44
+ { -36, -25, 10, -10 }, // 2017 Dec 21, 16:28
+ { -42, -18, 12, -18 }, // 2018 Dec 21, 22:22
+ { -53, -22, 12, -9 }, // 2019 Dec 22, 04:19
+ { -45, -20, 11, -10 }, // 2020 Dec 21, 10:02
+ { -56, -29, 19, -4 }, // 2021 Dec 21, 15:59
+ { -56, -31, 26, 0 }, // 2022 Dec 21, 21:48
+ { -44, -23, 20, -7 }, // 2023 Dec 22, 03:27
+ { -49, -31, 17, 8 }, // 2024 Dec 21, 09:20
+ { -42, -25, 24, 12 }, // 2025 Dec 21, 15:03
+ { -40, -15, 27, 3 }, // 2026 Dec 21, 20:50
+ { -44, -19, 24, 9 }, // 2027 Dec 22, 02:42
+ { -31, -13, 28, 4 }, // 2028 Dec 21, 08:20
+ { -37, -15, 34, 4 }, // 2029 Dec 21, 14:14
+ { -45, -16, 37, 5 }, // 2030 Dec 21, 20:09
+ { -41, -6, 34, -3 }, // 2031 Dec 22, 01:55
+ { -56, -21, 30, 5 }, // 2032 Dec 21, 07:56
+ { -57, -27, 37, 7 }, // 2033 Dec 21, 13:45
+ { -57, -24, 36, -5 }, // 2034 Dec 21, 19:34
+ { -67, -37, 24, -1 }, // 2035 Dec 22, 01:31
+ { -59, -36, 23, -1 }, // 2036 Dec 21, 07:13
+ { -65, -37, 25, -1 }, // 2037 Dec 21, 13:07
+ { -73, -41, 26, 0 }, // 2038 Dec 21, 19:02
+ { -60, -29, 26, -8 }, // 2039 Dec 22, 00:40
+ { -65, -37, 24, 0 }, // 2040 Dec 21, 06:33
+ { -60, -35, 34, 5 }, // 2041 Dec 21, 12:18
+ { -57, -17, 42, -1 }, // 2042 Dec 21, 18:04
+ { -67, -22, 37, 6 }, // 2043 Dec 22, 00:01
+ { -60, -20, 45, 10 }, // 2044 Dec 21, 05:44
+ { -63, -23, 53, 10 }, // 2045 Dec 21, 11:35
+ { -68, -29, 54, 13 }, // 2046 Dec 21, 17:28
+ { -56, -20, 51, 9 }, // 2047 Dec 21, 23:07
+ { -64, -27, 46, 17 }, // 2048 Dec 21, 05:02
+ { -65, -30, 49, 20 }, // 2049 Dec 21, 10:52
+ { -62, -19, 54, 8 }, // 2050 Dec 21, 16:38
+ { -70, -29, 43, 9 }, // 2051 Dec 21, 22:33
+ { -64, -31, 44, 6 }, // 2052 Dec 21, 04:17
+ { -68, -30, 51, 1 }, // 2053 Dec 21, 10:09
+ { -82, -36, 47, 0 }, // 2054 Dec 21, 16:09
+ { -78, -28, 47, -1 }, // 2055 Dec 21, 21:55
+ { -87, -39, 44, 4 }, // 2056 Dec 21, 03:51
+ { -90, -48, 48, 9 }, // 2057 Dec 21, 09:42
+ { -83, -37, 56, 1 }, // 2058 Dec 21, 15:25
+ { -88, -44, 44, 6 }, // 2059 Dec 21, 21:18
+ { -81, -41, 46, 12 }, // 2060 Dec 21, 03:01
+ { -79, -33, 58, 12 }, // 2061 Dec 21, 08:48
+ { -85, -37, 55, 13 }, // 2062 Dec 21, 14:42
+ { -73, -26, 62, 14 }, // 2063 Dec 21, 20:21
+ { -71, -27, 64, 17 }, // 2064 Dec 21, 02:08
+ { -75, -30, 69, 22 }, // 2065 Dec 21, 08:00
+ { -70, -13, 80, 18 }, // 2066 Dec 21, 13:45
+ { -82, -21, 70, 19 }, // 2067 Dec 21, 19:43
+ { -82, -28, 71, 24 }, // 2068 Dec 21, 01:32
+ { -84, -30, 80, 19 }, // 2069 Dec 21, 07:22
+ { -94, -43, 69, 13 }, // 2070 Dec 21, 13:19
+ { -88, -40, 63, 12 }, // 2071 Dec 21, 19:03
+ { -93, -45, 58, 14 }, // 2072 Dec 21, 00:56
+ { -100, -53, 55, 15 }, // 2073 Dec 21, 06:50
+ { -95, -40, 63, 7 }, // 2074 Dec 21, 12:35
+ { -99, -43, 55, 3 }, // 2075 Dec 21, 18:27
+ { -96, -47, 57, 8 }, // 2076 Dec 21, 00:13
+ { -94, -37, 73, 8 }, // 2077 Dec 21, 06:00
+ { -104, -38, 70, 7 }, // 2078 Dec 21, 11:57
+ { -102, -33, 74, 14 }, // 2079 Dec 21, 17:44
+ { -101, -34, 82, 22 }, // 2080 Dec 20, 23:32
+ { -102, -43, 84, 27 }, // 2081 Dec 21, 05:22
+ { -94, -32, 94, 27 }, // 2082 Dec 21, 11:04
+ { -94, -33, 85, 28 }, // 2083 Dec 21, 16:53
+ { -93, -39, 81, 34 }, // 2084 Dec 20, 22:41
+ { -91, -31, 95, 34 }, // 2085 Dec 21, 04:28
+ { -97, -36, 85, 25 }, // 2086 Dec 21, 10:22
+ { -94, -35, 83, 24 }, // 2087 Dec 21, 16:08
+ { -93, -36, 86, 23 }, // 2088 Dec 20, 21:56
+ { -102, -44, 81, 19 }, // 2089 Dec 21, 03:52
+ { -105, -33, 89, 17 }, // 2090 Dec 21, 09:43
+ { -113, -37, 80, 14 }, // 2091 Dec 21, 15:38
+ { -118, -52, 75, 15 }, // 2092 Dec 20, 21:31
+ { -118, -50, 91, 17 }, // 2093 Dec 21, 03:20
+ { -123, -56, 83, 10 }, // 2094 Dec 21, 09:13
+ { -121, -54, 79, 17 }, // 2095 Dec 21, 15:00
+ { -118, -51, 86, 26 }, // 2096 Dec 20, 20:46
+ { -119, -55, 84, 25 }, // 2097 Dec 21, 02:36
+ { -113, -41, 97, 28 }, // 2098 Dec 21, 08:20
+ { -108, -39, 94, 27 }, // 2099 Dec 21, 14:04
+ { -105, 0, 0, 0 }, // 2100 Dec 21, 19:51
+};
+
+static const int32_t timeDeltaToSprEquin = 768903; // avg delta in millis/10000 from winter solstice to spring equinox, within 1 hr
+static const int32_t timeDeltaToSumSolst = 1570332; // avg delta in millis/10000 from winter solstice to summer solstice, within 2.7 hrs
+static const int32_t timeDeltaToAutEquin = 2379459; // avg delta in millis/10000 from winter solstice to autumn equinox, within 2 hrs
+
// The following three methods, which compute the sun parameters
// given above for an arbitrary epoch (whatever time the object is
// set to), make only a small difference as compared to using the
// return 0.01675104 - (0.0000418 + 0.000000126*T)*T;
// }
+/**
+ * Find the "true anomaly" (longitude) of an object from
+ * its mean anomaly and the eccentricity of its orbit. This uses
+ * an iterative solution to Kepler's equation.
+ *
+ * @param meanAnomaly The object's longitude calculated as if it were in
+ * a regular, circular orbit, measured in radians
+ * from the point of perigee.
+ *
+ * @param eccentricity The eccentricity of the orbit
+ *
+ * @return The true anomaly (longitude) measured in radians
+ */
+static double trueAnomaly(double meanAnomaly, double eccentricity)
+{
+ // First, solve Kepler's equation iteratively
+ // Duffett-Smith, p.90
+ double delta;
+ double E = meanAnomaly;
+ do {
+ delta = E - eccentricity * ::sin(E) - meanAnomaly;
+ E = E - delta / (1 - eccentricity * ::cos(E));
+ }
+ while (uprv_fabs(delta) > 1e-5); // epsilon = 1e-5 rad
+
+ return 2.0 * ::atan( ::tan(E/2) * ::sqrt( (1+eccentricity)
+ /(1-eccentricity) ) );
+}
+
+
+/**
+ * Returns sunLongitude which may be adjusted for correctness
+ * based on the time, using a table which only has data covering
+ * gregorian years 1900-2100.
+ * <p>
+ * @param theSunLongitude the sunLongitude to be adjusted if necessary
+ * @param theTime the time for which the sunLongitude is to be adjusted
+ * @internal
+ */
+double CalendarAstronomer::adjustSunLongitude(double &theSunLongitude, UDate theTime)
+{
+ // apply piecewise linear corrections in the range 1900-2100
+ if (theTime >= winterSolsticeDatesFirst && theTime < winterSolsticeDatesLast) {
+ int32_t offset = (int32_t)(((double)kWinterSolsticeDatesCount)*(theTime - winterSolsticeDatesFirst)/winterSolsticeDatesRange);
+ const int32_t * winterSolsticeDatesPtr = winterSolsticeDates + offset; // approximate starting position
+ int32_t curTime = (int32_t)(theTime/10000.0);
+ while (curTime < *winterSolsticeDatesPtr) {
+ winterSolsticeDatesPtr--;
+ }
+ while (curTime >= *(winterSolsticeDatesPtr+1)) {
+ winterSolsticeDatesPtr++;
+ }
+ // curTime is in the 12-month period beginning with *winterSolsticeDatesPtr
+ offset = winterSolsticeDatesPtr - winterSolsticeDates;
+ curTime -= *winterSolsticeDatesPtr;
+ double factor = 0.0;
+ int32_t adjustForStart = 0, adjustForEnd = 0;
+ if (curTime < timeDeltaToSumSolst) {
+ if (curTime < timeDeltaToSprEquin) {
+ // curTime from winter solstice to before spring equinox
+ factor = (double)curTime/(double)timeDeltaToSprEquin;
+ adjustForStart = sunLongitudeAdjustmts[offset][0];
+ adjustForEnd = sunLongitudeAdjustmts[offset][1];
+ } else {
+ // curTime from spring equinox to before summer solstice
+ factor = (double)(curTime - timeDeltaToSprEquin)/(double)(timeDeltaToSumSolst - timeDeltaToSprEquin);
+ adjustForStart = sunLongitudeAdjustmts[offset][1];
+ adjustForEnd = sunLongitudeAdjustmts[offset][2];
+ }
+ } else {
+ if (curTime < timeDeltaToAutEquin) {
+ // curTime from summer solstice to before autumn equinox
+ factor = (double)(curTime - timeDeltaToSumSolst)/(double)(timeDeltaToAutEquin - timeDeltaToSumSolst);
+ adjustForStart = sunLongitudeAdjustmts[offset][2];
+ adjustForEnd = sunLongitudeAdjustmts[offset][3];
+ } else {
+ // curTime from autumn equinox to before next winter solstice
+ factor = (double)(curTime - timeDeltaToAutEquin)/(double)(*(winterSolsticeDatesPtr+1) - *winterSolsticeDatesPtr - timeDeltaToAutEquin);
+ adjustForStart = sunLongitudeAdjustmts[offset][3];
+ adjustForEnd = sunLongitudeAdjustmts[offset+1][0];
+ }
+ }
+ double adjustmt = ((double)adjustForStart + factor*((double)(adjustForEnd - adjustForStart)))/100000.0;
+ theSunLongitude += adjustmt;
+ if (theSunLongitude >= 2*PI) {
+ theSunLongitude -= 2*PI;
+ } else if (theSunLongitude < 0) {
+ theSunLongitude += 2*PI;
+ }
+ }
+ return theSunLongitude;
+}
+
+/**
+ * The longitude of the sun at the time specified by theTime.
+ * This does not result in caching of any of the intermediate computations.
+ * @internal
+ */
+double CalendarAstronomer::getSunLongitudeForTime(UDate theTime)
+{
+ double jd = (theTime - (double)JULIAN_EPOCH_MS) / (double)DAY_MS;
+ double theSunLongitude;
+ double theMeanAnomalySun;
+
+ getSunLongitude(jd, theSunLongitude, theMeanAnomalySun);
+ return CalendarAstronomer::adjustSunLongitude(theSunLongitude, theTime);
+}
+
/**
* The longitude of the sun at the time specified by this object.
* The longitude is measured in radians along the ecliptic
*/
double CalendarAstronomer::getSunLongitude()
{
- // See page 86 of "Practial Astronomy with your Calculator",
- // by Peter Duffet-Smith, for details on the algorithm.
+ // See page 86 of "Practical Astronomy with your Calculator",
+ // by Peter Duffet-Smith, for details on the algorithm.
- if (isINVALID(sunLongitude)) {
- getSunLongitude(getJulianDay(), sunLongitude, meanAnomalySun);
- }
- return sunLongitude;
+ // Currently this is called externally by ChineseCalendar,
+ // and internally by getMoonPosition and getSunTime.
+
+ if (isINVALID(sunLongitude)) {
+ // this sets instance variables julianDay (from fTime), sunLongitude, meanAnomalySun
+ getSunLongitude(getJulianDay(), sunLongitude, meanAnomalySun);
+ }
+
+ // apply piecewise linear corrections in the range 1900-2100,
+ // update sunLongitude as necessary
+ return CalendarAstronomer::adjustSunLongitude(sunLongitude, fTime);
}
/**
*/
/*public*/ void CalendarAstronomer::getSunLongitude(double jDay, double &longitude, double &meanAnomaly)
{
- // See page 86 of "Practial Astronomy with your Calculator",
- // by Peter Duffet-Smith, for details on the algorithm.
+ // See page 86 of "Practical Astronomy with your Calculator",
+ // by Peter Duffet-Smith, for details on the algorithm.
- double day = jDay - JD_EPOCH; // Days since epoch
+ double day = jDay - JD_EPOCH; // Days since epoch
- // Find the angular distance the sun in a fictitious
- // circular orbit has travelled since the epoch.
- double epochAngle = norm2PI(CalendarAstronomer_PI2/TROPICAL_YEAR*day);
+ // Find the angular distance the sun in a fictitious
+ // circular orbit has travelled since the epoch.
+ double epochAngle = norm2PI(CalendarAstronomer_PI2/TROPICAL_YEAR*day);
- // The epoch wasn't at the sun's perigee; find the angular distance
- // since perigee, which is called the "mean anomaly"
- meanAnomaly = norm2PI(epochAngle + SUN_ETA_G - SUN_OMEGA_G);
+ // The epoch wasn't at the sun's perigee; find the angular distance
+ // since perigee, which is called the "mean anomaly"
+ meanAnomaly = norm2PI(epochAngle + SUN_ETA_G - SUN_OMEGA_G);
- // Now find the "true anomaly", e.g. the real solar longitude
- // by solving Kepler's equation for an elliptical orbit
- // NOTE: The 3rd ed. of the book lists omega_g and eta_g in different
- // equations; omega_g is to be correct.
- longitude = norm2PI(trueAnomaly(meanAnomaly, SUN_E) + SUN_OMEGA_G);
+ // Now find the "true anomaly", e.g. the real solar longitude
+ // by solving Kepler's equation for an elliptical orbit
+ // NOTE: The 3rd ed. of the book lists omega_g and eta_g in different
+ // equations; omega_g is to be correct.
+ longitude = norm2PI(trueAnomaly(meanAnomaly, SUN_E) + SUN_OMEGA_G);
}
/**
* @deprecated ICU 2.4. This class may be removed or modified.
*/
CalendarAstronomer::Equatorial& CalendarAstronomer::getSunPosition(CalendarAstronomer::Equatorial& result) {
- return eclipticToEquatorial(result, getSunLongitude(), 0);
+ return eclipticToEquatorial(result, getSunLongitude(), 0);
}
* @internal
* @deprecated ICU 2.4. This class may be removed or modified.
*/
-double CalendarAstronomer::VERNAL_EQUINOX() {
+/*double CalendarAstronomer::VERNAL_EQUINOX() {
return 0;
-}
+}*/
/**
* Constant representing the summer solstice.
* @deprecated ICU 2.4. This class may be removed or modified.
*/
double CalendarAstronomer::SUMMER_SOLSTICE() {
- return (CalendarAstronomer::PI/2);
+ return (CalendarAstronomer::PI/2);
}
/**
* @internal
* @deprecated ICU 2.4. This class may be removed or modified.
*/
-double CalendarAstronomer::AUTUMN_EQUINOX() {
+/*double CalendarAstronomer::AUTUMN_EQUINOX() {
return (CalendarAstronomer::PI);
-}
+}*/
/**
* Constant representing the winter solstice.
* @deprecated ICU 2.4. This class may be removed or modified.
*/
double CalendarAstronomer::WINTER_SOLSTICE() {
- return ((CalendarAstronomer::PI*3)/2);
+ return ((CalendarAstronomer::PI*3)/2);
}
+CalendarAstronomer::AngleFunc::~AngleFunc() {}
+
/**
* Find the next time at which the sun's ecliptic longitude will have
* the desired value.
*/
class SunTimeAngleFunc : public CalendarAstronomer::AngleFunc {
public:
- virtual double eval(CalendarAstronomer& a) { return a.getSunLongitude(); }
+ virtual ~SunTimeAngleFunc();
+ virtual double eval(CalendarAstronomer& a) { return a.getSunLongitude(); }
};
+SunTimeAngleFunc::~SunTimeAngleFunc() {}
+
UDate CalendarAstronomer::getSunTime(double desired, UBool next)
{
- SunTimeAngleFunc func;
- return timeOfAngle( func,
- desired,
- TROPICAL_YEAR,
- MINUTE_MS,
- next);
+ // Currently, the only client is ChineseCalendar, which calls
+ // this with desired == CalendarAstronomer::WINTER_SOLSTICE()
+ if (desired == CalendarAstronomer::WINTER_SOLSTICE() && fTime >= winterSolsticeDatesFirst && fTime < winterSolsticeDatesLast) {
+ int32_t offset = (int32_t)(((double)kWinterSolsticeDatesCount)*(fTime - winterSolsticeDatesFirst)/winterSolsticeDatesRange);
+ const int32_t * winterSolsticeDatesPtr = winterSolsticeDates + offset; // approximate starting position
+ int32_t curTime = (int32_t)(fTime/10000.0);
+ while (curTime < *winterSolsticeDatesPtr) {
+ winterSolsticeDatesPtr--;
+ }
+ while (curTime >= *(winterSolsticeDatesPtr+1)) {
+ winterSolsticeDatesPtr++;
+ }
+ if (next) {
+ winterSolsticeDatesPtr++;
+ }
+ return 10000.0 * (UDate)(*winterSolsticeDatesPtr);
+ }
+
+ SunTimeAngleFunc func;
+ return timeOfAngle( func,
+ desired,
+ TROPICAL_YEAR,
+ MINUTE_MS,
+ next);
}
+CalendarAstronomer::CoordFunc::~CoordFunc() {}
+
class RiseSetCoordFunc : public CalendarAstronomer::CoordFunc {
public:
- virtual void eval(CalendarAstronomer::Equatorial& result, CalendarAstronomer&a) { a.getSunPosition(result); }
+ virtual ~RiseSetCoordFunc();
+ virtual void eval(CalendarAstronomer::Equatorial& result, CalendarAstronomer&a) { a.getSunPosition(result); }
};
+RiseSetCoordFunc::~RiseSetCoordFunc() {}
+
UDate CalendarAstronomer::getSunRiseSet(UBool rise)
{
- UDate t0 = fTime;
+ UDate t0 = fTime;
- // Make a rough guess: 6am or 6pm local time on the current day
- double noon = Math::floorDivide(fTime + fGmtOffset, (double)DAY_MS)*DAY_MS - fGmtOffset + (12*HOUR_MS);
+ // Make a rough guess: 6am or 6pm local time on the current day
+ double noon = ClockMath::floorDivide(fTime + fGmtOffset, (double)DAY_MS)*DAY_MS - fGmtOffset + (12*HOUR_MS);
- U_DEBUG_ASTRO_MSG(("Noon=%.2lf, %sL, gmtoff %.2lf\n", noon, debug_astro_date(noon+fGmtOffset), fGmtOffset));
- setTime(noon + ((rise ? -6 : 6) * HOUR_MS));
- U_DEBUG_ASTRO_MSG(("added %.2lf ms as a guess,\n", ((rise ? -6. : 6.) * HOUR_MS)));
+ U_DEBUG_ASTRO_MSG(("Noon=%.2lf, %sL, gmtoff %.2lf\n", noon, debug_astro_date(noon+fGmtOffset), fGmtOffset));
+ setTime(noon + ((rise ? -6 : 6) * HOUR_MS));
+ U_DEBUG_ASTRO_MSG(("added %.2lf ms as a guess,\n", ((rise ? -6. : 6.) * HOUR_MS)));
- RiseSetCoordFunc func;
- double t = riseOrSet(func,
- rise,
- .533 * DEG_RAD, // Angular Diameter
- 34. /60.0 * DEG_RAD, // Refraction correction
- MINUTE_MS / 12.); // Desired accuracy
+ RiseSetCoordFunc func;
+ double t = riseOrSet(func,
+ rise,
+ .533 * DEG_RAD, // Angular Diameter
+ 34. /60.0 * DEG_RAD, // Refraction correction
+ MINUTE_MS / 12.); // Desired accuracy
- setTime(t0);
- return t;
+ setTime(t0);
+ return t;
}
// Commented out - currently unused. ICU 2.6, Alan
#define moonT0 ( 0.5181 * CalendarAstronomer::PI/180 ) // Angular size at distance A
#define moonPi ( 0.9507 * CalendarAstronomer::PI/180 ) // Parallax at distance A
+// new moon date/times 1900-2100 (in UTC)
+// These are in UDate/10000.0 (i.e. in units of 10 seconds) to fit into 32 bits.
+// sources from e.g.
+// http://eclipse.gsfc.nasa.gov/phase/phases2001.html
+// http://www.timeanddate.com/calendar/moonphases.html?year=1900&n=0
+// From the latter: "The lunation number represents the number of times the Moon has
+// cycled the Earth since January 1923 (based on a series described by Ernest W. Brown
+// in _Planetary Theory_, 1933). One cycle, or lunation, starts at new moon and lasts
+// until the next new moon."
+// The mean synodic month (interval from one new moon to the next) is 29.530588853 days,
+// but the deviation from the mean is significant and difficult to model. I tried based
+// on the description in http://individual.utoronto.ca/kalendis/lunar/index.htm
+// using the product of two sine waves (with periods of 109.65 days and 13.944 days and
+// different phase shifts and amplitudes) but could not get anywhere near enough accuracy.
+// Hence these tables. -Peter E
+// These table are 9965 and 4974 bytes but greatly improve both the
+// accuracy and speed of the relevant methods for the relevant time range.
+// For getMoonTime:
+// before fix, errors of up to +23 min / -18 min for next = true and much more for
+// next = false; after, errors always less than 1 min).
+// 40 to 80 times faster with the fix, depending on starting point.
+// For getMoonAge:
+// more accurate with the fix (and never returns values >= 2*PI), also more than 11 times faster.
+static const int32_t newMoonDates[] = {
+// millis/10K date lunation number
+ -221149158, // 1899 Dec 3, 00:47 -285
+ -220893888, // 1900 Jan 1, 13:52 -284
+ -220639188, // 1900 Jan 31, 01:22 -283
+ -220385010, // 1900 Mar 1, 11:25 -282
+ -220131180, // 1900 Mar 30, 20:30 -281
+ -219877422, // 1900 Apr 29, 05:23 -280
+ -219623460, // 1900 May 28, 14:50 -279
+ -219369078, // 1900 Jun 27, 01:27 -278
+ -219114102, // 1900 Jul 26, 13:43 -277
+ -218858442, // 1900 Aug 25, 03:53 -276
+ -218602098, // 1900 Sep 23, 19:57 -275
+ -218345238, // 1900 Oct 23, 13:27 -274
+ -218088258, // 1900 Nov 22, 07:17 -273
+ -217831674, // 1900 Dec 22, 00:01 -272
+ -217575864, // 1901 Jan 20, 14:36 -271
+ -217320930, // 1901 Feb 19, 02:45 -270
+ -217066722, // 1901 Mar 20, 12:53 -269
+ -216813018, // 1901 Apr 18, 21:37 -268
+ -216559572, // 1901 May 18, 05:38 -267
+ -216306162, // 1901 Jun 16, 13:33 -266
+ -216052500, // 1901 Jul 15, 22:10 -265
+ -215798238, // 1901 Aug 14, 08:27 -264
+ -215543046, // 1901 Sep 12, 21:19 -263
+ -215286768, // 1901 Oct 12, 13:12 -262
+ -215029590, // 1901 Nov 11, 07:35 -261
+ -214772076, // 1901 Dec 11, 02:54 -260
+ -214514910, // 1902 Jan 9, 21:15 -259
+ -214258554, // 1902 Feb 8, 13:21 -258
+ -214003140, // 1902 Mar 10, 02:50 -257
+ -213748620, // 1902 Apr 8, 13:50 -256
+ -213494850, // 1902 May 7, 22:45 -255
+ -213241614, // 1902 Jun 6, 06:11 -254
+ -212988606, // 1902 Jul 5, 12:59 -253
+ -212735418, // 1902 Aug 3, 20:17 -252
+ -212481606, // 1902 Sep 2, 05:19 -251
+ -212226786, // 1902 Oct 1, 17:09 -250
+ -211970796, // 1902 Oct 31, 08:14 -249
+ -211713810, // 1902 Nov 30, 02:05 -248
+ -211456290, // 1902 Dec 29, 21:25 -247
+ -211198806, // 1903 Jan 28, 16:39 -246
+ -210941880, // 1903 Feb 27, 10:20 -245
+ -210685884, // 1903 Mar 29, 01:26 -244
+ -210430974, // 1903 Apr 27, 13:31 -243
+ -210177060, // 1903 May 26, 22:50 -242
+ -209923854, // 1903 Jun 25, 06:11 -241
+ -209670924, // 1903 Jul 24, 12:46 -240
+ -209417814, // 1903 Aug 22, 19:51 -239
+ -209164140, // 1903 Sep 21, 04:30 -238
+ -208909620, // 1903 Oct 20, 15:30 -237
+ -208654140, // 1903 Nov 19, 05:10 -236
+ -208397724, // 1903 Dec 18, 21:26 -235
+ -208140558, // 1904 Jan 17, 15:47 -234
+ -207883050, // 1904 Feb 16, 11:05 -233
+ -207625806, // 1904 Mar 17, 05:39 -232
+ -207369402, // 1904 Apr 15, 21:53 -231
+ -207114132, // 1904 May 15, 10:58 -230
+ -206859900, // 1904 Jun 13, 21:10 -229
+ -206606358, // 1904 Jul 13, 05:27 -228
+ -206353092, // 1904 Aug 11, 12:58 -227
+ -206099742, // 1904 Sep 9, 20:43 -226
+ -205846050, // 1904 Oct 9, 05:25 -225
+ -205591818, // 1904 Nov 7, 15:37 -224
+ -205336884, // 1904 Dec 7, 03:46 -223
+ -205081098, // 1905 Jan 5, 18:17 -222
+ -204824484, // 1905 Feb 4, 11:06 -221
+ -204567366, // 1905 Mar 6, 05:19 -220
+ -204310296, // 1905 Apr 4, 23:24 -219
+ -204053820, // 1905 May 4, 15:50 -218
+ -203798178, // 1905 Jun 3, 05:57 -217
+ -203543340, // 1905 Jul 2, 17:50 -216
+ -203289102, // 1905 Aug 1, 04:03 -215
+ -203035242, // 1905 Aug 30, 13:13 -214
+ -202781520, // 1905 Sep 28, 22:00 -213
+ -202527732, // 1905 Oct 28, 06:58 -212
+ -202273638, // 1905 Nov 26, 16:47 -211
+ -202019016, // 1905 Dec 26, 04:04 -210
+ -201763746, // 1906 Jan 24, 17:09 -209
+ -201507858, // 1906 Feb 23, 07:57 -208
+ -201251568, // 1906 Mar 24, 23:52 -207
+ -200995158, // 1906 Apr 23, 16:07 -206
+ -200738874, // 1906 May 23, 08:01 -205
+ -200482884, // 1906 Jun 21, 23:06 -204
+ -200227326, // 1906 Jul 21, 12:59 -203
+ -199972272, // 1906 Aug 20, 01:28 -202
+ -199717722, // 1906 Sep 18, 12:33 -201
+ -199463502, // 1906 Oct 17, 22:43 -200
+ -199209378, // 1906 Nov 16, 08:37 -199
+ -198955116, // 1906 Dec 15, 18:54 -198
+ -198700578, // 1907 Jan 14, 05:57 -197
+ -198445782, // 1907 Feb 12, 17:43 -196
+ -198190770, // 1907 Mar 14, 06:05 -195
+ -197935524, // 1907 Apr 12, 19:06 -194
+ -197679966, // 1907 May 12, 08:59 -193
+ -197424060, // 1907 Jun 10, 23:50 -192
+ -197167938, // 1907 Jul 10, 15:17 -191
+ -196911858, // 1907 Aug 9, 06:37 -190
+ -196656096, // 1907 Sep 7, 21:04 -189
+ -196400754, // 1907 Oct 7, 10:21 -188
+ -196145766, // 1907 Nov 5, 22:39 -187
+ -195890982, // 1907 Dec 5, 10:23 -186
+ -195636336, // 1908 Jan 3, 21:44 -185
+ -195381864, // 1908 Feb 2, 08:36 -184
+ -195127578, // 1908 Mar 2, 18:57 -183
+ -194873388, // 1908 Apr 1, 05:02 -182
+ -194619042, // 1908 Apr 30, 15:33 -181
+ -194364276, // 1908 May 30, 03:14 -180
+ -194108934, // 1908 Jun 28, 16:31 -179
+ -193853058, // 1908 Jul 28, 07:17 -178
+ -193596846, // 1908 Aug 26, 22:59 -177
+ -193340526, // 1908 Sep 25, 14:59 -176
+ -193084278, // 1908 Oct 25, 06:47 -175
+ -192828282, // 1908 Nov 23, 21:53 -174
+ -192572700, // 1908 Dec 23, 11:50 -173
+ -192317688, // 1909 Jan 22, 00:12 -172
+ -192063288, // 1909 Feb 20, 10:52 -171
+ -191809374, // 1909 Mar 21, 20:11 -170
+ -191555694, // 1909 Apr 20, 04:51 -169
+ -191301948, // 1909 May 19, 13:42 -168
+ -191047872, // 1909 Jun 17, 23:28 -167
+ -190793256, // 1909 Jul 17, 10:44 -166
+ -190537950, // 1909 Aug 15, 23:55 -165
+ -190281906, // 1909 Sep 14, 15:09 -164
+ -190025202, // 1909 Oct 14, 08:13 -163
+ -189768132, // 1909 Nov 13, 02:18 -162
+ -189511206, // 1909 Dec 12, 19:59 -161
+ -189254934, // 1910 Jan 11, 11:51 -160
+ -188999562, // 1910 Feb 10, 01:13 -159
+ -188745048, // 1910 Mar 11, 12:12 -158
+ -188491170, // 1910 Apr 9, 21:25 -157
+ -188237688, // 1910 May 9, 05:32 -156
+ -187984344, // 1910 Jun 7, 13:16 -155
+ -187730880, // 1910 Jul 6, 21:20 -154
+ -187476984, // 1910 Aug 5, 06:36 -153
+ -187222290, // 1910 Sep 3, 18:05 -152
+ -186966528, // 1910 Oct 3, 08:32 -151
+ -186709704, // 1910 Nov 2, 01:56 -150
+ -186452214, // 1910 Dec 1, 21:11 -149
+ -186194754, // 1910 Dec 31, 16:21 -148
+ -185937930, // 1911 Jan 30, 09:45 -147
+ -185682054, // 1911 Mar 1, 00:31 -146
+ -185427132, // 1911 Mar 30, 12:38 -145
+ -185173050, // 1911 Apr 28, 22:25 -144
+ -184919616, // 1911 May 28, 06:24 -143
+ -184666566, // 1911 Jun 26, 13:19 -142
+ -184413534, // 1911 Jul 25, 20:11 -141
+ -184160076, // 1911 Aug 24, 04:14 -140
+ -183905778, // 1911 Sep 22, 14:37 -139
+ -183650346, // 1911 Oct 22, 04:09 -138
+ -183393786, // 1911 Nov 20, 20:49 -137
+ -183136440, // 1911 Dec 20, 15:40 -136
+ -182878866, // 1912 Jan 19, 11:09 -135
+ -182621616, // 1912 Feb 18, 05:44 -134
+ -182365152, // 1912 Mar 18, 22:08 -133
+ -182109720, // 1912 Apr 17, 11:40 -132
+ -181855362, // 1912 May 16, 22:13 -131
+ -181601862, // 1912 Jun 15, 06:23 -130
+ -181348842, // 1912 Jul 14, 13:13 -129
+ -181095858, // 1912 Aug 12, 19:57 -128
+ -180842472, // 1912 Sep 11, 03:48 -127
+ -180588360, // 1912 Oct 10, 13:40 -126
+ -180333336, // 1912 Nov 9, 02:04 -125
+ -180077364, // 1912 Dec 8, 17:06 -124
+ -179820552, // 1913 Jan 7, 10:28 -123
+ -179563194, // 1913 Feb 6, 05:21 -122
+ -179305788, // 1913 Mar 8, 00:22 -121
+ -179048952, // 1913 Apr 6, 17:48 -120
+ -178793136, // 1913 May 6, 08:24 -119
+ -178538418, // 1913 Jun 4, 19:57 -118
+ -178284564, // 1913 Jul 4, 05:06 -117
+ -178031172, // 1913 Aug 2, 12:58 -116
+ -177777858, // 1913 Aug 31, 20:37 -115
+ -177524304, // 1913 Sep 30, 04:56 -114
+ -177270306, // 1913 Oct 29, 14:29 -113
+ -177015714, // 1913 Nov 28, 01:41 -112
+ -176760372, // 1913 Dec 27, 14:58 -111
+ -176504196, // 1914 Jan 26, 06:34 -110
+ -176247348, // 1914 Feb 25, 00:02 -109
+ -175990266, // 1914 Mar 26, 18:09 -108
+ -175733514, // 1914 Apr 25, 11:21 -107
+ -175477476, // 1914 May 25, 02:34 -106
+ -175222242, // 1914 Jun 23, 15:33 -105
+ -174967692, // 1914 Jul 23, 02:38 -104
+ -174713604, // 1914 Aug 21, 12:26 -103
+ -174459762, // 1914 Sep 19, 21:33 -102
+ -174205962, // 1914 Oct 19, 06:33 -101
+ -173951988, // 1914 Nov 17, 16:02 -100
+ -173697630, // 1914 Dec 17, 02:35 -99
+ -173442708, // 1915 Jan 15, 14:42 -98
+ -173187174, // 1915 Feb 14, 04:31 -97
+ -172931148, // 1915 Mar 15, 19:42 -96
+ -172674870, // 1915 Apr 14, 11:35 -95
+ -172418574, // 1915 May 14, 03:31 -94
+ -172162458, // 1915 Jun 12, 18:57 -93
+ -171906660, // 1915 Jul 12, 09:30 -92
+ -171651288, // 1915 Aug 10, 22:52 -91
+ -171396408, // 1915 Sep 9, 10:52 -90
+ -171141954, // 1915 Oct 8, 21:41 -89
+ -170887728, // 1915 Nov 7, 07:52 -88
+ -170633502, // 1915 Dec 6, 18:03 -87
+ -170379090, // 1916 Jan 5, 04:45 -86
+ -170124450, // 1916 Feb 3, 16:05 -85
+ -169869612, // 1916 Mar 4, 03:58 -84
+ -169614594, // 1916 Apr 2, 16:21 -83
+ -169359306, // 1916 May 2, 05:29 -82
+ -169103658, // 1916 May 31, 19:37 -81
+ -168847662, // 1916 Jun 30, 10:43 -80
+ -168591510, // 1916 Jul 30, 02:15 -79
+ -168335490, // 1916 Aug 28, 17:25 -78
+ -168079836, // 1916 Sep 27, 07:34 -77
+ -167824578, // 1916 Oct 26, 20:37 -76
+ -167569620, // 1916 Nov 25, 08:50 -75
+ -167314854, // 1916 Dec 24, 20:31 -74
+ -167060280, // 1917 Jan 23, 07:40 -73
+ -166805946, // 1917 Feb 21, 18:09 -72
+ -166551810, // 1917 Mar 23, 04:05 -71
+ -166297674, // 1917 Apr 21, 14:01 -70
+ -166043238, // 1917 May 21, 00:47 -69
+ -165788268, // 1917 Jun 19, 13:02 -68
+ -165532680, // 1917 Jul 19, 03:00 -67
+ -165276594, // 1917 Aug 17, 18:21 -66
+ -165020232, // 1917 Sep 16, 10:28 -65
+ -164763834, // 1917 Oct 16, 02:41 -64
+ -164507592, // 1917 Nov 14, 18:28 -63
+ -164251698, // 1917 Dec 14, 09:17 -62
+ -163996350, // 1918 Jan 12, 22:35 -61
+ -163741656, // 1918 Feb 11, 10:04 -60
+ -163487568, // 1918 Mar 12, 19:52 -59
+ -163233876, // 1918 Apr 11, 04:34 -58
+ -162980274, // 1918 May 10, 13:01 -57
+ -162726462, // 1918 Jun 8, 22:03 -56
+ -162472188, // 1918 Jul 8, 08:22 -55
+ -162217266, // 1918 Aug 6, 20:29 -54
+ -161961576, // 1918 Sep 5, 10:44 -53
+ -161705130, // 1918 Oct 5, 03:05 -52
+ -161448114, // 1918 Nov 3, 21:01 -51
+ -161190966, // 1918 Dec 3, 15:19 -50
+ -160934256, // 1919 Jan 2, 08:24 -49
+ -160678398, // 1919 Jan 31, 23:07 -48
+ -160423494, // 1919 Mar 2, 11:11 -47
+ -160169370, // 1919 Mar 31, 21:05 -46
+ -159915780, // 1919 Apr 30, 05:30 -45
+ -159662448, // 1919 May 29, 13:12 -44
+ -159409128, // 1919 Jun 27, 20:52 -43
+ -159155514, // 1919 Jul 27, 05:21 -42
+ -158901258, // 1919 Aug 25, 15:37 -41
+ -158646036, // 1919 Sep 24, 04:34 -40
+ -158389686, // 1919 Oct 23, 20:39 -39
+ -158132400, // 1919 Nov 22, 15:20 -38
+ -157874790, // 1919 Dec 22, 10:55 -37
+ -157617558, // 1920 Jan 21, 05:27 -36
+ -157361196, // 1920 Feb 19, 21:34 -35
+ -157105824, // 1920 Mar 20, 10:56 -34
+ -156851382, // 1920 Apr 18, 21:43 -33
+ -156597690, // 1920 May 18, 06:25 -32
+ -156344514, // 1920 Jun 16, 13:41 -31
+ -156091530, // 1920 Jul 15, 20:25 -30
+ -155838336, // 1920 Aug 14, 03:44 -29
+ -155584494, // 1920 Sep 12, 12:51 -28
+ -155329620, // 1920 Oct 12, 00:50 -27
+ -155073570, // 1920 Nov 10, 16:05 -26
+ -154816536, // 1920 Dec 10, 10:04 -25
+ -154558998, // 1921 Jan 9, 05:27 -24
+ -154301538, // 1921 Feb 8, 00:37 -23
+ -154044666, // 1921 Mar 9, 18:09 -22
+ -153788730, // 1921 Apr 8, 09:05 -21
+ -153533874, // 1921 May 7, 21:01 -20
+ -153279990, // 1921 Jun 6, 06:15 -19
+ -153026784, // 1921 Jul 5, 13:36 -18
+ -152773818, // 1921 Aug 3, 20:17 -17
+ -152520642, // 1921 Sep 2, 03:33 -16
+ -152266884, // 1921 Oct 1, 12:26 -15
+ -152012292, // 1921 Oct 30, 23:38 -14
+ -151756770, // 1921 Nov 29, 13:25 -13
+ -151500366, // 1921 Dec 29, 05:39 -12
+ -151243272, // 1922 Jan 27, 23:48 -11
+ -150985878, // 1922 Feb 26, 18:47 -10
+ -150728742, // 1922 Mar 28, 13:03 -9
+ -150472416, // 1922 Apr 27, 05:04 -8
+ -150217176, // 1922 May 26, 18:04 -7
+ -149962920, // 1922 Jun 25, 04:20 -6
+ -149709318, // 1922 Jul 24, 12:47 -5
+ -149455956, // 1922 Aug 22, 20:34 -4
+ -149202492, // 1922 Sep 21, 04:38 -3
+ -148948680, // 1922 Oct 20, 13:40 -2
+ -148694364, // 1922 Nov 19, 00:06 -1
+ -148439400, // 1922 Dec 18, 12:20 0
+ -148183674, // 1923 Jan 17, 02:41 1
+ -147927198, // 1923 Feb 15, 19:07 2
+ -147670254, // 1923 Mar 17, 12:51 3
+ -147413352, // 1923 Apr 16, 06:28 4
+ -147156972, // 1923 May 15, 22:38 5
+ -146901348, // 1923 Jun 14, 12:42 6
+ -146646450, // 1923 Jul 14, 00:45 7
+ -146392098, // 1923 Aug 12, 11:17 8
+ -146138088, // 1923 Sep 10, 20:52 9
+ -145884210, // 1923 Oct 10, 06:05 10
+ -145630278, // 1923 Nov 8, 15:27 11
+ -145376100, // 1923 Dec 8, 01:30 12
+ -145121478, // 1924 Jan 6, 12:47 13
+ -144866292, // 1924 Feb 5, 01:38 14
+ -144610578, // 1924 Mar 5, 15:57 15
+ -144354498, // 1924 Apr 4, 07:17 16
+ -144098280, // 1924 May 3, 23:00 17
+ -143842116, // 1924 Jun 2, 14:34 18
+ -143586150, // 1924 Jul 2, 05:35 19
+ -143330508, // 1924 Jul 31, 19:42 20
+ -143075298, // 1924 Aug 30, 08:37 21
+ -142820544, // 1924 Sep 28, 20:16 22
+ -142566138, // 1924 Oct 28, 06:57 23
+ -142311864, // 1924 Nov 26, 17:16 24
+ -142057524, // 1924 Dec 26, 03:46 25
+ -141803010, // 1925 Jan 24, 14:45 26
+ -141548328, // 1925 Feb 23, 02:12 27
+ -141293502, // 1925 Mar 24, 14:03 28
+ -141038472, // 1925 Apr 23, 02:28 29
+ -140783112, // 1925 May 22, 15:48 30
+ -140527338, // 1925 Jun 21, 06:17 31
+ -140271240, // 1925 Jul 20, 21:40 32
+ -140015070, // 1925 Aug 19, 13:15 33
+ -139759122, // 1925 Sep 18, 04:13 34
+ -139503564, // 1925 Oct 17, 18:06 35
+ -139248372, // 1925 Nov 16, 06:58 36
+ -138993450, // 1925 Dec 15, 19:05 37
+ -138738750, // 1926 Jan 14, 06:35 38
+ -138484320, // 1926 Feb 12, 17:20 39
+ -138230160, // 1926 Mar 14, 03:20 40
+ -137976144, // 1926 Apr 12, 12:56 41
+ -137721990, // 1926 May 11, 22:55 42
+ -137467392, // 1926 Jun 10, 10:08 43
+ -137212164, // 1926 Jul 9, 23:06 44
+ -136956306, // 1926 Aug 8, 13:49 45
+ -136700010, // 1926 Sep 7, 05:45 46
+ -136443522, // 1926 Oct 6, 22:13 47
+ -136187076, // 1926 Nov 5, 14:34 48
+ -135930888, // 1926 Dec 5, 06:12 49
+ -135675192, // 1927 Jan 3, 20:28 50
+ -135420156, // 1927 Feb 2, 08:54 51
+ -135165816, // 1927 Mar 3, 19:24 52
+ -134912016, // 1927 Apr 2, 04:24 53
+ -134658486, // 1927 May 1, 12:39 54
+ -134404890, // 1927 May 30, 21:05 55
+ -134150934, // 1927 Jun 29, 06:31 56
+ -133896384, // 1927 Jul 28, 17:36 57
+ -133641090, // 1927 Aug 27, 06:45 58
+ -133384974, // 1927 Sep 25, 22:11 59
+ -133128138, // 1927 Oct 25, 15:37 60
+ -132870906, // 1927 Nov 24, 10:09 61
+ -132613842, // 1927 Dec 24, 04:13 62
+ -132357486, // 1928 Jan 22, 20:19 63
+ -132102114, // 1928 Feb 21, 09:41 64
+ -131847666, // 1928 Mar 21, 20:29 65
+ -131593890, // 1928 Apr 20, 05:25 66
+ -131340516, // 1928 May 19, 13:14 67
+ -131087268, // 1928 Jun 17, 20:42 68
+ -130833870, // 1928 Jul 17, 04:35 69
+ -130579992, // 1928 Aug 15, 13:48 70
+ -130325280, // 1928 Sep 14, 01:20 71
+ -130069464, // 1928 Oct 13, 15:56 72
+ -129812550, // 1928 Nov 12, 09:35 73
+ -129554964, // 1928 Dec 12, 05:06 74
+ -129297432, // 1929 Jan 11, 00:28 75
+ -129040590, // 1929 Feb 9, 17:55 76
+ -128784738, // 1929 Mar 11, 08:37 77
+ -128529882, // 1929 Apr 9, 20:33 78
+ -128275872, // 1929 May 9, 06:08 79
+ -128022498, // 1929 Jun 7, 13:57 80
+ -127769478, // 1929 Jul 6, 20:47 81
+ -127516440, // 1929 Aug 5, 03:40 82
+ -127262958, // 1929 Sep 3, 11:47 83
+ -127008606, // 1929 Oct 2, 22:19 84
+ -126753114, // 1929 Nov 1, 12:01 85
+ -126496512, // 1929 Dec 1, 04:48 86
+ -126239148, // 1929 Dec 30, 23:42 87
+ -125981598, // 1930 Jan 29, 19:07 88
+ -125724402, // 1930 Feb 28, 13:33 89
+ -125467998, // 1930 Mar 30, 05:47 90
+ -125212626, // 1930 Apr 28, 19:09 91
+ -124958298, // 1930 May 28, 05:37 92
+ -124704798, // 1930 Jun 26, 13:47 93
+ -124451748, // 1930 Jul 25, 20:42 94
+ -124198698, // 1930 Aug 24, 03:37 95
+ -123945234, // 1930 Sep 22, 11:41 96
+ -123691038, // 1930 Oct 21, 21:47 97
+ -123435954, // 1930 Nov 20, 10:21 98
+ -123179976, // 1930 Dec 20, 01:24 99
+ -122923230, // 1931 Jan 18, 18:35 100
+ -122665980, // 1931 Feb 17, 13:10 101
+ -122408700, // 1931 Mar 19, 07:50 102
+ -122151960, // 1931 Apr 18, 01:00 103
+ -121896192, // 1931 May 17, 15:28 104
+ -121641468, // 1931 Jun 16, 03:02 105
+ -121387560, // 1931 Jul 15, 12:20 106
+ -121134078, // 1931 Aug 13, 20:27 107
+ -120880644, // 1931 Sep 12, 04:26 108
+ -120626964, // 1931 Oct 11, 13:06 109
+ -120372870, // 1931 Nov 9, 22:55 110
+ -120118224, // 1931 Dec 9, 10:16 111
+ -119862906, // 1932 Jan 7, 23:29 112
+ -119606850, // 1932 Feb 6, 14:45 113
+ -119350176, // 1932 Mar 7, 07:44 114
+ -119093274, // 1932 Apr 6, 01:21 115
+ -118836654, // 1932 May 5, 18:11 116
+ -118580664, // 1932 Jun 4, 09:16 117
+ -118325400, // 1932 Jul 3, 22:20 118
+ -118070748, // 1932 Aug 2, 09:42 119
+ -117816510, // 1932 Aug 31, 19:55 120
+ -117562500, // 1932 Sep 30, 05:30 121
+ -117308544, // 1932 Oct 29, 14:56 122
+ -117054462, // 1932 Nov 28, 00:43 123
+ -116800068, // 1932 Dec 27, 11:22 124
+ -116545200, // 1933 Jan 25, 23:20 125
+ -116289816, // 1933 Feb 24, 12:44 126
+ -116034000, // 1933 Mar 26, 03:20 127
+ -115777932, // 1933 Apr 24, 18:38 128
+ -115521798, // 1933 May 24, 10:07 129
+ -115265748, // 1933 Jun 23, 01:22 130
+ -115009902, // 1933 Jul 22, 16:03 131
+ -114754392, // 1933 Aug 21, 05:48 132
+ -114499314, // 1933 Sep 19, 18:21 133
+ -114244650, // 1933 Oct 19, 05:45 134
+ -113990256, // 1933 Nov 17, 16:24 135
+ -113735922, // 1933 Dec 17, 02:53 136
+ -113481498, // 1934 Jan 15, 13:37 137
+ -113226936, // 1934 Feb 14, 00:44 138
+ -112972266, // 1934 Mar 15, 12:09 139
+ -112717458, // 1934 Apr 13, 23:57 140
+ -112462380, // 1934 May 13, 12:30 141
+ -112206894, // 1934 Jun 12, 02:11 142
+ -111950964, // 1934 Jul 11, 17:06 143
+ -111694764, // 1934 Aug 10, 08:46 144
+ -111438600, // 1934 Sep 9, 00:20 145
+ -111182730, // 1934 Oct 8, 15:05 146
+ -110927262, // 1934 Nov 7, 04:43 147
+ -110672130, // 1934 Dec 6, 17:25 148
+ -110417280, // 1935 Jan 5, 05:20 149
+ -110162718, // 1935 Feb 3, 16:27 150
+ -109908480, // 1935 Mar 5, 02:40 151
+ -109654494, // 1935 Apr 3, 12:11 152
+ -109400538, // 1935 May 2, 21:37 153
+ -109146288, // 1935 Jun 1, 07:52 154
+ -108891456, // 1935 Jun 30, 19:44 155
+ -108635928, // 1935 Jul 30, 09:32 156
+ -108379794, // 1935 Aug 29, 01:01 157
+ -108123300, // 1935 Sep 27, 17:30 158
+ -107866710, // 1935 Oct 27, 10:15 159
+ -107610264, // 1935 Nov 26, 02:36 160
+ -107354226, // 1935 Dec 25, 17:49 161
+ -107098812, // 1936 Jan 24, 07:18 162
+ -106844148, // 1936 Feb 22, 18:42 163
+ -106590162, // 1936 Mar 23, 04:13 164
+ -106336602, // 1936 Apr 21, 12:33 165
+ -106083150, // 1936 May 20, 20:35 166
+ -105829476, // 1936 Jun 19, 05:14 167
+ -105575292, // 1936 Jul 18, 15:18 168
+ -105320394, // 1936 Aug 17, 03:21 169
+ -105064674, // 1936 Sep 15, 17:41 170
+ -104808114, // 1936 Oct 15, 10:21 171
+ -104550948, // 1936 Nov 14, 04:42 172
+ -104293650, // 1936 Dec 13, 23:25 173
+ -104036838, // 1937 Jan 12, 16:47 174
+ -103780956, // 1937 Feb 11, 07:34 175
+ -103526094, // 1937 Mar 12, 19:31 176
+ -103272060, // 1937 Apr 11, 05:10 177
+ -103018572, // 1937 May 10, 13:18 178
+ -102765342, // 1937 Jun 8, 20:43 179
+ -102512082, // 1937 Jul 8, 04:13 180
+ -102258498, // 1937 Aug 6, 12:37 181
+ -102004242, // 1937 Sep 4, 22:53 182
+ -101748972, // 1937 Oct 4, 11:58 183
+ -101492544, // 1937 Nov 3, 04:16 184
+ -101235174, // 1937 Dec 2, 23:11 185
+ -100977486, // 1938 Jan 1, 18:59 186
+ -100720230, // 1938 Jan 31, 13:35 187
+ -100463880, // 1938 Mar 2, 05:40 188
+ -100208568, // 1938 Mar 31, 18:52 189
+ -99954192, // 1938 Apr 30, 05:28 190
+ -99700560, // 1938 May 29, 14:00 191
+ -99447420, // 1938 Jun 27, 21:10 192
+ -99194442, // 1938 Jul 27, 03:53 193
+ -98941218, // 1938 Aug 25, 11:17 194
+ -98687322, // 1938 Sep 23, 20:33 195
+ -98432388, // 1938 Oct 23, 08:42 196
+ -98176290, // 1938 Nov 22, 00:05 197
+ -97919238, // 1938 Dec 21, 18:07 198
+ -97661718, // 1939 Jan 20, 13:27 199
+ -97404312, // 1939 Feb 19, 08:28 200
+ -97147506, // 1939 Mar 21, 01:49 201
+ -96891630, // 1939 Apr 19, 16:35 202
+ -96636810, // 1939 May 19, 04:25 203
+ -96382938, // 1939 Jun 17, 13:37 204
+ -96129702, // 1939 Jul 16, 21:03 205
+ -95876682, // 1939 Aug 15, 03:53 206
+ -95623428, // 1939 Sep 13, 11:22 207
+ -95369580, // 1939 Oct 12, 20:30 208
+ -95114916, // 1939 Nov 11, 07:54 209
+ -94859370, // 1939 Dec 10, 21:45 210
+ -94603002, // 1940 Jan 9, 13:53 211
+ -94346010, // 1940 Feb 8, 07:45 212
+ -94088742, // 1940 Mar 9, 02:23 213
+ -93831732, // 1940 Apr 7, 20:18 214
+ -93575478, // 1940 May 7, 12:07 215
+ -93320250, // 1940 Jun 6, 01:05 216
+ -93065952, // 1940 Jul 5, 11:28 217
+ -92812266, // 1940 Aug 3, 20:09 218
+ -92558790, // 1940 Sep 2, 04:15 219
+ -92305194, // 1940 Oct 1, 12:41 220
+ -92051262, // 1940 Oct 30, 22:03 221
+ -91796868, // 1940 Nov 29, 08:42 222
+ -91541904, // 1940 Dec 28, 20:56 223
+ -91286262, // 1941 Jan 27, 11:03 224
+ -91029948, // 1941 Feb 26, 03:02 225
+ -90773196, // 1941 Mar 27, 20:14 226
+ -90516456, // 1941 Apr 26, 13:24 227
+ -90260172, // 1941 May 26, 05:18 228
+ -90004548, // 1941 Jun 24, 19:22 229
+ -89749566, // 1941 Jul 24, 07:39 230
+ -89495076, // 1941 Aug 22, 18:34 231
+ -89240886, // 1941 Sep 21, 04:39 232
+ -88986840, // 1941 Oct 20, 14:20 233
+ -88732776, // 1941 Nov 19, 00:04 234
+ -88478532, // 1941 Dec 18, 10:18 235
+ -88223928, // 1942 Jan 16, 21:32 236
+ -87968862, // 1942 Feb 15, 10:03 237
+ -87713340, // 1942 Mar 16, 23:50 238
+ -87457482, // 1942 Apr 15, 14:33 239
+ -87201450, // 1942 May 15, 05:45 240
+ -86945388, // 1942 Jun 13, 21:02 241
+ -86689422, // 1942 Jul 13, 12:03 242
+ -86433672, // 1942 Aug 12, 02:28 243
+ -86178282, // 1942 Sep 10, 15:53 244
+ -85923324, // 1942 Oct 10, 04:06 245
+ -85668726, // 1942 Nov 8, 15:19 246
+ -85414320, // 1942 Dec 8, 02:00 247
+ -85159932, // 1943 Jan 6, 12:38 248
+ -84905466, // 1943 Feb 4, 23:29 249
+ -84650916, // 1943 Mar 6, 10:34 250
+ -84396282, // 1943 Apr 4, 21:53 251
+ -84141462, // 1943 May 4, 09:43 252
+ -83886282, // 1943 Jun 2, 22:33 253
+ -83630616, // 1943 Jul 2, 12:44 254
+ -83374524, // 1943 Aug 1, 04:06 255
+ -83118240, // 1943 Aug 30, 20:00 256
+ -82862106, // 1943 Sep 29, 11:29 257
+ -82606326, // 1943 Oct 29, 01:59 258
+ -82350942, // 1943 Nov 27, 15:23 259
+ -82095900, // 1943 Dec 27, 03:50 260
+ -81841176, // 1944 Jan 25, 15:24 261
+ -81586806, // 1944 Feb 24, 01:59 262
+ -81332784, // 1944 Mar 24, 11:36 263
+ -81078936, // 1944 Apr 22, 20:44 264
+ -80824962, // 1944 May 22, 06:13 265
+ -80570520, // 1944 Jun 20, 17:00 266
+ -80315388, // 1944 Jul 20, 05:42 267
+ -80059530, // 1944 Aug 18, 20:25 268
+ -79803138, // 1944 Sep 17, 12:37 269
+ -79546470, // 1944 Oct 17, 05:35 270
+ -79289826, // 1944 Nov 15, 22:29 271
+ -79033470, // 1944 Dec 15, 14:35 272
+ -78777678, // 1945 Jan 14, 05:07 273
+ -78522642, // 1945 Feb 12, 17:33 274
+ -78268374, // 1945 Mar 14, 03:51 275
+ -78014700, // 1945 Apr 12, 12:30 276
+ -77761308, // 1945 May 11, 20:22 277
+ -77507844, // 1945 Jun 10, 04:26 278
+ -77253990, // 1945 Jul 9, 13:35 279
+ -76999488, // 1945 Aug 8, 00:32 280
+ -76744176, // 1945 Sep 6, 13:44 281
+ -76487988, // 1945 Oct 6, 05:22 282
+ -76231020, // 1945 Nov 4, 23:10 283
+ -75973638, // 1945 Dec 4, 18:07 284
+ -75716460, // 1946 Jan 3, 12:30 285
+ -75460062, // 1946 Feb 2, 04:43 286
+ -75204714, // 1946 Mar 3, 18:01 287
+ -74950338, // 1946 Apr 2, 04:37 288
+ -74696664, // 1946 May 1, 13:16 289
+ -74443386, // 1946 May 30, 20:49 290
+ -74190204, // 1946 Jun 29, 04:06 291
+ -73936842, // 1946 Jul 28, 11:53 292
+ -73682958, // 1946 Aug 26, 21:07 293
+ -73428210, // 1946 Sep 25, 08:45 294
+ -73172328, // 1946 Oct 24, 23:32 295
+ -72915336, // 1946 Nov 23, 17:24 296
+ -72657684, // 1946 Dec 23, 13:06 297
+ -72400116, // 1947 Jan 22, 08:34 298
+ -72143280, // 1947 Feb 21, 02:00 299
+ -71887476, // 1947 Mar 22, 16:34 300
+ -71632686, // 1947 Apr 21, 04:19 301
+ -71378736, // 1947 May 20, 13:44 302
+ -71125404, // 1947 Jun 18, 21:26 303
+ -70872390, // 1947 Jul 18, 04:15 304
+ -70619328, // 1947 Aug 16, 11:12 305
+ -70365792, // 1947 Sep 14, 19:28 306
+ -70111380, // 1947 Oct 14, 06:10 307
+ -69855834, // 1947 Nov 12, 20:01 308
+ -69599202, // 1947 Dec 12, 12:53 309
+ -69341850, // 1948 Jan 11, 07:45 310
+ -69084348, // 1948 Feb 10, 03:02 311
+ -68827230, // 1948 Mar 10, 21:15 312
+ -68570898, // 1948 Apr 9, 13:17 313
+ -68315580, // 1948 May 9, 02:30 314
+ -68061264, // 1948 Jun 7, 12:56 315
+ -67807746, // 1948 Jul 6, 21:09 316
+ -67554642, // 1948 Aug 5, 04:13 317
+ -67301514, // 1948 Sep 3, 11:21 318
+ -67047948, // 1948 Oct 2, 19:42 319
+ -66793662, // 1948 Nov 1, 06:03 320
+ -66538530, // 1948 Nov 30, 18:45 321
+ -66282570, // 1948 Dec 30, 09:45 322
+ -66025908, // 1949 Jan 29, 02:42 323
+ -65768790, // 1949 Feb 27, 20:55 324
+ -65511654, // 1949 Mar 29, 15:11 325
+ -65255028, // 1949 Apr 28, 08:02 326
+ -64999296, // 1949 May 27, 22:24 327
+ -64744548, // 1949 Jun 26, 10:02 328
+ -64490562, // 1949 Jul 25, 19:33 329
+ -64236966, // 1949 Aug 24, 03:59 330
+ -63983394, // 1949 Sep 22, 12:21 331
+ -63729582, // 1949 Oct 21, 21:23 332
+ -63475386, // 1949 Nov 20, 07:29 333
+ -63220704, // 1949 Dec 19, 18:56 334
+ -62965440, // 1950 Jan 18, 08:00 335
+ -62709522, // 1950 Feb 16, 22:53 336
+ -62453040, // 1950 Mar 18, 15:20 337
+ -62196330, // 1950 Apr 17, 08:25 338
+ -61939830, // 1950 May 17, 00:55 339
+ -61683882, // 1950 Jun 15, 15:53 340
+ -61428564, // 1950 Jul 15, 05:06 341
+ -61173792, // 1950 Aug 13, 16:48 342
+ -60919386, // 1950 Sep 12, 03:29 343
+ -60665202, // 1950 Oct 11, 13:33 344
+ -60411090, // 1950 Nov 9, 23:25 345
+ -60156906, // 1950 Dec 9, 09:29 346
+ -59902500, // 1951 Jan 7, 20:10 347
+ -59647716, // 1951 Feb 6, 07:54 348
+ -59392494, // 1951 Mar 7, 20:51 349
+ -59136888, // 1951 Apr 6, 10:52 350
+ -58881024, // 1951 May 6, 01:36 351
+ -58625040, // 1951 Jun 4, 16:40 352
+ -58369032, // 1951 Jul 4, 07:48 353
+ -58113126, // 1951 Aug 2, 22:39 354
+ -57857460, // 1951 Sep 1, 12:50 355
+ -57602178, // 1951 Oct 1, 01:57 356
+ -57347316, // 1951 Oct 30, 13:54 357
+ -57092760, // 1951 Nov 29, 01:00 358
+ -56838342, // 1951 Dec 28, 11:43 359
+ -56583924, // 1952 Jan 26, 22:26 360
+ -56329464, // 1952 Feb 25, 09:16 361
+ -56074962, // 1952 Mar 25, 20:13 362
+ -55820352, // 1952 Apr 24, 07:28 363
+ -55565472, // 1952 May 23, 19:28 364
+ -55310130, // 1952 Jun 22, 08:45 365
+ -55054254, // 1952 Jul 21, 23:31 366
+ -54797994, // 1952 Aug 20, 15:21 367
+ -54541668, // 1952 Sep 19, 07:22 368
+ -54285582, // 1952 Oct 18, 22:43 369
+ -54029904, // 1952 Nov 17, 12:56 370
+ -53774628, // 1952 Dec 17, 02:02 371
+ -53519712, // 1953 Jan 15, 14:08 372
+ -53265180, // 1953 Feb 14, 01:10 373
+ -53011050, // 1953 Mar 15, 11:05 374
+ -52757226, // 1953 Apr 13, 20:09 375
+ -52503444, // 1953 May 13, 05:06 376
+ -52249350, // 1953 Jun 11, 14:55 377
+ -51994632, // 1953 Jul 11, 02:28 378
+ -51739140, // 1953 Aug 9, 16:10 379
+ -51482952, // 1953 Sep 8, 07:48 380
+ -51226314, // 1953 Oct 8, 00:41 381
+ -50969532, // 1953 Nov 6, 17:58 382
+ -50712912, // 1953 Dec 6, 10:48 383
+ -50456754, // 1954 Jan 5, 02:21 384
+ -50201310, // 1954 Feb 3, 15:55 385
+ -49946694, // 1954 Mar 5, 03:11 386
+ -49692810, // 1954 Apr 3, 12:25 387
+ -49439382, // 1954 May 2, 20:23 388
+ -49186062, // 1954 Jun 1, 04:03 389
+ -48932484, // 1954 Jun 30, 12:26 390
+ -48678360, // 1954 Jul 29, 22:20 391
+ -48423474, // 1954 Aug 28, 10:21 392
+ -48167694, // 1954 Sep 27, 00:51 393
+ -47911038, // 1954 Oct 26, 17:47 394
+ -47653734, // 1954 Nov 25, 12:31 395
+ -47396316, // 1954 Dec 25, 07:34 396
+ -47139438, // 1955 Jan 24, 01:07 397
+ -46883556, // 1955 Feb 22, 15:54 398
+ -46628748, // 1955 Mar 24, 03:42 399
+ -46374804, // 1955 Apr 22, 13:06 400
+ -46121406, // 1955 May 21, 20:59 401
+ -45868248, // 1955 Jun 20, 04:12 402
+ -45615036, // 1955 Jul 19, 11:34 403
+ -45361452, // 1955 Aug 17, 19:58 404
+ -45107166, // 1955 Sep 16, 06:19 405
+ -44851848, // 1955 Oct 15, 19:32 406
+ -44595348, // 1955 Nov 14, 12:02 407
+ -44337918, // 1955 Dec 14, 07:07 408
+ -44080194, // 1956 Jan 13, 03:01 409
+ -43822932, // 1956 Feb 11, 21:38 410
+ -43566618, // 1956 Mar 12, 13:37 411
+ -43311366, // 1956 Apr 11, 02:39 412
+ -43057056, // 1956 May 10, 13:04 413
+ -42803466, // 1956 Jun 8, 21:29 414
+ -42550332, // 1956 Jul 8, 04:38 415
+ -42297330, // 1956 Aug 6, 11:25 416
+ -42044058, // 1956 Sep 4, 18:57 417
+ -41790090, // 1956 Oct 4, 04:25 418
+ -41535096, // 1956 Nov 2, 16:44 419
+ -41278962, // 1956 Dec 2, 08:13 420
+ -41021916, // 1957 Jan 1, 02:14 421
+ -40764450, // 1957 Jan 30, 21:25 422
+ -40507122, // 1957 Mar 1, 16:13 423
+ -40250406, // 1957 Mar 31, 09:19 424
+ -39994596, // 1957 Apr 29, 23:54 425
+ -39739806, // 1957 May 29, 11:39 426
+ -39485916, // 1957 Jun 27, 20:54 427
+ -39232632, // 1957 Jul 27, 04:28 428
+ -38979522, // 1957 Aug 25, 11:33 429
+ -38726166, // 1957 Sep 23, 19:19 430
+ -38472222, // 1957 Oct 23, 04:43 431
+ -38217486, // 1957 Nov 21, 16:19 432
+ -37961928, // 1957 Dec 21, 06:12 433
+ -37705632, // 1958 Jan 19, 22:08 434
+ -37448772, // 1958 Feb 18, 15:38 435
+ -37191660, // 1958 Mar 20, 09:50 436
+ -36934782, // 1958 Apr 19, 03:23 437
+ -36678600, // 1958 May 18, 19:00 438
+ -36423366, // 1958 Jun 17, 07:59 439
+ -36169002, // 1958 Jul 16, 18:33 440
+ -35915202, // 1958 Aug 15, 03:33 441
+ -35661588, // 1958 Sep 13, 12:02 442
+ -35407848, // 1958 Oct 12, 20:52 443
+ -35153796, // 1958 Nov 11, 06:34 444
+ -34899342, // 1958 Dec 10, 17:23 445
+ -34644396, // 1959 Jan 9, 05:34 446
+ -34388868, // 1959 Feb 7, 19:22 447
+ -34132734, // 1959 Mar 9, 10:51 448
+ -33876186, // 1959 Apr 8, 03:29 449
+ -33619608, // 1959 May 7, 20:12 450
+ -33363402, // 1959 Jun 6, 11:53 451
+ -33107760, // 1959 Jul 6, 02:00 452
+ -32852676, // 1959 Aug 4, 14:34 453
+ -32598030, // 1959 Sep 3, 01:55 454
+ -32343654, // 1959 Oct 2, 12:31 455
+ -32089434, // 1959 Oct 31, 22:41 456
+ -31835244, // 1959 Nov 30, 08:46 457
+ -31580946, // 1959 Dec 29, 19:09 458
+ -31326390, // 1960 Jan 28, 06:15 459
+ -31071462, // 1960 Feb 26, 18:23 460
+ -30816138, // 1960 Mar 27, 07:37 461
+ -30560496, // 1960 Apr 25, 21:44 462
+ -30304644, // 1960 May 25, 12:26 463
+ -30048678, // 1960 Jun 24, 03:27 464
+ -29792694, // 1960 Jul 23, 18:31 465
+ -29536830, // 1960 Aug 22, 09:15 466
+ -29281242, // 1960 Sep 20, 23:13 467
+ -29026068, // 1960 Oct 20, 12:02 468
+ -28771284, // 1960 Nov 18, 23:46 469
+ -28516758, // 1960 Dec 18, 10:47 470
+ -28262340, // 1961 Jan 16, 21:30 471
+ -28007940, // 1961 Feb 15, 08:10 472
+ -27753534, // 1961 Mar 16, 18:51 473
+ -27499092, // 1961 Apr 15, 05:38 474
+ -27244476, // 1961 May 14, 16:54 475
+ -26989464, // 1961 Jun 13, 05:16 476
+ -26733894, // 1961 Jul 12, 19:11 477
+ -26477784, // 1961 Aug 11, 10:36 478
+ -26221380, // 1961 Sep 10, 02:50 479
+ -25965042, // 1961 Oct 9, 18:53 480
+ -25709052, // 1961 Nov 8, 09:58 481
+ -25453488, // 1961 Dec 7, 23:52 482
+ -25198350, // 1962 Jan 6, 12:35 483
+ -24943620, // 1962 Feb 5, 00:10 484
+ -24689334, // 1962 Mar 6, 10:31 485
+ -24435450, // 1962 Apr 4, 19:45 486
+ -24181770, // 1962 May 4, 04:25 487
+ -23927958, // 1962 Jun 2, 13:27 488
+ -23673648, // 1962 Jul 1, 23:52 489
+ -23418576, // 1962 Jul 31, 12:24 490
+ -23162706, // 1962 Aug 30, 03:09 491
+ -22906206, // 1962 Sep 28, 19:39 492
+ -22649370, // 1962 Oct 28, 13:05 493
+ -22392546, // 1962 Nov 27, 06:29 494
+ -22136046, // 1962 Dec 26, 22:59 495
+ -21880188, // 1963 Jan 25, 13:42 496
+ -21625164, // 1963 Feb 24, 02:06 497
+ -21370986, // 1963 Mar 25, 12:09 498
+ -21117432, // 1963 Apr 23, 20:28 499
+ -20864160, // 1963 May 23, 04:00 500
+ -20610804, // 1963 Jun 21, 11:46 501
+ -20357022, // 1963 Jul 20, 20:43 502
+ -20102556, // 1963 Aug 19, 07:34 503
+ -19847214, // 1963 Sep 17, 20:51 504
+ -19590942, // 1963 Oct 17, 12:43 505
+ -19333860, // 1963 Nov 16, 06:50 506
+ -19076364, // 1963 Dec 16, 02:06 507
+ -18819096, // 1964 Jan 14, 20:44 508
+ -18562674, // 1964 Feb 13, 13:01 509
+ -18307356, // 1964 Mar 14, 02:14 510
+ -18053052, // 1964 Apr 12, 12:38 511
+ -17799468, // 1964 May 11, 21:02 512
+ -17546268, // 1964 Jun 10, 04:22 513
+ -17293134, // 1964 Jul 9, 11:31 514
+ -17039778, // 1964 Aug 7, 19:17 515
+ -16785876, // 1964 Sep 6, 04:34 516
+ -16531080, // 1964 Oct 5, 16:20 517
+ -16275144, // 1964 Nov 4, 07:16 518
+ -16018092, // 1964 Dec 4, 01:18 519
+ -15760398, // 1965 Jan 2, 21:07 520
+ -15502824, // 1965 Feb 1, 16:36 521
+ -15246024, // 1965 Mar 3, 09:56 522
+ -14990274, // 1965 Apr 2, 00:21 523
+ -14735544, // 1965 May 1, 11:56 524
+ -14481642, // 1965 May 30, 21:13 525
+ -14228322, // 1965 Jun 29, 04:53 526
+ -13975290, // 1965 Jul 28, 11:45 527
+ -13722174, // 1965 Aug 26, 18:51 528
+ -13468572, // 1965 Sep 25, 03:18 529
+ -13214088, // 1965 Oct 24, 14:12 530
+ -12958500, // 1965 Nov 23, 04:10 531
+ -12701862, // 1965 Dec 22, 21:03 532
+ -12444558, // 1966 Jan 21, 15:47 533
+ -12187146, // 1966 Feb 20, 10:49 534
+ -11930124, // 1966 Mar 22, 04:46 535
+ -11673870, // 1966 Apr 20, 20:35 536
+ -11418582, // 1966 May 20, 09:43 537
+ -11164266, // 1966 Jun 18, 20:09 538
+ -10910700, // 1966 Jul 18, 04:30 539
+ -10657512, // 1966 Aug 16, 11:48 540
+ -10404282, // 1966 Sep 14, 19:13 541
+ -10150608, // 1966 Oct 14, 03:52 542
+ -9896238, // 1966 Nov 12, 14:27 543
+ -9641076, // 1966 Dec 12, 03:14 544
+ -9385164, // 1967 Jan 10, 18:06 545
+ -9128616, // 1967 Feb 9, 10:44 546
+ -8871660, // 1967 Mar 11, 04:30 547
+ -8614680, // 1967 Apr 9, 22:20 548
+ -8358150, // 1967 May 9, 14:55 549
+ -8102436, // 1967 Jun 8, 05:14 550
+ -7847640, // 1967 Jul 7, 17:00 551
+ -7593552, // 1967 Aug 6, 02:48 552
+ -7339818, // 1967 Sep 4, 11:37 553
+ -7086096, // 1967 Oct 3, 20:24 554
+ -6832152, // 1967 Nov 2, 05:48 555
+ -6577860, // 1967 Dec 1, 16:10 556
+ -6323166, // 1967 Dec 31, 03:39 557
+ -6067980, // 1968 Jan 29, 16:30 558
+ -5812224, // 1968 Feb 28, 06:56 559
+ -5555952, // 1968 Mar 28, 22:48 560
+ -5299434, // 1968 Apr 27, 15:21 561
+ -5043060, // 1968 May 27, 07:30 562
+ -4787130, // 1968 Jun 25, 22:25 563
+ -4531740, // 1968 Jul 25, 11:50 564
+ -4276818, // 1968 Aug 23, 23:57 565
+ -4022232, // 1968 Sep 22, 11:08 566
+ -3767856, // 1968 Oct 21, 21:44 567
+ -3513588, // 1968 Nov 20, 08:02 568
+ -3259326, // 1968 Dec 19, 18:19 569
+ -3004926, // 1969 Jan 18, 04:59 570
+ -2750250, // 1969 Feb 16, 16:25 571
+ -2495208, // 1969 Mar 18, 04:52 572
+ -2239824, // 1969 Apr 16, 18:16 573
+ -1984164, // 1969 May 16, 08:26 574
+ -1728306, // 1969 Jun 14, 23:09 575
+ -1472328, // 1969 Jul 14, 14:12 576
+ -1216338, // 1969 Aug 13, 05:17 577
+ -960504, // 1969 Sep 11, 19:56 578
+ -705006, // 1969 Oct 11, 09:39 579
+ -449934, // 1969 Nov 9, 22:11 580
+ -195228, // 1969 Dec 9, 09:42 581
+ 59250, // 1970 Jan 7, 20:35 582
+ 313638, // 1970 Feb 6, 07:13 583
+ 567978, // 1970 Mar 7, 17:43 584
+ 822300, // 1970 Apr 6, 04:10 585
+ 1076706, // 1970 May 5, 14:51 586
+ 1331406, // 1970 Jun 4, 02:21 587
+ 1586628, // 1970 Jul 3, 15:18 588
+ 1842468, // 1970 Aug 2, 05:58 589
+ 2098812, // 1970 Aug 31, 22:02 590
+ 2355312, // 1970 Sep 30, 14:32 591
+ 2611608, // 1970 Oct 30, 06:28 592
+ 2867484, // 1970 Nov 28, 21:14 593
+ 3122892, // 1970 Dec 28, 10:42 594
+ 3377850, // 1971 Jan 26, 22:55 595
+ 3632328, // 1971 Feb 25, 09:48 596
+ 3886338, // 1971 Mar 26, 19:23 597
+ 4140012, // 1971 Apr 25, 04:02 598
+ 4393632, // 1971 May 24, 12:32 599
+ 4647582, // 1971 Jun 22, 21:57 600
+ 4902210, // 1971 Jul 22, 09:15 601
+ 5157678, // 1971 Aug 20, 22:53 602
+ 5413938, // 1971 Sep 19, 14:43 603
+ 5670714, // 1971 Oct 19, 07:59 604
+ 5927676, // 1971 Nov 18, 01:46 605
+ 6184458, // 1971 Dec 17, 19:03 606
+ 6440712, // 1972 Jan 16, 10:52 607
+ 6696174, // 1972 Feb 15, 00:29 608
+ 6950730, // 1972 Mar 15, 11:35 609
+ 7204506, // 1972 Apr 13, 20:31 610
+ 7457808, // 1972 May 13, 04:08 611
+ 7711020, // 1972 Jun 11, 11:30 612
+ 7964514, // 1972 Jul 10, 19:39 613
+ 8218596, // 1972 Aug 9, 05:26 614
+ 8473488, // 1972 Sep 7, 17:28 615
+ 8729328, // 1972 Oct 7, 08:08 616
+ 8986086, // 1972 Nov 6, 01:21 617
+ 9243504, // 1972 Dec 5, 20:24 618
+ 9501018, // 1973 Jan 4, 15:43 619
+ 9757938, // 1973 Feb 3, 09:23 620
+ 10013802, // 1973 Mar 5, 00:07 621
+ 10268550, // 1973 Apr 3, 11:45 622
+ 10522410, // 1973 May 2, 20:55 623
+ 10775724, // 1973 Jun 1, 04:34 624
+ 11028834, // 1973 Jun 30, 11:39 625
+ 11282034, // 1973 Jul 29, 18:59 626
+ 11535630, // 1973 Aug 28, 03:25 627
+ 11789964, // 1973 Sep 26, 13:54 628
+ 12045342, // 1973 Oct 26, 03:17 629
+ 12301890, // 1973 Nov 24, 19:55 630
+ 12559362, // 1973 Dec 24, 15:07 631
+ 12817092, // 1974 Jan 23, 11:02 632
+ 13074324, // 1974 Feb 22, 05:34 633
+ 13330584, // 1974 Mar 23, 21:24 634
+ 13585782, // 1974 Apr 22, 10:17 635
+ 13840044, // 1974 May 21, 20:34 636
+ 14093616, // 1974 Jun 20, 04:56 637
+ 14346756, // 1974 Jul 19, 12:06 638
+ 14599806, // 1974 Aug 17, 19:01 639
+ 14853150, // 1974 Sep 16, 02:45 640
+ 15107190, // 1974 Oct 15, 12:25 641
+ 15362238, // 1974 Nov 14, 00:53 642
+ 15618390, // 1974 Dec 13, 16:25 643
+ 15875400, // 1975 Jan 12, 10:20 644
+ 16132782, // 1975 Feb 11, 05:17 645
+ 16390008, // 1975 Mar 12, 23:48 646
+ 16646634, // 1975 Apr 11, 16:39 647
+ 16902390, // 1975 May 11, 07:05 648
+ 17157174, // 1975 Jun 9, 18:49 649
+ 17411100, // 1975 Jul 9, 04:10 650
+ 17664462, // 1975 Aug 7, 11:57 651
+ 17917668, // 1975 Sep 5, 19:18 652
+ 18171138, // 1975 Oct 5, 03:23 653
+ 18425184, // 1975 Nov 3, 13:04 654
+ 18679980, // 1975 Dec 3, 00:50 655
+ 18935520, // 1976 Jan 1, 14:40 656
+ 19191720, // 1976 Jan 31, 06:20 657
+ 19448430, // 1976 Feb 29, 23:25 658
+ 19705368, // 1976 Mar 30, 17:08 659
+ 19962120, // 1976 Apr 29, 10:20 660
+ 20218242, // 1976 May 29, 01:47 661
+ 20473500, // 1976 Jun 27, 14:50 662
+ 20727954, // 1976 Jul 27, 01:39 663
+ 20981880, // 1976 Aug 25, 11:00 664
+ 21235650, // 1976 Sep 23, 19:55 665
+ 21489540, // 1976 Oct 23, 05:10 666
+ 21743706, // 1976 Nov 21, 15:11 667
+ 21998208, // 1976 Dec 21, 02:08 668
+ 22253106, // 1977 Jan 19, 14:11 669
+ 22508502, // 1977 Feb 18, 03:37 670
+ 22764438, // 1977 Mar 19, 18:33 671
+ 23020776, // 1977 Apr 18, 10:36 672
+ 23277192, // 1977 May 18, 02:52 673
+ 23533338, // 1977 Jun 16, 18:23 674
+ 23789022, // 1977 Jul 16, 08:37 675
+ 24044226, // 1977 Aug 14, 21:31 676
+ 24299058, // 1977 Sep 13, 09:23 677
+ 24553626, // 1977 Oct 12, 20:31 678
+ 24808020, // 1977 Nov 11, 07:10 679
+ 25062318, // 1977 Dec 10, 17:33 680
+ 25316640, // 1978 Jan 9, 04:00 681
+ 25571124, // 1978 Feb 7, 14:54 682
+ 25825896, // 1978 Mar 9, 02:36 683
+ 26081010, // 1978 Apr 7, 15:15 684
+ 26336442, // 1978 May 7, 04:47 685
+ 26592132, // 1978 Jun 5, 19:02 686
+ 26848026, // 1978 Jul 5, 09:51 687
+ 27104046, // 1978 Aug 4, 01:01 688
+ 27360054, // 1978 Sep 2, 16:09 689
+ 27615846, // 1978 Oct 2, 06:41 690
+ 27871236, // 1978 Oct 31, 20:06 691
+ 28126194, // 1978 Nov 30, 08:19 692
+ 28380816, // 1978 Dec 29, 19:36 693
+ 28635234, // 1979 Jan 28, 06:19 694
+ 28889550, // 1979 Feb 26, 16:45 695
+ 29143794, // 1979 Mar 28, 02:59 696
+ 29398050, // 1979 Apr 26, 13:15 697
+ 29652480, // 1979 May 26, 00:00 698
+ 29907348, // 1979 Jun 24, 11:58 699
+ 30162846, // 1979 Jul 24, 01:41 700
+ 30418986, // 1979 Aug 22, 17:11 701
+ 30675522, // 1979 Sep 21, 09:47 702
+ 30932058, // 1979 Oct 21, 02:23 703
+ 31188264, // 1979 Nov 19, 18:04 704
+ 31443978, // 1979 Dec 19, 08:23 705
+ 31699200, // 1980 Jan 17, 21:20 706
+ 31953906, // 1980 Feb 16, 08:51 707
+ 32208096, // 1980 Mar 16, 18:56 708
+ 32461836, // 1980 Apr 15, 03:46 709
+ 32715360, // 1980 May 14, 12:00 710
+ 32969034, // 1980 Jun 12, 20:39 711
+ 33223236, // 1980 Jul 12, 06:46 712
+ 33478260, // 1980 Aug 10, 19:10 713
+ 33734166, // 1980 Sep 9, 10:01 714
+ 33990780, // 1980 Oct 9, 02:50 715
+ 34247778, // 1980 Nov 7, 20:43 716
+ 34504770, // 1980 Dec 7, 14:35 717
+ 34761384, // 1981 Jan 6, 07:24 718
+ 35017284, // 1981 Feb 4, 22:14 719
+ 35272266, // 1981 Mar 6, 10:31 720
+ 35526360, // 1981 Apr 4, 20:20 721
+ 35779794, // 1981 May 4, 04:19 722
+ 36032952, // 1981 Jun 2, 11:32 723
+ 36286218, // 1981 Jul 1, 19:03 724
+ 36539952, // 1981 Jul 31, 03:52 725
+ 36794424, // 1981 Aug 29, 14:44 726
+ 37049808, // 1981 Sep 28, 04:08 727
+ 37306164, // 1981 Oct 27, 20:14 728
+ 37563348, // 1981 Nov 26, 14:38 729
+ 37820940, // 1981 Dec 26, 10:10 730
+ 38078256, // 1982 Jan 25, 04:56 731
+ 38334684, // 1982 Feb 23, 21:14 732
+ 38589948, // 1982 Mar 25, 10:18 733
+ 38844174, // 1982 Apr 23, 20:29 734
+ 39097686, // 1982 May 23, 04:41 735
+ 39350832, // 1982 Jun 21, 11:52 736
+ 39603942, // 1982 Jul 20, 18:57 737
+ 39857310, // 1982 Aug 19, 02:45 738
+ 40111254, // 1982 Sep 17, 12:09 739
+ 40366104, // 1982 Oct 17, 00:04 740
+ 40622100, // 1982 Nov 15, 15:10 741
+ 40879188, // 1982 Dec 15, 09:18 742
+ 41136888, // 1983 Jan 14, 05:08 743
+ 41394432, // 1983 Feb 13, 00:32 744
+ 41651184, // 1983 Mar 14, 17:44 745
+ 41906874, // 1983 Apr 13, 07:59 746
+ 42161550, // 1983 May 12, 19:25 747
+ 42415428, // 1983 Jun 11, 04:38 748
+ 42668754, // 1983 Jul 10, 12:19 749
+ 42921828, // 1983 Aug 8, 19:18 750
+ 43175010, // 1983 Sep 7, 02:35 751
+ 43428696, // 1983 Oct 6, 11:16 752
+ 43683246, // 1983 Nov 4, 22:21 753
+ 43938876, // 1983 Dec 4, 12:26 754
+ 44195496, // 1984 Jan 3, 05:16 755
+ 44452722, // 1984 Feb 1, 23:47 756
+ 44710026, // 1984 Mar 2, 18:31 757
+ 44966940, // 1984 Apr 1, 12:10 758
+ 45223116, // 1984 May 1, 03:46 759
+ 45478368, // 1984 May 30, 16:48 760
+ 45732714, // 1984 Jun 29, 03:19 761
+ 45986346, // 1984 Jul 28, 11:51 762
+ 46239636, // 1984 Aug 26, 19:26 763
+ 46492986, // 1984 Sep 25, 03:11 764
+ 46746768, // 1984 Oct 24, 12:08 765
+ 47001222, // 1984 Nov 22, 22:57 766
+ 47256402, // 1984 Dec 22, 11:47 767
+ 47512248, // 1985 Jan 21, 02:28 768
+ 47768658, // 1985 Feb 19, 18:43 769
+ 48025434, // 1985 Mar 21, 11:59 770
+ 48282252, // 1985 Apr 20, 05:22 771
+ 48538686, // 1985 May 19, 21:41 772
+ 48794388, // 1985 Jun 18, 11:58 773
+ 49049262, // 1985 Jul 17, 23:57 774
+ 49303476, // 1985 Aug 16, 10:06 775
+ 49557360, // 1985 Sep 14, 19:20 776
+ 49811238, // 1985 Oct 14, 04:33 777
+ 50065326, // 1985 Nov 12, 14:21 778
+ 50319690, // 1985 Dec 12, 00:55 779
+ 50574372, // 1986 Jan 10, 12:22 780
+ 50829456, // 1986 Feb 9, 00:56 781
+ 51085032, // 1986 Mar 10, 14:52 782
+ 51341088, // 1986 Apr 9, 06:08 783
+ 51597420, // 1986 May 8, 22:10 784
+ 51853686, // 1986 Jun 7, 14:01 785
+ 52109610, // 1986 Jul 7, 04:55 786
+ 52365096, // 1986 Aug 5, 18:36 787
+ 52620186, // 1986 Sep 4, 07:11 788
+ 52874970, // 1986 Oct 3, 18:55 789
+ 53129532, // 1986 Nov 2, 06:02 790
+ 53383938, // 1986 Dec 1, 16:43 791
+ 53638260, // 1986 Dec 31, 03:10 792
+ 53892630, // 1987 Jan 29, 13:45 793
+ 54147186, // 1987 Feb 28, 00:51 794
+ 54402036, // 1987 Mar 29, 12:46 795
+ 54657204, // 1987 Apr 28, 01:34 796
+ 54912678, // 1987 May 27, 15:13 797
+ 55168422, // 1987 Jun 26, 05:37 798
+ 55424388, // 1987 Jul 25, 20:38 799
+ 55680474, // 1987 Aug 24, 11:59 800
+ 55936494, // 1987 Sep 23, 03:09 801
+ 56192208, // 1987 Oct 22, 17:28 802
+ 56447478, // 1987 Nov 21, 06:33 803
+ 56702310, // 1987 Dec 20, 18:25 804
+ 56956836, // 1988 Jan 19, 05:26 805
+ 57211164, // 1988 Feb 17, 15:54 806
+ 57465372, // 1988 Mar 18, 02:02 807
+ 57719520, // 1988 Apr 16, 12:00 808
+ 57973746, // 1988 May 15, 22:11 809
+ 58228284, // 1988 Jun 14, 09:14 810
+ 58483398, // 1988 Jul 13, 21:53 811
+ 58739226, // 1988 Aug 12, 12:31 812
+ 58995660, // 1988 Sep 11, 04:50 813
+ 59252334, // 1988 Oct 10, 21:49 814
+ 59508840, // 1988 Nov 9, 14:20 815
+ 59764896, // 1988 Dec 9, 05:36 816
+ 60020412, // 1989 Jan 7, 19:22 817
+ 60275382, // 1989 Feb 6, 07:37 818
+ 60529794, // 1989 Mar 7, 18:19 819
+ 60783678, // 1989 Apr 6, 03:33 820
+ 61037202, // 1989 May 5, 11:47 821
+ 61290678, // 1989 Jun 3, 19:53 822
+ 61544514, // 1989 Jul 3, 04:59 823
+ 61799076, // 1989 Aug 1, 16:06 824
+ 62054550, // 1989 Aug 31, 05:45 825
+ 62310888, // 1989 Sep 29, 21:48 826
+ 62567808, // 1989 Oct 29, 15:28 827
+ 62824926, // 1989 Nov 28, 09:41 828
+ 63081840, // 1989 Dec 28, 03:20 829
+ 63338160, // 1990 Jan 26, 19:20 830
+ 63593610, // 1990 Feb 25, 08:55 831
+ 63848088, // 1990 Mar 26, 19:48 832
+ 64101768, // 1990 Apr 25, 04:28 833
+ 64354962, // 1990 May 24, 11:47 834
+ 64608090, // 1990 Jun 22, 18:55 835
+ 64861524, // 1990 Jul 22, 02:54 836
+ 65115594, // 1990 Aug 20, 12:39 837
+ 65370516, // 1990 Sep 19, 00:46 838
+ 65626422, // 1990 Oct 18, 15:37 839
+ 65883270, // 1990 Nov 17, 09:05 840
+ 66140772, // 1990 Dec 17, 04:22 841
+ 66398340, // 1991 Jan 15, 23:50 842
+ 66655272, // 1991 Feb 14, 17:32 843
+ 66911106, // 1991 Mar 16, 08:11 844
+ 67165788, // 1991 Apr 14, 19:38 845
+ 67419576, // 1991 May 14, 04:36 846
+ 67672836, // 1991 Jun 12, 12:06 847
+ 67925916, // 1991 Jul 11, 19:06 848
+ 68179122, // 1991 Aug 10, 02:27 849
+ 68432766, // 1991 Sep 8, 11:01 850
+ 68687154, // 1991 Oct 7, 21:39 851
+ 68942586, // 1991 Nov 6, 11:11 852
+ 69199176, // 1991 Dec 6, 03:56 853
+ 69456660, // 1992 Jan 4, 23:10 854
+ 69714360, // 1992 Feb 3, 19:00 855
+ 69971538, // 1992 Mar 4, 13:23 856
+ 70227732, // 1992 Apr 3, 05:02 857
+ 70482870, // 1992 May 2, 17:45 858
+ 70737102, // 1992 Jun 1, 03:57 859
+ 70990668, // 1992 Jun 30, 12:18 860
+ 71243850, // 1992 Jul 29, 19:35 861
+ 71496972, // 1992 Aug 28, 02:42 862
+ 71750400, // 1992 Sep 26, 10:40 863
+ 72004524, // 1992 Oct 25, 20:34 864
+ 72259626, // 1992 Nov 24, 09:11 865
+ 72515778, // 1992 Dec 24, 00:43 866
+ 72772722, // 1993 Jan 22, 18:27 867
+ 73029996, // 1993 Feb 21, 13:06 868
+ 73287090, // 1993 Mar 23, 07:15 869
+ 73543614, // 1993 Apr 21, 23:49 870
+ 73799322, // 1993 May 21, 14:07 871
+ 74054118, // 1993 Jun 20, 01:53 872
+ 74308104, // 1993 Jul 19, 11:24 873
+ 74561568, // 1993 Aug 17, 19:28 874
+ 74814900, // 1993 Sep 16, 03:10 875
+ 75068496, // 1993 Oct 15, 11:36 876
+ 75322644, // 1993 Nov 13, 21:34 877
+ 75577482, // 1993 Dec 13, 09:27 878
+ 75832980, // 1994 Jan 11, 23:10 879
+ 76089060, // 1994 Feb 10, 14:30 880
+ 76345590, // 1994 Mar 12, 07:05 881
+ 76602342, // 1994 Apr 11, 00:17 882
+ 76858962, // 1994 May 10, 17:07 883
+ 77115042, // 1994 Jun 9, 08:27 884
+ 77370342, // 1994 Jul 8, 21:37 885
+ 77624910, // 1994 Aug 7, 08:45 886
+ 77878998, // 1994 Sep 5, 18:33 887
+ 78132930, // 1994 Oct 5, 03:55 888
+ 78386970, // 1994 Nov 3, 13:35 889
+ 78641244, // 1994 Dec 2, 23:54 890
+ 78895770, // 1995 Jan 1, 10:55 891
+ 79150608, // 1995 Jan 30, 22:48 892
+ 79405848, // 1995 Mar 1, 11:48 893
+ 79661568, // 1995 Mar 31, 02:08 894
+ 79917696, // 1995 Apr 29, 17:36 895
+ 80173962, // 1995 May 29, 09:27 896
+ 80430060, // 1995 Jun 28, 00:50 897
+ 80685798, // 1995 Jul 27, 15:13 898
+ 80941146, // 1995 Aug 26, 04:31 899
+ 81196170, // 1995 Sep 24, 16:55 900
+ 81450936, // 1995 Oct 24, 04:36 901
+ 81705498, // 1995 Nov 22, 15:43 902
+ 81959892, // 1995 Dec 22, 02:22 903
+ 82214220, // 1996 Jan 20, 12:50 904
+ 82468620, // 1996 Feb 18, 23:30 905
+ 82723230, // 1996 Mar 19, 10:45 906
+ 82978134, // 1996 Apr 17, 22:49 907
+ 83233356, // 1996 May 17, 11:46 908
+ 83488896, // 1996 Jun 16, 01:36 909
+ 83744730, // 1996 Jul 15, 16:15 910
+ 84000804, // 1996 Aug 14, 07:34 911
+ 84256968, // 1996 Sep 12, 23:08 912
+ 84512970, // 1996 Oct 12, 14:15 913
+ 84768576, // 1996 Nov 11, 04:16 914
+ 85023696, // 1996 Dec 10, 16:56 915
+ 85278396, // 1997 Jan 9, 04:26 916
+ 85532796, // 1997 Feb 7, 15:06 917
+ 85787004, // 1997 Mar 9, 01:14 918
+ 86041092, // 1997 Apr 7, 11:02 919
+ 86295162, // 1997 May 6, 20:47 920
+ 86549424, // 1997 Jun 5, 07:04 921
+ 86804160, // 1997 Jul 4, 18:40 922
+ 87059604, // 1997 Aug 3, 08:14 923
+ 87315792, // 1997 Sep 1, 23:52 924
+ 87572472, // 1997 Oct 1, 16:52 925
+ 87829212, // 1997 Oct 31, 10:02 926
+ 88085604, // 1997 Nov 30, 02:14 927
+ 88341462, // 1997 Dec 29, 16:57 928
+ 88596726, // 1998 Jan 28, 06:01 929
+ 88851396, // 1998 Feb 26, 17:26 930
+ 89105484, // 1998 Mar 28, 03:14 931
+ 89359086, // 1998 Apr 26, 11:41 932
+ 89612472, // 1998 May 25, 19:32 933
+ 89866020, // 1998 Jun 24, 03:50 934
+ 90120144, // 1998 Jul 23, 13:44 935
+ 90375138, // 1998 Aug 22, 02:03 936
+ 90631092, // 1998 Sep 20, 17:02 937
+ 90887820, // 1998 Oct 20, 10:10 938
+ 91144962, // 1998 Nov 19, 04:27 939
+ 91402098, // 1998 Dec 18, 22:43 940
+ 91658796, // 1999 Jan 17, 15:46 941
+ 91914714, // 1999 Feb 16, 06:39 942
+ 92169648, // 1999 Mar 17, 18:48 943
+ 92423652, // 1999 Apr 16, 04:22 944
+ 92676990, // 1999 May 15, 12:05 945
+ 92930058, // 1999 Jun 13, 19:03 946
+ 93183264, // 1999 Jul 13, 02:24 947
+ 93436974, // 1999 Aug 11, 11:09 948
+ 93691452, // 1999 Sep 9, 22:02 949
+ 93946890, // 1999 Oct 9, 11:35 950
+ 94203318, // 1999 Nov 8, 03:53 951
+ 94460592, // 1999 Dec 7, 22:32 952
+ 94718244, // 2000 Jan 6, 18:14 953
+ 94975584, // 2000 Feb 5, 13:04 954
+ 95231982, // 2000 Mar 6, 05:17 955
+ 95487192, // 2000 Apr 4, 18:12 956
+ 95741352, // 2000 May 4, 04:12 957
+ 95994804, // 2000 Jun 2, 12:14 958
+ 96247920, // 2000 Jul 1, 19:20 959
+ 96501030, // 2000 Jul 31, 02:25 960
+ 96754434, // 2000 Aug 29, 10:19 961
+ 97008438, // 2000 Sep 27, 19:53 962
+ 97263348, // 2000 Oct 27, 07:58 963
+ 97519392, // 2000 Nov 25, 23:12 964
+ 97776492, // 2000 Dec 25, 17:22 965
+ 98034162, // 2001 Jan 24, 13:07 966
+ 98291652, // 2001 Feb 23, 08:22 967
+ 98548332, // 2001 Mar 25, 01:22 968
+ 98803956, // 2001 Apr 23, 15:26 969
+ 99058602, // 2001 May 23, 02:47 970
+ 99312468, // 2001 Jun 21, 11:58 971
+ 99565830, // 2001 Jul 20, 19:45 972
+ 99818970, // 2001 Aug 19, 02:55 973
+ 100072248, // 2001 Sep 17, 10:28 974
+ 100326024, // 2001 Oct 16, 19:24 975
+ 100580640, // 2001 Nov 15, 06:40 976
+ 100836288, // 2001 Dec 14, 20:48 977
+ 101092854, // 2002 Jan 13, 13:29 978
+ 101349966, // 2002 Feb 12, 07:41 979
+ 101607138, // 2002 Mar 14, 02:03 980
+ 101863926, // 2002 Apr 12, 19:21 981
+ 102120030, // 2002 May 12, 10:45 982
+ 102375282, // 2002 Jun 10, 23:47 983
+ 102629676, // 2002 Jul 10, 10:26 984
+ 102883410, // 2002 Aug 8, 19:15 985
+ 103136820, // 2002 Sep 7, 03:10 986
+ 103390308, // 2002 Oct 6, 11:18 987
+ 103644210, // 2002 Nov 4, 20:35 988
+ 103898730, // 2002 Dec 4, 07:35 989
+ 104153898, // 2003 Jan 2, 20:23 990
+ 104409654, // 2003 Feb 1, 10:49 991
+ 104665890, // 2003 Mar 3, 02:35 992
+ 104922468, // 2003 Apr 1, 19:18 993
+ 105179130, // 2003 May 1, 12:15 994
+ 105435480, // 2003 May 31, 04:20 995
+ 105691194, // 2003 Jun 29, 18:39 996
+ 105946158, // 2003 Jul 29, 06:53 997
+ 106200516, // 2003 Aug 27, 17:26 998
+ 106454574, // 2003 Sep 26, 03:09 999
+ 106708620, // 2003 Oct 25, 12:50 1000
+ 106962834, // 2003 Nov 23, 22:59 1001
+ 107217258, // 2003 Dec 23, 09:43 1002
+ 107471910, // 2004 Jan 21, 21:05 1003
+ 107726868, // 2004 Feb 20, 09:18 1004
+ 107982246, // 2004 Mar 20, 22:41 1005
+ 108238086, // 2004 Apr 19, 13:21 1006
+ 108494232, // 2004 May 19, 04:52 1007
+ 108750402, // 2004 Jun 17, 20:27 1008
+ 109006344, // 2004 Jul 17, 11:24 1009
+ 109261944, // 2004 Aug 16, 01:24 1010
+ 109517214, // 2004 Sep 14, 14:29 1011
+ 109772208, // 2004 Oct 14, 02:48 1012
+ 110026962, // 2004 Nov 12, 14:27 1013
+ 110281494, // 2004 Dec 12, 01:29 1014
+ 110535858, // 2005 Jan 10, 12:03 1015
+ 110790168, // 2005 Feb 8, 22:28 1016
+ 111044586, // 2005 Mar 10, 09:11 1017
+ 111299232, // 2005 Apr 8, 20:32 1018
+ 111554190, // 2005 May 8, 08:45 1019
+ 111809490, // 2005 Jun 6, 21:55 1020
+ 112065138, // 2005 Jul 6, 12:03 1021
+ 112321110, // 2005 Aug 5, 03:05 1022
+ 112577316, // 2005 Sep 3, 18:46 1023
+ 112833528, // 2005 Oct 3, 10:28 1024
+ 113089470, // 2005 Nov 2, 01:25 1025
+ 113344926, // 2005 Dec 1, 15:01 1026
+ 113599872, // 2005 Dec 31, 03:12 1027
+ 113854410, // 2006 Jan 29, 14:15 1028
+ 114108666, // 2006 Feb 28, 00:31 1029
+ 114362730, // 2006 Mar 29, 10:15 1030
+ 114616704, // 2006 Apr 27, 19:44 1031
+ 114870756, // 2006 May 27, 05:26 1032
+ 115125150, // 2006 Jun 25, 16:05 1033
+ 115380186, // 2006 Jul 25, 04:31 1034
+ 115636020, // 2006 Aug 23, 19:10 1035
+ 115892550, // 2006 Sep 22, 11:45 1036
+ 116149404, // 2006 Oct 22, 05:14 1037
+ 116406108, // 2006 Nov 20, 22:18 1038
+ 116662326, // 2006 Dec 20, 14:01 1039
+ 116917926, // 2007 Jan 19, 04:01 1040
+ 117172884, // 2007 Feb 17, 16:14 1041
+ 117427218, // 2007 Mar 19, 02:43 1042
+ 117680976, // 2007 Apr 17, 11:36 1043
+ 117934362, // 2007 May 16, 19:27 1044
+ 118187718, // 2007 Jun 15, 03:13 1045
+ 118441464, // 2007 Jul 14, 12:04 1046
+ 118695972, // 2007 Aug 12, 23:02 1047
+ 118951464, // 2007 Sep 11, 12:44 1048
+ 119207886, // 2007 Oct 11, 05:01 1049
+ 119464938, // 2007 Nov 9, 23:03 1050
+ 119722200, // 2007 Dec 9, 17:40 1051
+ 119979222, // 2008 Jan 8, 11:37 1052
+ 120235584, // 2008 Feb 7, 03:44 1053
+ 120491004, // 2008 Mar 7, 17:14 1054
+ 120745410, // 2008 Apr 6, 03:55 1055
+ 120998988, // 2008 May 5, 12:18 1056
+ 121252098, // 2008 Jun 3, 19:23 1057
+ 121505154, // 2008 Jul 3, 02:19 1058
+ 121758552, // 2008 Aug 1, 10:12 1059
+ 122012628, // 2008 Aug 30, 19:58 1060
+ 122267592, // 2008 Sep 29, 08:12 1061
+ 122523564, // 2008 Oct 28, 23:14 1062
+ 122780490, // 2008 Nov 27, 16:55 1063
+ 123038058, // 2008 Dec 27, 12:23 1064
+ 123295656, // 2009 Jan 26, 07:56 1065
+ 123552570, // 2009 Feb 25, 01:35 1066
+ 123808356, // 2009 Mar 26, 16:06 1067
+ 124062978, // 2009 Apr 25, 03:23 1068
+ 124316706, // 2009 May 24, 12:11 1069
+ 124569930, // 2009 Jun 22, 19:35 1070
+ 124823010, // 2009 Jul 22, 02:35 1071
+ 125076246, // 2009 Aug 20, 10:01 1072
+ 125329944, // 2009 Sep 18, 18:44 1073
+ 125584398, // 2009 Oct 18, 05:33 1074
+ 125839884, // 2009 Nov 16, 19:14 1075
+ 126096492, // 2009 Dec 16, 12:02 1076
+ 126353952, // 2010 Jan 15, 07:12 1077
+ 126611592, // 2010 Feb 14, 02:52 1078
+ 126868686, // 2010 Mar 15, 21:01 1079
+ 127124814, // 2010 Apr 14, 12:29 1080
+ 127379910, // 2010 May 14, 01:05 1081
+ 127634130, // 2010 Jun 12, 11:15 1082
+ 127887726, // 2010 Jul 11, 19:41 1083
+ 128140968, // 2010 Aug 10, 03:08 1084
+ 128394180, // 2010 Sep 8, 10:30 1085
+ 128647704, // 2010 Oct 7, 18:44 1086
+ 128901912, // 2010 Nov 6, 04:52 1087
+ 129157056, // 2010 Dec 5, 17:36 1088
+ 129413178, // 2011 Jan 4, 09:03 1089
+ 129670026, // 2011 Feb 3, 02:31 1090
+ 129927156, // 2011 Mar 4, 20:46 1091
+ 130184112, // 2011 Apr 3, 14:32 1092
+ 130440546, // 2011 May 3, 06:51 1093
+ 130696218, // 2011 Jun 1, 21:03 1094
+ 130951044, // 2011 Jul 1, 08:54 1095
+ 131205120, // 2011 Jul 30, 18:40 1096
+ 131458704, // 2011 Aug 29, 03:04 1097
+ 131712174, // 2011 Sep 27, 11:09 1098
+ 131965896, // 2011 Oct 26, 19:56 1099
+ 132220140, // 2011 Nov 25, 06:10 1100
+ 132474996, // 2011 Dec 24, 18:06 1101
+ 132730434, // 2012 Jan 23, 07:39 1102
+ 132986370, // 2012 Feb 21, 22:35 1103
+ 133242702, // 2012 Mar 22, 14:37 1104
+ 133499274, // 2012 Apr 21, 07:19 1105
+ 133755762, // 2012 May 20, 23:47 1106
+ 134011818, // 2012 Jun 19, 15:03 1107
+ 134267190, // 2012 Jul 19, 04:25 1108
+ 134521890, // 2012 Aug 17, 15:55 1109
+ 134776146, // 2012 Sep 16, 02:11 1110
+ 135030258, // 2012 Oct 15, 12:03 1111
+ 135284448, // 2012 Nov 13, 22:08 1112
+ 135538812, // 2012 Dec 13, 08:42 1113
+ 135793344, // 2013 Jan 11, 19:44 1114
+ 136048080, // 2013 Feb 10, 07:20 1115
+ 136303146, // 2013 Mar 11, 19:51 1116
+ 136558656, // 2013 Apr 10, 09:36 1117
+ 136814574, // 2013 May 10, 00:29 1118
+ 137070702, // 2013 Jun 8, 15:57 1119
+ 137326770, // 2013 Jul 8, 07:15 1120
+ 137582586, // 2013 Aug 6, 21:51 1121
+ 137838102, // 2013 Sep 5, 11:37 1122
+ 138093330, // 2013 Oct 5, 00:35 1123
+ 138348300, // 2013 Nov 3, 12:50 1124
+ 138603018, // 2013 Dec 3, 00:23 1125
+ 138857484, // 2014 Jan 1, 11:14 1126
+ 139111794, // 2014 Jan 30, 21:39 1127
+ 139366080, // 2014 Mar 1, 08:00 1128
+ 139620510, // 2014 Mar 30, 18:45 1129
+ 139875210, // 2014 Apr 29, 06:15 1130
+ 140130240, // 2014 May 28, 18:40 1131
+ 140385654, // 2014 Jun 27, 08:09 1132
+ 140641452, // 2014 Jul 26, 22:42 1133
+ 140897598, // 2014 Aug 25, 14:13 1134
+ 141153924, // 2014 Sep 24, 06:14 1135
+ 141410142, // 2014 Oct 23, 21:57 1136
+ 141665958, // 2014 Nov 22, 12:33 1137
+ 141921216, // 2014 Dec 22, 01:36 1138
+ 142175964, // 2015 Jan 20, 13:14 1139
+ 142430322, // 2015 Feb 18, 23:47 1140
+ 142684416, // 2015 Mar 20, 09:36 1141
+ 142938342, // 2015 Apr 18, 18:57 1142
+ 143192238, // 2015 May 18, 04:13 1143
+ 143446350, // 2015 Jun 16, 14:05 1144
+ 143700990, // 2015 Jul 16, 01:25 1145
+ 143956404, // 2015 Aug 14, 14:54 1146
+ 144212652, // 2015 Sep 13, 06:42 1147
+ 144469476, // 2015 Oct 13, 00:06 1148
+ 144726408, // 2015 Nov 11, 17:48 1149
+ 144982980, // 2015 Dec 11, 10:30 1150
+ 145238946, // 2016 Jan 10, 01:31 1151
+ 145494234, // 2016 Feb 8, 14:39 1152
+ 145748850, // 2016 Mar 9, 01:55 1153
+ 146002824, // 2016 Apr 7, 11:24 1154
+ 146256300, // 2016 May 6, 19:30 1155
+ 146509560, // 2016 Jun 5, 03:00 1156
+ 146763006, // 2016 Jul 4, 11:01 1157
+ 147017070, // 2016 Aug 2, 20:45 1158
+ 147272064, // 2016 Sep 1, 09:04 1159
+ 147528072, // 2016 Oct 1, 00:12 1160
+ 147784914, // 2016 Oct 30, 17:39 1161
+ 148042194, // 2016 Nov 29, 12:19 1162
+ 148299444, // 2016 Dec 29, 06:54 1163
+ 148556202, // 2017 Jan 28, 00:07 1164
+ 148812114, // 2017 Feb 26, 14:59 1165
+ 149066988, // 2017 Mar 28, 02:58 1166
+ 149320896, // 2017 Apr 26, 12:16 1167
+ 149574150, // 2017 May 25, 19:45 1168
+ 149827146, // 2017 Jun 24, 02:31 1169
+ 150080316, // 2017 Jul 23, 09:46 1170
+ 150334020, // 2017 Aug 21, 18:30 1171
+ 150588540, // 2017 Sep 20, 05:30 1172
+ 150844032, // 2017 Oct 19, 19:12 1173
+ 151100532, // 2017 Nov 18, 11:42 1174
+ 151357860, // 2017 Dec 18, 06:30 1175
+ 151615542, // 2018 Jan 17, 02:17 1176
+ 151872870, // 2018 Feb 15, 21:05 1177
+ 152129232, // 2018 Mar 17, 13:12 1178
+ 152384382, // 2018 Apr 16, 01:57 1179
+ 152638488, // 2018 May 15, 11:48 1180
+ 152891898, // 2018 Jun 13, 19:43 1181
+ 153145008, // 2018 Jul 13, 02:48 1182
+ 153398148, // 2018 Aug 11, 09:58 1183
+ 153651606, // 2018 Sep 9, 18:01 1184
+ 153905682, // 2018 Oct 9, 03:47 1185
+ 154160652, // 2018 Nov 7, 16:02 1186
+ 154416720, // 2018 Dec 7, 07:20 1187
+ 154673808, // 2019 Jan 6, 01:28 1188
+ 154931424, // 2019 Feb 4, 21:04 1189
+ 155188824, // 2019 Mar 6, 16:04 1190
+ 155445420, // 2019 Apr 5, 08:50 1191
+ 155700996, // 2019 May 4, 22:46 1192
+ 155955612, // 2019 Jun 3, 10:02 1193
+ 156209496, // 2019 Jul 2, 19:16 1194
+ 156462912, // 2019 Aug 1, 03:12 1195
+ 156716142, // 2019 Aug 30, 10:37 1196
+ 156969516, // 2019 Sep 28, 18:26 1197
+ 157223394, // 2019 Oct 28, 03:39 1198
+ 157478076, // 2019 Nov 26, 15:06 1199
+ 157733718, // 2019 Dec 26, 05:13 1200
+ 157990212, // 2020 Jan 24, 21:42 1201
+ 158247192, // 2020 Feb 23, 15:32 1202
+ 158504208, // 2020 Mar 24, 09:28 1203
+ 158760876, // 2020 Apr 23, 02:26 1204
+ 159016914, // 2020 May 22, 17:39 1205
+ 159272172, // 2020 Jun 21, 06:42 1206
+ 159526638, // 2020 Jul 20, 17:33 1207
+ 159780486, // 2020 Aug 19, 02:41 1208
+ 160034040, // 2020 Sep 17, 11:00 1209
+ 160287666, // 2020 Oct 16, 19:31 1210
+ 160541682, // 2020 Nov 15, 05:07 1211
+ 160796262, // 2020 Dec 14, 16:17 1212
+ 161051400, // 2021 Jan 13, 05:00 1213
+ 161307036, // 2021 Feb 11, 19:06 1214
+ 161563086, // 2021 Mar 13, 10:21 1215
+ 161819466, // 2021 Apr 12, 02:31 1216
+ 162075960, // 2021 May 11, 19:00 1217
+ 162332238, // 2021 Jun 10, 10:53 1218
+ 162587982, // 2021 Jul 10, 01:17 1219
+ 162843060, // 2021 Aug 8, 13:50 1220
+ 163097592, // 2021 Sep 7, 00:52 1221
+ 163351830, // 2021 Oct 6, 11:05 1222
+ 163606050, // 2021 Nov 4, 21:15 1223
+ 163860378, // 2021 Dec 4, 07:43 1224
+ 164114844, // 2022 Jan 2, 18:34 1225
+ 164369436, // 2022 Feb 1, 05:46 1226
+ 164624250, // 2022 Mar 2, 17:35 1227
+ 164879424, // 2022 Apr 1, 06:24 1228
+ 165135048, // 2022 Apr 30, 20:28 1229
+ 165391020, // 2022 May 30, 11:30 1230
+ 165647112, // 2022 Jun 29, 02:52 1231
+ 165903090, // 2022 Jul 28, 17:55 1232
+ 166158822, // 2022 Aug 27, 08:17 1233
+ 166414284, // 2022 Sep 25, 21:54 1234
+ 166669488, // 2022 Oct 25, 10:48 1235
+ 166924422, // 2022 Nov 23, 22:57 1236
+ 167179062, // 2022 Dec 23, 10:17 1237
+ 167433438, // 2023 Jan 21, 20:53 1238
+ 167687676, // 2023 Feb 20, 07:06 1239
+ 167941938, // 2023 Mar 21, 17:23 1240
+ 168196398, // 2023 Apr 20, 04:13 1241
+ 168451158, // 2023 May 19, 15:53 1242
+ 168706302, // 2023 Jun 18, 04:37 1243
+ 168961872, // 2023 Jul 17, 18:32 1244
+ 169217868, // 2023 Aug 16, 09:38 1245
+ 169474200, // 2023 Sep 15, 01:40 1246
+ 169730610, // 2023 Oct 14, 17:55 1247
+ 169986762, // 2023 Nov 13, 09:27 1248
+ 170242392, // 2023 Dec 12, 23:32 1249
+ 170497422, // 2024 Jan 11, 11:57 1250
+ 170751954, // 2024 Feb 9, 22:59 1251
+ 171006126, // 2024 Mar 10, 09:01 1252
+ 171260046, // 2024 Apr 8, 18:21 1253
+ 171513852, // 2024 May 8, 03:22 1254
+ 171767748, // 2024 Jun 6, 12:38 1255
+ 172022022, // 2024 Jul 5, 22:57 1256
+ 172276998, // 2024 Aug 4, 11:13 1257
+ 172532856, // 2024 Sep 3, 01:56 1258
+ 172789500, // 2024 Oct 2, 18:50 1259
+ 173046528, // 2024 Nov 1, 12:48 1260
+ 173303412, // 2024 Dec 1, 06:22 1261
+ 173559762, // 2024 Dec 30, 22:27 1262
+ 173815416, // 2025 Jan 29, 12:36 1263
+ 174070350, // 2025 Feb 28, 00:45 1264
+ 174324588, // 2025 Mar 29, 10:58 1265
+ 174578232, // 2025 Apr 27, 19:32 1266
+ 174831498, // 2025 May 27, 03:03 1267
+ 175084752, // 2025 Jun 25, 10:32 1268
+ 175338426, // 2025 Jul 24, 19:11 1269
+ 175592916, // 2025 Aug 23, 06:06 1270
+ 175848444, // 2025 Sep 21, 19:54 1271
+ 176104956, // 2025 Oct 21, 12:26 1272
+ 176362128, // 2025 Nov 20, 06:48 1273
+ 176619504, // 2025 Dec 20, 01:44 1274
+ 176876592, // 2026 Jan 18, 19:52 1275
+ 177132966, // 2026 Feb 17, 12:01 1276
+ 177388344, // 2026 Mar 19, 01:24 1277
+ 177642672, // 2026 Apr 17, 11:52 1278
+ 177896166, // 2026 May 16, 20:01 1279
+ 178149204, // 2026 Jun 15, 02:54 1280
+ 178402224, // 2026 Jul 14, 09:44 1281
+ 178655616, // 2026 Aug 12, 17:36 1282
+ 178909722, // 2026 Sep 11, 03:27 1283
+ 179164740, // 2026 Oct 10, 15:50 1284
+ 179420772, // 2026 Nov 9, 07:02 1285
+ 179677752, // 2026 Dec 9, 00:52 1286
+ 179935344, // 2027 Jan 7, 20:24 1287
+ 180192936, // 2027 Feb 6, 15:56 1288
+ 180449820, // 2027 Mar 8, 09:30 1289
+ 180705546, // 2027 Apr 6, 23:51 1290
+ 180960114, // 2027 May 6, 10:59 1291
+ 181213806, // 2027 Jun 4, 19:41 1292
+ 181467012, // 2027 Jul 4, 03:02 1293
+ 181720110, // 2027 Aug 2, 10:05 1294
+ 181973406, // 2027 Aug 31, 17:41 1295
+ 182227176, // 2027 Sep 30, 02:36 1296
+ 182481696, // 2027 Oct 29, 13:36 1297
+ 182737224, // 2027 Nov 28, 03:24 1298
+ 182993832, // 2027 Dec 27, 20:12 1299
+ 183251238, // 2028 Jan 26, 15:13 1300
+ 183508788, // 2028 Feb 25, 10:38 1301
+ 183765792, // 2028 Mar 26, 04:32 1302
+ 184021842, // 2028 Apr 24, 19:47 1303
+ 184276902, // 2028 May 24, 08:17 1304
+ 184531128, // 2028 Jun 22, 18:28 1305
+ 184784772, // 2028 Jul 22, 03:02 1306
+ 185038104, // 2028 Aug 20, 10:44 1307
+ 185291424, // 2028 Sep 18, 18:24 1308
+ 185545062, // 2028 Oct 18, 02:57 1309
+ 185799348, // 2028 Nov 16, 13:18 1310
+ 186054516, // 2028 Dec 16, 02:06 1311
+ 186310590, // 2029 Jan 14, 17:25 1312
+ 186567312, // 2029 Feb 13, 10:32 1313
+ 186824280, // 2029 Mar 15, 04:20 1314
+ 187081080, // 2029 Apr 13, 21:40 1315
+ 187337412, // 2029 May 13, 13:42 1316
+ 187593066, // 2029 Jun 12, 03:51 1317
+ 187847946, // 2029 Jul 11, 15:51 1318
+ 188102136, // 2029 Aug 10, 01:56 1319
+ 188355870, // 2029 Sep 8, 10:45 1320
+ 188609490, // 2029 Oct 7, 19:15 1321
+ 188863344, // 2029 Nov 6, 04:24 1322
+ 189117672, // 2029 Dec 5, 14:52 1323
+ 189372534, // 2030 Jan 4, 02:49 1324
+ 189627888, // 2030 Feb 2, 16:08 1325
+ 189883650, // 2030 Mar 4, 06:35 1326
+ 190139778, // 2030 Apr 2, 22:03 1327
+ 190396152, // 2030 May 2, 14:12 1328
+ 190652526, // 2030 Jun 1, 06:21 1329
+ 190908570, // 2030 Jun 30, 21:35 1330
+ 191164026, // 2030 Jul 30, 11:11 1331
+ 191418882, // 2030 Aug 28, 23:07 1332
+ 191673330, // 2030 Sep 27, 09:55 1333
+ 191927622, // 2030 Oct 26, 20:17 1334
+ 192181962, // 2030 Nov 25, 06:47 1335
+ 192436392, // 2030 Dec 24, 17:32 1336
+ 192690906, // 2031 Jan 23, 04:31 1337
+ 192945534, // 2031 Feb 21, 15:49 1338
+ 193200414, // 2031 Mar 23, 03:49 1339
+ 193455702, // 2031 Apr 21, 16:57 1340
+ 193711422, // 2031 May 21, 07:17 1341
+ 193967430, // 2031 Jun 19, 22:25 1342
+ 194223480, // 2031 Jul 19, 13:40 1343
+ 194479392, // 2031 Aug 18, 04:32 1344
+ 194735082, // 2031 Sep 16, 18:47 1345
+ 194990526, // 2031 Oct 16, 08:21 1346
+ 195245700, // 2031 Nov 14, 21:10 1347
+ 195500556, // 2031 Dec 14, 09:06 1348
+ 195755082, // 2032 Jan 12, 20:07 1349
+ 196009344, // 2032 Feb 11, 06:24 1350
+ 196263504, // 2032 Mar 11, 16:24 1351
+ 196517760, // 2032 Apr 10, 02:40 1352
+ 196772256, // 2032 May 9, 13:36 1353
+ 197027112, // 2032 Jun 8, 01:32 1354
+ 197282412, // 2032 Jul 7, 14:42 1355
+ 197538192, // 2032 Aug 6, 05:12 1356
+ 197794422, // 2032 Sep 4, 20:57 1357
+ 198050922, // 2032 Oct 4, 13:27 1358
+ 198307350, // 2032 Nov 3, 05:45 1359
+ 198563358, // 2032 Dec 2, 20:53 1360
+ 198818742, // 2033 Jan 1, 10:17 1361
+ 199073520, // 2033 Jan 30, 22:00 1362
+ 199327818, // 2033 Mar 1, 08:23 1363
+ 199581786, // 2033 Mar 30, 17:51 1364
+ 199835556, // 2033 Apr 29, 02:46 1365
+ 200089302, // 2033 May 28, 11:37 1366
+ 200343282, // 2033 Jun 26, 21:07 1367
+ 200597838, // 2033 Jul 26, 08:13 1368
+ 200853240, // 2033 Aug 24, 21:40 1369
+ 201109560, // 2033 Sep 23, 13:40 1370
+ 201366534, // 2033 Oct 23, 07:29 1371
+ 201623640, // 2033 Nov 22, 01:40 1372
+ 201880362, // 2033 Dec 21, 18:47 1373
+ 202136412, // 2034 Jan 20, 10:02 1374
+ 202391700, // 2034 Feb 18, 23:10 1375
+ 202646250, // 2034 Mar 20, 10:15 1376
+ 202900116, // 2034 Apr 18, 19:26 1377
+ 203153472, // 2034 May 18, 03:12 1378
+ 203406636, // 2034 Jun 16, 10:26 1379
+ 203660010, // 2034 Jul 15, 18:15 1380
+ 203914038, // 2034 Aug 14, 03:53 1381
+ 204169044, // 2034 Sep 12, 16:14 1382
+ 204425118, // 2034 Oct 12, 07:33 1383
+ 204682056, // 2034 Nov 11, 01:16 1384
+ 204939444, // 2034 Dec 10, 20:14 1385
+ 205196778, // 2035 Jan 9, 15:03 1386
+ 205453572, // 2035 Feb 8, 08:22 1387
+ 205709460, // 2035 Mar 9, 23:10 1388
+ 205964268, // 2035 Apr 8, 10:58 1389
+ 206218104, // 2035 May 7, 20:04 1390
+ 206471280, // 2035 Jun 6, 03:20 1391
+ 206724234, // 2035 Jul 5, 09:59 1392
+ 206977386, // 2035 Aug 3, 17:11 1393
+ 207231114, // 2035 Sep 2, 01:59 1394
+ 207485682, // 2035 Oct 1, 13:07 1395
+ 207741234, // 2035 Oct 31, 02:59 1396
+ 207997788, // 2035 Nov 29, 19:38 1397
+ 208255146, // 2035 Dec 29, 14:31 1398
+ 208512822, // 2036 Jan 28, 10:17 1399
+ 208770120, // 2036 Feb 27, 05:00 1400
+ 209026422, // 2036 Mar 27, 20:57 1401
+ 209281518, // 2036 Apr 26, 09:33 1402
+ 209535582, // 2036 May 25, 19:17 1403
+ 209788980, // 2036 Jun 24, 03:10 1404
+ 210042102, // 2036 Jul 23, 10:17 1405
+ 210295290, // 2036 Aug 21, 17:35 1406
+ 210548826, // 2036 Sep 20, 01:51 1407
+ 210802980, // 2036 Oct 19, 11:50 1408
+ 211058010, // 2036 Nov 18, 00:15 1409
+ 211314090, // 2036 Dec 17, 15:35 1410
+ 211571124, // 2037 Jan 16, 09:34 1411
+ 211828644, // 2037 Feb 15, 04:54 1412
+ 212085942, // 2037 Mar 16, 23:37 1413
+ 212342448, // 2037 Apr 15, 16:08 1414
+ 212597970, // 2037 May 15, 05:55 1415
+ 212852586, // 2037 Jun 13, 17:11 1416
+ 213106512, // 2037 Jul 13, 02:32 1417
+ 213360012, // 2037 Aug 11, 10:42 1418
+ 213613350, // 2037 Sep 9, 18:25 1419
+ 213866850, // 2037 Oct 9, 02:35 1420
+ 214120818, // 2037 Nov 7, 12:03 1421
+ 214375554, // 2037 Dec 6, 23:39 1422
+ 214631172, // 2038 Jan 5, 13:42 1423
+ 214887552, // 2038 Feb 4, 05:52 1424
+ 215144370, // 2038 Mar 5, 23:15 1425
+ 215401218, // 2038 Apr 4, 16:43 1426
+ 215657760, // 2038 May 4, 09:20 1427
+ 215913744, // 2038 Jun 3, 00:24 1428
+ 216169032, // 2038 Jul 2, 13:32 1429
+ 216423600, // 2038 Aug 1, 00:40 1430
+ 216677592, // 2038 Aug 30, 10:12 1431
+ 216931302, // 2038 Sep 28, 18:57 1432
+ 217185078, // 2038 Oct 28, 03:53 1433
+ 217439202, // 2038 Nov 26, 13:47 1434
+ 217693812, // 2038 Dec 26, 01:02 1435
+ 217948896, // 2039 Jan 24, 13:36 1436
+ 218204388, // 2039 Feb 23, 03:18 1437
+ 218460240, // 2039 Mar 24, 18:00 1438
+ 218716410, // 2039 Apr 23, 09:35 1439
+ 218972748, // 2039 May 23, 01:38 1440
+ 219228966, // 2039 Jun 21, 17:21 1441
+ 219484764, // 2039 Jul 21, 07:54 1442
+ 219739980, // 2039 Aug 19, 20:50 1443
+ 219994698, // 2039 Sep 18, 08:23 1444
+ 220249134, // 2039 Oct 17, 19:09 1445
+ 220503516, // 2039 Nov 16, 05:46 1446
+ 220757952, // 2039 Dec 15, 16:32 1447
+ 221012430, // 2040 Jan 14, 03:25 1448
+ 221266950, // 2040 Feb 12, 14:25 1449
+ 221521602, // 2040 Mar 13, 01:47 1450
+ 221776560, // 2040 Apr 11, 14:00 1451
+ 222031968, // 2040 May 11, 03:28 1452
+ 222287778, // 2040 Jun 9, 18:03 1453
+ 222543810, // 2040 Jul 9, 09:15 1454
+ 222799836, // 2040 Aug 8, 00:26 1455
+ 223055724, // 2040 Sep 6, 15:14 1456
+ 223311396, // 2040 Oct 6, 05:26 1457
+ 223566816, // 2040 Nov 4, 18:56 1458
+ 223821918, // 2040 Dec 4, 07:33 1459
+ 224076648, // 2041 Jan 2, 19:08 1460
+ 224331018, // 2041 Feb 1, 05:43 1461
+ 224585154, // 2041 Mar 2, 15:39 1462
+ 224839260, // 2041 Apr 1, 01:30 1463
+ 225093522, // 2041 Apr 30, 11:47 1464
+ 225348096, // 2041 May 29, 22:56 1465
+ 225603102, // 2041 Jun 28, 11:17 1466
+ 225858612, // 2041 Jul 28, 01:02 1467
+ 226114656, // 2041 Aug 26, 16:16 1468
+ 226371126, // 2041 Sep 25, 08:41 1469
+ 226627740, // 2041 Oct 25, 01:30 1470
+ 226884096, // 2041 Nov 23, 17:36 1471
+ 227139876, // 2041 Dec 23, 08:06 1472
+ 227394972, // 2042 Jan 21, 20:42 1473
+ 227649474, // 2042 Feb 20, 07:39 1474
+ 227903538, // 2042 Mar 21, 17:23 1475
+ 228157314, // 2042 Apr 20, 02:19 1476
+ 228410970, // 2042 May 19, 10:55 1477
+ 228664728, // 2042 Jun 17, 19:48 1478
+ 228918912, // 2042 Jul 17, 05:52 1479
+ 229173846, // 2042 Aug 15, 18:01 1480
+ 229429740, // 2042 Sep 14, 08:50 1481
+ 229686498, // 2042 Oct 14, 02:03 1482
+ 229943688, // 2042 Nov 12, 20:28 1483
+ 230200734, // 2042 Dec 12, 14:29 1484
+ 230457198, // 2043 Jan 11, 06:53 1485
+ 230712882, // 2043 Feb 9, 21:07 1486
+ 230967774, // 2043 Mar 11, 09:09 1487
+ 231221922, // 2043 Apr 9, 19:07 1488
+ 231475446, // 2043 May 9, 03:21 1489
+ 231728610, // 2043 Jun 7, 10:35 1490
+ 231981786, // 2043 Jul 6, 17:51 1491
+ 232235418, // 2043 Aug 5, 02:23 1492
+ 232489902, // 2043 Sep 3, 13:17 1493
+ 232745472, // 2043 Oct 3, 03:12 1494
+ 233002068, // 2043 Nov 1, 19:58 1495
+ 233259342, // 2043 Dec 1, 14:37 1496
+ 233516808, // 2043 Dec 31, 09:48 1497
+ 233773944, // 2044 Jan 30, 04:04 1498
+ 234030312, // 2044 Feb 28, 20:12 1499
+ 234285636, // 2044 Mar 29, 09:26 1500
+ 234539892, // 2044 Apr 27, 19:42 1501
+ 234793320, // 2044 May 27, 03:40 1502
+ 235046304, // 2044 Jun 25, 10:24 1503
+ 235299300, // 2044 Jul 24, 17:10 1504
+ 235552716, // 2044 Aug 23, 01:06 1505
+ 235806858, // 2044 Sep 21, 11:03 1506
+ 236061936, // 2044 Oct 20, 23:36 1507
+ 236318028, // 2044 Nov 19, 14:58 1508
+ 236575038, // 2044 Dec 19, 08:53 1509
+ 236832630, // 2045 Jan 18, 04:25 1510
+ 237090186, // 2045 Feb 16, 23:51 1511
+ 237347010, // 2045 Mar 18, 17:15 1512
+ 237602682, // 2045 Apr 17, 07:27 1513
+ 237857202, // 2045 May 16, 18:27 1514
+ 238110870, // 2045 Jun 15, 03:05 1515
+ 238364094, // 2045 Jul 14, 10:29 1516
+ 238617234, // 2045 Aug 12, 17:39 1517
+ 238870608, // 2045 Sep 11, 01:28 1518
+ 239124462, // 2045 Oct 10, 10:37 1519
+ 239379054, // 2045 Nov 8, 21:49 1520
+ 239634606, // 2045 Dec 8, 11:41 1521
+ 239891184, // 2046 Jan 7, 04:24 1522
+ 240148500, // 2046 Feb 5, 23:10 1523
+ 240405936, // 2046 Mar 7, 18:16 1524
+ 240662832, // 2046 Apr 6, 11:52 1525
+ 240918816, // 2046 May 6, 02:56 1526
+ 241173852, // 2046 Jun 4, 15:22 1527
+ 241428114, // 2046 Jul 4, 01:39 1528
+ 241681830, // 2046 Aug 2, 10:25 1529
+ 241935270, // 2046 Aug 31, 18:25 1530
+ 242188710, // 2046 Sep 30, 02:25 1531
+ 242442462, // 2046 Oct 29, 11:17 1532
+ 242696820, // 2046 Nov 27, 21:50 1533
+ 242951994, // 2046 Dec 27, 10:39 1534
+ 243207984, // 2047 Jan 26, 01:44 1535
+ 243464556, // 2047 Feb 24, 18:26 1536
+ 243721344, // 2047 Mar 26, 11:44 1537
+ 243978000, // 2047 Apr 25, 04:40 1538
+ 244234242, // 2047 May 24, 20:27 1539
+ 244489896, // 2047 Jun 23, 10:36 1540
+ 244744854, // 2047 Jul 22, 22:49 1541
+ 244999176, // 2047 Aug 21, 09:16 1542
+ 245253066, // 2047 Sep 19, 18:31 1543
+ 245506848, // 2047 Oct 19, 03:28 1544
+ 245760834, // 2047 Nov 17, 12:59 1545
+ 246015228, // 2047 Dec 16, 23:38 1546
+ 246270072, // 2048 Jan 15, 11:32 1547
+ 246525312, // 2048 Feb 14, 00:32 1548
+ 246780888, // 2048 Mar 14, 14:28 1549
+ 247036800, // 2048 Apr 13, 05:20 1550
+ 247292988, // 2048 May 12, 20:58 1551
+ 247549260, // 2048 Jun 11, 12:50 1552
+ 247805304, // 2048 Jul 11, 04:04 1553
+ 248060874, // 2048 Aug 9, 17:59 1554
+ 248315910, // 2048 Sep 8, 06:25 1555
+ 248570550, // 2048 Oct 7, 17:45 1556
+ 248825034, // 2048 Nov 6, 04:39 1557
+ 249079500, // 2048 Dec 5, 15:30 1558
+ 249333990, // 2049 Jan 4, 02:25 1559
+ 249588456, // 2049 Feb 2, 13:16 1560
+ 249842952, // 2049 Mar 4, 00:12 1561
+ 250097634, // 2049 Apr 2, 11:39 1562
+ 250352706, // 2049 May 2, 00:11 1563
+ 250608240, // 2049 May 31, 14:00 1564
+ 250864146, // 2049 Jun 30, 04:51 1565
+ 251120202, // 2049 Jul 29, 20:07 1566
+ 251376234, // 2049 Aug 28, 11:19 1567
+ 251632110, // 2049 Sep 27, 02:05 1568
+ 251887770, // 2049 Oct 26, 16:15 1569
+ 252143136, // 2049 Nov 25, 05:36 1570
+ 252398112, // 2049 Dec 24, 17:52 1571
+ 252652662, // 2050 Jan 23, 04:57 1572
+ 252906858, // 2050 Feb 21, 15:03 1573
+ 253160886, // 2050 Mar 23, 00:41 1574
+ 253414956, // 2050 Apr 21, 10:26 1575
+ 253669266, // 2050 May 20, 20:51 1576
+ 253923972, // 2050 Jun 19, 08:22 1577
+ 254179182, // 2050 Jul 18, 21:17 1578
+ 254434962, // 2050 Aug 17, 11:47 1579
+ 254691294, // 2050 Sep 16, 03:49 1580
+ 254947974, // 2050 Oct 15, 20:49 1581
+ 255204612, // 2050 Nov 14, 13:42 1582
+ 255460788, // 2050 Dec 14, 05:18 1583
+ 255716268, // 2051 Jan 12, 18:58 1584
+ 255971046, // 2051 Feb 11, 06:41 1585
+ 256225272, // 2051 Mar 12, 16:52 1586
+ 256479114, // 2051 Apr 11, 01:59 1587
+ 256732734, // 2051 May 10, 10:29 1588
+ 256986336, // 2051 Jun 8, 18:56 1589
+ 257240214, // 2051 Jul 8, 04:09 1590
+ 257494710, // 2051 Aug 6, 15:05 1591
+ 257750118, // 2051 Sep 5, 04:33 1592
+ 258006522, // 2051 Oct 4, 20:47 1593
+ 258263634, // 2051 Nov 3, 14:59 1594
+ 258520902, // 2051 Dec 3, 09:37 1595
+ 258777756, // 2052 Jan 2, 03:06 1596
+ 259033860, // 2052 Jan 31, 18:30 1597
+ 259289136, // 2052 Mar 1, 07:36 1598
+ 259543602, // 2052 Mar 30, 18:27 1599
+ 259797366, // 2052 Apr 29, 03:21 1600
+ 260050620, // 2052 May 28, 10:50 1601
+ 260303700, // 2052 Jun 26, 17:50 1602
+ 260557026, // 2052 Jul 26, 01:31 1603
+ 260811042, // 2052 Aug 24, 11:07 1604
+ 261066078, // 2052 Sep 22, 23:33 1605
+ 261322218, // 2052 Oct 22, 15:03 1606
+ 261579252, // 2052 Nov 21, 09:02 1607
+ 261836730, // 2052 Dec 21, 04:15 1608
+ 262094112, // 2053 Jan 19, 23:12 1609
+ 262350912, // 2053 Feb 18, 16:32 1610
+ 262606752, // 2053 Mar 20, 07:12 1611
+ 262861488, // 2053 Apr 18, 18:48 1612
+ 263115258, // 2053 May 18, 03:43 1613
+ 263368386, // 2053 Jun 16, 10:51 1614
+ 263621316, // 2053 Jul 15, 17:26 1615
+ 263874486, // 2053 Aug 14, 00:41 1616
+ 264128256, // 2053 Sep 12, 09:36 1617
+ 264382878, // 2053 Oct 11, 20:53 1618
+ 264638490, // 2053 Nov 10, 10:55 1619
+ 264895080, // 2053 Dec 10, 03:40 1620
+ 265152444, // 2054 Jan 8, 22:34 1621
+ 265410084, // 2054 Feb 7, 18:14 1622
+ 265667316, // 2054 Mar 9, 12:46 1623
+ 265923552, // 2054 Apr 8, 04:32 1624
+ 266178600, // 2054 May 7, 17:00 1625
+ 266432640, // 2054 Jun 6, 02:40 1626
+ 266686044, // 2054 Jul 5, 10:34 1627
+ 266939208, // 2054 Aug 3, 17:48 1628
+ 267192468, // 2054 Sep 2, 01:18 1629
+ 267446094, // 2054 Oct 1, 09:49 1630
+ 267700326, // 2054 Oct 30, 20:01 1631
+ 267955404, // 2054 Nov 29, 08:34 1632
+ 268211466, // 2054 Dec 28, 23:51 1633
+ 268468434, // 2055 Jan 27, 17:39 1634
+ 268725834, // 2055 Feb 26, 12:39 1635
+ 268983006, // 2055 Mar 28, 07:01 1636
+ 269239422, // 2055 Apr 26, 23:17 1637
+ 269494902, // 2055 May 26, 12:57 1638
+ 269749530, // 2055 Jun 25, 00:15 1639
+ 270003528, // 2055 Jul 24, 09:48 1640
+ 270257124, // 2055 Aug 22, 18:14 1641
+ 270510594, // 2055 Sep 21, 02:19 1642
+ 270764214, // 2055 Oct 20, 10:49 1643
+ 271018284, // 2055 Nov 18, 20:34 1644
+ 271273050, // 2055 Dec 18, 08:15 1645
+ 271528620, // 2056 Jan 16, 22:10 1646
+ 271784880, // 2056 Feb 15, 14:00 1647
+ 272041512, // 2056 Mar 16, 06:52 1648
+ 272298186, // 2056 Apr 14, 23:51 1649
+ 272554596, // 2056 May 14, 16:06 1650
+ 272810544, // 2056 Jun 13, 07:04 1651
+ 273065880, // 2056 Jul 12, 20:20 1652
+ 273320568, // 2056 Aug 11, 07:48 1653
+ 273574722, // 2056 Sep 9, 17:47 1654
+ 273828600, // 2056 Oct 9, 03:00 1655
+ 274082526, // 2056 Nov 7, 12:21 1656
+ 274336746, // 2056 Dec 6, 22:31 1657
+ 274591374, // 2057 Jan 5, 09:49 1658
+ 274846386, // 2057 Feb 3, 22:11 1659
+ 275101710, // 2057 Mar 5, 11:25 1660
+ 275357346, // 2057 Apr 4, 01:31 1661
+ 275613312, // 2057 May 3, 16:32 1662
+ 275869506, // 2057 Jun 2, 08:11 1663
+ 276125682, // 2057 Jul 1, 23:47 1664
+ 276381552, // 2057 Jul 31, 14:32 1665
+ 276636924, // 2057 Aug 30, 03:54 1666
+ 276891840, // 2057 Sep 28, 16:00 1667
+ 277146474, // 2057 Oct 28, 03:19 1668
+ 277401012, // 2057 Nov 26, 14:22 1669
+ 277655532, // 2057 Dec 26, 01:22 1670
+ 277910004, // 2058 Jan 24, 12:14 1671
+ 278164422, // 2058 Feb 22, 22:57 1672
+ 278418900, // 2058 Mar 24, 09:50 1673
+ 278673654, // 2058 Apr 22, 21:29 1674
+ 278928858, // 2058 May 22, 10:23 1675
+ 279184530, // 2058 Jun 21, 00:35 1676
+ 279440520, // 2058 Jul 20, 15:40 1677
+ 279696618, // 2058 Aug 19, 07:03 1678
+ 279952662, // 2058 Sep 17, 22:17 1679
+ 280208550, // 2058 Oct 17, 13:05 1680
+ 280464174, // 2058 Nov 16, 03:09 1681
+ 280719426, // 2058 Dec 15, 16:11 1682
+ 280974222, // 2059 Jan 14, 03:57 1683
+ 281228562, // 2059 Feb 12, 14:27 1684
+ 281482590, // 2059 Mar 14, 00:05 1685
+ 281736534, // 2059 Apr 12, 09:29 1686
+ 281990610, // 2059 May 11, 19:15 1687
+ 282245022, // 2059 Jun 10, 05:57 1688
+ 282499908, // 2059 Jul 9, 17:58 1689
+ 282755388, // 2059 Aug 8, 07:38 1690
+ 283011486, // 2059 Sep 6, 23:01 1691
+ 283268100, // 2059 Oct 6, 15:50 1692
+ 283524906, // 2059 Nov 5, 09:11 1693
+ 283781454, // 2059 Dec 5, 01:49 1694
+ 284037360, // 2060 Jan 3, 16:40 1695
+ 284292492, // 2060 Feb 2, 05:22 1696
+ 284546952, // 2060 Mar 2, 16:12 1697
+ 284800908, // 2060 Apr 1, 01:38 1698
+ 285054546, // 2060 Apr 30, 10:11 1699
+ 285308064, // 2060 May 29, 18:24 1700
+ 285561708, // 2060 Jun 28, 02:58 1701
+ 285815820, // 2060 Jul 27, 12:50 1702
+ 286070736, // 2060 Aug 26, 00:56 1703
+ 286326684, // 2060 Sep 24, 15:54 1704
+ 286583556, // 2060 Oct 24, 09:26 1705
+ 286840896, // 2060 Nov 23, 04:16 1706
+ 287098080, // 2060 Dec 22, 22:40 1707
+ 287354616, // 2061 Jan 21, 15:16 1708
+ 287610306, // 2061 Feb 20, 05:31 1709
+ 287865138, // 2061 Mar 21, 17:23 1710
+ 288119190, // 2061 Apr 20, 03:05 1711
+ 288372618, // 2061 May 19, 11:03 1712
+ 288625698, // 2061 Jun 17, 18:03 1713
+ 288878826, // 2061 Jul 17, 01:11 1714
+ 289132440, // 2061 Aug 15, 09:40 1715
+ 289386942, // 2061 Sep 13, 20:37 1716
+ 289642572, // 2061 Oct 13, 10:42 1717
+ 289899240, // 2061 Nov 12, 03:40 1718
+ 290156598, // 2061 Dec 11, 22:33 1719
+ 290414118, // 2062 Jan 10, 17:53 1720
+ 290671266, // 2062 Feb 9, 12:11 1721
+ 290927598, // 2062 Mar 11, 04:13 1722
+ 291182862, // 2062 Apr 9, 17:17 1723
+ 291437058, // 2062 May 9, 03:23 1724
+ 291690432, // 2062 Jun 7, 11:12 1725
+ 291943398, // 2062 Jul 6, 17:53 1726
+ 292196400, // 2062 Aug 5, 00:40 1727
+ 292449852, // 2062 Sep 3, 08:42 1728
+ 292704054, // 2062 Oct 2, 18:49 1729
+ 292959198, // 2062 Nov 1, 07:33 1730
+ 293215326, // 2062 Nov 30, 23:01 1731
+ 293472342, // 2062 Dec 30, 16:57 1732
+ 293729898, // 2063 Jan 29, 12:23 1733
+ 293987388, // 2063 Feb 28, 07:38 1734
+ 294244140, // 2063 Mar 30, 00:50 1735
+ 294499752, // 2063 Apr 28, 14:52 1736
+ 294754242, // 2063 May 28, 01:47 1737
+ 295007916, // 2063 Jun 26, 10:26 1738
+ 295261170, // 2063 Jul 25, 17:55 1739
+ 295514382, // 2063 Aug 24, 01:17 1740
+ 295767846, // 2063 Sep 22, 09:21 1741
+ 296021796, // 2063 Oct 21, 18:46 1742
+ 296276454, // 2063 Nov 20, 06:09 1743
+ 296532024, // 2063 Dec 19, 20:04 1744
+ 296788542, // 2064 Jan 18, 12:37 1745
+ 297045738, // 2064 Feb 17, 07:03 1746
+ 297303030, // 2064 Mar 18, 01:45 1747
+ 297559812, // 2064 Apr 16, 19:02 1748
+ 297815730, // 2064 May 16, 09:55 1749
+ 298070766, // 2064 Jun 14, 22:21 1750
+ 298325076, // 2064 Jul 14, 08:46 1751
+ 298578894, // 2064 Aug 12, 17:49 1752
+ 298832466, // 2064 Sep 11, 02:11 1753
+ 299086044, // 2064 Oct 10, 10:34 1754
+ 299339910, // 2064 Nov 8, 19:45 1755
+ 299594334, // 2064 Dec 8, 06:29 1756
+ 299849490, // 2065 Jan 6, 19:15 1757
+ 300105372, // 2065 Feb 5, 10:02 1758
+ 300361770, // 2065 Mar 7, 02:15 1759
+ 300618366, // 2065 Apr 5, 19:01 1760
+ 300874860, // 2065 May 5, 11:30 1761
+ 301131030, // 2065 Jun 4, 03:05 1762
+ 301386696, // 2065 Jul 3, 17:16 1763
+ 301641756, // 2065 Aug 2, 05:46 1764
+ 301896234, // 2065 Aug 31, 16:39 1765
+ 302150304, // 2065 Sep 30, 02:24 1766
+ 302404248, // 2065 Oct 29, 11:48 1767
+ 302658360, // 2065 Nov 27, 21:40 1768
+ 302912802, // 2065 Dec 27, 08:27 1769
+ 303167604, // 2066 Jan 25, 20:14 1770
+ 303422706, // 2066 Feb 24, 08:51 1771
+ 303678084, // 2066 Mar 25, 22:14 1772
+ 303933774, // 2066 Apr 24, 12:29 1773
+ 304189788, // 2066 May 24, 03:38 1774
+ 304445970, // 2066 Jun 22, 19:15 1775
+ 304702044, // 2066 Jul 22, 10:34 1776
+ 304957740, // 2066 Aug 21, 00:50 1777
+ 305212962, // 2066 Sep 19, 13:47 1778
+ 305467812, // 2066 Oct 19, 01:42 1779
+ 305722476, // 2066 Nov 17, 13:06 1780
+ 305977062, // 2066 Dec 17, 00:17 1781
+ 306231576, // 2067 Jan 15, 11:16 1782
+ 306485982, // 2067 Feb 13, 21:57 1783
+ 306740334, // 2067 Mar 15, 08:29 1784
+ 306994824, // 2067 Apr 13, 19:24 1785
+ 307249680, // 2067 May 13, 07:20 1786
+ 307505046, // 2067 Jun 11, 20:41 1787
+ 307760856, // 2067 Jul 11, 11:16 1788
+ 308016936, // 2067 Aug 10, 02:36 1789
+ 308273094, // 2067 Sep 8, 18:09 1790
+ 308529168, // 2067 Oct 8, 09:28 1791
+ 308785044, // 2067 Nov 7, 00:14 1792
+ 309040590, // 2067 Dec 6, 14:05 1793
+ 309295668, // 2068 Jan 5, 02:38 1794
+ 309550224, // 2068 Feb 3, 13:44 1795
+ 309804342, // 2068 Mar 3, 23:37 1796
+ 310058226, // 2068 Apr 2, 08:51 1797
+ 310312122, // 2068 May 1, 18:07 1798
+ 310566258, // 2068 May 31, 04:03 1799
+ 310820826, // 2068 Jun 29, 15:11 1800
+ 311075970, // 2068 Jul 29, 03:55 1801
+ 311331768, // 2068 Aug 27, 18:28 1802
+ 311588208, // 2068 Sep 26, 10:48 1803
+ 311845062, // 2068 Oct 26, 04:17 1804
+ 312101892, // 2068 Nov 24, 21:42 1805
+ 312358224, // 2068 Dec 24, 13:44 1806
+ 312613776, // 2069 Jan 23, 03:36 1807
+ 312868542, // 2069 Feb 21, 15:17 1808
+ 313122678, // 2069 Mar 23, 01:13 1809
+ 313376388, // 2069 Apr 21, 09:58 1810
+ 313629876, // 2069 May 20, 18:06 1811
+ 313883364, // 2069 Jun 19, 02:14 1812
+ 314137158, // 2069 Jul 18, 11:13 1813
+ 314391618, // 2069 Aug 16, 22:03 1814
+ 314647050, // 2069 Sep 15, 11:35 1815
+ 314903538, // 2069 Oct 15, 04:03 1816
+ 315160788, // 2069 Nov 13, 22:38 1817
+ 315418188, // 2069 Dec 13, 17:38 1818
+ 315675138, // 2070 Jan 12, 11:23 1819
+ 315931278, // 2070 Feb 11, 02:53 1820
+ 316186512, // 2070 Mar 12, 15:52 1821
+ 316440900, // 2070 Apr 11, 02:30 1822
+ 316694568, // 2070 May 10, 11:08 1823
+ 316947744, // 2070 Jun 8, 18:24 1824
+ 317200764, // 2070 Jul 8, 01:14 1825
+ 317454066, // 2070 Aug 6, 08:51 1826
+ 317708094, // 2070 Sep 4, 18:29 1827
+ 317963166, // 2070 Oct 4, 07:01 1828
+ 318219378, // 2070 Nov 2, 22:43 1829
+ 318476484, // 2070 Dec 2, 16:54 1830
+ 318734010, // 2071 Jan 1, 12:15 1831
+ 318991416, // 2071 Jan 31, 07:16 1832
+ 319248192, // 2071 Mar 2, 00:32 1833
+ 319503978, // 2071 Mar 31, 15:03 1834
+ 319758660, // 2071 Apr 30, 02:30 1835
+ 320012382, // 2071 May 29, 11:17 1836
+ 320265480, // 2071 Jun 27, 18:20 1837
+ 320518416, // 2071 Jul 27, 00:56 1838
+ 320771616, // 2071 Aug 25, 08:16 1839
+ 321025446, // 2071 Sep 23, 17:21 1840
+ 321280134, // 2071 Oct 23, 04:49 1841
+ 321535794, // 2071 Nov 21, 18:59 1842
+ 321792402, // 2071 Dec 21, 11:47 1843
+ 322049730, // 2072 Jan 20, 06:35 1844
+ 322307298, // 2072 Feb 19, 02:03 1845
+ 322564452, // 2072 Mar 19, 20:22 1846
+ 322820622, // 2072 Apr 18, 11:57 1847
+ 323075634, // 2072 May 18, 00:19 1848
+ 323329662, // 2072 Jun 16, 09:57 1849
+ 323583096, // 2072 Jul 15, 17:56 1850
+ 323836326, // 2072 Aug 14, 01:21 1851
+ 324089682, // 2072 Sep 12, 09:07 1852
+ 324343410, // 2072 Oct 11, 17:55 1853
+ 324597726, // 2072 Nov 10, 04:21 1854
+ 324852834, // 2072 Dec 9, 16:59 1855
+ 325108866, // 2073 Jan 8, 08:11 1856
+ 325365720, // 2073 Feb 7, 01:40 1857
+ 325622976, // 2073 Mar 8, 20:16 1858
+ 325880004, // 2073 Apr 7, 14:14 1859
+ 326136330, // 2073 May 7, 06:15 1860
+ 326391792, // 2073 Jun 5, 19:52 1861
+ 326646462, // 2073 Jul 5, 07:17 1862
+ 326900544, // 2073 Aug 3, 17:04 1863
+ 327154272, // 2073 Sep 2, 01:52 1864
+ 327407886, // 2073 Oct 1, 10:21 1865
+ 327661638, // 2073 Oct 30, 19:13 1866
+ 327915792, // 2073 Nov 29, 05:12 1867
+ 328170570, // 2073 Dec 28, 16:55 1868
+ 328426062, // 2074 Jan 27, 06:37 1869
+ 328682160, // 2074 Feb 25, 22:00 1870
+ 328938600, // 2074 Mar 27, 14:20 1871
+ 329195088, // 2074 Apr 26, 06:48 1872
+ 329451384, // 2074 May 25, 22:44 1873
+ 329707314, // 2074 Jun 24, 13:39 1874
+ 329962722, // 2074 Jul 24, 03:07 1875
+ 330217554, // 2074 Aug 22, 14:59 1876
+ 330471888, // 2074 Sep 21, 01:28 1877
+ 330725946, // 2074 Oct 20, 11:11 1878
+ 330980016, // 2074 Nov 18, 20:56 1879
+ 331234320, // 2074 Dec 18, 07:20 1880
+ 331488942, // 2075 Jan 16, 18:37 1881
+ 331743846, // 2075 Feb 15, 06:41 1882
+ 331998990, // 2075 Mar 16, 19:25 1883
+ 332254410, // 2075 Apr 15, 08:55 1884
+ 332510172, // 2075 May 14, 23:22 1885
+ 332766234, // 2075 Jun 13, 14:39 1886
+ 333022386, // 2075 Jul 13, 06:11 1887
+ 333278346, // 2075 Aug 11, 21:11 1888
+ 333533892, // 2075 Sep 10, 11:02 1889
+ 333789018, // 2075 Oct 9, 23:43 1890
+ 334043850, // 2075 Nov 8, 11:35 1891
+ 334298538, // 2075 Dec 7, 23:03 1892
+ 334553130, // 2076 Jan 6, 10:15 1893
+ 334807566, // 2076 Feb 4, 21:01 1894
+ 335061864, // 2076 Mar 5, 07:24 1895
+ 335316162, // 2076 Apr 3, 17:47 1896
+ 335570712, // 2076 May 3, 04:52 1897
+ 335825724, // 2076 Jun 1, 17:14 1898
+ 336081270, // 2076 Jul 1, 07:05 1899
+ 336337236, // 2076 Jul 30, 22:06 1900
+ 336593424, // 2076 Aug 29, 13:44 1901
+ 336849642, // 2076 Sep 28, 05:27 1902
+ 337105740, // 2076 Oct 27, 20:50 1903
+ 337361568, // 2076 Nov 26, 11:28 1904
+ 337616958, // 2076 Dec 26, 00:53 1905
+ 337871790, // 2077 Jan 24, 12:45 1906
+ 338126082, // 2077 Feb 22, 23:07 1907
+ 338379984, // 2077 Mar 24, 08:24 1908
+ 338633760, // 2077 Apr 22, 17:20 1909
+ 338887668, // 2077 May 22, 02:38 1910
+ 339141930, // 2077 Jun 20, 12:55 1911
+ 339396726, // 2077 Jul 20, 00:41 1912
+ 339652188, // 2077 Aug 18, 14:18 1913
+ 339908358, // 2077 Sep 17, 05:53 1914
+ 340165122, // 2077 Oct 16, 23:07 1915
+ 340422120, // 2077 Nov 15, 17:00 1916
+ 340678836, // 2077 Dec 15, 10:06 1917
+ 340934844, // 2078 Jan 14, 01:14 1918
+ 341189988, // 2078 Feb 12, 13:58 1919
+ 341444382, // 2078 Mar 14, 00:37 1920
+ 341698230, // 2078 Apr 12, 09:45 1921
+ 341951736, // 2078 May 11, 17:56 1922
+ 342205134, // 2078 Jun 10, 01:49 1923
+ 342458688, // 2078 Jul 9, 10:08 1924
+ 342712752, // 2078 Aug 7, 19:52 1925
+ 342967674, // 2078 Sep 6, 07:59 1926
+ 343223676, // 2078 Oct 5, 23:06 1927
+ 343480656, // 2078 Nov 4, 16:56 1928
+ 343738128, // 2078 Dec 4, 12:08 1929
+ 343995420, // 2079 Jan 3, 06:50 1930
+ 344252010, // 2079 Feb 1, 23:35 1931
+ 344507688, // 2079 Mar 3, 13:48 1932
+ 344762460, // 2079 Apr 2, 01:30 1933
+ 345016422, // 2079 May 1, 10:57 1934
+ 345269766, // 2079 May 30, 18:41 1935
+ 345522786, // 2079 Jun 29, 01:31 1936
+ 345775878, // 2079 Jul 28, 08:33 1937
+ 346029492, // 2079 Aug 26, 17:02 1938
+ 346284036, // 2079 Sep 25, 04:06 1939
+ 346539720, // 2079 Oct 24, 18:20 1940
+ 346796460, // 2079 Nov 23, 11:30 1941
+ 347053872, // 2079 Dec 23, 06:32 1942
+ 347311410, // 2080 Jan 22, 01:55 1943
+ 347568546, // 2080 Feb 20, 20:11 1944
+ 347824836, // 2080 Mar 21, 12:06 1945
+ 348080040, // 2080 Apr 20, 01:00 1946
+ 348334176, // 2080 May 19, 10:56 1947
+ 348587520, // 2080 Jun 17, 18:40 1948
+ 348840486, // 2080 Jul 17, 01:21 1949
+ 349093518, // 2080 Aug 15, 08:13 1950
+ 349347030, // 2080 Sep 13, 16:25 1951
+ 349601304, // 2080 Oct 13, 02:44 1952
+ 349856502, // 2080 Nov 11, 15:37 1953
+ 350112660, // 2080 Dec 11, 07:10 1954
+ 350369652, // 2081 Jan 10, 01:02 1955
+ 350627142, // 2081 Feb 8, 20:17 1956
+ 350884542, // 2081 Mar 10, 15:17 1957
+ 351141210, // 2081 Apr 9, 08:15 1958
+ 351396774, // 2081 May 8, 22:09 1959
+ 351651246, // 2081 Jun 7, 09:01 1960
+ 351904944, // 2081 Jul 6, 17:44 1961
+ 352158264, // 2081 Aug 5, 01:24 1962
+ 352411566, // 2081 Sep 3, 09:01 1963
+ 352665138, // 2081 Oct 2, 17:23 1964
+ 352919184, // 2081 Nov 1, 03:04 1965
+ 353173896, // 2081 Nov 30, 14:36 1966
+ 353429448, // 2081 Dec 30, 04:28 1967
+ 353685876, // 2082 Jan 28, 20:46 1968
+ 353942928, // 2082 Feb 27, 14:48 1969
+ 354200070, // 2082 Mar 29, 09:05 1970
+ 354456732, // 2082 Apr 28, 02:02 1971
+ 354712602, // 2082 May 27, 16:47 1972
+ 354967656, // 2082 Jun 26, 05:16 1973
+ 355222044, // 2082 Jul 25, 15:54 1974
+ 355475988, // 2082 Aug 24, 01:18 1975
+ 355729704, // 2082 Sep 22, 10:04 1976
+ 355983420, // 2082 Oct 21, 18:50 1977
+ 356237394, // 2082 Nov 20, 04:19 1978
+ 356491860, // 2082 Dec 19, 15:10 1979
+ 356746980, // 2083 Jan 18, 03:50 1980
+ 357002730, // 2083 Feb 16, 18:15 1981
+ 357258942, // 2083 Mar 18, 09:57 1982
+ 357515340, // 2083 Apr 17, 02:10 1983
+ 357771684, // 2083 May 16, 18:14 1984
+ 358027782, // 2083 Jun 15, 09:37 1985
+ 358283484, // 2083 Jul 14, 23:54 1986
+ 358538670, // 2083 Aug 13, 12:45 1987
+ 358793322, // 2083 Sep 12, 00:07 1988
+ 359047578, // 2083 Oct 11, 10:23 1989
+ 359301690, // 2083 Nov 9, 20:15 1990
+ 359555910, // 2083 Dec 9, 06:25 1991
+ 359810382, // 2084 Jan 7, 17:17 1992
+ 360065118, // 2084 Feb 6, 04:53 1993
+ 360320064, // 2084 Mar 6, 17:04 1994
+ 360575232, // 2084 Apr 5, 05:52 1995
+ 360830718, // 2084 May 4, 19:33 1996
+ 361086558, // 2084 Jun 3, 10:13 1997
+ 361342668, // 2084 Jul 3, 01:38 1998
+ 361598784, // 2084 Aug 1, 17:04 1999
+ 361854630, // 2084 Aug 31, 07:45 2000
+ 362110056, // 2084 Sep 29, 21:16 2001
+ 362365122, // 2084 Oct 29, 09:47 2002
+ 362619954, // 2084 Nov 27, 21:39 2003
+ 362874642, // 2084 Dec 27, 09:07 2004
+ 363129162, // 2085 Jan 25, 20:07 2005
+ 363383472, // 2085 Feb 24, 06:32 2006
+ 363637662, // 2085 Mar 25, 16:37 2007
+ 363891954, // 2085 Apr 24, 02:59 2008
+ 364146618, // 2085 May 23, 14:23 2009
+ 364401828, // 2085 Jun 22, 03:18 2010
+ 364657578, // 2085 Jul 21, 17:43 2011
+ 364913706, // 2085 Aug 20, 09:11 2012
+ 365170002, // 2085 Sep 19, 01:07 2013
+ 365426280, // 2085 Oct 18, 17:00 2014
+ 365682366, // 2085 Nov 17, 08:21 2015
+ 365938068, // 2085 Dec 16, 22:38 2016
+ 366193224, // 2086 Jan 15, 11:24 2017
+ 366447762, // 2086 Feb 13, 22:27 2018
+ 366701784, // 2086 Mar 15, 08:04 2019
+ 366955518, // 2086 Apr 13, 16:53 2020
+ 367209246, // 2086 May 13, 01:41 2021
+ 367463232, // 2086 Jun 11, 11:12 2022
+ 367717692, // 2086 Jul 10, 22:02 2023
+ 367972788, // 2086 Aug 9, 10:38 2024
+ 368228622, // 2086 Sep 8, 01:17 2025
+ 368485176, // 2086 Oct 7, 17:56 2026
+ 368742198, // 2086 Nov 6, 11:53 2027
+ 368999208, // 2086 Dec 6, 05:48 2028
+ 369255666, // 2087 Jan 4, 22:11 2029
+ 369511260, // 2087 Feb 3, 12:10 2030
+ 369765990, // 2087 Mar 4, 23:45 2031
+ 370020036, // 2087 Apr 3, 09:26 2032
+ 370273626, // 2087 May 2, 17:51 2033
+ 370526988, // 2087 Jun 1, 01:38 2034
+ 370780386, // 2087 Jun 30, 09:31 2035
+ 371034120, // 2087 Jul 29, 18:20 2036
+ 371288568, // 2087 Aug 28, 05:08 2037
+ 371544042, // 2087 Sep 26, 18:47 2038
+ 371800614, // 2087 Oct 26, 11:29 2039
+ 372057984, // 2087 Nov 25, 06:24 2040
+ 372315498, // 2087 Dec 25, 01:43 2041
+ 372572514, // 2088 Jan 23, 19:39 2042
+ 372828654, // 2088 Feb 22, 11:09 2043
+ 373083846, // 2088 Mar 23, 00:01 2044
+ 373338150, // 2088 Apr 21, 10:25 2045
+ 373591734, // 2088 May 20, 18:49 2046
+ 373844844, // 2088 Jun 19, 01:54 2047
+ 374097828, // 2088 Jul 18, 08:38 2048
+ 374351130, // 2088 Aug 16, 16:15 2049
+ 374605188, // 2088 Sep 15, 01:58 2050
+ 374860314, // 2088 Oct 14, 14:39 2051
+ 375116592, // 2088 Nov 13, 06:32 2052
+ 375373752, // 2088 Dec 13, 00:52 2053
+ 375631308, // 2089 Jan 11, 20:18 2054
+ 375888696, // 2089 Feb 10, 15:16 2055
+ 376145424, // 2089 Mar 12, 08:24 2056
+ 376401156, // 2089 Apr 10, 22:46 2057
+ 376655784, // 2089 May 10, 10:04 2058
+ 376909464, // 2089 Jun 8, 18:44 2059
+ 377162562, // 2089 Jul 8, 01:47 2060
+ 377415528, // 2089 Aug 6, 08:28 2061
+ 377668782, // 2089 Sep 4, 15:57 2062
+ 377922690, // 2089 Oct 4, 01:15 2063
+ 378177450, // 2089 Nov 2, 12:55 2064
+ 378433146, // 2089 Dec 2, 03:11 2065
+ 378689736, // 2089 Dec 31, 19:56 2066
+ 378947004, // 2090 Jan 30, 14:34 2067
+ 379204476, // 2090 Mar 1, 09:46 2068
+ 379461528, // 2090 Mar 31, 03:48 2069
+ 379717632, // 2090 Apr 29, 19:12 2070
+ 379972614, // 2090 May 29, 07:29 2071
+ 380226666, // 2090 Jun 27, 17:11 2072
+ 380480154, // 2090 Jul 27, 01:19 2073
+ 380733468, // 2090 Aug 25, 08:58 2074
+ 380986938, // 2090 Sep 23, 17:03 2075
+ 381240774, // 2090 Oct 23, 02:09 2076
+ 381495168, // 2090 Nov 21, 12:48 2077
+ 381750294, // 2090 Dec 21, 01:29 2078
+ 382006260, // 2091 Jan 19, 16:30 2079
+ 382262988, // 2091 Feb 18, 09:38 2080
+ 382520076, // 2091 Mar 20, 03:46 2081
+ 382776960, // 2091 Apr 18, 21:20 2082
+ 383033202, // 2091 May 18, 13:07 2083
+ 383288646, // 2091 Jun 17, 02:41 2084
+ 383543376, // 2091 Jul 16, 14:16 2085
+ 383797572, // 2091 Aug 15, 00:22 2086
+ 384051444, // 2091 Sep 13, 09:34 2087
+ 384305214, // 2091 Oct 12, 18:29 2088
+ 384559092, // 2091 Nov 11, 03:42 2089
+ 384813324, // 2091 Dec 10, 13:54 2090
+ 385068102, // 2092 Jan 9, 01:37 2091
+ 385323492, // 2092 Feb 7, 15:02 2092
+ 385579416, // 2092 Mar 8, 05:56 2093
+ 385835646, // 2092 Apr 6, 21:41 2094
+ 386091954, // 2092 May 6, 13:39 2095
+ 386348142, // 2092 Jun 5, 05:17 2096
+ 386604066, // 2092 Jul 4, 20:11 2097
+ 386859570, // 2092 Aug 3, 09:55 2098
+ 387114564, // 2092 Sep 1, 22:14 2099
+ 387369090, // 2092 Oct 1, 09:15 2100
+ 387623328, // 2092 Oct 30, 19:28 2101
+ 387877536, // 2092 Nov 29, 05:36 2102
+ 388131900, // 2092 Dec 28, 16:10 2103
+ 388386492, // 2093 Jan 27, 03:22 2104
+ 388641276, // 2093 Feb 25, 15:06 2105
+ 388896228, // 2093 Mar 27, 03:18 2106
+ 389151432, // 2093 Apr 25, 16:12 2107
+ 389407002, // 2093 May 25, 06:07 2108
+ 389662950, // 2093 Jun 23, 21:05 2109
+ 389919096, // 2093 Jul 23, 12:36 2110
+ 390175164, // 2093 Aug 22, 03:54 2111
+ 390430902, // 2093 Sep 20, 18:17 2112
+ 390686238, // 2093 Oct 20, 07:33 2113
+ 390941262, // 2093 Nov 18, 19:57 2114
+ 391196082, // 2093 Dec 18, 07:47 2115
+ 391450710, // 2094 Jan 16, 19:05 2116
+ 391705098, // 2094 Feb 15, 05:43 2117
+ 391959264, // 2094 Mar 16, 15:44 2118
+ 392213388, // 2094 Apr 15, 01:38 2119
+ 392467734, // 2094 May 14, 12:09 2120
+ 392722578, // 2094 Jun 13, 00:03 2121
+ 392978022, // 2094 Jul 12, 13:37 2122
+ 393233982, // 2094 Aug 11, 04:37 2123
+ 393490266, // 2094 Sep 9, 20:31 2124
+ 393746664, // 2094 Oct 9, 12:44 2125
+ 394002972, // 2094 Nov 8, 04:42 2126
+ 394258980, // 2094 Dec 7, 19:50 2127
+ 394514478, // 2095 Jan 6, 09:33 2128
+ 394769334, // 2095 Feb 4, 21:29 2129
+ 395023554, // 2095 Mar 6, 07:39 2130
+ 395277336, // 2095 Apr 4, 16:36 2131
+ 395530956, // 2095 May 4, 01:06 2132
+ 395784708, // 2095 Jun 2, 09:58 2133
+ 396038844, // 2095 Jul 1, 19:54 2134
+ 396293574, // 2095 Jul 31, 07:29 2135
+ 396549036, // 2095 Aug 29, 21:06 2136
+ 396805284, // 2095 Sep 28, 12:54 2137
+ 397062198, // 2095 Oct 28, 06:33 2138
+ 397319364, // 2095 Nov 27, 00:54 2139
+ 397576230, // 2095 Dec 26, 18:25 2140
+ 397832310, // 2096 Jan 25, 09:45 2141
+ 398087448, // 2096 Feb 23, 22:28 2142
+ 398341770, // 2096 Mar 24, 08:55 2143
+ 398595504, // 2096 Apr 22, 17:44 2144
+ 398848896, // 2096 May 22, 01:36 2145
+ 399102192, // 2096 Jun 20, 09:12 2146
+ 399355686, // 2096 Jul 19, 17:21 2147
+ 399609720, // 2096 Aug 18, 03:00 2148
+ 399864660, // 2096 Sep 16, 15:10 2149
+ 400120734, // 2096 Oct 16, 06:29 2150
+ 400377816, // 2096 Nov 15, 00:36 2151
+ 400635396, // 2096 Dec 14, 20:06 2152
+ 400892760, // 2097 Jan 13, 15:00 2153
+ 401149374, // 2097 Feb 12, 07:49 2154
+ 401405022, // 2097 Mar 13, 21:57 2155
+ 401659716, // 2097 Apr 12, 09:26 2156
+ 401913600, // 2097 May 11, 18:40 2157
+ 402166884, // 2097 Jun 10, 02:14 2158
+ 402419868, // 2097 Jul 9, 08:58 2159
+ 402672960, // 2097 Aug 7, 16:00 2160
+ 402926598, // 2097 Sep 6, 00:33 2161
+ 403181190, // 2097 Oct 5, 11:45 2162
+ 403436934, // 2097 Nov 4, 02:09 2163
+ 403693722, // 2097 Dec 3, 19:27 2164
+ 403951158, // 2098 Jan 2, 14:33 2165
+ 404208684, // 2098 Feb 1, 09:54 2166
+ 404465772, // 2098 Mar 3, 04:02 2167
+ 404722002, // 2098 Apr 1, 19:47 2168
+ 404977152, // 2098 May 1, 08:32 2169
+ 405231258, // 2098 May 30, 18:23 2170
+ 405484596, // 2098 Jun 29, 02:06 2171
+ 405737586, // 2098 Jul 28, 08:51 2172
+ 405990672, // 2098 Aug 26, 15:52 2173
+ 406244256, // 2098 Sep 25, 00:16 2174
+ 406498614, // 2098 Oct 24, 10:49 2175
+ 406753866, // 2098 Nov 22, 23:51 2176
+ 407010024, // 2098 Dec 22, 15:24 2177
+ 407266962, // 2099 Jan 21, 09:07 2178
+ 407524350, // 2099 Feb 20, 04:05 2179
+ 407781636, // 2099 Mar 21, 22:46 2180
+ 408038220, // 2099 Apr 20, 15:30 2181
+ 408293736, // 2099 May 20, 05:16 2182
+ 408548220, // 2099 Jun 18, 16:10 2183
+ 408801966, // 2099 Jul 18, 01:01 2184
+ 409055364, // 2099 Aug 16, 08:54 2185
+ 409308780, // 2099 Sep 14, 16:50 2186
+ 409562472, // 2099 Oct 14, 01:32 2187
+ 409816614, // 2099 Nov 12, 11:29 2188
+ 410071374, // 2099 Dec 11, 23:09 2189
+ 410326896, // 2100 Jan 10, 12:56 2190
+ 410583210, // 2100 Feb 9, 04:55 2191
+ 410840094, // 2100 Mar 10, 22:29 2192
+ 411097062, // 2100 Apr 9, 16:17 2193
+ 411353604, // 2100 May 9, 08:54 2194
+ 411609426, // 2100 Jun 7, 23:31 2195
+ 411864516, // 2100 Jul 7, 12:06 2196
+ 412119012, // 2100 Aug 5, 23:02 2197
+ 412373094, // 2100 Sep 4, 08:49 2198
+ 412626972, // 2100 Oct 3, 18:02 2199
+ 412880844, // 2100 Nov 2, 03:14 2200
+ 413134920, // 2100 Dec 1, 13:00 2201
+ 413389416, // 2100 Dec 30, 23:56 2202
+ 413644464, // 2101 Jan 29, 12:24 2203
+};
+enum { kNewMoonDatesCount = sizeof(newMoonDates)/sizeof(newMoonDates[0]) };
+
+static const UDate newMoonDatesFirst = 10000.0 * -221149158; // newMoonDates[0];
+static const UDate newMoonDatesLast = 10000.0 * 413644464; // newMoonDates[kNewMoonDatesCount-1];
+static const UDate newMoonDatesRange = 10000.0 * (413644464 + 221149158); // newMoonDatesLast - newMoonDatesFirst;
+
+// To get the full moon date/time in millis,
+// first we use the newMoonDates data to estimate the full moon time for a given lunation
+// as halfway between the new moon for the current lunation and the new moon for the next,
+// then we add the correction from the table below.
+// These adjustment values are in millis/10000.0 (i.e. in units of 10 seconds) to fit
+// into 16 bits.
+// This fullMoonAdjustmts array has one fewer entry than the newMoonDates array.
+static const int16_t fullMoonAdjustmts[] = {
+// adj/10K lunation number
+ -6411, // -285
+ -4500, // -284
+ -1641, // -283
+ 1527, // -282
+ 4353, // -281
+ 6303, // -280
+ 7017, // -279
+ 6402, // -278
+ 4572, // -277
+ 1866, // -276
+ -1224, // -275
+ -4092, // -274
+ -6126, // -273
+ -6873, // -272
+ -6183, // -271
+ -4230, // -270
+ -1410, // -269
+ 1689, // -268
+ 4425, // -267
+ 6279, // -266
+ 6933, // -265
+ 6288, // -264
+ 4443, // -263
+ 1701, // -262
+ -1419, // -261
+ -4251, // -260
+ -6192, // -259
+ -6849, // -258
+ -6114, // -257
+ -4125, // -256
+ -1332, // -255
+ 1692, // -254
+ 4362, // -253
+ 6210, // -252
+ 6894, // -251
+ 6237, // -250
+ 4305, // -249
+ 1458, // -248
+ -1710, // -247
+ -4509, // -246
+ -6360, // -245
+ -6903, // -244
+ -6075, // -243
+ -4095, // -242
+ -1353, // -241
+ 1653, // -240
+ 4377, // -239
+ 6258, // -238
+ 6882, // -237
+ 6084, // -236
+ 4023, // -235
+ 1122, // -234
+ -2004, // -233
+ -4692, // -232
+ -6417, // -231
+ -6894, // -230
+ -6093, // -229
+ -4143, // -228
+ -1371, // -227
+ 1716, // -226
+ 4470, // -225
+ 6303, // -224
+ 6837, // -223
+ 5955, // -222
+ 3837, // -221
+ 921, // -220
+ -2154, // -219
+ -4785, // -218
+ -6489, // -217
+ -6987, // -216
+ -6156, // -215
+ -4119, // -214
+ -1236, // -213
+ 1911, // -212
+ 4677, // -211
+ 6477, // -210
+ 6918, // -209
+ 5895, // -208
+ 3675, // -207
+ 756, // -206
+ -2289, // -205
+ -4893, // -204
+ -6561, // -203
+ -6987, // -202
+ -6054, // -201
+ -3924, // -200
+ -951, // -199
+ 2271, // -198
+ 5010, // -197
+ 6654, // -196
+ 6891, // -195
+ 5769, // -194
+ 3561, // -193
+ 681, // -192
+ -2328, // -191
+ -4893, // -190
+ -6531, // -189
+ -6918, // -188
+ -5916, // -187
+ -3651, // -186
+ -558, // -185
+ 2637, // -184
+ 5211, // -183
+ 6705, // -182
+ 6891, // -181
+ 5775, // -180
+ 3564, // -179
+ 666, // -178
+ -2376, // -177
+ -4980, // -176
+ -6612, // -175
+ -6885, // -174
+ -5688, // -173
+ -3282, // -172
+ -213, // -171
+ 2862, // -170
+ 5343, // -169
+ 6774, // -168
+ 6906, // -167
+ 5727, // -166
+ 3456, // -165
+ 510, // -164
+ -2571, // -163
+ -5139, // -162
+ -6630, // -161
+ -6726, // -160
+ -5439, // -159
+ -3045, // -158
+ -39, // -157
+ 2970, // -156
+ 5358, // -155
+ 6708, // -154
+ 6801, // -153
+ 5601, // -152
+ 3300, // -151
+ 309, // -150
+ -2766, // -149
+ -5262, // -148
+ -6666, // -147
+ -6699, // -146
+ -5373, // -145
+ -2973, // -144
+ -9, // -143
+ 2928, // -142
+ 5289, // -141
+ 6663, // -140
+ 6768, // -139
+ 5514, // -138
+ 3105, // -137
+ 27, // -136
+ -3057, // -135
+ -5490, // -134
+ -6780, // -133
+ -6705, // -132
+ -5334, // -131
+ -2970, // -130
+ -42, // -129
+ 2913, // -128
+ 5340, // -127
+ 6708, // -126
+ 6702, // -125
+ 5298, // -124
+ 2787, // -123
+ -291, // -122
+ -3300, // -121
+ -5604, // -120
+ -6795, // -119
+ -6711, // -118
+ -5376, // -117
+ -3003, // -116
+ -9, // -115
+ 3021, // -114
+ 5436, // -113
+ 6723, // -112
+ 6618, // -111
+ 5136, // -110
+ 2595, // -109
+ -468, // -108
+ -3405, // -107
+ -5673, // -106
+ -6873, // -105
+ -6792, // -104
+ -5391, // -103
+ -2910, // -102
+ 183, // -101
+ 3249, // -100
+ 5649, // -99
+ 6867, // -98
+ 6633, // -97
+ 5031, // -96
+ 2436, // -95
+ -612, // -94
+ -3519, // -93
+ -5760, // -92
+ -6912, // -91
+ -6729, // -90
+ -5229, // -89
+ -2649, // -88
+ 528, // -87
+ 3624, // -86
+ 5925, // -85
+ 6939, // -84
+ 6552, // -83
+ 4908, // -82
+ 2346, // -81
+ -654, // -80
+ -3540, // -79
+ -5757, // -78
+ -6867, // -77
+ -6633, // -76
+ -5025, // -75
+ -2301, // -74
+ 927, // -73
+ 3906, // -72
+ 6036, // -71
+ 6954, // -70
+ 6555, // -69
+ 4914, // -68
+ 2343, // -67
+ -699, // -66
+ -3621, // -65
+ -5853, // -64
+ -6909, // -63
+ -6510, // -62
+ -4713, // -61
+ -1938, // -60
+ 1200, // -59
+ 4071, // -58
+ 6126, // -57
+ 6993, // -56
+ 6531, // -55
+ 4833, // -54
+ 2199, // -53
+ -888, // -52
+ -3822, // -51
+ -5967, // -50
+ -6849, // -49
+ -6306, // -48
+ -4482, // -47
+ -1755, // -46
+ 1320, // -45
+ 4116, // -44
+ 6093, // -43
+ 6900, // -42
+ 6411, // -41
+ 4689, // -40
+ 2013, // -39
+ -1107, // -38
+ -3996, // -37
+ -6051, // -36
+ -6858, // -35
+ -6267, // -34
+ -4422, // -33
+ -1710, // -32
+ 1308, // -31
+ 4047, // -30
+ 6033, // -29
+ 6873, // -28
+ 6369, // -27
+ 4545, // -26
+ 1755, // -25
+ -1410, // -24
+ -4266, // -23
+ -6228, // -22
+ -6924, // -21
+ -6258, // -20
+ -4407, // -19
+ -1731, // -18
+ 1278, // -17
+ 4083, // -16
+ 6102, // -15
+ 6885, // -14
+ 6228, // -13
+ 4275, // -12
+ 1437, // -11
+ -1686, // -10
+ -4443, // -9
+ -6288, // -8
+ -6924, // -7
+ -6279, // -6
+ -4449, // -5
+ -1734, // -4
+ 1374, // -3
+ 4218, // -2
+ 6180, // -1
+ 6855, // 0
+ 6114, // 1
+ 4104, // 2
+ 1257, // 3
+ -1818, // 4
+ -4518, // 5
+ -6357, // 6
+ -7008, // 7
+ -6333, // 8
+ -4395, // 9
+ -1560, // 10
+ 1617, // 11
+ 4467, // 12
+ 6381, // 13
+ 6957, // 14
+ 6078, // 15
+ 3969, // 16
+ 1110, // 17
+ -1941, // 18
+ -4617, // 19
+ -6423, // 20
+ -6999, // 21
+ -6213, // 22
+ -4173, // 23
+ -1248, // 24
+ 1989, // 25
+ 4803, // 26
+ 6561, // 27
+ 6939, // 28
+ 5964, // 29
+ 3873, // 30
+ 1053, // 31
+ -1971, // 32
+ -4626, // 33
+ -6399, // 34
+ -6930, // 35
+ -6063, // 36
+ -3894, // 37
+ -855, // 38
+ 2346, // 39
+ 4992, // 40
+ 6603, // 41
+ 6939, // 42
+ 5976, // 43
+ 3873, // 44
+ 1020, // 45
+ -2040, // 46
+ -4731, // 47
+ -6492, // 48
+ -6906, // 49
+ -5844, // 50
+ -3546, // 51
+ -540, // 52
+ 2541, // 53
+ 5100, // 54
+ 6666, // 55
+ 6951, // 56
+ 5919, // 57
+ 3756, // 58
+ 840, // 59
+ -2262, // 60
+ -4914, // 61
+ -6528, // 62
+ -6774, // 63
+ -5628, // 64
+ -3348, // 65
+ -405, // 66
+ 2610, // 67
+ 5097, // 68
+ 6591, // 69
+ 6840, // 70
+ 5784, // 71
+ 3585, // 72
+ 633, // 73
+ -2472, // 74
+ -5055, // 75
+ -6582, // 76
+ -6768, // 77
+ -5595, // 78
+ -3315, // 79
+ -402, // 80
+ 2565, // 81
+ 5031, // 82
+ 6558, // 83
+ 6816, // 84
+ 5697, // 85
+ 3378, // 86
+ 339, // 87
+ -2772, // 88
+ -5292, // 89
+ -6714, // 90
+ -6804, // 91
+ -5580, // 92
+ -3321, // 93
+ -429, // 94
+ 2574, // 95
+ 5112, // 96
+ 6624, // 97
+ 6765, // 98
+ 5493, // 99
+ 3075, // 100
+ 30, // 101
+ -3000, // 102
+ -5400, // 103
+ -6732, // 104
+ -6804, // 105
+ -5613, // 106
+ -3339, // 107
+ -366, // 108
+ 2721, // 109
+ 5247, // 110
+ 6669, // 111
+ 6702, // 112
+ 5355, // 113
+ 2907, // 114
+ -114, // 115
+ -3093, // 116
+ -5460, // 117
+ -6804, // 118
+ -6879, // 119
+ -5619, // 120
+ -3210, // 121
+ -129, // 122
+ 2991, // 123
+ 5490, // 124
+ 6834, // 125
+ 6744, // 126
+ 5268, // 127
+ 2769, // 128
+ -237, // 129
+ -3189, // 130
+ -5541, // 131
+ -6837, // 132
+ -6810, // 133
+ -5433, // 134
+ -2925, // 135
+ 234, // 136
+ 3369, // 137
+ 5757, // 138
+ 6912, // 139
+ 6669, // 140
+ 5163, // 141
+ 2697, // 142
+ -282, // 143
+ -3216, // 144
+ -5541, // 145
+ -6798, // 146
+ -6708, // 147
+ -5217, // 148
+ -2577, // 149
+ 621, // 150
+ 3639, // 151
+ 5856, // 152
+ 6915, // 153
+ 6672, // 154
+ 5172, // 155
+ 2685, // 156
+ -345, // 157
+ -3321, // 158
+ -5661, // 159
+ -6855, // 160
+ -6597, // 161
+ -4926, // 162
+ -2241, // 163
+ 858, // 164
+ 3762, // 165
+ 5925, // 166
+ 6948, // 167
+ 6645, // 168
+ 5076, // 169
+ 2520, // 170
+ -561, // 171
+ -3549, // 172
+ -5796, // 173
+ -6813, // 174
+ -6417, // 175
+ -4731, // 176
+ -2100, // 177
+ 945, // 178
+ 3792, // 179
+ 5886, // 180
+ 6852, // 181
+ 6519, // 182
+ 4926, // 183
+ 2319, // 184
+ -792, // 185
+ -3744, // 186
+ -5901, // 187
+ -6846, // 188
+ -6414, // 189
+ -4710, // 190
+ -2088, // 191
+ 921, // 192
+ 3732, // 193
+ 5838, // 194
+ 6837, // 195
+ 6477, // 196
+ 4776, // 197
+ 2058, // 198
+ -1101, // 199
+ -4011, // 200
+ -6084, // 201
+ -6930, // 202
+ -6420, // 203
+ -4704, // 204
+ -2106, // 205
+ 909, // 206
+ 3786, // 207
+ 5940, // 208
+ 6867, // 209
+ 6354, // 210
+ 4518, // 211
+ 1746, // 212
+ -1365, // 213
+ -4173, // 214
+ -6138, // 215
+ -6933, // 216
+ -6441, // 217
+ -4734, // 218
+ -2082, // 219
+ 1038, // 220
+ 3963, // 221
+ 6054, // 222
+ 6867, // 223
+ 6261, // 224
+ 4374, // 225
+ 1596, // 226
+ -1476, // 227
+ -4236, // 228
+ -6201, // 229
+ -7005, // 230
+ -6483, // 231
+ -4659, // 232
+ -1872, // 233
+ 1320, // 234
+ 4242, // 235
+ 6273, // 236
+ 6981, // 237
+ 6243, // 238
+ 4266, // 239
+ 1473, // 240
+ -1581, // 241
+ -4335, // 242
+ -6267, // 243
+ -6993, // 244
+ -6345, // 245
+ -4413, // 246
+ -1536, // 247
+ 1707, // 248
+ 4581, // 249
+ 6447, // 250
+ 6972, // 251
+ 6150, // 252
+ 4173, // 253
+ 1416, // 254
+ -1614, // 255
+ -4353, // 256
+ -6252, // 257
+ -6924, // 258
+ -6189, // 259
+ -4128, // 260
+ -1149, // 261
+ 2043, // 262
+ 4752, // 263
+ 6477, // 264
+ 6969, // 265
+ 6156, // 266
+ 4173, // 267
+ 1380, // 268
+ -1704, // 269
+ -4482, // 270
+ -6360, // 271
+ -6918, // 272
+ -5994, // 273
+ -3810, // 274
+ -873, // 275
+ 2202, // 276
+ 4830, // 277
+ 6525, // 278
+ 6975, // 279
+ 6090, // 280
+ 4038, // 281
+ 1176, // 282
+ -1953, // 283
+ -4689, // 284
+ -6417, // 285
+ -6804, // 286
+ -5808, // 287
+ -3657, // 288
+ -777, // 289
+ 2247, // 290
+ 4821, // 291
+ 6456, // 292
+ 6858, // 293
+ 5949, // 294
+ 3852, // 295
+ 942, // 296
+ -2184, // 297
+ -4842, // 298
+ -6492, // 299
+ -6825, // 300
+ -5811, // 301
+ -3648, // 302
+ -789, // 303
+ 2199, // 304
+ 4764, // 305
+ 6432, // 306
+ 6849, // 307
+ 5868, // 308
+ 3648, // 309
+ 645, // 310
+ -2481, // 311
+ -5076, // 312
+ -6633, // 313
+ -6876, // 314
+ -5811, // 315
+ -3660, // 316
+ -810, // 317
+ 2229, // 318
+ 4869, // 319
+ 6522, // 320
+ 6816, // 321
+ 5673, // 322
+ 3357, // 323
+ 354, // 324
+ -2691, // 325
+ -5172, // 326
+ -6648, // 327
+ -6879, // 328
+ -5832, // 329
+ -3660, // 330
+ -714, // 331
+ 2418, // 332
+ 5049, // 333
+ 6600, // 334
+ 6777, // 335
+ 5565, // 336
+ 3219, // 337
+ 234, // 338
+ -2766, // 339
+ -5229, // 340
+ -6714, // 341
+ -6945, // 342
+ -5820, // 343
+ -3498, // 344
+ -438, // 345
+ 2721, // 346
+ 5310, // 347
+ 6777, // 348
+ 6831, // 349
+ 5496, // 350
+ 3096, // 351
+ 132, // 352
+ -2859, // 353
+ -5313, // 354
+ -6753, // 355
+ -6867, // 356
+ -5610, // 357
+ -3189, // 358
+ -57, // 359
+ 3102, // 360
+ 5577, // 361
+ 6855, // 362
+ 6768, // 363
+ 5403, // 364
+ 3036, // 365
+ 84, // 366
+ -2895, // 367
+ -5325, // 368
+ -6717, // 369
+ -6762, // 370
+ -5394, // 371
+ -2850, // 372
+ 309, // 373
+ 3348, // 374
+ 5661, // 375
+ 6855, // 376
+ 6771, // 377
+ 5412, // 378
+ 3012, // 379
+ 9, // 380
+ -3021, // 381
+ -5466, // 382
+ -6783, // 383
+ -6666, // 384
+ -5136, // 385
+ -2550, // 386
+ 510, // 387
+ 3444, // 388
+ 5709, // 389
+ 6876, // 390
+ 6735, // 391
+ 5304, // 392
+ 2826, // 393
+ -234, // 394
+ -3273, // 395
+ -5619, // 396
+ -6765, // 397
+ -6522, // 398
+ -4974, // 399
+ -2451, // 400
+ 555, // 401
+ 3456, // 402
+ 5664, // 403
+ 6783, // 404
+ 6609, // 405
+ 5142, // 406
+ 2613, // 407
+ -480, // 408
+ -3477, // 409
+ -5733, // 410
+ -6822, // 411
+ -6549, // 412
+ -4983, // 413
+ -2457, // 414
+ 525, // 415
+ 3402, // 416
+ 5634, // 417
+ 6783, // 418
+ 6579, // 419
+ 5001, // 420
+ 2355, // 421
+ -786, // 422
+ -3744, // 423
+ -5925, // 424
+ -6915, // 425
+ -6567, // 426
+ -4986, // 427
+ -2469, // 428
+ 534, // 429
+ 3486, // 430
+ 5766, // 431
+ 6843, // 432
+ 6474, // 433
+ 4758, // 434
+ 2064, // 435
+ -1029, // 436
+ -3891, // 437
+ -5967, // 438
+ -6912, // 439
+ -6576, // 440
+ -5007, // 441
+ -2418, // 442
+ 708, // 443
+ 3711, // 444
+ 5913, // 445
+ 6864, // 446
+ 6405, // 447
+ 4632, // 448
+ 1935, // 449
+ -1125, // 450
+ -3945, // 451
+ -6024, // 452
+ -6987, // 453
+ -6606, // 454
+ -4908, // 455
+ -2169, // 456
+ 1029, // 457
+ 4008, // 458
+ 6150, // 459
+ 6996, // 460
+ 6399, // 461
+ 4542, // 462
+ 1833, // 463
+ -1212, // 464
+ -4032, // 465
+ -6090, // 466
+ -6969, // 467
+ -6456, // 468
+ -4635, // 469
+ -1815, // 470
+ 1422, // 471
+ 4347, // 472
+ 6315, // 473
+ 6984, // 474
+ 6312, // 475
+ 4467, // 476
+ 1779, // 477
+ -1260, // 478
+ -4071, // 479
+ -6093, // 480
+ -6906, // 481
+ -6309, // 482
+ -4359, // 483
+ -1455, // 484
+ 1728, // 485
+ 4488, // 486
+ 6336, // 487
+ 6975, // 488
+ 6318, // 489
+ 4455, // 490
+ 1722, // 491
+ -1374, // 492
+ -4224, // 493
+ -6216, // 494
+ -6915, // 495
+ -6132, // 496
+ -4071, // 497
+ -1209, // 498
+ 1854, // 499
+ 4548, // 500
+ 6369, // 501
+ 6975, // 502
+ 6243, // 503
+ 4302, // 504
+ 1491, // 505
+ -1644, // 506
+ -4446, // 507
+ -6297, // 508
+ -6825, // 509
+ -5982, // 510
+ -3960, // 511
+ -1158, // 512
+ 1869, // 513
+ 4524, // 514
+ 6297, // 515
+ 6864, // 516
+ 6102, // 517
+ 4116, // 518
+ 1251, // 519
+ -1887, // 520
+ -4614, // 521
+ -6387, // 522
+ -6873, // 523
+ -6015, // 524
+ -3978, // 525
+ -1182, // 526
+ 1830, // 527
+ 4485, // 528
+ 6294, // 529
+ 6864, // 530
+ 6027, // 531
+ 3906, // 532
+ 960, // 533
+ -2175, // 534
+ -4845, // 535
+ -6528, // 536
+ -6936, // 537
+ -6015, // 538
+ -3978, // 539
+ -1179, // 540
+ 1887, // 541
+ 4623, // 542
+ 6423, // 543
+ 6858, // 544
+ 5850, // 545
+ 3636, // 546
+ 696, // 547
+ -2367, // 548
+ -4935, // 549
+ -6540, // 550
+ -6930, // 551
+ -6033, // 552
+ -3963, // 553
+ -1050, // 554
+ 2124, // 555
+ 4845, // 556
+ 6519, // 557
+ 6840, // 558
+ 5760, // 559
+ 3525, // 560
+ 597, // 561
+ -2427, // 562
+ -4977, // 563
+ -6603, // 564
+ -6987, // 565
+ -6000, // 566
+ -3768, // 567
+ -735, // 568
+ 2454, // 569
+ 5124, // 570
+ 6711, // 571
+ 6906, // 572
+ 5712, // 573
+ 3423, // 574
+ 501, // 575
+ -2517, // 576
+ -5061, // 577
+ -6639, // 578
+ -6906, // 579
+ -5775, // 580
+ -3441, // 581
+ -354, // 582
+ 2826, // 583
+ 5379, // 584
+ 6783, // 585
+ 6846, // 586
+ 5631, // 587
+ 3366, // 588
+ 450, // 589
+ -2568, // 590
+ -5094, // 591
+ -6618, // 592
+ -6810, // 593
+ -5571, // 594
+ -3123, // 595
+ -9, // 596
+ 3045, // 597
+ 5436, // 598
+ 6777, // 599
+ 6846, // 600
+ 5628, // 601
+ 3330, // 602
+ 354, // 603
+ -2715, // 604
+ -5259, // 605
+ -6705, // 606
+ -6735, // 607
+ -5340, // 608
+ -2862, // 609
+ 153, // 610
+ 3108, // 611
+ 5469, // 612
+ 6789, // 613
+ 6804, // 614
+ 5514, // 615
+ 3123, // 616
+ 87, // 617
+ -2991, // 618
+ -5430, // 619
+ -6708, // 620
+ -6618, // 621
+ -5214, // 622
+ -2799, // 623
+ 171, // 624
+ 3102, // 625
+ 5424, // 626
+ 6699, // 627
+ 6681, // 628
+ 5346, // 629
+ 2904, // 630
+ -165, // 631
+ -3204, // 632
+ -5556, // 633
+ -6783, // 634
+ -6669, // 635
+ -5256, // 636
+ -2826, // 637
+ 141, // 638
+ 3072, // 639
+ 5418, // 640
+ 6720, // 641
+ 6666, // 642
+ 5211, // 643
+ 2649, // 644
+ -471, // 645
+ -3465, // 646
+ -5742, // 647
+ -6882, // 648
+ -6693, // 649
+ -5253, // 650
+ -2817, // 651
+ 177, // 652
+ 3195, // 653
+ 5586, // 654
+ 6804, // 655
+ 6582, // 656
+ 4983, // 657
+ 2379, // 658
+ -690, // 659
+ -3597, // 660
+ -5781, // 661
+ -6873, // 662
+ -6693, // 663
+ -5253, // 664
+ -2739, // 665
+ 387, // 666
+ 3453, // 667
+ 5769, // 668
+ 6852, // 669
+ 6534, // 670
+ 4887, // 671
+ 2280, // 672
+ -759, // 673
+ -3636, // 674
+ -5832, // 675
+ -6942, // 676
+ -6714, // 677
+ -5127, // 678
+ -2457, // 679
+ 735, // 680
+ 3774, // 681
+ 6012, // 682
+ 6987, // 683
+ 6540, // 684
+ 4815, // 685
+ 2187, // 686
+ -846, // 687
+ -3726, // 688
+ -5904, // 689
+ -6927, // 690
+ -6555, // 691
+ -4839, // 692
+ -2091, // 693
+ 1122, // 694
+ 4092, // 695
+ 6168, // 696
+ 6981, // 697
+ 6456, // 698
+ 4743, // 699
+ 2130, // 700
+ -900, // 701
+ -3780, // 702
+ -5919, // 703
+ -6873, // 704
+ -6417, // 705
+ -4587, // 706
+ -1761, // 707
+ 1398, // 708
+ 4212, // 709
+ 6171, // 710
+ 6963, // 711
+ 6456, // 712
+ 4725, // 713
+ 2055, // 714
+ -1047, // 715
+ -3960, // 716
+ -6069, // 717
+ -6900, // 718
+ -6261, // 719
+ -4335, // 720
+ -1563, // 721
+ 1491, // 722
+ 4245, // 723
+ 6189, // 724
+ 6954, // 725
+ 6378, // 726
+ 4554, // 727
+ 1806, // 728
+ -1338, // 729
+ -4200, // 730
+ -6168, // 731
+ -6840, // 732
+ -6147, // 733
+ -4260, // 734
+ -1539, // 735
+ 1485, // 736
+ 4218, // 737
+ 6126, // 738
+ 6855, // 739
+ 6240, // 740
+ 4362, // 741
+ 1560, // 742
+ -1584, // 743
+ -4380, // 744
+ -6267, // 745
+ -6906, // 746
+ -6201, // 747
+ -4299, // 748
+ -1569, // 749
+ 1455, // 750
+ 4203, // 751
+ 6147, // 752
+ 6873, // 753
+ 6174, // 754
+ 4161, // 755
+ 1272, // 756
+ -1869, // 757
+ -4602, // 758
+ -6408, // 759
+ -6969, // 760
+ -6210, // 761
+ -4293, // 762
+ -1545, // 763
+ 1551, // 764
+ 4383, // 765
+ 6312, // 766
+ 6891, // 767
+ 6021, // 768
+ 3912, // 769
+ 1029, // 770
+ -2031, // 771
+ -4677, // 772
+ -6417, // 773
+ -6963, // 774
+ -6216, // 775
+ -4245, // 776
+ -1374, // 777
+ 1824, // 778
+ 4635, // 779
+ 6432, // 780
+ 6888, // 781
+ 5952, // 782
+ 3822, // 783
+ 957, // 784
+ -2076, // 785
+ -4713, // 786
+ -6477, // 787
+ -7014, // 788
+ -6159, // 789
+ -4023, // 790
+ -1029, // 791
+ 2181, // 792
+ 4920, // 793
+ 6627, // 794
+ 6966, // 795
+ 5919, // 796
+ 3744, // 797
+ 873, // 798
+ -2169, // 799
+ -4806, // 800
+ -6519, // 801
+ -6927, // 802
+ -5928, // 803
+ -3693, // 804
+ -648, // 805
+ 2538, // 806
+ 5160, // 807
+ 6693, // 808
+ 6903, // 809
+ 5835, // 810
+ 3678, // 811
+ 813, // 812
+ -2235, // 813
+ -4851, // 814
+ -6510, // 815
+ -6840, // 816
+ -5733, // 817
+ -3396, // 818
+ -348, // 819
+ 2724, // 820
+ 5196, // 821
+ 6672, // 822
+ 6897, // 823
+ 5829, // 824
+ 3627, // 825
+ 684, // 826
+ -2415, // 827
+ -5043, // 828
+ -6618, // 829
+ -6789, // 830
+ -5535, // 831
+ -3174, // 832
+ -219, // 833
+ 2760, // 834
+ 5217, // 835
+ 6675, // 836
+ 6855, // 837
+ 5703, // 838
+ 3408, // 839
+ 399, // 840
+ -2706, // 841
+ -5226, // 842
+ -6639, // 843
+ -6699, // 844
+ -5448, // 845
+ -3144, // 846
+ -228, // 847
+ 2745, // 848
+ 5178, // 849
+ 6600, // 850
+ 6738, // 851
+ 5535, // 852
+ 3186, // 853
+ 144, // 854
+ -2925, // 855
+ -5367, // 856
+ -6723, // 857
+ -6768, // 858
+ -5505, // 859
+ -3183, // 860
+ -249, // 861
+ 2736, // 862
+ 5196, // 863
+ 6645, // 864
+ 6744, // 865
+ 5412, // 866
+ 2931, // 867
+ -147, // 868
+ -3174, // 869
+ -5544, // 870
+ -6828, // 871
+ -6801, // 872
+ -5496, // 873
+ -3156, // 874
+ -174, // 875
+ 2892, // 876
+ 5403, // 877
+ 6759, // 878
+ 6678, // 879
+ 5205, // 880
+ 2694, // 881
+ -342, // 882
+ -3288, // 883
+ -5574, // 884
+ -6810, // 885
+ -6792, // 886
+ -5478, // 887
+ -3042, // 888
+ 75, // 889
+ 3195, // 890
+ 5607, // 891
+ 6822, // 892
+ 6648, // 893
+ 5136, // 894
+ 2619, // 895
+ -393, // 896
+ -3315, // 897
+ -5616, // 898
+ -6876, // 899
+ -6801, // 900
+ -5331, // 901
+ -2733, // 902
+ 450, // 903
+ 3528, // 904
+ 5853, // 905
+ 6960, // 906
+ 6663, // 907
+ 5076, // 908
+ 2535, // 909
+ -477, // 910
+ -3414, // 911
+ -5703, // 912
+ -6867, // 913
+ -6636, // 914
+ -5040, // 915
+ -2370, // 916
+ 822, // 917
+ 3822, // 918
+ 5997, // 919
+ 6945, // 920
+ 6582, // 921
+ 5004, // 922
+ 2478, // 923
+ -546, // 924
+ -3486, // 925
+ -5736, // 926
+ -6825, // 927
+ -6510, // 928
+ -4803, // 929
+ -2070, // 930
+ 1059, // 931
+ 3915, // 932
+ 5982, // 933
+ 6924, // 934
+ 6579, // 935
+ 4971, // 936
+ 2376, // 937
+ -723, // 938
+ -3696, // 939
+ -5907, // 940
+ -6873, // 941
+ -6387, // 942
+ -4596, // 943
+ -1911, // 944
+ 1116, // 945
+ 3927, // 946
+ 5991, // 947
+ 6915, // 948
+ 6495, // 949
+ 4794, // 950
+ 2109, // 951
+ -1032, // 952
+ -3954, // 953
+ -6021, // 954
+ -6837, // 955
+ -6300, // 956
+ -4548, // 957
+ -1920, // 958
+ 1101, // 959
+ 3906, // 960
+ 5946, // 961
+ 6825, // 962
+ 6360, // 963
+ 4596, // 964
+ 1863, // 965
+ -1275, // 966
+ -4134, // 967
+ -6132, // 968
+ -6921, // 969
+ -6375, // 970
+ -4605, // 971
+ -1944, // 972
+ 1089, // 973
+ 3918, // 974
+ 5994, // 975
+ 6870, // 976
+ 6315, // 977
+ 4410, // 978
+ 1584, // 979
+ -1542, // 980
+ -4338, // 981
+ -6264, // 982
+ -6981, // 983
+ -6381, // 984
+ -4581, // 985
+ -1890, // 986
+ 1221, // 987
+ 4134, // 988
+ 6186, // 989
+ 6912, // 990
+ 6174, // 991
+ 4185, // 992
+ 1371, // 993
+ -1689, // 994
+ -4401, // 995
+ -6270, // 996
+ -6969, // 997
+ -6369, // 998
+ -4509, // 999
+ -1683, // 1000
+ 1536, // 1001
+ 4422, // 1002
+ 6333, // 1003
+ 6927, // 1004
+ 6132, // 1005
+ 4119, // 1006
+ 1323, // 1007
+ -1719, // 1008
+ -4434, // 1009
+ -6321, // 1010
+ -7011, // 1011
+ -6297, // 1012
+ -4266, // 1013
+ -1314, // 1014
+ 1905, // 1015
+ 4707, // 1016
+ 6525, // 1017
+ 7011, // 1018
+ 6108, // 1019
+ 4050, // 1020
+ 1236, // 1021
+ -1815, // 1022
+ -4536, // 1023
+ -6375, // 1024
+ -6930, // 1025
+ -6063, // 1026
+ -3933, // 1027
+ -948, // 1028
+ 2238, // 1029
+ 4923, // 1030
+ 6576, // 1031
+ 6945, // 1032
+ 6024, // 1033
+ 3981, // 1034
+ 1167, // 1035
+ -1899, // 1036
+ -4608, // 1037
+ -6387, // 1038
+ -6864, // 1039
+ -5895, // 1040
+ -3669, // 1041
+ -687, // 1042
+ 2391, // 1043
+ 4944, // 1044
+ 6543, // 1045
+ 6930, // 1046
+ 6012, // 1047
+ 3915, // 1048
+ 1020, // 1049
+ -2109, // 1050
+ -4815, // 1051
+ -6513, // 1052
+ -6828, // 1053
+ -5727, // 1054
+ -3483, // 1055
+ -591, // 1056
+ 2400, // 1057
+ 4941, // 1058
+ 6546, // 1059
+ 6888, // 1060
+ 5874, // 1061
+ 3681, // 1062
+ 714, // 1063
+ -2415, // 1064
+ -5019, // 1065
+ -6555, // 1066
+ -6771, // 1067
+ -5670, // 1068
+ -3486, // 1069
+ -618, // 1070
+ 2382, // 1071
+ 4917, // 1072
+ 6489, // 1073
+ 6783, // 1074
+ 5718, // 1075
+ 3456, // 1076
+ 456, // 1077
+ -2631, // 1078
+ -5160, // 1079
+ -6648, // 1080
+ -6852, // 1081
+ -5742, // 1082
+ -3525, // 1083
+ -624, // 1084
+ 2400, // 1085
+ 4968, // 1086
+ 6558, // 1087
+ 6801, // 1088
+ 5604, // 1089
+ 3225, // 1090
+ 186, // 1091
+ -2865, // 1092
+ -5328, // 1093
+ -6747, // 1094
+ -6882, // 1095
+ -5724, // 1096
+ -3477, // 1097
+ -519, // 1098
+ 2598, // 1099
+ 5208, // 1100
+ 6705, // 1101
+ 6762, // 1102
+ 5424, // 1103
+ 3006, // 1104
+ 12, // 1105
+ -2958, // 1106
+ -5352, // 1107
+ -6732, // 1108
+ -6864, // 1109
+ -5688, // 1110
+ -3333, // 1111
+ -234, // 1112
+ 2934, // 1113
+ 5442, // 1114
+ 6783, // 1115
+ 6747, // 1116
+ 5373, // 1117
+ 2952, // 1118
+ -18, // 1119
+ -2982, // 1120
+ -5394, // 1121
+ -6798, // 1122
+ -6867, // 1123
+ -5523, // 1124
+ -2997, // 1125
+ 159, // 1126
+ 3261, // 1127
+ 5679, // 1128
+ 6918, // 1129
+ 6771, // 1130
+ 5325, // 1131
+ 2877, // 1132
+ -105, // 1133
+ -3093, // 1134
+ -5487, // 1135
+ -6792, // 1136
+ -6705, // 1137
+ -5226, // 1138
+ -2649, // 1139
+ 507, // 1140
+ 3537, // 1141
+ 5802, // 1142
+ 6900, // 1143
+ 6690, // 1144
+ 5241, // 1145
+ 2808, // 1146
+ -198, // 1147
+ -3192, // 1148
+ -5550, // 1149
+ -6771, // 1150
+ -6594, // 1151
+ -5022, // 1152
+ -2391, // 1153
+ 702, // 1154
+ 3600, // 1155
+ 5775, // 1156
+ 6864, // 1157
+ 6675, // 1158
+ 5202, // 1159
+ 2691, // 1160
+ -402, // 1161
+ -3423, // 1162
+ -5739, // 1163
+ -6840, // 1164
+ -6507, // 1165
+ -4848, // 1166
+ -2265, // 1167
+ 732, // 1168
+ 3591, // 1169
+ 5778, // 1170
+ 6858, // 1171
+ 6594, // 1172
+ 5016, // 1173
+ 2406, // 1174
+ -717, // 1175
+ -3690, // 1176
+ -5865, // 1177
+ -6825, // 1178
+ -6447, // 1179
+ -4833, // 1180
+ -2295, // 1181
+ 708, // 1182
+ 3579, // 1183
+ 5748, // 1184
+ 6783, // 1185
+ 6468, // 1186
+ 4830, // 1187
+ 2160, // 1188
+ -966, // 1189
+ -3870, // 1190
+ -5976, // 1191
+ -6918, // 1192
+ -6528, // 1193
+ -4896, // 1194
+ -2313, // 1195
+ 729, // 1196
+ 3633, // 1197
+ 5835, // 1198
+ 6855, // 1199
+ 6441, // 1200
+ 4656, // 1201
+ 1902, // 1202
+ -1212, // 1203
+ -4065, // 1204
+ -6111, // 1205
+ -6981, // 1206
+ -6528, // 1207
+ -4851, // 1208
+ -2223, // 1209
+ 900, // 1210
+ 3888, // 1211
+ 6063, // 1212
+ 6918, // 1213
+ 6321, // 1214
+ 4452, // 1215
+ 1713, // 1216
+ -1335, // 1217
+ -4110, // 1218
+ -6099, // 1219
+ -6954, // 1220
+ -6501, // 1221
+ -4758, // 1222
+ -1986, // 1223
+ 1245, // 1224
+ 4194, // 1225
+ 6219, // 1226
+ 6951, // 1227
+ 6294, // 1228
+ 4410, // 1229
+ 1680, // 1230
+ -1359, // 1231
+ -4140, // 1232
+ -6159, // 1233
+ -6996, // 1234
+ -6423, // 1235
+ -4494, // 1236
+ -1602, // 1237
+ 1617, // 1238
+ 4479, // 1239
+ 6402, // 1240
+ 7026, // 1241
+ 6282, // 1242
+ 4341, // 1243
+ 1602, // 1244
+ -1458, // 1245
+ -4257, // 1246
+ -6222, // 1247
+ -6921, // 1248
+ -6189, // 1249
+ -4164, // 1250
+ -1254, // 1251
+ 1920, // 1252
+ 4665, // 1253
+ 6438, // 1254
+ 6963, // 1255
+ 6192, // 1256
+ 4269, // 1257
+ 1512, // 1258
+ -1572, // 1259
+ -4356, // 1260
+ -6255, // 1261
+ -6867, // 1262
+ -6039, // 1263
+ -3939, // 1264
+ -1032, // 1265
+ 2031, // 1266
+ 4659, // 1267
+ 6393, // 1268
+ 6939, // 1269
+ 6174, // 1270
+ 4188, // 1271
+ 1338, // 1272
+ -1812, // 1273
+ -4590, // 1274
+ -6405, // 1275
+ -6867, // 1276
+ -5916, // 1277
+ -3795, // 1278
+ -969, // 1279
+ 2028, // 1280
+ 4656, // 1281
+ 6405, // 1282
+ 6903, // 1283
+ 6036, // 1284
+ 3942, // 1285
+ 1020, // 1286
+ -2118, // 1287
+ -4800, // 1288
+ -6459, // 1289
+ -6828, // 1290
+ -5886, // 1291
+ -3819, // 1292
+ -1011, // 1293
+ 2016, // 1294
+ 4647, // 1295
+ 6366, // 1296
+ 6816, // 1297
+ 5886, // 1298
+ 3723, // 1299
+ 771, // 1300
+ -2334, // 1301
+ -4935, // 1302
+ -6558, // 1303
+ -6921, // 1304
+ -5964, // 1305
+ -3858, // 1306
+ -996, // 1307
+ 2067, // 1308
+ 4737, // 1309
+ 6468, // 1310
+ 6861, // 1311
+ 5793, // 1312
+ 3504, // 1313
+ 516, // 1314
+ -2544, // 1315
+ -5091, // 1316
+ -6654, // 1317
+ -6945, // 1318
+ -5931, // 1319
+ -3780, // 1320
+ -849, // 1321
+ 2310, // 1322
+ 5019, // 1323
+ 6633, // 1324
+ 6831, // 1325
+ 5622, // 1326
+ 3315, // 1327
+ 375, // 1328
+ -2622, // 1329
+ -5106, // 1330
+ -6630, // 1331
+ -6918, // 1332
+ -5874, // 1333
+ -3612, // 1334
+ -537, // 1335
+ 2667, // 1336
+ 5256, // 1337
+ 6726, // 1338
+ 6828, // 1339
+ 5598, // 1340
+ 3288, // 1341
+ 351, // 1342
+ -2646, // 1343
+ -5151, // 1344
+ -6696, // 1345
+ -6915, // 1346
+ -5694, // 1347
+ -3261, // 1348
+ -135, // 1349
+ 2994, // 1350
+ 5484, // 1351
+ 6852, // 1352
+ 6858, // 1353
+ 5556, // 1354
+ 3210, // 1355
+ 255, // 1356
+ -2772, // 1357
+ -5268, // 1358
+ -6702, // 1359
+ -6756, // 1360
+ -5409, // 1361
+ -2925, // 1362
+ 180, // 1363
+ 3231, // 1364
+ 5589, // 1365
+ 6822, // 1366
+ 6774, // 1367
+ 5469, // 1368
+ 3126, // 1369
+ 141, // 1370
+ -2895, // 1371
+ -5349, // 1372
+ -6699, // 1373
+ -6666, // 1374
+ -5235, // 1375
+ -2709, // 1376
+ 342, // 1377
+ 3270, // 1378
+ 5547, // 1379
+ 6786, // 1380
+ 6753, // 1381
+ 5421, // 1382
+ 2985, // 1383
+ -78, // 1384
+ -3147, // 1385
+ -5553, // 1386
+ -6792, // 1387
+ -6612, // 1388
+ -5100, // 1389
+ -2616, // 1390
+ 345, // 1391
+ 3252, // 1392
+ 5550, // 1393
+ 6780, // 1394
+ 6672, // 1395
+ 5223, // 1396
+ 2691, // 1397
+ -408, // 1398
+ -3423, // 1399
+ -5691, // 1400
+ -6792, // 1401
+ -6570, // 1402
+ -5109, // 1403
+ -2661, // 1404
+ 318, // 1405
+ 3258, // 1406
+ 5547, // 1407
+ 6729, // 1408
+ 6564, // 1409
+ 5043, // 1410
+ 2460, // 1411
+ -645, // 1412
+ -3597, // 1413
+ -5805, // 1414
+ -6888, // 1415
+ -6669, // 1416
+ -5172, // 1417
+ -2661, // 1418
+ 372, // 1419
+ 3348, // 1420
+ 5664, // 1421
+ 6831, // 1422
+ 6558, // 1423
+ 4893, // 1424
+ 2220, // 1425
+ -873, // 1426
+ -3774, // 1427
+ -5928, // 1428
+ -6948, // 1429
+ -6654, // 1430
+ -5103, // 1431
+ -2538, // 1432
+ 582, // 1433
+ 3639, // 1434
+ 5922, // 1435
+ 6912, // 1436
+ 6456, // 1437
+ 4713, // 1438
+ 2061, // 1439
+ -975, // 1440
+ -3807, // 1441
+ -5916, // 1442
+ -6921, // 1443
+ -6618, // 1444
+ -4989, // 1445
+ -2274, // 1446
+ 957, // 1447
+ 3960, // 1448
+ 6084, // 1449
+ 6951, // 1450
+ 6444, // 1451
+ 4689, // 1452
+ 2040, // 1453
+ -987, // 1454
+ -3840, // 1455
+ -5982, // 1456
+ -6966, // 1457
+ -6531, // 1458
+ -4707, // 1459
+ -1881, // 1460
+ 1326, // 1461
+ 4227, // 1462
+ 6255, // 1463
+ 7023, // 1464
+ 6435, // 1465
+ 4629, // 1466
+ 1956, // 1467
+ -1107, // 1468
+ -3975, // 1469
+ -6060, // 1470
+ -6894, // 1471
+ -6300, // 1472
+ -4395, // 1473
+ -1566, // 1474
+ 1590, // 1475
+ 4392, // 1476
+ 6279, // 1477
+ 6954, // 1478
+ 6339, // 1479
+ 4539, // 1480
+ 1845, // 1481
+ -1245, // 1482
+ -4095, // 1483
+ -6114, // 1484
+ -6864, // 1485
+ -6180, // 1486
+ -4212, // 1487
+ -1386, // 1488
+ 1674, // 1489
+ 4368, // 1490
+ 6222, // 1491
+ 6924, // 1492
+ 6315, // 1493
+ 4446, // 1494
+ 1653, // 1495
+ -1503, // 1496
+ -4350, // 1497
+ -6282, // 1498
+ -6888, // 1499
+ -6090, // 1500
+ -4104, // 1501
+ -1356, // 1502
+ 1650, // 1503
+ 4356, // 1504
+ 6237, // 1505
+ 6903, // 1506
+ 6180, // 1507
+ 4191, // 1508
+ 1326, // 1509
+ -1818, // 1510
+ -4566, // 1511
+ -6348, // 1512
+ -6870, // 1513
+ -6078, // 1514
+ -4146, // 1515
+ -1398, // 1516
+ 1647, // 1517
+ 4377, // 1518
+ 6228, // 1519
+ 6828, // 1520
+ 6039, // 1521
+ 3984, // 1522
+ 1086, // 1523
+ -2028, // 1524
+ -4698, // 1525
+ -6444, // 1526
+ -6963, // 1527
+ -6162, // 1528
+ -4170, // 1529
+ -1350, // 1530
+ 1740, // 1531
+ 4503, // 1532
+ 6363, // 1533
+ 6897, // 1534
+ 5970, // 1535
+ 3792, // 1536
+ 858, // 1537
+ -2217, // 1538
+ -4839, // 1539
+ -6531, // 1540
+ -6987, // 1541
+ -6117, // 1542
+ -4065, // 1543
+ -1173, // 1544
+ 2019, // 1545
+ 4812, // 1546
+ 6552, // 1547
+ 6888, // 1548
+ 5820, // 1549
+ 3624, // 1550
+ 738, // 1551
+ -2274, // 1552
+ -4845, // 1553
+ -6510, // 1554
+ -6948, // 1555
+ -6042, // 1556
+ -3867, // 1557
+ -825, // 1558
+ 2391, // 1559
+ 5064, // 1560
+ 6645, // 1561
+ 6900, // 1562
+ 5811, // 1563
+ 3609, // 1564
+ 720, // 1565
+ -2304, // 1566
+ -4908, // 1567
+ -6582, // 1568
+ -6945, // 1569
+ -5856, // 1570
+ -3513, // 1571
+ -432, // 1572
+ 2706, // 1573
+ 5271, // 1574
+ 6765, // 1575
+ 6927, // 1576
+ 5769, // 1577
+ 3528, // 1578
+ 618, // 1579
+ -2442, // 1580
+ -5037, // 1581
+ -6600, // 1582
+ -6792, // 1583
+ -5577, // 1584
+ -3201, // 1585
+ -153, // 1586
+ 2910, // 1587
+ 5355, // 1588
+ 6729, // 1589
+ 6834, // 1590
+ 5676, // 1591
+ 3432, // 1592
+ 480, // 1593
+ -2592, // 1594
+ -5139, // 1595
+ -6618, // 1596
+ -6732, // 1597
+ -5439, // 1598
+ -3030, // 1599
+ -33, // 1600
+ 2922, // 1601
+ 5295, // 1602
+ 6678, // 1603
+ 6810, // 1604
+ 5616, // 1605
+ 3279, // 1606
+ 237, // 1607
+ -2865, // 1608
+ -5364, // 1609
+ -6732, // 1610
+ -6702, // 1611
+ -5343, // 1612
+ -2970, // 1613
+ -45, // 1614
+ 2895, // 1615
+ 5307, // 1616
+ 6693, // 1617
+ 6744, // 1618
+ 5421, // 1619
+ 2976, // 1620
+ -102, // 1621
+ -3144, // 1622
+ -5508, // 1623
+ -6744, // 1624
+ -6684, // 1625
+ -5364, // 1626
+ -3024, // 1627
+ -66, // 1628
+ 2925, // 1629
+ 5334, // 1630
+ 6669, // 1631
+ 6651, // 1632
+ 5256, // 1633
+ 2754, // 1634
+ -324, // 1635
+ -3306, // 1636
+ -5610, // 1637
+ -6840, // 1638
+ -6783, // 1639
+ -5424, // 1640
+ -3003, // 1641
+ 24, // 1642
+ 3057, // 1643
+ 5493, // 1644
+ 6801, // 1645
+ 6666, // 1646
+ 5124, // 1647
+ 2535, // 1648
+ -525, // 1649
+ -3462, // 1650
+ -5724, // 1651
+ -6900, // 1652
+ -6765, // 1653
+ -5337, // 1654
+ -2847, // 1655
+ 270, // 1656
+ 3384, // 1657
+ 5766, // 1658
+ 6894, // 1659
+ 6582, // 1660
+ 4965, // 1661
+ 2403, // 1662
+ -606, // 1663
+ -3489, // 1664
+ -5712, // 1665
+ -6864, // 1666
+ -6711, // 1667
+ -5199, // 1668
+ -2556, // 1669
+ 666, // 1670
+ 3717, // 1671
+ 5937, // 1672
+ 6933, // 1673
+ 6576, // 1674
+ 4956, // 1675
+ 2397, // 1676
+ -621, // 1677
+ -3534, // 1678
+ -5790, // 1679
+ -6918, // 1680
+ -6618, // 1681
+ -4914, // 1682
+ -2166, // 1683
+ 1020, // 1684
+ 3966, // 1685
+ 6090, // 1686
+ 7008, // 1687
+ 6567, // 1688
+ 4896, // 1689
+ 2295, // 1690
+ -759, // 1691
+ -3693, // 1692
+ -5886, // 1693
+ -6861, // 1694
+ -6402, // 1695
+ -4626, // 1696
+ -1884, // 1697
+ 1245, // 1698
+ 4089, // 1699
+ 6096, // 1700
+ 6930, // 1701
+ 6468, // 1702
+ 4794, // 1703
+ 2166, // 1704
+ -918, // 1705
+ -3840, // 1706
+ -5958, // 1707
+ -6849, // 1708
+ -6318, // 1709
+ -4482, // 1710
+ -1746, // 1711
+ 1302, // 1712
+ 4056, // 1713
+ 6033, // 1714
+ 6897, // 1715
+ 6441, // 1716
+ 4686, // 1717
+ 1959, // 1718
+ -1200, // 1719
+ -4110, // 1720
+ -6144, // 1721
+ -6900, // 1722
+ -6258, // 1723
+ -4407, // 1724
+ -1731, // 1725
+ 1263, // 1726
+ 4050, // 1727
+ 6069, // 1728
+ 6882, // 1729
+ 6306, // 1730
+ 4434, // 1731
+ 1632, // 1732
+ -1515, // 1733
+ -4320, // 1734
+ -6222, // 1735
+ -6891, // 1736
+ -6261, // 1737
+ -4455, // 1738
+ -1776, // 1739
+ 1284, // 1740
+ 4101, // 1741
+ 6087, // 1742
+ 6837, // 1743
+ 6183, // 1744
+ 4242, // 1745
+ 1410, // 1746
+ -1701, // 1747
+ -4443, // 1748
+ -6312, // 1749
+ -6987, // 1750
+ -6345, // 1751
+ -4470, // 1752
+ -1701, // 1753
+ 1419, // 1754
+ 4266, // 1755
+ 6252, // 1756
+ 6927, // 1757
+ 6135, // 1758
+ 4068, // 1759
+ 1203, // 1760
+ -1875, // 1761
+ -4575, // 1762
+ -6396, // 1763
+ -7005, // 1764
+ -6279, // 1765
+ -4332, // 1766
+ -1482, // 1767
+ 1731, // 1768
+ 4599, // 1769
+ 6459, // 1770
+ 6933, // 1771
+ 6009, // 1772
+ 3927, // 1773
+ 1107, // 1774
+ -1923, // 1775
+ -4578, // 1776
+ -6369, // 1777
+ -6957, // 1778
+ -6186, // 1779
+ -4113, // 1780
+ -1113, // 1781
+ 2121, // 1782
+ 4854, // 1783
+ 6549, // 1784
+ 6948, // 1785
+ 6009, // 1786
+ 3921, // 1787
+ 1092, // 1788
+ -1953, // 1789
+ -4647, // 1790
+ -6450, // 1791
+ -6957, // 1792
+ -6003, // 1793
+ -3756, // 1794
+ -735, // 1795
+ 2412, // 1796
+ 5040, // 1797
+ 6660, // 1798
+ 6978, // 1799
+ 5964, // 1800
+ 3837, // 1801
+ 966, // 1802
+ -2115, // 1803
+ -4797, // 1804
+ -6486, // 1805
+ -6822, // 1806
+ -5745, // 1807
+ -3480, // 1808
+ -495, // 1809
+ 2574, // 1810
+ 5094, // 1811
+ 6609, // 1812
+ 6876, // 1813
+ 5862, // 1814
+ 3720, // 1815
+ 807, // 1816
+ -2292, // 1817
+ -4923, // 1818
+ -6534, // 1819
+ -6789, // 1820
+ -5640, // 1821
+ -3348, // 1822
+ -414, // 1823
+ 2568, // 1824
+ 5037, // 1825
+ 6564, // 1826
+ 6852, // 1827
+ 5802, // 1828
+ 3549, // 1829
+ 549, // 1830
+ -2583, // 1831
+ -5166, // 1832
+ -6657, // 1833
+ -6783, // 1834
+ -5577, // 1835
+ -3315, // 1836
+ -438, // 1837
+ 2538, // 1838
+ 5055, // 1839
+ 6588, // 1840
+ 6798, // 1841
+ 5604, // 1842
+ 3252, // 1843
+ 216, // 1844
+ -2853, // 1845
+ -5307, // 1846
+ -6684, // 1847
+ -6780, // 1848
+ -5607, // 1849
+ -3369, // 1850
+ -450, // 1851
+ 2598, // 1852
+ 5118, // 1853
+ 6594, // 1854
+ 6720, // 1855
+ 5457, // 1856
+ 3048, // 1857
+ 12, // 1858
+ -2997, // 1859
+ -5403, // 1860
+ -6777, // 1861
+ -6873, // 1862
+ -5658, // 1863
+ -3321, // 1864
+ -318, // 1865
+ 2775, // 1866
+ 5313, // 1867
+ 6750, // 1868
+ 6759, // 1869
+ 5346, // 1870
+ 2856, // 1871
+ -168, // 1872
+ -3141, // 1873
+ -5508, // 1874
+ -6822, // 1875
+ -6843, // 1876
+ -5547, // 1877
+ -3135, // 1878
+ -30, // 1879
+ 3123, // 1880
+ 5604, // 1881
+ 6858, // 1882
+ 6690, // 1883
+ 5211, // 1884
+ 2745, // 1885
+ -234, // 1886
+ -3162, // 1887
+ -5493, // 1888
+ -6789, // 1889
+ -6780, // 1890
+ -5394, // 1891
+ -2826, // 1892
+ 372, // 1893
+ 3459, // 1894
+ 5769, // 1895
+ 6903, // 1896
+ 6690, // 1897
+ 5211, // 1898
+ 2739, // 1899
+ -258, // 1900
+ -3225, // 1901
+ -5583, // 1902
+ -6852, // 1903
+ -6693, // 1904
+ -5106, // 1905
+ -2442, // 1906
+ 705, // 1907
+ 3684, // 1908
+ 5904, // 1909
+ 6963, // 1910
+ 6684, // 1911
+ 5145, // 1912
+ 2625, // 1913
+ -414, // 1914
+ -3405, // 1915
+ -5700, // 1916
+ -6810, // 1917
+ -6498, // 1918
+ -4845, // 1919
+ -2202, // 1920
+ 891, // 1921
+ 3783, // 1922
+ 5901, // 1923
+ 6882, // 1924
+ 6579, // 1925
+ 5031, // 1926
+ 2484, // 1927
+ -594, // 1928
+ -3570, // 1929
+ -5799, // 1930
+ -6819, // 1931
+ -6444, // 1932
+ -4743, // 1933
+ -2106, // 1934
+ 918, // 1935
+ 3732, // 1936
+ 5835, // 1937
+ 6852, // 1938
+ 6546, // 1939
+ 4914, // 1940
+ 2250, // 1941
+ -891, // 1942
+ -3852, // 1943
+ -5997, // 1944
+ -6894, // 1945
+ -6408, // 1946
+ -4692, // 1947
+ -2109, // 1948
+ 882, // 1949
+ 3732, // 1950
+ 5877, // 1951
+ 6855, // 1952
+ 6423, // 1953
+ 4668, // 1954
+ 1935, // 1955
+ -1200, // 1956
+ -4062, // 1957
+ -6078, // 1958
+ -6894, // 1959
+ -6423, // 1960
+ -4746, // 1961
+ -2145, // 1962
+ 924, // 1963
+ 3819, // 1964
+ 5934, // 1965
+ 6834, // 1966
+ 6324, // 1967
+ 4494, // 1968
+ 1731, // 1969
+ -1371, // 1970
+ -4173, // 1971
+ -6159, // 1972
+ -6990, // 1973
+ -6498, // 1974
+ -4746, // 1975
+ -2034, // 1976
+ 1101, // 1977
+ 4029, // 1978
+ 6132, // 1979
+ 6945, // 1980
+ 6288, // 1981
+ 4341, // 1982
+ 1542, // 1983
+ -1521, // 1984
+ -4287, // 1985
+ -6237, // 1986
+ -6996, // 1987
+ -6420, // 1988
+ -4578, // 1989
+ -1782, // 1990
+ 1440, // 1991
+ 4380, // 1992
+ 6345, // 1993
+ 6960, // 1994
+ 6183, // 1995
+ 4218, // 1996
+ 1473, // 1997
+ -1560, // 1998
+ -4293, // 1999
+ -6213, // 2000
+ -6951, // 2001
+ -6318, // 2002
+ -4344, // 2003
+ -1410, // 2004
+ 1827, // 2005
+ 4629, // 2006
+ 6438, // 2007
+ 6978, // 2008
+ 6189, // 2009
+ 4227, // 2010
+ 1452, // 2011
+ -1608, // 2012
+ -4383, // 2013
+ -6309, // 2014
+ -6957, // 2015
+ -6132, // 2016
+ -3999, // 2017
+ -1047, // 2018
+ 2091, // 2019
+ 4788, // 2020
+ 6531, // 2021
+ 7002, // 2022
+ 6144, // 2023
+ 4125, // 2024
+ 1311, // 2025
+ -1791, // 2026
+ -4551, // 2027
+ -6363, // 2028
+ -6837, // 2029
+ -5901, // 2030
+ -3759, // 2031
+ -849, // 2032
+ 2223, // 2033
+ 4821, // 2034
+ 6471, // 2035
+ 6900, // 2036
+ 6033, // 2037
+ 3996, // 2038
+ 1131, // 2039
+ -1995, // 2040
+ -4704, // 2041
+ -6426, // 2042
+ -6828, // 2043
+ -5838, // 2044
+ -3672, // 2045
+ -801, // 2046
+ 2196, // 2047
+ 4755, // 2048
+ 6429, // 2049
+ 6879, // 2050
+ 5967, // 2051
+ 3816, // 2052
+ 852, // 2053
+ -2292, // 2054
+ -4950, // 2055
+ -6570, // 2056
+ -6852, // 2057
+ -5796, // 2058
+ -3651, // 2059
+ -825, // 2060
+ 2175, // 2061
+ 4794, // 2062
+ 6474, // 2063
+ 6834, // 2064
+ 5781, // 2065
+ 3522, // 2066
+ 534, // 2067
+ -2550, // 2068
+ -5088, // 2069
+ -6597, // 2070
+ -6852, // 2071
+ -5832, // 2072
+ -3705, // 2073
+ -819, // 2074
+ 2268, // 2075
+ 4899, // 2076
+ 6513, // 2077
+ 6783, // 2078
+ 5652, // 2079
+ 3336, // 2080
+ 348, // 2081
+ -2691, // 2082
+ -5178, // 2083
+ -6687, // 2084
+ -6948, // 2085
+ -5874, // 2086
+ -3633, // 2087
+ -645, // 2088
+ 2490, // 2089
+ 5121, // 2090
+ 6693, // 2091
+ 6840, // 2092
+ 5559, // 2093
+ 3174, // 2094
+ 192, // 2095
+ -2808, // 2096
+ -5274, // 2097
+ -6735, // 2098
+ -6909, // 2099
+ -5739, // 2100
+ -3408, // 2101
+ -324, // 2102
+ 2862, // 2103
+ 5430, // 2104
+ 6804, // 2105
+ 6780, // 2106
+ 5445, // 2107
+ 3078, // 2108
+ 141, // 2109
+ -2832, // 2110
+ -5265, // 2111
+ -6702, // 2112
+ -6834, // 2113
+ -5568, // 2114
+ -3090, // 2115
+ 78, // 2116
+ 3189, // 2117
+ 5580, // 2118
+ 6843, // 2119
+ 6792, // 2120
+ 5454, // 2121
+ 3078, // 2122
+ 108, // 2123
+ -2901, // 2124
+ -5370, // 2125
+ -6774, // 2126
+ -6753, // 2127
+ -5298, // 2128
+ -2730, // 2129
+ 381, // 2130
+ 3378, // 2131
+ 5694, // 2132
+ 6900, // 2133
+ 6777, // 2134
+ 5373, // 2135
+ 2946, // 2136
+ -75, // 2137
+ -3111, // 2138
+ -5511, // 2139
+ -6750, // 2140
+ -6579, // 2141
+ -5067, // 2142
+ -2529, // 2143
+ 522, // 2144
+ 3450, // 2145
+ 5673, // 2146
+ 6807, // 2147
+ 6666, // 2148
+ 5253, // 2149
+ 2787, // 2150
+ -282, // 2151
+ -3300, // 2152
+ -5625, // 2153
+ -6786, // 2154
+ -6555, // 2155
+ -5004, // 2156
+ -2466, // 2157
+ 528, // 2158
+ 3390, // 2159
+ 5619, // 2160
+ 6786, // 2161
+ 6636, // 2162
+ 5130, // 2163
+ 2544, // 2164
+ -585, // 2165
+ -3588, // 2166
+ -5829, // 2167
+ -6873, // 2168
+ -6549, // 2169
+ -4977, // 2170
+ -2481, // 2171
+ 495, // 2172
+ 3414, // 2173
+ 5685, // 2174
+ 6810, // 2175
+ 6525, // 2176
+ 4887, // 2177
+ 2232, // 2178
+ -879, // 2179
+ -3786, // 2180
+ -5910, // 2181
+ -6876, // 2182
+ -6567, // 2183
+ -5025, // 2184
+ -2496, // 2185
+ 564, // 2186
+ 3537, // 2187
+ 5778, // 2188
+ 6813, // 2189
+ 6447, // 2190
+ 4734, // 2191
+ 2052, // 2192
+ -1035, // 2193
+ -3885, // 2194
+ -5985, // 2195
+ -6966, // 2196
+ -6633, // 2197
+ -5001, // 2198
+ -2352, // 2199
+ 792, // 2200
+ 3792, // 2201
+ 6006, // 2202
+};
+
/**
* The position of the moon at the time set on this
* object, in equatorial coordinates.
*/
const CalendarAstronomer::Equatorial& CalendarAstronomer::getMoonPosition()
{
- //
- // See page 142 of "Practial Astronomy with your Calculator",
- // by Peter Duffet-Smith, for details on the algorithm.
- //
- if (moonPositionSet == FALSE) {
- // Calculate the solar longitude. Has the side effect of
- // filling in "meanAnomalySun" as well.
- getSunLongitude();
-
- //
- // Find the # of days since the epoch of our orbital parameters.
- // TODO: Convert the time of day portion into ephemeris time
- //
- double day = getJulianDay() - JD_EPOCH; // Days since epoch
-
- // Calculate the mean longitude and anomaly of the moon, based on
- // a circular orbit. Similar to the corresponding solar calculation.
- double meanLongitude = norm2PI(13.1763966*PI/180*day + moonL0);
- meanAnomalyMoon = norm2PI(meanLongitude - 0.1114041*PI/180 * day - moonP0);
-
- //
- // Calculate the following corrections:
- // Evection: the sun's gravity affects the moon's eccentricity
- // Annual Eqn: variation in the effect due to earth-sun distance
- // A3: correction factor (for ???)
- //
- double evection = 1.2739*PI/180 * ::sin(2 * (meanLongitude - sunLongitude)
- - meanAnomalyMoon);
- double annual = 0.1858*PI/180 * ::sin(meanAnomalySun);
- double a3 = 0.3700*PI/180 * ::sin(meanAnomalySun);
-
- meanAnomalyMoon += evection - annual - a3;
-
- //
- // More correction factors:
- // center equation of the center correction
- // a4 yet another error correction (???)
- //
- // TODO: Skip the equation of the center correction and solve Kepler's eqn?
//
- double center = 6.2886*PI/180 * ::sin(meanAnomalyMoon);
- double a4 = 0.2140*PI/180 * ::sin(2 * meanAnomalyMoon);
-
- // Now find the moon's corrected longitude
- moonLongitude = meanLongitude + evection + center - annual + a4;
-
- //
- // And finally, find the variation, caused by the fact that the sun's
- // gravitational pull on the moon varies depending on which side of
- // the earth the moon is on
- //
- double variation = 0.6583*CalendarAstronomer::PI/180 * ::sin(2*(moonLongitude - sunLongitude));
-
- moonLongitude += variation;
-
- //
- // What we've calculated so far is the moon's longitude in the plane
- // of its own orbit. Now map to the ecliptic to get the latitude
- // and longitude. First we need to find the longitude of the ascending
- // node, the position on the ecliptic where it is crossed by the moon's
- // orbit as it crosses from the southern to the northern hemisphere.
+ // See page 142 of "Practical Astronomy with your Calculator",
+ // by Peter Duffet-Smith, for details on the algorithm.
//
- double nodeLongitude = norm2PI(moonN0 - 0.0529539*PI/180 * day);
-
- nodeLongitude -= 0.16*PI/180 * ::sin(meanAnomalySun);
-
- double y = ::sin(moonLongitude - nodeLongitude);
- double x = cos(moonLongitude - nodeLongitude);
-
- moonEclipLong = ::atan2(y*cos(moonI), x) + nodeLongitude;
- double moonEclipLat = ::asin(y * ::sin(moonI));
-
- eclipticToEquatorial(moonPosition, moonEclipLong, moonEclipLat);
- moonPositionSet = TRUE;
- }
- return moonPosition;
+ if (moonPositionSet == FALSE) {
+ // Calculate the solar longitude. Has the side effect of
+ // filling in "meanAnomalySun" as well.
+ getSunLongitude();
+
+ //
+ // Find the # of days since the epoch of our orbital parameters.
+ // TODO: Convert the time of day portion into ephemeris time
+ //
+ double day = getJulianDay() - JD_EPOCH; // Days since epoch
+
+ // Calculate the mean longitude and anomaly of the moon, based on
+ // a circular orbit. Similar to the corresponding solar calculation.
+ double meanLongitude = norm2PI(13.1763966*PI/180*day + moonL0);
+ meanAnomalyMoon = norm2PI(meanLongitude - 0.1114041*PI/180 * day - moonP0);
+
+ //
+ // Calculate the following corrections:
+ // Evection: the sun's gravity affects the moon's eccentricity
+ // Annual Eqn: variation in the effect due to earth-sun distance
+ // A3: correction factor (for ???)
+ //
+ double evection = 1.2739*PI/180 * ::sin(2 * (meanLongitude - sunLongitude)
+ - meanAnomalyMoon);
+ double annual = 0.1858*PI/180 * ::sin(meanAnomalySun);
+ double a3 = 0.3700*PI/180 * ::sin(meanAnomalySun);
+
+ meanAnomalyMoon += evection - annual - a3;
+
+ //
+ // More correction factors:
+ // center equation of the center correction
+ // a4 yet another error correction (???)
+ //
+ // TODO: Skip the equation of the center correction and solve Kepler's eqn?
+ //
+ double center = 6.2886*PI/180 * ::sin(meanAnomalyMoon);
+ double a4 = 0.2140*PI/180 * ::sin(2 * meanAnomalyMoon);
+
+ // Now find the moon's corrected longitude
+ moonLongitude = meanLongitude + evection + center - annual + a4;
+
+ //
+ // And finally, find the variation, caused by the fact that the sun's
+ // gravitational pull on the moon varies depending on which side of
+ // the earth the moon is on
+ //
+ double variation = 0.6583*CalendarAstronomer::PI/180 * ::sin(2*(moonLongitude - sunLongitude));
+
+ moonLongitude += variation;
+
+ //
+ // What we've calculated so far is the moon's longitude in the plane
+ // of its own orbit. Now map to the ecliptic to get the latitude
+ // and longitude. First we need to find the longitude of the ascending
+ // node, the position on the ecliptic where it is crossed by the moon's
+ // orbit as it crosses from the southern to the northern hemisphere.
+ //
+ double nodeLongitude = norm2PI(moonN0 - 0.0529539*PI/180 * day);
+
+ nodeLongitude -= 0.16*PI/180 * ::sin(meanAnomalySun);
+
+ double y = ::sin(moonLongitude - nodeLongitude);
+ double x = cos(moonLongitude - nodeLongitude);
+
+ moonEclipLong = ::atan2(y*cos(moonI), x) + nodeLongitude;
+ double moonEclipLat = ::asin(y * ::sin(moonI));
+
+ eclipticToEquatorial(moonPosition, moonEclipLong, moonEclipLat);
+ moonPositionSet = TRUE;
+ }
+ return moonPosition;
}
/**
* @deprecated ICU 2.4. This class may be removed or modified.
*/
double CalendarAstronomer::getMoonAge() {
- // See page 147 of "Practial Astronomy with your Calculator",
- // by Peter Duffet-Smith, for details on the algorithm.
- //
- // Force the moon's position to be calculated. We're going to use
- // some the intermediate results cached during that calculation.
- //
- getMoonPosition();
-
- return norm2PI(moonEclipLong - sunLongitude);
+ // See page 147 of "Practical Astronomy with your Calculator",
+ // by Peter Duffet-Smith, for details on the algorithm.
+ //
+ // Force the moon's position to be calculated. We're going to use
+ // some the intermediate results cached during that calculation.
+ //
+ // Currently, the only client is IslamicCalendar. All it cares
+ // about is that the method returns new moon (0) and full moon (PI)
+ // at the correct date & time, and otherwise that the returned value
+ // is monotonically increasing from 0 to PI for the range new moon date
+ // to full moon date, and monotonically increasing from PI to just under
+ // 2*PI for the range full moon date to just before next new moon date.
+
+ if (fTime >= newMoonDatesFirst && fTime < newMoonDatesLast) {
+ int32_t offset = (int32_t)(((double)kNewMoonDatesCount)*(fTime - newMoonDatesFirst)/newMoonDatesRange);
+ const int32_t * newMoonDatesPtr = newMoonDates + offset; // approximate starting position
+ int32_t curTime = (int32_t)(fTime/10000.0);
+ while (curTime < *newMoonDatesPtr) {
+ newMoonDatesPtr--;
+ }
+ while (curTime >= *(newMoonDatesPtr+1)) {
+ newMoonDatesPtr++;
+ }
+ offset = newMoonDatesPtr - newMoonDates;
+ int32_t fullMoonDate = (*newMoonDatesPtr + *(newMoonDatesPtr+1))/2 + fullMoonAdjustmts[offset];
+ if (curTime < fullMoonDate) {
+ return PI*((double)(curTime - *newMoonDatesPtr))/((double)(fullMoonDate - *newMoonDatesPtr));
+ }
+ return PI + PI*((double)(curTime - fullMoonDate))/((double)(*(newMoonDatesPtr+1) - fullMoonDate));
+ }
+
+ getMoonPosition();
+
+ return norm2PI(moonEclipLong - sunLongitude);
}
/**
* @deprecated ICU 2.4. This class may be removed or modified.
*/
double CalendarAstronomer::getMoonPhase() {
- // See page 147 of "Practial Astronomy with your Calculator",
- // by Peter Duffet-Smith, for details on the algorithm.
- return 0.5 * (1 - cos(getMoonAge()));
+ // See page 147 of "Practical Astronomy with your Calculator",
+ // by Peter Duffet-Smith, for details on the algorithm.
+ return 0.5 * (1 - cos(getMoonAge()));
}
/**
* @deprecated ICU 2.4. This class may be removed or modified.
*/
const CalendarAstronomer::MoonAge CalendarAstronomer::NEW_MOON() {
- return CalendarAstronomer::MoonAge(0);
+ return CalendarAstronomer::MoonAge(0);
}
/**
* @internal
* @deprecated ICU 2.4. This class may be removed or modified.
*/
-const CalendarAstronomer::MoonAge CalendarAstronomer::FIRST_QUARTER() {
+/*const CalendarAstronomer::MoonAge CalendarAstronomer::FIRST_QUARTER() {
return CalendarAstronomer::MoonAge(CalendarAstronomer::PI/2);
-}
+}*/
/**
* Constant representing a full moon.
* @deprecated ICU 2.4. This class may be removed or modified.
*/
const CalendarAstronomer::MoonAge CalendarAstronomer::FULL_MOON() {
- return CalendarAstronomer::MoonAge(CalendarAstronomer::PI);
+ return CalendarAstronomer::MoonAge(CalendarAstronomer::PI);
}
/**
* Constant representing the moon's last quarter.
class MoonTimeAngleFunc : public CalendarAstronomer::AngleFunc {
public:
- virtual double eval(CalendarAstronomer&a) { return a.getMoonAge(); }
+ virtual ~MoonTimeAngleFunc();
+ virtual double eval(CalendarAstronomer&a) { return a.getMoonAge(); }
};
-const CalendarAstronomer::MoonAge CalendarAstronomer::LAST_QUARTER() {
+MoonTimeAngleFunc::~MoonTimeAngleFunc() {}
+
+/*const CalendarAstronomer::MoonAge CalendarAstronomer::LAST_QUARTER() {
return CalendarAstronomer::MoonAge((CalendarAstronomer::PI*3)/2);
+}*/
+
+/**
+ * Find the next or previous time of a new moon if date is in the
+ * range handled by this function (approx gregorian 1900-2100),
+ * else return 0.
+ * <p>
+ * @param theTime the time relative to which the function should find
+ * the next or previous new moon
+ * @param next <tt>true</tt> if the next occurrance of the new moon
+ * is desired, <tt>false</tt> for the previous occurrance.
+ * @internal
+ */
+UDate CalendarAstronomer::getNewMoonTimeInRange(UDate theTime, UBool next)
+{
+ if (theTime < newMoonDatesFirst || theTime >= newMoonDatesLast) {
+ return 0.0;
+ }
+ int32_t offset = (int32_t)(((double)kNewMoonDatesCount)*(theTime - newMoonDatesFirst)/newMoonDatesRange);
+ const int32_t * newMoonDatesPtr = newMoonDates + offset; // approximate starting position
+ int32_t curTime = (int32_t)(theTime/10000.0);
+ while (curTime < *newMoonDatesPtr) {
+ newMoonDatesPtr--;
+ }
+ while (curTime >= *(newMoonDatesPtr+1)) {
+ newMoonDatesPtr++;
+ }
+ if (next) {
+ newMoonDatesPtr++;
+ }
+ return 10000.0 * (UDate)(*newMoonDatesPtr);
}
+
/**
* Find the next or previous time at which the Moon's ecliptic
* longitude will have the desired value.
*/
UDate CalendarAstronomer::getMoonTime(double desired, UBool next)
{
- MoonTimeAngleFunc func;
- return timeOfAngle( func,
- desired,
- SYNODIC_MONTH,
- MINUTE_MS,
- next);
+ // Currently, we only get here via a call from ChineseCalendar,
+ // with desired == CalendarAstronomer::NEW_MOON().value
+ if (desired == CalendarAstronomer::NEW_MOON().value) {
+ UDate newMoonTime = CalendarAstronomer::getNewMoonTimeInRange(fTime, next);
+ if (newMoonTime != 0.0) {
+ return newMoonTime;
+ }
+ // else fall through to the full calculation
+ }
+
+ MoonTimeAngleFunc func;
+ return timeOfAngle( func,
+ desired,
+ SYNODIC_MONTH,
+ MINUTE_MS,
+ next);
}
/**
* @deprecated ICU 2.4. This class may be removed or modified.
*/
UDate CalendarAstronomer::getMoonTime(const CalendarAstronomer::MoonAge& desired, UBool next) {
- return getMoonTime(desired.value, next);
+ // Currently, the only client is ChineseCalendar, which calls
+ // this with desired == CalendarAstronomer::NEW_MOON()
+ return getMoonTime(desired.value, next);
}
class MoonRiseSetCoordFunc : public CalendarAstronomer::CoordFunc {
public:
- virtual void eval(CalendarAstronomer::Equatorial& result, CalendarAstronomer&a) { result = a.getMoonPosition(); }
+ virtual ~MoonRiseSetCoordFunc();
+ virtual void eval(CalendarAstronomer::Equatorial& result, CalendarAstronomer&a) { result = a.getMoonPosition(); }
};
+MoonRiseSetCoordFunc::~MoonRiseSetCoordFunc() {}
+
/**
* Returns the time (GMT) of sunrise or sunset on the local date to which
* this calendar is currently set.
*/
UDate CalendarAstronomer::getMoonRiseSet(UBool rise)
{
- MoonRiseSetCoordFunc func;
- return riseOrSet(func,
- rise,
- .533 * DEG_RAD, // Angular Diameter
- 34 /60.0 * DEG_RAD, // Refraction correction
- MINUTE_MS); // Desired accuracy
+ MoonRiseSetCoordFunc func;
+ return riseOrSet(func,
+ rise,
+ .533 * DEG_RAD, // Angular Diameter
+ 34 /60.0 * DEG_RAD, // Refraction correction
+ MINUTE_MS); // Desired accuracy
}
//-------------------------------------------------------------------------
UDate CalendarAstronomer::timeOfAngle(AngleFunc& func, double desired,
double periodDays, double epsilon, UBool next)
{
- // Find the value of the function at the current time
- double lastAngle = func.eval(*this);
-
- // Find out how far we are from the desired angle
- double deltaAngle = norm2PI(desired - lastAngle) ;
-
- // Using the average period, estimate the next (or previous) time at
- // which the desired angle occurs.
- double deltaT = (deltaAngle + (next ? 0.0 : - CalendarAstronomer_PI2 )) * (periodDays*DAY_MS) / CalendarAstronomer_PI2;
+ // Find the value of the function at the current time
+ double lastAngle = func.eval(*this);
- double lastDeltaT = deltaT; // Liu
- UDate startTime = fTime; // Liu
+ // Find out how far we are from the desired angle
+ double deltaAngle = norm2PI(desired - lastAngle) ;
- setTime(fTime + uprv_ceil(deltaT));
+ // Using the average period, estimate the next (or previous) time at
+ // which the desired angle occurs.
+ double deltaT = (deltaAngle + (next ? 0.0 : - CalendarAstronomer_PI2 )) * (periodDays*DAY_MS) / CalendarAstronomer_PI2;
- // Now iterate until we get the error below epsilon. Throughout
- // this loop we use normPI to get values in the range -Pi to Pi,
- // since we're using them as correction factors rather than absolute angles.
- do {
- // Evaluate the function at the time we've estimated
- double angle = func.eval(*this);
+ double lastDeltaT = deltaT; // Liu
+ UDate startTime = fTime; // Liu
- // Find the # of milliseconds per radian at this point on the curve
- double factor = uprv_fabs(deltaT / normPI(angle-lastAngle));
-
- // Correct the time estimate based on how far off the angle is
- deltaT = normPI(desired - angle) * factor;
+ setTime(fTime + uprv_ceil(deltaT));
- // HACK:
- //
- // If abs(deltaT) begins to diverge we need to quit this loop.
- // This only appears to happen when attempting to locate, for
- // example, a new moon on the day of the new moon. E.g.:
- //
- // This result is correct:
- // newMoon(7508(Mon Jul 23 00:00:00 CST 1990,false))=
- // Sun Jul 22 10:57:41 CST 1990
- //
- // But attempting to make the same call a day earlier causes deltaT
- // to diverge:
- // CalendarAstronomer.timeOfAngle() diverging: 1.348508727575625E9 ->
- // 1.3649828540224032E9
- // newMoon(7507(Sun Jul 22 00:00:00 CST 1990,false))=
- // Sun Jul 08 13:56:15 CST 1990
- //
- // As a temporary solution, we catch this specific condition and
- // adjust our start time by one eighth period days (either forward
- // or backward) and try again.
- // Liu 11/9/00
- if (uprv_fabs(deltaT) > uprv_fabs(lastDeltaT)) {
- double delta = uprv_ceil (periodDays * DAY_MS / 8.0);
- setTime(startTime + (next ? delta : -delta));
- return timeOfAngle(func, desired, periodDays, epsilon, next);
+ // Now iterate until we get the error below epsilon. Throughout
+ // this loop we use normPI to get values in the range -Pi to Pi,
+ // since we're using them as correction factors rather than absolute angles.
+ do {
+ // Evaluate the function at the time we've estimated
+ double angle = func.eval(*this);
+
+ // Find the # of milliseconds per radian at this point on the curve
+ double factor = uprv_fabs(deltaT / normPI(angle-lastAngle));
+
+ // Correct the time estimate based on how far off the angle is
+ deltaT = normPI(desired - angle) * factor;
+
+ // HACK:
+ //
+ // If abs(deltaT) begins to diverge we need to quit this loop.
+ // This only appears to happen when attempting to locate, for
+ // example, a new moon on the day of the new moon. E.g.:
+ //
+ // This result is correct:
+ // newMoon(7508(Mon Jul 23 00:00:00 CST 1990,false))=
+ // Sun Jul 22 10:57:41 CST 1990
+ //
+ // But attempting to make the same call a day earlier causes deltaT
+ // to diverge:
+ // CalendarAstronomer.timeOfAngle() diverging: 1.348508727575625E9 ->
+ // 1.3649828540224032E9
+ // newMoon(7507(Sun Jul 22 00:00:00 CST 1990,false))=
+ // Sun Jul 08 13:56:15 CST 1990
+ //
+ // As a temporary solution, we catch this specific condition and
+ // adjust our start time by one eighth period days (either forward
+ // or backward) and try again.
+ // Liu 11/9/00
+ if (uprv_fabs(deltaT) > uprv_fabs(lastDeltaT)) {
+ double delta = uprv_ceil (periodDays * DAY_MS / 8.0);
+ setTime(startTime + (next ? delta : -delta));
+ return timeOfAngle(func, desired, periodDays, epsilon, next);
+ }
+
+ lastDeltaT = deltaT;
+ lastAngle = angle;
+
+ setTime(fTime + uprv_ceil(deltaT));
}
+ while (uprv_fabs(deltaT) > epsilon);
- lastDeltaT = deltaT;
- lastAngle = angle;
-
- setTime(fTime + uprv_ceil(deltaT));
- }
- while (uprv_fabs(deltaT) > epsilon);
-
- return fTime;
+ return fTime;
}
UDate CalendarAstronomer::riseOrSet(CoordFunc& func, UBool rise,
double diameter, double refraction,
double epsilon)
{
- Equatorial pos;
- double tanL = ::tan(fLatitude);
- double deltaT = 0;
- int32_t count = 0;
-
- //
- // Calculate the object's position at the current time, then use that
- // position to calculate the time of rising or setting. The position
- // will be different at that time, so iterate until the error is allowable.
- //
- U_DEBUG_ASTRO_MSG(("setup rise=%s, dia=%.3lf, ref=%.3lf, eps=%.3lf\n",
- rise?"T":"F", diameter, refraction, epsilon));
- do {
- // See "Practical Astronomy With Your Calculator, section 33.
- func.eval(pos, *this);
- double angle = ::acos(-tanL * ::tan(pos.declination));
- double lst = ((rise ? CalendarAstronomer_PI2-angle : angle) + pos.ascension ) * 24 / CalendarAstronomer_PI2;
-
- // Convert from LST to Universal Time.
- UDate newTime = lstToUT( lst );
-
- deltaT = newTime - fTime;
- setTime(newTime);
- U_DEBUG_ASTRO_MSG(("%d] dT=%.3lf, angle=%.3lf, lst=%.3lf, A=%.3lf/D=%.3lf\n",
- count, deltaT, angle, lst, pos.ascension, pos.declination));
- }
- while (++ count < 5 && uprv_fabs(deltaT) > epsilon);
+ Equatorial pos;
+ double tanL = ::tan(fLatitude);
+ double deltaT = 0;
+ int32_t count = 0;
- // Calculate the correction due to refraction and the object's angular diameter
- double cosD = ::cos(pos.declination);
- double psi = ::acos(sin(fLatitude) / cosD);
- double x = diameter / 2 + refraction;
- double y = ::asin(sin(x) / ::sin(psi));
- long delta = (long)((240 * y * RAD_DEG / cosD)*SECOND_MS);
-
- return fTime + (rise ? -delta : delta);
-}
+ //
+ // Calculate the object's position at the current time, then use that
+ // position to calculate the time of rising or setting. The position
+ // will be different at that time, so iterate until the error is allowable.
+ //
+ U_DEBUG_ASTRO_MSG(("setup rise=%s, dia=%.3lf, ref=%.3lf, eps=%.3lf\n",
+ rise?"T":"F", diameter, refraction, epsilon));
+ do {
+ // See "Practical Astronomy With Your Calculator, section 33.
+ func.eval(pos, *this);
+ double angle = ::acos(-tanL * ::tan(pos.declination));
+ double lst = ((rise ? CalendarAstronomer_PI2-angle : angle) + pos.ascension ) * 24 / CalendarAstronomer_PI2;
+
+ // Convert from LST to Universal Time.
+ UDate newTime = lstToUT( lst );
+
+ deltaT = newTime - fTime;
+ setTime(newTime);
+ U_DEBUG_ASTRO_MSG(("%d] dT=%.3lf, angle=%.3lf, lst=%.3lf, A=%.3lf/D=%.3lf\n",
+ count, deltaT, angle, lst, pos.ascension, pos.declination));
+ }
+ while (++ count < 5 && uprv_fabs(deltaT) > epsilon);
-/**
- * Find the "true anomaly" (longitude) of an object from
- * its mean anomaly and the eccentricity of its orbit. This uses
- * an iterative solution to Kepler's equation.
- *
- * @param meanAnomaly The object's longitude calculated as if it were in
- * a regular, circular orbit, measured in radians
- * from the point of perigee.
- *
- * @param eccentricity The eccentricity of the orbit
- *
- * @return The true anomaly (longitude) measured in radians
- */
-double CalendarAstronomer::trueAnomaly(double meanAnomaly, double eccentricity)
-{
- // First, solve Kepler's equation iteratively
- // Duffett-Smith, p.90
- double delta;
- double E = meanAnomaly;
- do {
- delta = E - eccentricity * ::sin(E) - meanAnomaly;
- E = E - delta / (1 - eccentricity * ::cos(E));
- }
- while (uprv_fabs(delta) > 1e-5); // epsilon = 1e-5 rad
+ // Calculate the correction due to refraction and the object's angular diameter
+ double cosD = ::cos(pos.declination);
+ double psi = ::acos(sin(fLatitude) / cosD);
+ double x = diameter / 2 + refraction;
+ double y = ::asin(sin(x) / ::sin(psi));
+ long delta = (long)((240 * y * RAD_DEG / cosD)*SECOND_MS);
- return 2.0 * ::atan( ::tan(E/2) * ::sqrt( (1+eccentricity)
- /(1-eccentricity) ) );
+ return fTime + (rise ? -delta : delta);
}
-
/**
* Return the obliquity of the ecliptic (the angle between the ecliptic
* and the earth's equator) at the current time. This varies due to
* measured in radians.
*/
double CalendarAstronomer::eclipticObliquity() {
- if (isINVALID(eclipObliquity)) {
- const double epoch = 2451545.0; // 2000 AD, January 1.5
+ if (isINVALID(eclipObliquity)) {
+ const double epoch = 2451545.0; // 2000 AD, January 1.5
- double T = (getJulianDay() - epoch) / 36525;
+ double T = (getJulianDay() - epoch) / 36525;
- eclipObliquity = 23.439292
- - 46.815/3600 * T
- - 0.0006/3600 * T*T
- + 0.00181/3600 * T*T*T;
+ eclipObliquity = 23.439292
+ - 46.815/3600 * T
+ - 0.0006/3600 * T*T
+ + 0.00181/3600 * T*T*T;
- eclipObliquity *= DEG_RAD;
- }
- return eclipObliquity;
+ eclipObliquity *= DEG_RAD;
+ }
+ return eclipObliquity;
}
// Private data
//-------------------------------------------------------------------------
void CalendarAstronomer::clearCache() {
- const double INVALID = uprv_getNaN();
-
- julianDay = INVALID;
- julianCentury = INVALID;
- sunLongitude = INVALID;
- meanAnomalySun = INVALID;
- moonLongitude = INVALID;
- moonEclipLong = INVALID;
- meanAnomalyMoon = INVALID;
- eclipObliquity = INVALID;
- siderealTime = INVALID;
- siderealT0 = INVALID;
- moonPositionSet = FALSE;
+ const double INVALID = uprv_getNaN();
+
+ julianDay = INVALID;
+ julianCentury = INVALID;
+ sunLongitude = INVALID;
+ meanAnomalySun = INVALID;
+ moonLongitude = INVALID;
+ moonEclipLong = INVALID;
+ meanAnomalyMoon = INVALID;
+ eclipObliquity = INVALID;
+ siderealTime = INVALID;
+ siderealT0 = INVALID;
+ moonPositionSet = FALSE;
}
//private static void out(String s) {
* @internal
* @deprecated ICU 2.4. This class may be removed or modified.
*/
-UDate CalendarAstronomer::local(UDate localMillis) {
+/*UDate CalendarAstronomer::local(UDate localMillis) {
// TODO - srl ?
TimeZone *tz = TimeZone::createDefault();
int32_t rawOffset;
tz->getOffset(localMillis, TRUE, rawOffset, dstOffset, status);
delete tz;
return localMillis - rawOffset;
-}
+}*/
// Debugging functions
UnicodeString CalendarAstronomer::Ecliptic::toString() const
{
#ifdef U_DEBUG_ASTRO
- char tmp[800];
- sprintf(tmp, "[%.5f,%.5f]", longitude*RAD_DEG, latitude*RAD_DEG);
- return UnicodeString(tmp, "");
+ char tmp[800];
+ sprintf(tmp, "[%.5f,%.5f]", longitude*RAD_DEG, latitude*RAD_DEG);
+ return UnicodeString(tmp, "");
#else
- return UnicodeString();
+ return UnicodeString();
#endif
}
UnicodeString CalendarAstronomer::Equatorial::toString() const
{
#ifdef U_DEBUG_ASTRO
- char tmp[400];
- sprintf(tmp, "%f,%f",
- (ascension*RAD_DEG), (declination*RAD_DEG));
- return UnicodeString(tmp, "");
+ char tmp[400];
+ sprintf(tmp, "%f,%f",
+ (ascension*RAD_DEG), (declination*RAD_DEG));
+ return UnicodeString(tmp, "");
#else
- return UnicodeString();
+ return UnicodeString();
#endif
}
UnicodeString CalendarAstronomer::Horizon::toString() const
{
#ifdef U_DEBUG_ASTRO
- char tmp[800];
- sprintf(tmp, "[%.5f,%.5f]", altitude*RAD_DEG, azimuth*RAD_DEG);
- return UnicodeString(tmp, "");
+ char tmp[800];
+ sprintf(tmp, "[%.5f,%.5f]", altitude*RAD_DEG, azimuth*RAD_DEG);
+ return UnicodeString(tmp, "");
#else
- return UnicodeString();
+ return UnicodeString();
#endif
}
// =============== Calendar Cache ================
void CalendarCache::createCache(CalendarCache** cache, UErrorCode& status) {
- ucln_i18n_registerCleanup(UCLN_I18N_ASTRO_CALENDAR, calendar_astro_cleanup);
- *cache = new CalendarCache(32, status);
- if(cache == NULL) {
- status = U_MEMORY_ALLOCATION_ERROR;
- }
- if(U_FAILURE(status)) {
- delete *cache;
- *cache = NULL;
- }
+ ucln_i18n_registerCleanup(UCLN_I18N_ASTRO_CALENDAR, calendar_astro_cleanup);
+ if(cache == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ } else {
+ *cache = new CalendarCache(32, status);
+ if(U_FAILURE(status)) {
+ delete *cache;
+ *cache = NULL;
+ }
+ }
}
int32_t CalendarCache::get(CalendarCache** cache, int32_t key, UErrorCode &status) {
- int32_t res;
+ int32_t res;
- if(U_FAILURE(status)) {
- return 0;
- }
- umtx_lock(&ccLock);
-
- if(*cache == NULL) {
- createCache(cache, status);
if(U_FAILURE(status)) {
- umtx_unlock(&ccLock);
- return 0;
+ return 0;
+ }
+ umtx_lock(ccLock());
+
+ if(*cache == NULL) {
+ createCache(cache, status);
+ if(U_FAILURE(status)) {
+ umtx_unlock(ccLock());
+ return 0;
+ }
}
- }
- res = uhash_igeti((*cache)->fTable, key);
- U_DEBUG_ASTRO_MSG(("%p: GET: [%d] == %d\n", (*cache)->fTable, key, res));
+ res = uhash_igeti((*cache)->fTable, key);
+ U_DEBUG_ASTRO_MSG(("%p: GET: [%d] == %d\n", (*cache)->fTable, key, res));
- umtx_unlock(&ccLock);
- return res;
+ umtx_unlock(ccLock());
+ return res;
}
void CalendarCache::put(CalendarCache** cache, int32_t key, int32_t value, UErrorCode &status) {
-
- if(U_FAILURE(status)) {
- return;
- }
- umtx_lock(&ccLock);
-
- if(*cache == NULL) {
- createCache(cache, status);
if(U_FAILURE(status)) {
- umtx_unlock(&ccLock);
- return;
+ return;
+ }
+ umtx_lock(ccLock());
+
+ if(*cache == NULL) {
+ createCache(cache, status);
+ if(U_FAILURE(status)) {
+ umtx_unlock(ccLock());
+ return;
+ }
}
- }
- uhash_iputi((*cache)->fTable, key, value, &status);
- U_DEBUG_ASTRO_MSG(("%p: PUT: [%d] := %d\n", (*cache)->fTable, key, value));
+ uhash_iputi((*cache)->fTable, key, value, &status);
+ U_DEBUG_ASTRO_MSG(("%p: PUT: [%d] := %d\n", (*cache)->fTable, key, value));
- umtx_unlock(&ccLock);
+ umtx_unlock(ccLock());
}
CalendarCache::CalendarCache(int32_t size, UErrorCode &status) {
- fTable = uhash_openSize(uhash_hashLong, uhash_compareLong, size, &status);
- U_DEBUG_ASTRO_MSG(("%p: Opening.\n", fTable));
+ fTable = uhash_openSize(uhash_hashLong, uhash_compareLong, NULL, size, &status);
+ U_DEBUG_ASTRO_MSG(("%p: Opening.\n", fTable));
}
CalendarCache::~CalendarCache() {
- if(fTable != NULL) {
- U_DEBUG_ASTRO_MSG(("%p: Closing.\n", fTable));
- uhash_close(fTable);
- }
+ if(fTable != NULL) {
+ U_DEBUG_ASTRO_MSG(("%p: Closing.\n", fTable));
+ uhash_close(fTable);
+ }
}
U_NAMESPACE_END