{"version":3,"sources":["../../../app/constants/earth.ts","../../../app/constants/epoch.ts","../../../app/constants/moon.ts","../../../app/constants/sun.ts","../../../app/constants/units.ts","../../../app/enums/direction.ts","../../../app/enums/limb.ts","../../../app/constants/math.ts","../../../app/utils/math.ts","../../../app/utils/angle.ts","../../../app/utils/distance.ts","../../../app/utils/sun.ts","../../../app/utils/moon.ts","../../../app/utils/earth.ts","../../../app/utils/apparentPositionCorrections.ts","../../../app/utils/direction.ts","../../location/models/Location.ts","../../time/constants/deltaTReference.ts","../../time/utils/deltaT.ts","../../time/utils/dateTime.ts","../../../app/utils/siderealTime.ts","../../time/models/TimeOfInterest.ts"],"sourcesContent":["export const EARTH_EQUATORIAL_RADIUS_METERS = 6_378_137;\nexport const EARTH_EQUATORIAL_DIAMETER_METERS = 2 * EARTH_EQUATORIAL_RADIUS_METERS;\nexport const EARTH_EQUATORIAL_RADIUS_KM = EARTH_EQUATORIAL_RADIUS_METERS / 1000;\nexport const EARTH_EQUATORIAL_DIAMETER_KM = 2 * EARTH_EQUATORIAL_RADIUS_KM;\n\nexport const EARTH_AXIS_RATIO = 0.996647189335;\n\nexport const EARTH_FLATTENING = 1 - EARTH_AXIS_RATIO;\nexport const EARTH_POLAR_RADIUS_RATIO = 1 - EARTH_FLATTENING;\nexport const ECCENTRICITY_SQUARED = 2 * EARTH_FLATTENING - EARTH_FLATTENING * EARTH_FLATTENING;\n\nexport const EARTH_ROTATION_DEG_PER_HOUR = 1.002738 * 15;\nexport const EARTH_SIDEREAL_ROTATION_PER_DAY = 360.985647;\n\n// Sun's centre altitude at sunrise/sunset: -(34' refraction + 16' semi-diameter). Meeus, chapter 15.\nexport const SUNRISE_SUNSET_ALTITUDE_DEG = -0.8333;\n\nexport const EARTH_ARGUMENTS_OF_NUTATION = [\n    [0, 0, 0, 0, 1, -171996, -174.2, 92025, 8.9],\n    [0, 0, 2, -2, 2, -13187, -1.6, 5736, -3.1],\n    [0, 0, 2, 0, 2, -2274, -0.2, 977, -0.5],\n    [0, 0, 0, 0, 2, 2062, 0.2, -895, 0.5],\n    [0, 1, 0, 0, 0, 1426, -3.4, 54, -0.1],\n    [1, 0, 0, 0, 0, 712, 0.1, -7, 0.0],\n    [0, 1, 2, -2, 2, -517, 1.2, 224, -0.6],\n    [0, 0, 2, 0, 1, -386, -0.4, 200, 0.0],\n    [1, 0, 2, 0, 2, -301, 0.0, 129, -0.1],\n    [0, -1, 2, -2, 2, 217, -0.5, -95, 0.3],\n    [1, 0, 0, -2, 0, -158, 0.0, -1, 0.0],\n    [0, 0, 2, -2, 1, 129, 0.1, -70, 0.0],\n    [-1, 0, 2, 0, 2, 123, 0.0, -53, 0.0],\n    [0, 0, 0, 2, 0, 63, 0.0, -2, 0.0],\n    [1, 0, 0, 0, 1, 63, 0.1, -33, 0.0],\n    [-1, 0, 2, 2, 2, -59, 0.0, 26, 0.0],\n    [-1, 0, 0, 0, 1, -58, -0.1, 32, 0.0],\n    [1, 0, 2, 0, 1, -51, 0.0, 27, 0.0],\n    [2, 0, 0, -2, 0, 48, 0.0, 1, 0.0],\n    [-2, 0, 2, 0, 1, 46, 0.0, -24, 0.0],\n    [0, 0, 2, 2, 2, -38, 0.0, 16, 0.0],\n    [2, 0, 2, 0, 2, -31, 0.0, 13, 0.0],\n    [2, 0, 0, 0, 0, 29, 0.0, -1, 0.0],\n    [1, 0, 2, -2, 2, 29, 0.0, -12, 0.0],\n    [0, 0, 2, 0, 0, 26, 0.0, -1, 0.0],\n    [0, 0, 2, -2, 0, -22, 0.0, 0, 0.0],\n    [-1, 0, 2, 0, 1, 21, 0.0, -10, 0.0],\n    [0, 2, 0, 0, 0, 17, -0.1, 0, 0.0],\n    [0, 2, 2, -2, 2, -16, 0.1, 7, 0.0],\n    [-1, 0, 0, 2, 1, 16, 0.0, -8, 0.0],\n    [0, 1, 0, 0, 1, -15, 0.0, 9, 0.0],\n    [1, 0, 0, -2, 1, -13, 0.0, 7, 0.0],\n    [0, -1, 0, 0, 1, -12, 0.0, 6, 0.0],\n    [2, 0, -2, 0, 0, 11, 0.0, 0, 0.0],\n    [-1, 0, 2, 2, 1, -10, 0.0, 5, 0.0],\n    [1, 0, 2, 2, 2, -8, 0.0, 3, 0.0],\n    [1, 1, 0, -2, 0, -7, 0.0, 0, 0.0],\n    [0, 1, 2, 0, 2, 7, 0.0, -3, 0.0],\n    [0, -1, 2, 0, 2, -7, 0.0, 3, 0.0],\n    [0, 0, 2, 2, 1, -7, 0.0, 3, 0.0],\n    [-2, 0, 0, 2, 1, -6, 0.0, 3, 0.0],\n    [1, 0, 0, 2, 0, 6, 0.0, 0, 0.0],\n    [2, 0, 2, -2, 2, 6, 0.0, -3, 0.0],\n    [0, 0, 0, 2, 1, -6, 0.0, 3, 0.0],\n    [1, 0, 2, -2, 1, 6, 0.0, -3, 0.0],\n    [0, -1, 2, -2, 1, -5, 0.0, 3, 0.0],\n    [0, 0, 0, -2, 1, -5, 0.0, 3, 0.0],\n    [1, -1, 0, 0, 0, 5, 0.0, 0, 0.0],\n    [2, 0, 2, 0, 1, -5, 0.0, 3, 0.0],\n    [2, 0, 0, -2, 1, 4, 0.0, -2, 0.0],\n    [0, 1, 2, -2, 1, 4, 0.0, -2, 0.0],\n    [1, 0, 0, -1, 0, -4, 0.0, 0, 0.0],\n    [0, 1, 0, -2, 0, -4, 0.0, 0, 0.0],\n    [1, 0, -2, 0, 0, 4, 0.0, 0, 0.0],\n    [0, 0, 0, 1, 0, -4, 0.0, 0, 0.0],\n    [-2, 0, 2, 0, 2, -3, 0.0, 1, 0.0],\n    [1, -1, 0, -1, 0, -3, 0.0, 0, 0.0],\n    [1, 1, 0, 0, 0, -3, 0.0, 0, 0.0],\n    [1, 0, 2, 0, 0, 3, 0.0, 0, 0.0],\n    [1, -1, 2, 0, 2, -3, 0.0, 1, 0.0],\n    [-1, -1, 2, 2, 2, -3, 0.0, 1, 0.0],\n    [3, 0, 2, 0, 2, -3, 0.0, 1, 0.0],\n    [0, -1, 2, 2, 2, -3, 0.0, 1, 0.0],\n    [0, -2, 2, -2, 1, -2, 0.0, 1, 0.0],\n    [-2, 0, 0, 0, 1, -2, 0.0, 1, 0.0],\n    [1, 1, 2, 0, 2, 2, 0.0, -1, 0.0],\n    [-1, 0, 2, -2, 1, -2, 0.0, 1, 0.0],\n    [2, 0, 0, 0, 1, 2, 0.0, -1, 0.0],\n    [1, 0, 0, 0, 2, -2, 0.0, 1, 0.0],\n    [3, 0, 0, 0, 0, 2, 0.0, 0, 0.0],\n    [0, 0, 2, 1, 2, 2, 0.0, -1, 0.0],\n    [-1, 0, 2, 4, 2, -2, 0.0, 1, 0.0],\n    [2, 0, -2, 0, 1, 1, 0.0, 0, 0.0],\n    [2, 1, 0, -2, 0, 1, 0.0, 0, 0.0],\n    [0, 0, -2, 2, 1, 1, 0.0, 0, 0.0],\n    [0, 1, -2, 2, 0, -1, 0.0, 0, 0.0],\n    [0, 1, 0, 0, 2, 1, 0.0, 0, 0.0],\n    [-1, 0, 0, 1, 1, 1, 0.0, 0, 0.0],\n    [0, 1, 2, -2, 0, -1, 0.0, 0, 0.0],\n    [-1, 0, 0, 0, 2, 1, 0.0, -1, 0.0],\n    [1, 0, 0, -4, 0, -1, 0.0, 0, 0.0],\n    [-2, 0, 2, 2, 2, 1, 0.0, -1, 0.0],\n    [2, 0, 0, -4, 0, -1, 0.0, 0, 0.0],\n    [1, 1, 2, -2, 2, 1, 0.0, -1, 0.0],\n    [1, 0, 2, 2, 1, -1, 0.0, 1, 0.0],\n    [-2, 0, 2, 4, 2, -1, 0.0, 1, 0.0],\n    [-1, 0, 4, 0, 2, 1, 0.0, 0, 0.0],\n    [1, -1, 0, -2, 0, 1, 0.0, 0, 0.0],\n    [2, 0, 2, -2, 1, 1, 0.0, -1, 0.0],\n    [2, 0, 2, 2, 2, -1, 0.0, 0, 0.0],\n    [1, 0, 0, 2, 1, -1, 0.0, 0, 0.0],\n    [0, 0, 4, -2, 2, 1, 0.0, 0, 0.0],\n    [3, 0, 2, -2, 2, 1, 0.0, 0, 0.0],\n    [1, 0, 2, -2, 0, -1, 0.0, 0, 0.0],\n    [0, 1, 2, 0, 1, 1, 0.0, 0, 0.0],\n    [-1, -1, 0, 2, 1, 1, 0.0, 0, 0.0],\n    [0, 0, -2, 0, 1, -1, 0.0, 0, 0.0],\n    [0, 0, 2, -1, 2, -1, 0.0, 0, 0.0],\n    [0, 1, 0, 2, 0, -1, 0.0, 0, 0.0],\n    [1, 0, -2, -2, 0, -1, 0.0, 0, 0.0],\n    [0, -1, 2, 0, 1, -1, 0.0, 0, 0.0],\n    [1, 1, 0, -2, 1, -1, 0.0, 0, 0.0],\n    [1, 0, -2, 2, 0, -1, 0.0, 0, 0.0],\n    [2, 0, 0, 2, 0, 1, 0.0, 0, 0.0],\n    [0, 0, 2, 4, 2, -1, 0.0, 0, 0.0],\n    [0, 1, 0, 1, 0, 1, 0.0, 0, 0.0],\n];\n","export const EPOCH_J1900 = 2415020.0;\nexport const EPOCH_J1950 = 2433282.5;\nexport const EPOCH_J2000 = 2451545.0;\nexport const EPOCH_J2100 = 2488070.0;\n","export const INCLINATION_OF_MEAN_LUNAR_EQUATOR = 1.54242;\n\n// Source: https://nssdc.gsfc.nasa.gov/planetary/factsheet/\nexport const MOON_DIAMETER_KM = 3474.8;\nexport const MOON_RADIUS_KM = MOON_DIAMETER_KM / 2;\n\nexport const MOON_PHASE_NEW_MOON = 0;\nexport const MOON_PHASE_FIRST_QUARTER = 0.25;\nexport const MOON_PHASE_FULL_MOON = 0.5;\nexport const MOON_PHASE_LAST_QUARTER = 0.75;\n\nexport const MOON_ARGUMENTS_LR = [\n    [0, 0, 1, 0, 6288774, -20905355],\n    [2, 0, -1, 0, 1274027, -3699111],\n    [2, 0, 0, 0, 658314, -2955968],\n    [0, 0, 2, 0, 213618, -569925],\n    [0, 1, 0, 0, -185116, 48888],\n    [0, 0, 0, 2, -114332, -3149],\n    [2, 0, -2, 0, 58793, 246158],\n    [2, -1, -1, 0, 57066, -152138],\n    [2, 0, 1, 0, 53322, -170733],\n    [2, -1, 0, 0, 45758, -204586],\n    [0, 1, -1, 0, -40923, -129620],\n    [1, 0, 0, 0, -34720, 108743],\n    [0, 1, 1, 0, -30383, 104755],\n    [2, 0, 0, -2, 15327, 10321],\n    [0, 0, 1, 2, -12528, 0],\n    [0, 0, 1, -2, 10980, 79661],\n    [4, 0, -1, 0, 10675, -34782],\n    [0, 0, 3, 0, 10034, -23210],\n    [4, 0, -2, 0, 8548, -21636],\n    [2, 1, -1, 0, -7888, 24208],\n    [2, 1, 0, 0, -6766, 30824],\n    [1, 0, -1, 0, -5163, -8379],\n    [1, 1, 0, 0, 4987, -16675],\n    [2, -1, 1, 0, 4036, -12831],\n    [2, 0, 2, 0, 3994, -10445],\n    [4, 0, 0, 0, 3861, -11650],\n    [2, 0, -3, 0, 3665, 14403],\n    [0, 1, -2, 0, -2689, -7003],\n    [2, 0, -1, 2, -2602, 0],\n    [2, -1, -2, 0, 2390, 10056],\n    [1, 0, 1, 0, -2348, 6322],\n    [2, -2, 0, 0, 2236, -9884],\n    [0, 1, 2, 0, -2120, 5751],\n    [0, 2, 0, 0, -2069, 0],\n    [2, -2, -1, 0, 2048, -4950],\n    [2, 0, 1, -2, -1773, 4130],\n    [2, 0, 0, 2, -1595, 0],\n    [4, -1, -1, 0, 1215, -3958],\n    [0, 0, 2, 2, -1110, 0],\n    [3, 0, -1, 0, -892, 3258],\n    [2, 1, 1, 0, -810, 2616],\n    [4, -1, -2, 0, 759, -1897],\n    [0, 2, -1, 0, -713, -2117],\n    [2, 2, -1, 0, -700, 2354],\n    [2, 1, -2, 0, 691, 0],\n    [2, -1, 0, -2, 596, 0],\n    [4, 0, 1, 0, 549, -1423],\n    [0, 0, 4, 0, 537, -1117],\n    [4, -1, 0, 0, 520, -1571],\n    [1, 0, -2, 0, -487, -1739],\n    [2, 1, 0, -2, -399, 0],\n    [0, 0, 2, -2, -381, -4421],\n    [1, 1, 1, 0, 351, 0],\n    [3, 0, -2, 0, -340, 0],\n    [4, 0, -3, 0, 330, 0],\n    [2, -1, 2, 0, 327, 0],\n    [0, 2, 1, 0, -323, 1165],\n    [1, 1, -1, 0, 299, 0],\n    [2, 0, 3, 0, 294, 0],\n    [2, 0, -1, -2, 0, 8752],\n];\n\nexport const MOON_ARGUMENTS_B = [\n    [0, 0, 0, 1, 5128122],\n    [0, 0, 1, 1, 280602],\n    [0, 0, 1, -1, 277693],\n    [2, 0, 0, -1, 173237],\n    [2, 0, -1, 1, 55413],\n    [2, 0, -1, -1, 46271],\n    [2, 0, 0, 1, 32573],\n    [0, 0, 2, 1, 17198],\n    [2, 0, 1, -1, 9266],\n    [0, 0, 2, -1, 8822],\n    [2, -1, 0, -1, 8216],\n    [2, 0, -2, -1, 4324],\n    [2, 0, 1, 1, 4200],\n    [2, 1, 0, -1, -3359],\n    [2, -1, -1, 1, 2463],\n    [2, -1, 0, 1, 2211],\n    [2, -1, -1, -1, 2065],\n    [0, 1, -1, -1, -1870],\n    [4, 0, -1, -1, 1828],\n    [0, 1, 0, 1, -1794],\n    [0, 0, 0, 3, -1749],\n    [0, 1, -1, 1, -1565],\n    [1, 0, 0, 1, -1491],\n    [0, 1, 1, 1, -1475],\n    [0, 1, 1, -1, -1410],\n    [0, 1, 0, -1, -1344],\n    [1, 0, 0, -1, -1335],\n    [0, 0, 3, 1, 1107],\n    [4, 0, 0, -1, 1021],\n    [4, 0, -1, 1, 833],\n    [0, 0, 1, -3, 777],\n    [4, 0, -2, 1, 671],\n    [2, 0, 0, -3, 607],\n    [2, 0, 2, -1, 596],\n    [2, -1, 1, -1, 491],\n    [2, 0, -2, 1, -451],\n    [0, 0, 3, -1, 439],\n    [2, 0, 2, 1, 422],\n    [2, 0, -3, -1, 421],\n    [2, 1, -1, 1, -366],\n    [2, 1, 0, 1, -351],\n    [4, 0, 0, 1, 331],\n    [2, -1, 1, 1, 315],\n    [2, -2, 0, -1, 302],\n    [0, 0, 1, 3, -283],\n    [2, 1, 1, -1, -229],\n    [1, 1, 0, -1, 223],\n    [1, 1, 0, 1, 223],\n    [0, 1, -2, -1, -220],\n    [2, 1, -1, -1, -220],\n    [1, 0, 1, 1, -185],\n    [2, -1, -2, -1, 181],\n    [0, 1, 2, 1, -177],\n    [4, 0, -2, -1, 176],\n    [4, -1, -1, -1, 166],\n    [1, 0, 1, -1, -164],\n    [4, 0, 1, -1, 132],\n    [1, 0, -1, -1, -119],\n    [4, -1, 0, -1, 115],\n    [2, -2, 0, 1, 107],\n];\n","// IAU 2015 nominal solar diameter (Resolution B3)\nexport const SUN_DIAMETER_KM = 1_391_400;\nexport const SUN_RADIUS_KM = SUN_DIAMETER_KM / 2;\n","export const ASTRONOMICAL_UNIT_IN_METERS = 149_597_870_700.0;\nexport const LIGHT_SPEED_KM_PER_SEC = 299_792.458;\n","export enum Direction {\n    North = 'N',\n    NorthNorthEast = 'NNE',\n    NorthEast = 'NE',\n    EastNorthEast = 'ENE',\n    East = 'E',\n    EastSouthEast = 'ESE',\n    SouthEast = 'SE',\n    SouthSouthEast = 'SSE',\n    South = 'S',\n    SouthSouthWest = 'SSW',\n    SouthWest = 'SW',\n    WestSouthWest = 'WSW',\n    West = 'W',\n    WestNorthWest = 'WNW',\n    NorthWest = 'NW',\n    NorthNorthWest = 'NNW',\n}\n","export enum LimbAlignment {\n    UpperLimb = 'upperLimb',\n    Center = 'center',\n    LowerLimb = 'lowerLimb',\n}\n","export const DEG = Math.PI / 180;\nexport const RAD = 180 / Math.PI;\n","export function round(value: number, decimals = 0): number {\n    const p = 10 ** decimals;\n\n    return Math.round(value * p) / p;\n}\n\nexport function pad(num: number | string, size: number): string {\n    let numStr = num.toString();\n\n    while (numStr.length < size) {\n        numStr = `0${numStr}`;\n    }\n\n    return numStr;\n}\n\nexport function sin2(number: number): number {\n    return Math.sin(number) * Math.sin(number);\n}\n\nexport function cos2(number: number): number {\n    return Math.cos(number) * Math.cos(number);\n}\n","import {pad, round} from './math';\n\nexport type AnglePrefixes = {\n    positivePrefix: string;\n    negativePrefix: string;\n};\n\n/**\n * @deprecated use decimal2degreeMinutesSeconds instead\n * @param deg\n * @param short\n */\nexport function deg2angle(deg: number, short = false): string {\n    return decimal2degreeMinutesSeconds(deg, short);\n}\n\nexport function decimal2degreeMinutes(decimal: number, short = false, prefixes?: AnglePrefixes): string {\n    const sign = getSignPrefix(decimal, prefixes);\n\n    decimal = Math.abs(decimal);\n\n    const degPart = Math.floor(decimal);\n    const min = round((decimal - degPart) * 60, 5);\n\n    const degString = `${degPart}° `;\n    const minString = `${pad(min, 2)}'`;\n\n    if (short && degPart === 0.0) {\n        return sign + minString;\n    }\n\n    return sign + degString + minString;\n}\n\nexport function decimal2degreeMinutesSeconds(decimal: number, short = false, prefixes?: AnglePrefixes): string {\n    const sign = getSignPrefix(decimal, prefixes);\n\n    decimal = Math.abs(decimal);\n\n    const degPart = Math.floor(decimal);\n    const min = Math.floor((decimal - degPart) * 60);\n    const sec = round((decimal - degPart - min / 60) * 3600, 3);\n    const secParts = sec.toString().split('.');\n\n    const degString = `${degPart}° `;\n    const minString = `${pad(min, 2)}' `;\n    const secString = `${secParts.length === 1 ? pad(sec, 2) : `${pad(secParts[0], 2)}.${secParts[1]}`}\"`;\n\n    if (short && degPart === 0.0 && min === 0.0) {\n        return sign + secString;\n    }\n\n    if (short && degPart === 0.0) {\n        return sign + minString + secString;\n    }\n\n    return sign + degString + minString + secString;\n}\n\nexport function angle2deg(angle: string): number {\n    const matches = angle.match(/(-?)(\\d+)°.*?(\\d+)'.*?([\\d.]+)\"/);\n\n    if (!matches) {\n        throw new Error('false angle format');\n    }\n\n    const sign = matches[1].trim() === '-' ? -1 : 1;\n    const deg = parseInt(matches[2], 10);\n    const min = parseInt(matches[3], 10);\n    const sec = parseFloat(matches[4]);\n\n    return sign * (deg + min / 60 + sec / 3600);\n}\n\nexport function deg2time(angle: number): string {\n    const sign = angle < 0 ? '-' : '';\n    const time = Math.abs(angle / 15);\n\n    const hour = Math.floor(time);\n    const min = Math.floor((time - hour) * 60);\n    const sec = round((time - hour - min / 60) * 3600, 3);\n    const secParts = sec.toString().split('.');\n\n    const hourString = sign + hour;\n    const minString = pad(min, 2);\n    const secString = secParts.length === 1 ? pad(sec, 2) : `${pad(secParts[0], 2)}.${secParts[1]}`;\n\n    return `${hourString}h ${minString}m ${secString}s`;\n}\n\nexport function time2deg(timeAngle: string): number {\n    const matches = timeAngle.match(/(-?)(\\d+)h.*?(\\d+)m.*?([\\d.]+)s/);\n\n    if (!matches) {\n        throw new Error('false time angle format');\n    }\n\n    const sign = matches[1].trim() === '-' ? -1 : 1;\n    const deg = parseInt(matches[2], 10);\n    const min = parseInt(matches[3], 10);\n    const sec = parseFloat(matches[4]);\n\n    const angleDeg = sign * (deg + min / 60 + sec / 3600);\n\n    return angleDeg * 15;\n}\n\nexport function normalizeAngle(degrees: number, baseAngle = 360.0): number {\n    let angle = degrees % baseAngle;\n\n    if (angle < 0) {\n        angle = angle + baseAngle;\n    }\n\n    return angle;\n}\n\nexport function sec2deg(seconds: number): number {\n    return seconds / 3600;\n}\n\nfunction getSignPrefix(decimal: number, prefixes?: AnglePrefixes): string {\n    if (prefixes) {\n        return decimal < 0 ? prefixes.negativePrefix : prefixes.positivePrefix;\n    }\n\n    return decimal < 0 ? '-' : '';\n}\n","import {DEG} from '@app/constants/math';\nimport {EARTH_EQUATORIAL_RADIUS_METERS, EARTH_FLATTENING} from '../constants/earth';\nimport {ASTRONOMICAL_UNIT_IN_METERS} from '../constants/units';\nimport type {LatLon} from '../types/LocationTypes';\nimport {cos2, sin2} from './math';\n\nexport function au2km(R: number): number {\n    return R * (ASTRONOMICAL_UNIT_IN_METERS / 1000);\n}\n\nexport function km2au(km: number): number {\n    return km / (ASTRONOMICAL_UNIT_IN_METERS / 1000);\n}\n\nexport function getDistanceInKm(location1: LatLon, location2: LatLon): number {\n    const {lat: lat1, lon: lon1} = location1;\n    const {lat: lat2, lon: lon2} = location2;\n\n    // Meeus 11\n    const F = (lat1 + lat2) / 2;\n    const G = (lat1 - lat2) / 2;\n    const lambda = (lon2 - lon1) / 2;\n\n    const FRad = F * DEG;\n    const GRad = G * DEG;\n    const lambdaRad = lambda * DEG;\n\n    const S = sin2(GRad) * cos2(lambdaRad) + cos2(FRad) * sin2(lambdaRad);\n    const C = cos2(GRad) * cos2(lambdaRad) + sin2(FRad) * sin2(lambdaRad);\n\n    const omegaRad = Math.atan(Math.sqrt(S / C));\n\n    const R = Math.sqrt(S * C) / omegaRad;\n    const D = (2 * omegaRad * EARTH_EQUATORIAL_RADIUS_METERS) / 1000;\n    const H1 = (3 * R - 1) / (2 * C);\n    const H2 = (3 * R + 1) / (2 * S);\n\n    return D * (1 + EARTH_FLATTENING * H1 * sin2(FRad) * cos2(GRad) - EARTH_FLATTENING * H2 * cos2(FRad) * sin2(GRad));\n}\n","import {DEG} from '@app/constants/math';\nimport {normalizeAngle} from '@app/utils/angle';\n\nexport function getMeanAnomaly(T: number): number {\n    // Meeus 47.4\n    const M = 357.5291092 + 35999.0502909 * T - 0.0001536 * T ** 2 + T ** 3 / 2449000;\n\n    return normalizeAngle(M);\n}\n\nexport function getTrueAnomaly(T: number): number {\n    // Meeus 25.4\n    const M = getMeanAnomaly(T);\n    const C = getEquationOfCenter(T);\n\n    return M + C;\n}\n\nexport function getMeanLongitude(T: number): number {\n    const t = T / 10;\n\n    // Meeus 28.2\n    const L0 =\n        280.4664567 + 360007.6982779 * t + 0.03042028 * t ** 2 + t ** 3 / 49931 - t ** 4 / 15300 + t ** 5 / 2000000;\n\n    return normalizeAngle(L0);\n}\n\nexport function getTrueLongitude(T: number): number {\n    // Meeus 25.4\n    const L0 = getMeanLongitude(T);\n    const C = getEquationOfCenter(T);\n\n    return L0 + C;\n}\n\nexport function getApparentLongitude(T: number): number {\n    // Meeus 25.5\n    const o = getTrueLongitude(T);\n\n    const omega = 125.04 - 1934.136 * T;\n    const omegaRad = omega * DEG;\n\n    return o - 0.00569 - 0.00478 * Math.sin(omegaRad);\n}\n\nexport function getEquationOfCenter(T: number): number {\n    const M = getMeanAnomaly(T);\n\n    // Meeus 25.4\n    let C = (1.914602 - 0.004817 * T - 0.000014 * T ** 2) * Math.sin(M * DEG);\n    C += (0.019993 - 0.000101 * T) * Math.sin(2 * M * DEG);\n    C += 0.000289 * Math.sin(3 * M * DEG);\n\n    return C;\n}\n","import {DEG, RAD} from '@app/constants/math';\nimport {MOON_ARGUMENTS_B, MOON_ARGUMENTS_LR} from '@app/constants/moon';\nimport {normalizeAngle} from '@app/utils/angle';\nimport {km2au} from '@app/utils/distance';\nimport * as earth from '@app/utils/earth';\nimport * as sun from '@app/utils/sun';\n\nexport function getMeanElongation(T: number): number {\n    // Meeus 47.2\n    const D = 297.8501921 + 445267.1114034 * T - 0.0018819 * T ** 2 + T ** 3 / 545868 - T ** 4 / 113065000;\n\n    return normalizeAngle(D);\n}\n\nexport function getMeanAnomaly(T: number): number {\n    // Meeus 47.2\n    const Mmoon = 134.9633964 + 477198.8675055 * T + 0.0087414 * T ** 2 + T ** 3 / 69699 - T ** 4 / 1471200;\n\n    return normalizeAngle(Mmoon);\n}\n\nexport function getArgumentOfLatitude(T: number): number {\n    // Meeus 47.5\n    const F = 93.272095 + 483202.0175233 * T - 0.0036539 * T ** 2 - T ** 3 / 352600 + T ** 4 / 86331000;\n\n    return normalizeAngle(F);\n}\n\nexport function getMeanLongitude(T: number): number {\n    // Meeus 47.1\n    const L = 218.3164477 + 481267.88123421 * T - 0.0015786 * T ** 2 + T ** 3 / 538841 - T ** 4 / 65194000;\n\n    return normalizeAngle(L);\n}\n\nexport function getMeanLongitudeOfAscendingNode(T: number): number {\n    return 125.0445479 - 1934.1362891 * T + 0.0020754 * T ** 2 + T ** 3 / 467441 - T ** 4 / 60616000;\n}\n\nexport function getEquatorialHorizontalParallax(T: number): number {\n    const d = getDistanceToEarth(T);\n\n    // Meeus 47\n    return Math.asin(6378.14 / d) * RAD;\n}\n\nexport function getLongitude(T: number): number {\n    const L = getMeanLongitude(T);\n    const sumL = getSumL(T);\n\n    return L + sumL / 1000000;\n}\n\nexport function getLatitude(T: number): number {\n    const sumB = getSumB(T);\n\n    return sumB / 1000000;\n}\n\nexport function getRadiusVector(T: number): number {\n    return km2au(getDistanceToEarth(T));\n}\n\nexport function getDistanceToEarth(T: number): number {\n    const sumR = getSumR(T);\n\n    return 385000.56 + sumR / 1000;\n}\n\nfunction getSumR(T: number): number {\n    // Meeus 47.b\n    const D = getMeanElongation(T);\n    const Msun = sun.getMeanAnomaly(T);\n    const Mmoon = getMeanAnomaly(T);\n    const F = getArgumentOfLatitude(T);\n\n    // Action of jupiter\n    const E = 1 - 0.002516 * T - 0.0000074 * T ** 2;\n\n    let sumR = 0;\n    MOON_ARGUMENTS_LR.forEach((args: Array<number>) => {\n        const argD = args[0];\n        const argMsun = args[1];\n        const argMmoon = args[2];\n        const argF = args[3];\n        const argSumR = args[5];\n\n        let tmpSumR = Math.cos((argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F) * DEG);\n\n        switch (argMsun) {\n            case 1:\n            case -1:\n                tmpSumR = tmpSumR * argSumR * E;\n                break;\n            case 2:\n            case -2:\n                tmpSumR = tmpSumR * argSumR * E * E;\n                break;\n            default:\n                tmpSumR = tmpSumR * argSumR;\n                break;\n        }\n\n        sumR += tmpSumR;\n    });\n\n    return sumR;\n}\n\nfunction getSumL(T: number): number {\n    // Meeus 47.b\n    const L = getMeanLongitude(T);\n    const D = getMeanElongation(T);\n    const Msun = sun.getMeanAnomaly(T);\n    const Mmoon = getMeanAnomaly(T);\n    const F = getArgumentOfLatitude(T);\n\n    // Action of venus\n    const A1 = 119.75 + 131.849 * T;\n    // Action of jupiter\n    const A2 = 53.09 + 479264.29 * T;\n    const E = 1 - 0.002516 * T - 0.0000074 * T ** 2;\n\n    let sumL = 3958 * Math.sin(A1 * DEG) + 1962 * Math.sin((L - F) * DEG) + 318 * Math.sin(A2 * DEG);\n\n    MOON_ARGUMENTS_LR.forEach((args: Array<number>) => {\n        const argD = args[0];\n        const argMsun = args[1];\n        const argMmoon = args[2];\n        const argF = args[3];\n        const argSumL = args[4];\n\n        let tmpSumL = Math.sin((argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F) * DEG);\n\n        switch (argMsun) {\n            case 1:\n            case -1:\n                tmpSumL = tmpSumL * argSumL * E;\n                break;\n            case 2:\n            case -2:\n                tmpSumL = tmpSumL * argSumL * E * E;\n                break;\n            default:\n                tmpSumL = tmpSumL * argSumL;\n                break;\n        }\n\n        sumL += tmpSumL;\n    });\n\n    return sumL;\n}\n\nfunction getSumB(T: number): number {\n    // Meeus 47.B\n    const L = getMeanLongitude(T);\n    const D = getMeanElongation(T);\n    const Msun = sun.getMeanAnomaly(T);\n    const Mmoon = getMeanAnomaly(T);\n    const F = getArgumentOfLatitude(T);\n\n    // Action of venus\n    const A1 = 119.75 + 131.849 * T;\n    // Action of jupiter\n    const A3 = 313.45 + 481266.484 * T;\n    const E = 1 - 0.002516 * T - 0.0000074 * T ** 2;\n\n    let sumB =\n        -2235 * Math.sin(L * DEG)\n        + 382 * Math.sin(A3 * DEG)\n        + 175 * Math.sin((A1 - F) * DEG)\n        + 175 * Math.sin((A1 + F) * DEG)\n        + 127 * Math.sin((L - Mmoon) * DEG)\n        - 115 * Math.sin((L + Mmoon) * DEG);\n\n    MOON_ARGUMENTS_B.forEach((args: Array<number>) => {\n        const argD = args[0];\n        const argMsun = args[1];\n        const argMmoon = args[2];\n        const argF = args[3];\n        const argSumB = args[4];\n\n        let tmpSumB = Math.sin((argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F) * DEG);\n\n        switch (argMsun) {\n            case 1:\n            case -1:\n                tmpSumB = tmpSumB * argSumB * E;\n                break;\n            case 2:\n            case -2:\n                tmpSumB = tmpSumB * argSumB * E ** 2;\n                break;\n            default:\n                tmpSumB = tmpSumB * argSumB;\n                break;\n        }\n\n        sumB += tmpSumB;\n    });\n\n    return sumB;\n}\n\nexport function getOpticalLiberationInLongitude(longitude: number, latitude: number, T: number): number {\n    const latRad = latitude * DEG;\n\n    const i = 1.54242;\n    const iRad = i * DEG;\n\n    const phi = earth.getNutationInLongitude(T);\n    const F = getArgumentOfLatitude(T);\n    const Omega = getMeanLongitudeOfAscendingNode(T);\n\n    // Meeus 53.1\n    const W = normalizeAngle(longitude - phi - Omega);\n    const WRad = W * DEG;\n\n    const ARad = Math.atan2(\n        Math.sin(WRad) * Math.cos(latRad) * Math.cos(iRad) - Math.sin(latRad) * Math.sin(iRad),\n        Math.cos(WRad) * Math.cos(latRad),\n    );\n    const A = normalizeAngle(ARad * RAD);\n\n    return A - F;\n}\n\nexport function getOpticalLiberationInLatitude(longitude: number, latitude: number, T: number): number {\n    const latRad = latitude * DEG;\n\n    const i = 1.54242;\n    const iRad = i * DEG;\n\n    const phi = earth.getNutationInLongitude(T);\n    const Omega = getMeanLongitudeOfAscendingNode(T);\n\n    // Meeus 53.1\n    const W = normalizeAngle(longitude - phi - Omega);\n    const WRad = W * DEG;\n\n    const bRad = Math.asin(-1 * Math.sin(WRad) * Math.cos(latRad) * Math.sin(iRad) - Math.sin(latRad) * Math.cos(iRad));\n\n    return bRad * RAD;\n}\n","import {EARTH_ARGUMENTS_OF_NUTATION} from '@app/constants/earth';\nimport {DEG} from '@app/constants/math';\nimport {normalizeAngle} from '@app/utils/angle';\nimport * as moon from '@app/utils/moon';\nimport * as sun from '@app/utils/sun';\n\nexport function getMeanAnomaly(T: number): number {\n    // Meeus 47.4\n    const M = 357.5291092 + 35999.0502909 * T - 0.0001536 * T ** 2 + T ** 3 / 2449000;\n\n    return normalizeAngle(M);\n}\n\nexport function getEccentricity(T: number): number {\n    // Meeus 25.4\n    return 0.016708634 - 0.000042037 * T - 0.0000001267 * T ** 2;\n}\n\nexport function getLongitudeOfPerihelionOfOrbit(T: number): number {\n    // Meeus 23\n    return 102.93735 + 1.71946 * T + 0.00046 * T ** 2;\n}\n\nexport function getMeanObliquityOfEcliptic(T: number): number {\n    const U = T / 100;\n\n    // Meeus 22.3\n    const eps0 =\n        84381.448\n        - 4680.93 * U\n        - 1.55 * U ** 2\n        + 1999.25 * U ** 3\n        - 51.38 * U ** 4\n        - 249.67 * U ** 5\n        - 39.05 * U ** 6\n        + 7.12 * U ** 7\n        + 27.87 * U ** 8\n        + 5.79 * U ** 9\n        + 2.45 * U ** 10;\n\n    return eps0 / 3600;\n}\n\nexport function getTrueObliquityOfEcliptic(T: number): number {\n    const eps0 = getMeanObliquityOfEcliptic(T);\n    const sumEps = getNutationInObliquity(T);\n\n    // Meeus chapter 22\n    return eps0 + sumEps;\n}\n\nexport function getNutationInLongitude(T: number): number {\n    // Meeus chapter 22\n    const D = moon.getMeanElongation(T);\n    const Msun = sun.getMeanAnomaly(T);\n    const Mmoon = moon.getMeanAnomaly(T);\n    const F = moon.getArgumentOfLatitude(T);\n\n    // Longitude of the ascending node of moon's mean orbit on ecliptic\n    const O = 125.04452 - 1934.136261 * T + 0.0020708 * T ** 2 + T ** 3 / 450000;\n\n    let sumPhi = 0;\n    EARTH_ARGUMENTS_OF_NUTATION.forEach((args) => {\n        const argMmoon = args[0]; // Mean anomaly of moon\n        const argMsun = args[1]; // Mean anomaly of sun\n        const argF = args[2]; // Mean argument of perigee\n        const argD = args[3]; // Mean elongation of moon\n        const argO = args[4]; // Mean length of ascending knot of moon's orbit\n        const argPhi1 = args[5];\n        const argPhi2 = args[6];\n\n        const tmpSum = argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F + argO * O;\n\n        sumPhi += Math.sin(tmpSum * DEG) * (argPhi1 + argPhi2 * T);\n    });\n\n    return (sumPhi * 0.0001) / 3600;\n}\n\nexport function getNutationInObliquity(T: number): number {\n    // Meeus chapter 22\n    const D = moon.getMeanElongation(T);\n    const Msun = sun.getMeanAnomaly(T);\n    const Mmoon = moon.getMeanAnomaly(T);\n    const F = moon.getArgumentOfLatitude(T);\n\n    // Longitude of the ascending node of moon's mean orbit on ecliptic\n    const O = 125.04452 - 1934.136261 * T + 0.0020708 * T ** 2 + T ** 3 / 450000;\n\n    let sumEps = 0;\n    EARTH_ARGUMENTS_OF_NUTATION.forEach((args) => {\n        const argMmoon = args[0]; // Mean anomaly of moon\n        const argMsun = args[1]; // Mean anomaly of sun\n        const argF = args[2]; // Mean argument of perigee\n        const argD = args[3]; // Mean elongation of moon\n        const argO = args[4]; // Mean length of ascending knot of moon's orbit\n        const argEps1 = args[7];\n        const argEps2 = args[8];\n\n        const tmpSum = argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F + argO * O;\n\n        sumEps += Math.cos(tmpSum * DEG) * (argEps1 + argEps2 * T);\n    });\n\n    return (sumEps * 0.0001) / 3600;\n}\n","import {DEG} from '@app/constants/math';\nimport {sec2deg} from '@app/utils/angle';\nimport * as earth from '@app/utils/earth';\nimport * as sun from '@app/utils/sun';\nimport type {EclipticSphericalCoordinates} from '../types/CoordinateTypes';\n\nexport function getLightTimeCorrectedJulianDay(jd: number, d: number): number {\n    // Meeus 33.3\n    const theta = 0.0057755183 * d;\n\n    return jd - theta;\n}\n\nexport function correctEffectOfNutation(coords: EclipticSphericalCoordinates, T: number): EclipticSphericalCoordinates {\n    const phi = earth.getNutationInLongitude(T);\n\n    return {\n        lon: coords.lon + phi,\n        lat: coords.lat,\n        radiusVector: coords.radiusVector,\n    };\n}\n\nexport function correctEffectOfAberration(\n    coords: EclipticSphericalCoordinates,\n    T: number,\n): EclipticSphericalCoordinates {\n    // TODO Better formula with Ron-Vondrak expression\n    const lonSun = sun.getTrueLongitude(T);\n    const e = earth.getEccentricity(T);\n    const pi = earth.getLongitudeOfPerihelionOfOrbit(T);\n    const k = sec2deg(20.49552);\n\n    const lonRad = coords.lon * DEG;\n    const latRad = coords.lat * DEG;\n    const lonSunRad = lonSun * DEG;\n    const piRad = pi * DEG;\n\n    const dLon = (-1 * k * Math.cos(lonSunRad - lonRad) + e * k * Math.cos(piRad - lonRad)) / Math.cos(latRad);\n    const dLat = -1 * k * Math.sin(latRad) * (Math.sin(lonSunRad - lonRad) - e * Math.sin(piRad - lonRad));\n\n    return {\n        lon: coords.lon + dLon,\n        lat: coords.lat + dLat,\n        radiusVector: coords.radiusVector,\n    };\n}\n\nexport function correctEffectOfRefraction(altitude: number): number {\n    if (altitude < -5) {\n        return altitude;\n    }\n\n    // Meeus 16.4\n    const R = 1.02 / Math.tan((altitude + 10.3 / (altitude + 5.11)) * DEG);\n\n    return altitude + R / 60;\n}\n","import {Direction} from '../enums/direction';\n\nexport function azimuth2direction(azimuth: number): Direction {\n    const normalized = ((azimuth % 360) + 360) % 360;\n    const sectors: Direction[] = [\n        Direction.North,\n        Direction.NorthNorthEast,\n        Direction.NorthEast,\n        Direction.EastNorthEast,\n        Direction.East,\n        Direction.EastSouthEast,\n        Direction.SouthEast,\n        Direction.SouthSouthEast,\n        Direction.South,\n        Direction.SouthSouthWest,\n        Direction.SouthWest,\n        Direction.WestSouthWest,\n        Direction.West,\n        Direction.WestNorthWest,\n        Direction.NorthWest,\n        Direction.NorthNorthWest,\n    ];\n    const index = Math.floor((normalized + 11.25) / 22.5) % sectors.length;\n\n    return sectors[index];\n}\n","import {decimal2degreeMinutes, decimal2degreeMinutesSeconds} from '@app/utils/angle';\nimport {getDistanceInKm} from '@app/utils/distance';\nimport type {Location as LocationType} from '../types/LocationTypes';\n\nexport default class Location implements LocationType {\n    private prefixesNorthSouth = {positivePrefix: 'N ', negativePrefix: 'S '};\n\n    private prefixesEastWest = {positivePrefix: 'E ', negativePrefix: 'W '};\n\n    public constructor(\n        public readonly lat: number,\n        public readonly lon: number,\n        public readonly elevation: number = 0,\n    ) {}\n\n    public static create(lat: number, lon: number, elevation = 0): Location {\n        return new Location(lat, lon, elevation);\n    }\n\n    public getLatitude(): number {\n        return this.lat;\n    }\n\n    public getLongitude(): number {\n        return this.lon;\n    }\n\n    public getElevation(): number {\n        return this.elevation;\n    }\n\n    public getLatitudeInDegreeMinutes(): string {\n        return decimal2degreeMinutes(this.lat, false, this.prefixesNorthSouth);\n    }\n\n    public getLongitudeInDegreeMinutes(): string {\n        return decimal2degreeMinutes(this.lon, false, this.prefixesEastWest);\n    }\n\n    public getLatitudeInDegreeMinutesSeconds(): string {\n        return decimal2degreeMinutesSeconds(this.lat, false, this.prefixesNorthSouth);\n    }\n\n    public getLongitudeInDegreeMinutesSeconds(): string {\n        return decimal2degreeMinutesSeconds(this.lon, false, this.prefixesEastWest);\n    }\n\n    public getDistanceToInKm(location: Location): number {\n        return getDistanceInKm(this, location);\n    }\n}\n","// Observed and predicted ΔT (TT − UT1) in seconds as [decimalYear, ΔT] nodes, sorted by year.\n// The decimal year of each observed monthly value is its start-of-month instant, so intra-year\n// (monthly) queries interpolate between the true data points instead of between yearly averages.\n// 1657.0-1972.5 historic (½-yearly):  https://maia.usno.navy.mil/ser7/historic_deltat.data\n// 1973.1-2026.2 observed (monthly):   https://maia.usno.navy.mil/ser7/deltat.data\n// 2026.5-2033.8 predicted (¼-yearly): https://maia.usno.navy.mil/ser7/deltat.preds\n// biome-ignore format: dense data table, kept compact for readability\nexport const REFERENCE_DELTA_T: Array<[number, number]> = [\n    [1657, 44], [1657.5, 43], [1658, 43], [1658.5, 41], [1659, 40], [1659.5, 39],\n    [1660, 38], [1660.5, 37], [1661, 37], [1661.5, 36], [1662, 36], [1662.5, 36],\n    [1663, 37], [1663.5, 37], [1664, 38], [1664.5, 37], [1665, 36], [1665.5, 36],\n    [1666, 35], [1666.5, 35], [1667, 34], [1667.5, 33], [1668, 33], [1668.5, 32],\n    [1669, 32], [1669.5, 31], [1670, 31], [1670.5, 30], [1671, 30], [1671.5, 29],\n    [1672, 29], [1672.5, 29], [1673, 29], [1673.5, 29], [1674, 28], [1674.5, 28],\n    [1675, 27], [1675.5, 27], [1676, 26], [1676.5, 26], [1677, 25], [1677.5, 25],\n    [1678, 25], [1678.5, 26], [1679, 26], [1679.5, 26], [1680, 26], [1680.5, 25],\n    [1681, 25], [1681.5, 25], [1682, 24], [1682.5, 24], [1683, 24], [1683.5, 24],\n    [1684, 24], [1684.5, 24], [1685, 24], [1685.5, 24], [1686, 24], [1686.5, 24],\n    [1687, 23], [1687.5, 23], [1688, 23], [1688.5, 23], [1689, 22], [1689.5, 22],\n    [1690, 22], [1690.5, 22], [1691, 22], [1691.5, 21], [1692, 21], [1692.5, 21],\n    [1693, 21], [1693.5, 21], [1694, 21], [1694.5, 21], [1695, 21], [1695.5, 20],\n    [1696, 20], [1696.5, 20], [1697, 20], [1697.5, 20], [1698, 20], [1698.5, 20],\n    [1699, 20], [1699.5, 20], [1700, 21], [1700.5, 21], [1701, 21], [1701.5, 20],\n    [1702, 20], [1702.5, 20], [1703, 20], [1703.5, 20], [1704, 19], [1704.5, 19],\n    [1705, 19], [1705.5, 19], [1706, 19], [1706.5, 20], [1707, 20], [1707.5, 20],\n    [1708, 20], [1708.5, 19], [1709, 20], [1709.5, 20], [1710, 20], [1710.5, 20],\n    [1711, 20], [1711.5, 20], [1712, 21], [1712.5, 21], [1713, 21], [1713.5, 21],\n    [1714, 21], [1714.5, 21], [1715, 21], [1715.5, 21], [1716, 21], [1716.5, 21],\n    [1717, 21], [1717.5, 21], [1718, 21], [1718.5, 21], [1719, 21], [1719.5, 21],\n    [1720, 21.1], [1720.5, 21], [1721, 21], [1721.5, 21], [1722, 20.9], [1722.5, 20.8],\n    [1723, 20.7], [1723.5, 20.6], [1724, 20.4], [1724.5, 20.2], [1725, 20], [1725.5, 19.7],\n    [1726, 19.4], [1726.5, 19.1], [1727, 18.7], [1727.5, 18.3], [1728, 17.8], [1728.5, 17.4],\n    [1729, 17], [1729.5, 16.8], [1730, 16.6], [1730.5, 16.4], [1731, 16.1], [1731.5, 15.9],\n    [1732, 15.7], [1732.5, 15.5], [1733, 15.3], [1733.5, 15], [1734, 14.7], [1734.5, 14.5],\n    [1735, 14.3], [1735.5, 14.2], [1736, 14.1], [1736.5, 14.1], [1737, 14.1], [1737.5, 13.9],\n    [1738, 13.7], [1738.5, 13.6], [1739, 13.5], [1739.5, 13.5], [1740, 13.5], [1740.5, 13.5],\n    [1741, 13.4], [1741.5, 13.4], [1742, 13.4], [1742.5, 13.4], [1743, 13.3], [1743.5, 13.3],\n    [1744, 13.2], [1744.5, 13.2], [1745, 13.2], [1745.5, 13.1], [1746, 13.1], [1746.5, 13.1],\n    [1747, 13], [1747.5, 13.2], [1748, 13.3], [1748.5, 13.4], [1749, 13.5], [1749.5, 13.6],\n    [1750, 13.7], [1750.5, 13.8], [1751, 13.9], [1751.5, 14], [1752, 14], [1752.5, 14.1],\n    [1753, 14.1], [1753.5, 14.1], [1754, 14.1], [1754.5, 14.2], [1755, 14.3], [1755.5, 14.4],\n    [1756, 14.4], [1756.5, 14.5], [1757, 14.6], [1757.5, 14.6], [1758, 14.7], [1758.5, 14.7],\n    [1759, 14.7], [1759.5, 14.8], [1760, 14.8], [1760.5, 14.9], [1761, 14.9], [1761.5, 15],\n    [1762, 15], [1762.5, 15.1], [1763, 15.2], [1763.5, 15.3], [1764, 15.4], [1764.5, 15.5],\n    [1765, 15.6], [1765.5, 15.6], [1766, 15.6], [1766.5, 15.8], [1767, 15.9], [1767.5, 15.9],\n    [1768, 15.9], [1768.5, 15.8], [1769, 15.7], [1769.5, 15.8], [1770, 15.7], [1770.5, 15.7],\n    [1771, 15.7], [1771.5, 15.8], [1772, 15.9], [1772.5, 16.1], [1773, 16.1], [1773.5, 16],\n    [1774, 15.9], [1774.5, 15.9], [1775, 15.7], [1775.5, 15.4], [1776, 15.3], [1776.5, 15.4],\n    [1777, 15.5], [1777.5, 15.6], [1778, 15.6], [1778.5, 15.6], [1779, 15.6], [1779.5, 15.6],\n    [1780, 15.6], [1780.5, 15.6], [1781, 15.5], [1781.5, 15.5], [1782, 15.4], [1782.5, 15.3],\n    [1783, 15.2], [1783.5, 15.1], [1784, 14.9], [1784.5, 14.8], [1785, 14.6], [1785.5, 14.4],\n    [1786, 14.3], [1786.5, 14.2], [1787, 14.1], [1787.5, 14.2], [1788, 14.2], [1788.5, 13.9],\n    [1789, 13.7], [1789.5, 13.5], [1790, 13.3], [1790.5, 13.1], [1791, 13], [1791.5, 13.2],\n    [1792, 13.2], [1792.5, 13.1], [1793, 13.1], [1793.5, 13.2], [1794, 13.3], [1794.5, 13.5],\n    [1795, 13.5], [1795.5, 13.4], [1796, 13.2], [1796.5, 13.2], [1797, 13.1], [1797.5, 13.1],\n    [1798, 13], [1798.5, 12.8], [1799, 12.6], [1799.5, 12.7], [1800, 12.6], [1800.5, 12.3],\n    [1801, 12], [1801.5, 11.9], [1802, 11.8], [1802.5, 11.6], [1803, 11.4], [1803.5, 11.2],\n    [1804, 11.1], [1804.5, 11.1], [1805, 11.1], [1805.5, 11.1], [1806, 11.1], [1806.5, 11.2],\n    [1807, 11.1], [1807.5, 11.1], [1808, 11.2], [1808.5, 11.4], [1809, 11.5], [1809.5, 11.3],\n    [1810, 11.2], [1810.5, 11.4], [1811, 11.7], [1811.5, 11.9], [1812, 11.9], [1812.5, 11.9],\n    [1813, 11.8], [1813.5, 11.7], [1814, 11.8], [1814.5, 11.8], [1815, 11.8], [1815.5, 11.7],\n    [1816, 11.6], [1816.5, 11.6], [1817, 11.5], [1817.5, 11.5], [1818, 11.4], [1818.5, 11.4],\n    [1819, 11.3], [1819.5, 11.3], [1820, 11.13], [1820.5, 11.16], [1821, 10.94], [1821.5, 10.72],\n    [1822, 10.29], [1822.5, 10.04], [1823, 9.94], [1823.5, 9.91], [1824, 9.88], [1824.5, 9.86],\n    [1825, 9.72], [1825.5, 9.67], [1826, 9.66], [1826.5, 9.64], [1827, 9.51], [1827.5, 9.4],\n    [1828, 9.21], [1828.5, 9], [1829, 8.6], [1829.5, 8.29], [1830, 7.95], [1830.5, 7.73],\n    [1831, 7.59], [1831.5, 7.49], [1832, 7.36], [1832.5, 7.26], [1833, 7.1], [1833.5, 7],\n    [1834, 6.89], [1834.5, 6.82], [1835, 6.73], [1835.5, 6.64], [1836, 6.39], [1836.5, 6.28],\n    [1837, 6.25], [1837.5, 6.27], [1838, 6.25], [1838.5, 6.27], [1839, 6.22], [1839.5, 6.24],\n    [1840, 6.22], [1840.5, 6.27], [1841, 6.3], [1841.5, 6.36], [1842, 6.35], [1842.5, 6.37],\n    [1843, 6.32], [1843.5, 6.33], [1844, 6.33], [1844.5, 6.37], [1845, 6.37], [1845.5, 6.41],\n    [1846, 6.4], [1846.5, 6.44], [1847, 6.46], [1847.5, 6.51], [1848, 6.48], [1848.5, 6.51],\n    [1849, 6.53], [1849.5, 6.58], [1850, 6.55], [1850.5, 6.61], [1851, 6.69], [1851.5, 6.8],\n    [1852, 6.84], [1852.5, 6.94], [1853, 7.03], [1853.5, 7.13], [1854, 7.15], [1854.5, 7.22],\n    [1855, 7.26], [1855.5, 7.3], [1856, 7.23], [1856.5, 7.22], [1857, 7.21], [1857.5, 7.2],\n    [1858, 6.99], [1858.5, 6.98], [1859, 7.19], [1859.5, 7.36], [1860, 7.35], [1860.5, 7.39],\n    [1861, 7.41], [1861.5, 7.45], [1862, 7.36], [1862.5, 7.18], [1863, 6.95], [1863.5, 6.72],\n    [1864, 6.45], [1864.5, 6.24], [1865, 5.92], [1865.5, 5.59], [1866, 5.15], [1866.5, 4.67],\n    [1867, 4.11], [1867.5, 3.52], [1868, 2.94], [1868.5, 2.47], [1869, 1.97], [1869.5, 1.52],\n    [1870, 1.04], [1870.5, 0.6], [1871, 0.11], [1871.5, -0.34], [1872, -0.82], [1872.5, -1.25],\n    [1873, -1.7], [1873.5, -2.08], [1874, -2.48], [1874.5, -2.82], [1875, -3.19], [1875.5, -3.5],\n    [1876, -3.84], [1876.5, -4.14], [1877, -4.43], [1877.5, -4.59], [1878, -4.79], [1878.5, -4.92],\n    [1879, -5.09], [1879.5, -5.24], [1880, -5.36], [1880.5, -5.34], [1881, -5.37], [1881.5, -5.32],\n    [1882, -5.34], [1882.5, -5.33], [1883, -5.4], [1883.5, -5.47], [1884, -5.58], [1884.5, -5.66],\n    [1885, -5.74], [1885.5, -5.68], [1886, -5.69], [1886.5, -5.65], [1887, -5.67], [1887.5, -5.68],\n    [1888, -5.73], [1888.5, -5.72], [1889, -5.78], [1889.5, -5.79], [1890, -5.86], [1890.5, -5.89],\n    [1891, -6.01], [1891.5, -6.13], [1892, -6.28], [1892.5, -6.41], [1893, -6.53], [1893.5, -6.49],\n    [1894, -6.5], [1894.5, -6.45], [1895, -6.41], [1895.5, -6.26], [1896, -6.11], [1896.5, -5.9],\n    [1897, -5.63], [1897.5, -5.13], [1898, -4.68], [1898.5, -4.19], [1899, -3.72], [1899.5, -3.21],\n    [1900, -2.7], [1900.5, -2.09], [1901, -1.48], [1901.5, -0.75], [1902, -0.08], [1902.5, 0.62],\n    [1903, 1.26], [1903.5, 1.95], [1904, 2.59], [1904.5, 3.28], [1905, 3.92], [1905.5, 4.61],\n    [1906, 5.2], [1906.5, 5.73], [1907, 6.29], [1907.5, 7], [1908, 7.68], [1908.5, 8.45],\n    [1909, 9.13], [1909.5, 9.78], [1910, 10.38], [1910.5, 10.99], [1911, 11.64], [1911.5, 12.47],\n    [1912, 13.23], [1912.5, 14], [1913, 14.69], [1913.5, 15.38], [1914, 16], [1914.5, 16.64],\n    [1915, 17.19], [1915.5, 17.72], [1916, 18.19], [1916.5, 18.67], [1917, 19.13], [1917.5, 19.69],\n    [1918, 20.14], [1918.5, 20.54], [1919, 20.86], [1919.5, 21.14], [1920, 21.41], [1920.5, 21.78],\n    [1921, 22.06], [1921.5, 22.3], [1922, 22.51], [1922.5, 22.79], [1923, 23.01], [1923.5, 23.29],\n    [1924, 23.46], [1924.5, 23.55], [1925, 23.63], [1925.5, 23.8], [1926, 23.95], [1926.5, 24.25],\n    [1927, 24.39], [1927.5, 24.42], [1928, 24.34], [1928.5, 24.22], [1929, 24.1], [1929.5, 24.08],\n    [1930, 24.02], [1930.5, 24.04], [1931, 23.98], [1931.5, 23.91], [1932, 23.89], [1932.5, 23.95],\n    [1933, 23.93], [1933.5, 23.92], [1934, 23.88], [1934.5, 23.94], [1935, 23.91], [1935.5, 23.82],\n    [1936, 23.76], [1936.5, 23.87], [1937, 23.91], [1937.5, 23.95], [1938, 23.96], [1938.5, 24],\n    [1939, 24.04], [1939.5, 24.2], [1940, 24.35], [1940.5, 24.61], [1941, 24.82], [1941.5, 25.09],\n    [1942, 25.3], [1942.5, 25.56], [1943, 25.77], [1943.5, 26.05], [1944, 26.27], [1944.5, 26.54],\n    [1945, 26.76], [1945.5, 27.04], [1946, 27.27], [1946.5, 27.55], [1947, 27.77], [1947.5, 28.03],\n    [1948, 28.25], [1948.5, 28.5], [1949, 28.7], [1949.5, 28.95], [1950, 29.15], [1950.5, 29.38],\n    [1951, 29.57], [1951.5, 29.8], [1952, 29.97], [1952.5, 30.19], [1953, 30.36], [1953.5, 30.57],\n    [1954, 30.72], [1954.5, 30.93], [1955, 31.07], [1955.5, 31.24], [1956, 31.349], [1956.5, 31.516],\n    [1957, 31.677], [1957.5, 31.923], [1958, 32.166], [1958.5, 32.449], [1959, 32.671], [1959.5, 32.919],\n    [1960, 33.15], [1960.5, 33.397], [1961, 33.584], [1961.5, 33.804], [1962, 33.992], [1962.5, 34.24],\n    [1963, 34.466], [1963.5, 34.731], [1964, 35.03], [1964.5, 35.4], [1965, 35.738], [1965.5, 36.147],\n    [1966, 36.546], [1966.5, 36.995], [1967, 37.429], [1967.5, 37.879], [1968, 38.291], [1968.5, 38.753],\n    [1969, 39.204], [1969.5, 39.707], [1970, 40.182], [1970.5, 40.706], [1971, 41.17], [1971.5, 41.686],\n    [1972, 42.227], [1972.5, 42.825], [1973, 43.373], [1973.0833, 43.4724], [1973.1667, 43.5648], [1973.25, 43.6737],\n    [1973.3333, 43.7782], [1973.4167, 43.8763], [1973.5, 43.9562], [1973.5833, 44.0315], [1973.6667, 44.1132], [1973.75, 44.1982],\n    [1973.8333, 44.2952], [1973.9167, 44.3936], [1974, 44.4841], [1974.0833, 44.5646], [1974.1667, 44.6425], [1974.25, 44.7386],\n    [1974.3333, 44.837], [1974.4167, 44.9302], [1974.5, 44.9986], [1974.5833, 45.0584], [1974.6667, 45.1284], [1974.75, 45.2064],\n    [1974.8333, 45.298], [1974.9167, 45.3897], [1975, 45.4761], [1975.0833, 45.5632], [1975.1667, 45.645], [1975.25, 45.7375],\n    [1975.3333, 45.8284], [1975.4167, 45.9133], [1975.5, 45.982], [1975.5833, 46.0407], [1975.6667, 46.1067], [1975.75, 46.1825],\n    [1975.8333, 46.2789], [1975.9167, 46.3713], [1976, 46.4567], [1976.0833, 46.5445], [1976.1667, 46.6311], [1976.25, 46.7302],\n    [1976.3333, 46.8284], [1976.4167, 46.9247], [1976.5, 46.997], [1976.5833, 47.0709], [1976.6667, 47.1451], [1976.75, 47.2362],\n    [1976.8333, 47.3413], [1976.9167, 47.4319], [1977, 47.5214], [1977.0833, 47.6049], [1977.1667, 47.6837], [1977.25, 47.7781],\n    [1977.3333, 47.8771], [1977.4167, 47.9687], [1977.5, 48.0348], [1977.5833, 48.0942], [1977.6667, 48.1608], [1977.75, 48.246],\n    [1977.8333, 48.3439], [1977.9167, 48.4355], [1978, 48.5344], [1978.0833, 48.6325], [1978.1667, 48.7294], [1978.25, 48.8365],\n    [1978.3333, 48.9353], [1978.4167, 49.0319], [1978.5, 49.1013], [1978.5833, 49.1591], [1978.6667, 49.2286], [1978.75, 49.307],\n    [1978.8333, 49.4018], [1978.9167, 49.4945], [1979, 49.5861], [1979.0833, 49.6805], [1979.1667, 49.7602], [1979.25, 49.8556],\n    [1979.3333, 49.9489], [1979.4167, 50.0347], [1979.5, 50.1019], [1979.5833, 50.1622], [1979.6667, 50.226], [1979.75, 50.2968],\n    [1979.8333, 50.3831], [1979.9167, 50.4599], [1980, 50.5387], [1980.0833, 50.616], [1980.1667, 50.6866], [1980.25, 50.7658],\n    [1980.3333, 50.8454], [1980.4167, 50.9187], [1980.5, 50.9761], [1980.5833, 51.0278], [1980.6667, 51.0843], [1980.75, 51.1538],\n    [1980.8333, 51.2319], [1980.9167, 51.3063], [1981, 51.3808], [1981.0833, 51.4526], [1981.1667, 51.516], [1981.25, 51.5985],\n    [1981.3333, 51.6809], [1981.4167, 51.7573], [1981.5, 51.8133], [1981.5833, 51.8532], [1981.6667, 51.9014], [1981.75, 51.9603],\n    [1981.8333, 52.0328], [1981.9167, 52.0985], [1982, 52.1668], [1982.0833, 52.2316], [1982.1667, 52.2938], [1982.25, 52.368],\n    [1982.3333, 52.4465], [1982.4167, 52.518], [1982.5, 52.5751], [1982.5833, 52.6178], [1982.6667, 52.6668], [1982.75, 52.734],\n    [1982.8333, 52.8056], [1982.9167, 52.8792], [1983, 52.9565], [1983.0833, 53.0445], [1983.1667, 53.1268], [1983.25, 53.2197],\n    [1983.3333, 53.3024], [1983.4167, 53.3747], [1983.5, 53.4335], [1983.5833, 53.4778], [1983.6667, 53.53], [1983.75, 53.5845],\n    [1983.8333, 53.6523], [1983.9167, 53.7256], [1984, 53.7882], [1984.0833, 53.8367], [1984.1667, 53.883], [1984.25, 53.9443],\n    [1984.3333, 54.0042], [1984.4167, 54.0536], [1984.5, 54.0856], [1984.5833, 54.1084], [1984.6667, 54.1463], [1984.75, 54.1914],\n    [1984.8333, 54.2452], [1984.9167, 54.2958], [1985, 54.3427], [1985.0833, 54.3911], [1985.1667, 54.432], [1985.25, 54.4898],\n    [1985.3333, 54.5456], [1985.4167, 54.5977], [1985.5, 54.6355], [1985.5833, 54.6532], [1985.6667, 54.6776], [1985.75, 54.7174],\n    [1985.8333, 54.7741], [1985.9167, 54.8253], [1986, 54.8713], [1986.0833, 54.9161], [1986.1667, 54.9581], [1986.25, 54.9997],\n    [1986.3333, 55.0476], [1986.4167, 55.0912], [1986.5, 55.1132], [1986.5833, 55.1328], [1986.6667, 55.1532], [1986.75, 55.1898],\n    [1986.8333, 55.2416], [1986.9167, 55.2838], [1987, 55.3222], [1987.0833, 55.3613], [1987.1667, 55.4063], [1987.25, 55.4629],\n    [1987.3333, 55.5111], [1987.4167, 55.5524], [1987.5, 55.5812], [1987.5833, 55.6004], [1987.6667, 55.6262], [1987.75, 55.6656],\n    [1987.8333, 55.7168], [1987.9167, 55.7698], [1988, 55.8197], [1988.0833, 55.8615], [1988.1667, 55.913], [1988.25, 55.9663],\n    [1988.3333, 56.022], [1988.4167, 56.07], [1988.5, 56.0939], [1988.5833, 56.1105], [1988.6667, 56.1314], [1988.75, 56.1611],\n    [1988.8333, 56.2068], [1988.9167, 56.2583], [1989, 56.3], [1989.0833, 56.3399], [1989.1667, 56.379], [1989.25, 56.4283],\n    [1989.3333, 56.4804], [1989.4167, 56.5352], [1989.5, 56.5697], [1989.5833, 56.5983], [1989.6667, 56.6328], [1989.75, 56.6739],\n    [1989.8333, 56.7332], [1989.9167, 56.7972], [1990, 56.8553], [1990.0833, 56.9111], [1990.1667, 56.9755], [1990.25, 57.0471],\n    [1990.3333, 57.1136], [1990.4167, 57.1738], [1990.5, 57.2226], [1990.5833, 57.2597], [1990.6667, 57.3073], [1990.75, 57.3643],\n    [1990.8333, 57.4334], [1990.9167, 57.5016], [1991, 57.5653], [1991.0833, 57.6333], [1991.1667, 57.6973], [1991.25, 57.7711],\n    [1991.3333, 57.8407], [1991.4167, 57.9058], [1991.5, 57.9576], [1991.5833, 57.9975], [1991.6667, 58.0426], [1991.75, 58.1043],\n    [1991.8333, 58.1679], [1991.9167, 58.2389], [1992, 58.3092], [1992.0833, 58.3833], [1992.1667, 58.4537], [1992.25, 58.5401],\n    [1992.3333, 58.6228], [1992.4167, 58.6917], [1992.5, 58.741], [1992.5833, 58.7836], [1992.6667, 58.8406], [1992.75, 58.8986],\n    [1992.8333, 58.9714], [1992.9167, 59.0438], [1993, 59.1218], [1993.0833, 59.2003], [1993.1667, 59.2747], [1993.25, 59.3574],\n    [1993.3333, 59.4434], [1993.4167, 59.5242], [1993.5, 59.585], [1993.5833, 59.6343], [1993.6667, 59.6928], [1993.75, 59.7588],\n    [1993.8333, 59.8386], [1993.9167, 59.9111], [1994, 59.9845], [1994.0833, 60.0564], [1994.1667, 60.1231], [1994.25, 60.2042],\n    [1994.3333, 60.2804], [1994.4167, 60.353], [1994.5, 60.4012], [1994.5833, 60.444], [1994.6667, 60.49], [1994.75, 60.5578],\n    [1994.8333, 60.6324], [1994.9167, 60.7059], [1995, 60.7853], [1995.0833, 60.8664], [1995.1667, 60.9387], [1995.25, 61.0277],\n    [1995.3333, 61.1103], [1995.4167, 61.187], [1995.5, 61.2454], [1995.5833, 61.2881], [1995.6667, 61.3378], [1995.75, 61.4036],\n    [1995.8333, 61.476], [1995.9167, 61.5525], [1996, 61.6287], [1996.0833, 61.6846], [1996.1667, 61.7433], [1996.25, 61.8132],\n    [1996.3333, 61.8823], [1996.4167, 61.9497], [1996.5, 61.9969], [1996.5833, 62.0343], [1996.6667, 62.0714], [1996.75, 62.1202],\n    [1996.8333, 62.181], [1996.9167, 62.2382], [1997, 62.295], [1997.0833, 62.3506], [1997.1667, 62.3995], [1997.25, 62.4754],\n    [1997.3333, 62.5463], [1997.4167, 62.6136], [1997.5, 62.6571], [1997.5833, 62.6942], [1997.6667, 62.7383], [1997.75, 62.7926],\n    [1997.8333, 62.8567], [1997.9167, 62.9146], [1998, 62.9659], [1998.0833, 63.0217], [1998.1667, 63.0807], [1998.25, 63.1462],\n    [1998.3333, 63.2053], [1998.4167, 63.2599], [1998.5, 63.2844], [1998.5833, 63.2961], [1998.6667, 63.3126], [1998.75, 63.3422],\n    [1998.8333, 63.3871], [1998.9167, 63.4339], [1999, 63.4673], [1999.0833, 63.4979], [1999.1667, 63.5319], [1999.25, 63.5679],\n    [1999.3333, 63.6104], [1999.4167, 63.6444], [1999.5, 63.6642], [1999.5833, 63.6739], [1999.6667, 63.6926], [1999.75, 63.7147],\n    [1999.8333, 63.7518], [1999.9167, 63.7927], [2000, 63.8285], [2000.0833, 63.8557], [2000.1667, 63.8804], [2000.25, 63.9075],\n    [2000.3333, 63.9393], [2000.4167, 63.9691], [2000.5, 63.9799], [2000.5833, 63.9833], [2000.6667, 63.9938], [2000.75, 64.0093],\n    [2000.8333, 64.04], [2000.9167, 64.067], [2001, 64.0908], [2001.0833, 64.1068], [2001.1667, 64.1282], [2001.25, 64.1584],\n    [2001.3333, 64.1833], [2001.4167, 64.2094], [2001.5, 64.2117], [2001.5833, 64.2073], [2001.6667, 64.2116], [2001.75, 64.2223],\n    [2001.8333, 64.25], [2001.9167, 64.2761], [2002, 64.2998], [2002.0833, 64.3192], [2002.1667, 64.345], [2002.25, 64.3735],\n    [2002.3333, 64.3943], [2002.4167, 64.4151], [2002.5, 64.4132], [2002.5833, 64.4118], [2002.6667, 64.4097], [2002.75, 64.4168],\n    [2002.8333, 64.4329], [2002.9167, 64.4511], [2003, 64.4734], [2003.0833, 64.4893], [2003.1667, 64.5053], [2003.25, 64.5269],\n    [2003.3333, 64.5471], [2003.4167, 64.5597], [2003.5, 64.5512], [2003.5833, 64.5371], [2003.6667, 64.5359], [2003.75, 64.5415],\n    [2003.8333, 64.5544], [2003.9167, 64.5654], [2004, 64.5736], [2004.0833, 64.5891], [2004.1667, 64.6015], [2004.25, 64.6176],\n    [2004.3333, 64.6374], [2004.4167, 64.6549], [2004.5, 64.653], [2004.5833, 64.6379], [2004.6667, 64.6372], [2004.75, 64.64],\n    [2004.8333, 64.6543], [2004.9167, 64.6723], [2005, 64.6876], [2005.0833, 64.7052], [2005.1667, 64.7313], [2005.25, 64.7575],\n    [2005.3333, 64.7811], [2005.4167, 64.8001], [2005.5, 64.7995], [2005.5833, 64.7876], [2005.6667, 64.7831], [2005.75, 64.7921],\n    [2005.8333, 64.8096], [2005.9167, 64.8311], [2006, 64.8452], [2006.0833, 64.8597], [2006.1667, 64.885], [2006.25, 64.9175],\n    [2006.3333, 64.948], [2006.4167, 64.9794], [2006.5, 64.9895], [2006.5833, 65.0028], [2006.6667, 65.0138], [2006.75, 65.0371],\n    [2006.8333, 65.0773], [2006.9167, 65.1122], [2007, 65.1464], [2007.0833, 65.1833], [2007.1667, 65.2145], [2007.25, 65.2494],\n    [2007.3333, 65.2921], [2007.4167, 65.3279], [2007.5, 65.3413], [2007.5833, 65.3452], [2007.6667, 65.3496], [2007.75, 65.3711],\n    [2007.8333, 65.3972], [2007.9167, 65.4296], [2008, 65.4573], [2008.0833, 65.4868], [2008.1667, 65.5152], [2008.25, 65.545],\n    [2008.3333, 65.5781], [2008.4167, 65.6127], [2008.5, 65.6288], [2008.5833, 65.637], [2008.6667, 65.6493], [2008.75, 65.676],\n    [2008.8333, 65.7097], [2008.9167, 65.7461], [2009, 65.7768], [2009.0833, 65.8025], [2009.1667, 65.8237], [2009.25, 65.8595],\n    [2009.3333, 65.8973], [2009.4167, 65.9323], [2009.5, 65.9509], [2009.5833, 65.9534], [2009.6667, 65.9628], [2009.75, 65.9839],\n    [2009.8333, 66.0147], [2009.9167, 66.042], [2010, 66.0699], [2010.0833, 66.0961], [2010.1667, 66.131], [2010.25, 66.1683],\n    [2010.3333, 66.2072], [2010.4167, 66.2356], [2010.5, 66.2409], [2010.5833, 66.2335], [2010.6667, 66.2349], [2010.75, 66.2441],\n    [2010.8333, 66.2751], [2010.9167, 66.3054], [2011, 66.3246], [2011.0833, 66.3406], [2011.1667, 66.3624], [2011.25, 66.3957],\n    [2011.3333, 66.4289], [2011.4167, 66.4619], [2011.5, 66.4749], [2011.5833, 66.4751], [2011.6667, 66.4829], [2011.75, 66.5056],\n    [2011.8333, 66.5383], [2011.9167, 66.5706], [2012, 66.603], [2012.0833, 66.634], [2012.1667, 66.6569], [2012.25, 66.6925],\n    [2012.3333, 66.7289], [2012.4167, 66.7579], [2012.5, 66.7708], [2012.5833, 66.774], [2012.6667, 66.7846], [2012.75, 66.8103],\n    [2012.8333, 66.84], [2012.9167, 66.8779], [2013, 66.9069], [2013.0833, 66.9443], [2013.1667, 66.9763], [2013.25, 67.0258],\n    [2013.3333, 67.0716], [2013.4167, 67.11], [2013.5, 67.1266], [2013.5833, 67.1331], [2013.6667, 67.1458], [2013.75, 67.1717],\n    [2013.8333, 67.2091], [2013.9167, 67.246], [2014, 67.281], [2014.0833, 67.3136], [2014.1667, 67.3457], [2014.25, 67.389],\n    [2014.3333, 67.4318], [2014.4167, 67.4666], [2014.5, 67.4858], [2014.5833, 67.4989], [2014.6667, 67.5111], [2014.75, 67.5353],\n    [2014.8333, 67.5711], [2014.9167, 67.607], [2015, 67.6439], [2015.0833, 67.6765], [2015.1667, 67.7117], [2015.25, 67.7591],\n    [2015.3333, 67.8012], [2015.4167, 67.8402], [2015.5, 67.8606], [2015.5833, 67.8822], [2015.6667, 67.912], [2015.75, 67.9546],\n    [2015.8333, 68.0055], [2015.9167, 68.0514], [2016, 68.1024], [2016.0833, 68.1577], [2016.1667, 68.2044], [2016.25, 68.2665],\n    [2016.3333, 68.3188], [2016.4167, 68.3704], [2016.5, 68.3964], [2016.5833, 68.4094], [2016.6667, 68.4305], [2016.75, 68.463],\n    [2016.8333, 68.5078], [2016.9167, 68.5537], [2017, 68.5927], [2017.0833, 68.6298], [2017.1667, 68.6671], [2017.25, 68.7135],\n    [2017.3333, 68.7623], [2017.4167, 68.8033], [2017.5, 68.8245], [2017.5833, 68.8373], [2017.6667, 68.8477], [2017.75, 68.8689],\n    [2017.8333, 68.9006], [2017.9167, 68.9355], [2018, 68.9676], [2018.0833, 68.9875], [2018.1667, 69.0176], [2018.25, 69.0499],\n    [2018.3333, 69.0823], [2018.4167, 69.107], [2018.5, 69.1134], [2018.5833, 69.1142], [2018.6667, 69.1207], [2018.75, 69.1356],\n    [2018.8333, 69.1646], [2018.9167, 69.1964], [2019, 69.2202], [2019.0833, 69.2452], [2019.1667, 69.2733], [2019.25, 69.3032],\n    [2019.3333, 69.3326], [2019.4167, 69.3541], [2019.5, 69.3582], [2019.5833, 69.3442], [2019.6667, 69.3376], [2019.75, 69.3377],\n    [2019.8333, 69.3432], [2019.9167, 69.354], [2020, 69.3612], [2020.0833, 69.3752], [2020.1667, 69.389], [2020.25, 69.4092],\n    [2020.3333, 69.4265], [2020.4167, 69.4386], [2020.5, 69.4241], [2020.5833, 69.3921], [2020.6667, 69.3693], [2020.75, 69.3575],\n    [2020.8333, 69.3593], [2020.9167, 69.363], [2021, 69.3594], [2021.0833, 69.351], [2021.1667, 69.3538], [2021.25, 69.3582],\n    [2021.3333, 69.3673], [2021.4167, 69.3679], [2021.5, 69.3514], [2021.5833, 69.3273], [2021.6667, 69.3033], [2021.75, 69.2892],\n    [2021.8333, 69.2881], [2021.9167, 69.2908], [2022, 69.2945], [2022.0833, 69.2914], [2022.1667, 69.2861], [2022.25, 69.2835],\n    [2022.3333, 69.2816], [2022.4167, 69.2799], [2022.5, 69.2527], [2022.5833, 69.2213], [2022.6667, 69.1975], [2022.75, 69.1891],\n    [2022.8333, 69.1942], [2022.9167, 69.2036], [2023, 69.2039], [2023.0833, 69.1986], [2023.1667, 69.1993], [2023.25, 69.2084],\n    [2023.3333, 69.2183], [2023.4167, 69.23], [2023.5, 69.2201], [2023.5833, 69.1988], [2023.6667, 69.1814], [2023.75, 69.1723],\n    [2023.8333, 69.1727], [2023.9167, 69.1724], [2024, 69.1752], [2024.0833, 69.1797], [2024.1667, 69.1874], [2024.25, 69.1983],\n    [2024.3333, 69.2018], [2024.4167, 69.2044], [2024.5, 69.1879], [2024.5833, 69.1588], [2024.6667, 69.1322], [2024.75, 69.125],\n    [2024.8333, 69.1304], [2024.9167, 69.1345], [2025, 69.1377], [2025.0833, 69.1366], [2025.1667, 69.1384], [2025.25, 69.1471],\n    [2025.3333, 69.1542], [2025.4167, 69.155], [2025.5, 69.1406], [2025.5833, 69.1219], [2025.6667, 69.0994], [2025.75, 69.0909],\n    [2025.8333, 69.0909], [2025.9167, 69.1042], [2026, 69.1099], [2026.0833, 69.1133], [2026.1667, 69.1168], [2026.25, 69.133],\n    [2026.5, 69.11], [2026.75, 69.09], [2027, 69.14], [2027.25, 69.21], [2027.5, 69.26], [2027.75, 69.26],\n    [2028, 69.34], [2028.25, 69.44], [2028.5, 69.51], [2028.75, 69.54], [2029, 69.63], [2029.25, 69.75],\n    [2029.5, 69.83], [2029.75, 69.87], [2030, 69.97], [2030.25, 70.08], [2030.5, 70.17], [2030.75, 70.21],\n    [2031, 70.32], [2031.25, 70.42], [2031.5, 70.51], [2031.75, 70.53], [2032, 70.62], [2032.25, 70.72],\n    [2032.5, 70.82], [2032.75, 70.86], [2033, 70.98], [2033.25, 71.1], [2033.5, 71.2], [2033.75, 71.25],\n];\n","import {REFERENCE_DELTA_T} from '../constants/deltaTReference';\n\nconst REFERENCE_MIN_YEAR = Math.floor(REFERENCE_DELTA_T[0][0]);\nconst REFERENCE_MAX_YEAR = Math.floor(REFERENCE_DELTA_T[REFERENCE_DELTA_T.length - 1][0]);\n\n// Cubic least-squares fit to the most recent reference years, used to extrapolate ΔT beyond the tabulated years.\nconst FUTURE_FIT_START_YEAR = 2005;\nconst FUTURE_DELTA_T_COEFFICIENTS = fitPolynomial(\n    yearlyReferenceValues(FUTURE_FIT_START_YEAR, REFERENCE_MAX_YEAR).map((deltaT, index) => [\n        FUTURE_FIT_START_YEAR + index - 2000,\n        deltaT,\n    ]),\n    3,\n);\n\nexport function getDeltaT(year: number, month = 0): number {\n    // https://eclipse.gsfc.nasa.gov/SEcat5/deltatpoly.html\n    const y = year + (month - 0.5) / 12;\n\n    if (year >= REFERENCE_MIN_YEAR && year <= REFERENCE_MAX_YEAR) {\n        return getReferenceDeltaT(y);\n    }\n\n    if (year > REFERENCE_MAX_YEAR) {\n        return evaluatePolynomial(FUTURE_DELTA_T_COEFFICIENTS, y - 2000);\n    }\n\n    let t: number;\n    let deltaT = 0;\n\n    if (year < -500) {\n        t = (y - 1820) / 100;\n        deltaT = -20 + 32 * t ** 2;\n    }\n\n    if (year >= -500 && year < 500) {\n        t = y / 100;\n        deltaT =\n            10583.6\n            - 1014.41 * t\n            + 33.78311 * t ** 2\n            - 5.952053 * t ** 3\n            - 0.1798452 * t ** 4\n            + 0.022174192 * t ** 5\n            + 0.0090316521 * t ** 6;\n    }\n\n    if (year >= 500 && year < 1600) {\n        t = (y - 1000) / 100;\n        deltaT =\n            1574.2\n            - 556.01 * t\n            + 71.23472 * t ** 2\n            + 0.319781 * t ** 3\n            - 0.8503463 * t ** 4\n            - 0.005050998 * t ** 5\n            + 0.0083572073 * t ** 6;\n    }\n\n    if (year >= 1600 && year < 1700) {\n        t = y - 1600;\n        deltaT = 120 - 0.9808 * t - 0.01532 * t ** 2 + t ** 3 / 7129;\n    }\n\n    if (year >= 1700 && year < 1800) {\n        t = y - 1700;\n        deltaT = 8.83 + 0.1603 * t - 0.0059285 * t ** 2 + 0.00013336 * t ** 3 - t ** 4 / 1174000;\n    }\n\n    if (year >= 1800 && year < 1860) {\n        t = y - 1800;\n        deltaT =\n            13.72\n            - 0.332447 * t\n            + 0.0068612 * t ** 2\n            + 0.0041116 * t ** 3\n            - 0.00037436 * t ** 4\n            + 0.0000121272 * t ** 5\n            - 0.0000001699 * t ** 6\n            + 0.000000000875 * t ** 7;\n    }\n\n    if (year >= 1860 && year < 1900) {\n        t = y - 1860;\n\n        deltaT = 7.62 + 0.5737 * t - 0.251754 * t ** 2 + 0.01680668 * t ** 3 - 0.0004473624 * t ** 4 + t ** 5 / 233174;\n    }\n\n    if (year >= 1900 && year < 1920) {\n        t = y - 1900;\n        deltaT = -2.79 + 1.494119 * t - 0.0598939 * t ** 2 + 0.0061966 * t ** 3 - 0.000197 * t ** 4;\n    }\n\n    if (year >= 1920 && year < 1941) {\n        t = y - 1920;\n        deltaT = 21.2 + 0.84493 * t - 0.0761 * t ** 2 + 0.0020936 * t ** 3;\n    }\n\n    if (year >= 1941 && year < 1961) {\n        t = y - 1950;\n        deltaT = 29.07 + 0.407 * t - t ** 2 / 233 + t ** 3 / 2547;\n    }\n\n    if (year >= 1961 && year < 1986) {\n        t = y - 1975;\n        deltaT = 45.45 + 1.067 * t - t ** 2 / 260 - t ** 3 / 718;\n    }\n\n    if (year >= 1986 && year < 2005) {\n        t = y - 2000;\n        deltaT =\n            63.86 + 0.3345 * t - 0.060374 * t ** 2 + 0.0017275 * t ** 3 + 0.000651814 * t ** 4 + 0.00002373599 * t ** 5;\n    }\n\n    return deltaT;\n}\n\nfunction getReferenceDeltaT(y: number): number {\n    const first = REFERENCE_DELTA_T[0];\n    const last = REFERENCE_DELTA_T[REFERENCE_DELTA_T.length - 1];\n    const clamped = Math.max(first[0], Math.min(last[0], y));\n\n    let low = 0;\n    let high = REFERENCE_DELTA_T.length - 1;\n    while (high - low > 1) {\n        const mid = (low + high) >> 1;\n        if (REFERENCE_DELTA_T[mid][0] <= clamped) {\n            low = mid;\n        } else {\n            high = mid;\n        }\n    }\n\n    const [year0, deltaT0] = REFERENCE_DELTA_T[low];\n    const [year1, deltaT1] = REFERENCE_DELTA_T[high];\n    const fraction = (clamped - year0) / (year1 - year0);\n\n    return deltaT0 + fraction * (deltaT1 - deltaT0);\n}\n\nfunction yearlyReferenceValues(from: number, to: number): number[] {\n    const values: number[] = [];\n    for (let year = from; year <= to; year++) {\n        values.push(getReferenceDeltaT(year));\n    }\n\n    return values;\n}\n\nfunction evaluatePolynomial(coefficients: number[], x: number): number {\n    return coefficients.reduce((sum, coefficient, power) => sum + coefficient * x ** power, 0);\n}\n\nfunction fitPolynomial(points: Array<[number, number]>, degree: number): number[] {\n    const size = degree + 1;\n    const matrix: number[][] = [];\n    const vector: number[] = [];\n\n    for (let i = 0; i < size; i++) {\n        matrix[i] = [];\n        for (let j = 0; j < size; j++) {\n            matrix[i][j] = points.reduce((sum, [x]) => sum + x ** (i + j), 0);\n        }\n        vector[i] = points.reduce((sum, [x, value]) => sum + value * x ** i, 0);\n    }\n\n    for (let i = 0; i < size; i++) {\n        let pivot = i;\n        for (let row = i + 1; row < size; row++) {\n            if (Math.abs(matrix[row][i]) > Math.abs(matrix[pivot][i])) {\n                pivot = row;\n            }\n        }\n        [matrix[i], matrix[pivot]] = [matrix[pivot], matrix[i]];\n        [vector[i], vector[pivot]] = [vector[pivot], vector[i]];\n\n        for (let row = 0; row < size; row++) {\n            if (row === i) {\n                continue;\n            }\n            const factor = matrix[row][i] / matrix[i][i];\n            for (let col = i; col < size; col++) {\n                matrix[row][col] -= factor * matrix[i][col];\n            }\n            vector[row] -= factor * vector[i];\n        }\n    }\n\n    return matrix.map((_, i) => vector[i] / matrix[i][i]);\n}\n","import {EPOCH_J2000} from '@app/constants/epoch';\nimport {DAYS_PER_JULIAN_CENTURY, HOURS_PER_DAY, MINUTES_PER_DAY, SECONDS_PER_DAY} from '@app/constants/time';\nimport {round} from '@app/utils/math';\nimport type {Time} from '../types/TimeTypes';\nimport {getDeltaT} from './deltaT';\n\nexport function sec2string(sec: number, short = false): string {\n    const sign = sec < 0 ? '-' : '';\n    sec = Math.abs(sec);\n\n    const hour = Math.floor(sec / 3600);\n    const min = Math.floor((sec - hour * 3600) / 60);\n    const secPart = round(sec - hour * 3600 - min * 60, 2);\n\n    if (short && hour === 0.0 && min === 0.0) {\n        return `${sign + secPart}s`;\n    }\n\n    if (short && hour === 0.0) {\n        return `${sign + min}m ${secPart}s`;\n    }\n\n    return `${sign + hour}h ${min}m ${secPart}s`;\n}\n\nexport function time2julianDay(time: Time): number {\n    const tmpYear = parseFloat(`${time.year}.${getDayOfYear(time)}`);\n\n    let Y: number;\n    let M: number;\n\n    if (time.month > 2) {\n        Y = time.year;\n        M = time.month;\n    } else {\n        Y = time.year - 1;\n        M = time.month + 12;\n    }\n\n    const D = time.day;\n    const H = time.hour / HOURS_PER_DAY + time.min / MINUTES_PER_DAY + time.sec / SECONDS_PER_DAY;\n\n    let A: number;\n    let B: number;\n\n    if (tmpYear >= 1582.288) {\n        // YYYY-MM-DD >= 1582-10-15\n        A = Math.floor(Y / 100);\n        B = 2 - A + Math.floor(A / 4);\n    } else if (tmpYear <= 1582.277) {\n        // YY-MM-DD <= 1582-10-04\n        B = 0;\n    } else {\n        throw new Error('Date between 1582-10-04 and 1582-10-15 is not defined.');\n    }\n\n    // Meeus 7.1\n    return Math.floor(365.25 * (Y + 4716)) + Math.floor(30.6001 * (M + 1)) + D + H + B - 1524.5;\n}\n\nexport function dateStringToJulianDay(dateStr: string): number {\n    const isoDate = parseIsoDateString(dateStr);\n\n    if (isoDate !== null) {\n        const {offsetMinutes, ...time} = isoDate;\n        return time2julianDay(time) - offsetMinutes / MINUTES_PER_DAY;\n    }\n\n    const date = new Date(dateStr);\n\n    return time2julianDay({\n        year: date.getUTCFullYear(),\n        month: date.getUTCMonth() + 1,\n        day: date.getUTCDate(),\n        hour: date.getUTCHours(),\n        min: date.getUTCMinutes(),\n        sec: date.getUTCSeconds(),\n    });\n}\n\nfunction parseIsoDateString(dateStr: string): (Time & {offsetMinutes: number}) | null {\n    const match =\n        /^([+-]?\\d+)-(\\d{2})-(\\d{2})(?:[T ](\\d{2})(?::(\\d{2})(?::(\\d{2}(?:\\.\\d+)?))?)?(?:Z|([+-])(\\d{2}):?(\\d{2}))?)?$/.exec(\n            dateStr,\n        );\n\n    if (!match) {\n        return null;\n    }\n\n    const [, year, month, day, hour = '0', min = '0', sec = '0', offsetSign, offsetHour = '0', offsetMin = '0'] = match;\n    const offsetFactor = offsetSign === '-' ? -1 : 1;\n\n    return {\n        year: Number(year),\n        month: Number(month),\n        day: Number(day),\n        hour: Number(hour),\n        min: Number(min),\n        sec: Number(sec),\n        offsetMinutes: offsetSign ? offsetFactor * (Number(offsetHour) * 60 + Number(offsetMin)) : 0,\n    };\n}\n\nexport function julianDay2time(jd: number): Time {\n    jd = jd + 0.5;\n\n    const Z = Math.floor(jd);\n    const F = jd - Z;\n\n    let A = Z;\n    if (Z >= 2299161) {\n        const a = Math.floor((Z - 1867216.25) / 36524.25);\n        A = Z + 1 + a - Math.floor(a / 4);\n    }\n\n    const B = A + 1524;\n    const C = Math.floor((B - 122.1) / 365.25);\n    const D = Math.floor(365.25 * C);\n    const E = Math.floor((B - D) / 30.6001);\n\n    const dayOnMonth = B - D - Math.floor(30.6001 * E) + F;\n    const month = E < 14 ? E - 1 : E - 13;\n    const year = month > 2 ? C - 4716 : C - 4715;\n    const hour = (dayOnMonth - Math.floor(dayOnMonth)) * 24;\n    const min = (hour - Math.floor(hour)) * 60;\n    const sec = (min - Math.floor(min)) * 60;\n\n    return {\n        year: Math.floor(year),\n        month: Math.floor(month),\n        day: Math.floor(dayOnMonth),\n        hour: Math.floor(hour),\n        min: Math.floor(min),\n        sec: Math.floor(sec),\n    };\n}\n\nexport function julianDay2julianDay0(jd: number): number {\n    return Math.floor(jd + 0.5) - 0.5;\n}\n\nexport function julianDay2ModifiedJulianDay(jd: number): number {\n    return jd - 2400000.5;\n}\n\nexport function julianDay2julianCenturiesJ2000(jd: number): number {\n    return (jd - EPOCH_J2000) / DAYS_PER_JULIAN_CENTURY;\n}\n\nexport function julianCenturiesJ20002julianDay(T: number): number {\n    return T * DAYS_PER_JULIAN_CENTURY + EPOCH_J2000;\n}\n\nexport function julianDay2julianMillenniaJ2000(jd: number): number {\n    const T = julianDay2julianCenturiesJ2000(jd);\n\n    return T / 10;\n}\n\nexport function julianMillenniaJ20002julianDay(t: number): number {\n    const T = t * 10;\n\n    return julianCenturiesJ20002julianDay(T);\n}\n\nexport function julianDay2julianDayEphemeris(jd: number): number {\n    const {year, month} = julianDay2time(jd);\n\n    return jd + getDeltaT(year, month) / SECONDS_PER_DAY;\n}\n\nexport function julianDayEphemeris2julianDay(jde: number): number {\n    const {year, month} = julianDay2time(jde);\n\n    return jde - getDeltaT(year, month) / SECONDS_PER_DAY;\n}\n\nexport function dayOfYear2time(year: number, dayOfYear: number): Time {\n    // Meeus 7\n    const K = isLeapYear(year) ? 1 : 2;\n    const month = dayOfYear < 32 ? 1 : Math.floor((9 * (K + dayOfYear)) / 275 + 0.98);\n    const day = Math.floor(dayOfYear - Math.floor((275 * month) / 9) + K * Math.floor((month + 9) / 12) + 30);\n\n    const hourFloat = 24 * (dayOfYear - Math.floor(dayOfYear));\n    const hour = Math.floor(hourFloat);\n    const minFloat = 60 * (hourFloat - hour);\n    const min = Math.floor(minFloat);\n    const sec = round(60 * (minFloat - min));\n\n    return {year, month, day, hour, min, sec};\n}\n\nexport function getDecimalYear(time: Time): number {\n    const daysInYear = isLeapYear(time.year) ? 366 : 365;\n    const dayOfYear =\n        getDayOfYear(time) - 1 + time.hour / HOURS_PER_DAY + time.min / MINUTES_PER_DAY + time.sec / SECONDS_PER_DAY;\n\n    return time.year + dayOfYear / daysInYear;\n}\n\nexport function getDayOfYear(time: Time): number {\n    const K = isLeapYear(time.year) ? 1 : 2;\n    const M = time.month;\n    const D = time.day;\n\n    // Meeus 7.f\n    return Math.floor((275 * M) / 9) - K * Math.floor((M + 9) / 12) + D - 30;\n}\n\nexport function getDayOfWeek(time: Time): number {\n    const jd = time2julianDay(time);\n\n    // Meeus 7.e\n    return Math.floor((jd + 1.5) % 7);\n}\n\nexport function isLeapYear(year: number): boolean {\n    if (year / 4 !== Math.floor(year / 4)) {\n        return false;\n    } else if (year / 100 !== Math.floor(year / 100)) {\n        return true;\n    } else if (year / 400 !== Math.floor(year / 400)) {\n        return false;\n    } else {\n        return true;\n    }\n}\n\nexport function shortYear2longYear(shortYearString: string): number {\n    const currentDate = new Date(Date.now());\n    const currentYear = currentDate.getFullYear();\n    const currentYearStr = currentYear.toString();\n\n    const currentYearFirstDigitsStr = currentYearStr.substr(0, currentYearStr.length - 2);\n    const currentYearFirstDigits = parseInt(currentYearFirstDigitsStr, 10);\n\n    const year1Str = currentYearFirstDigits + shortYearString;\n    const year1 = parseInt(year1Str, 10);\n    const year2Str = (currentYearFirstDigits - 1).toString() + shortYearString;\n    const year2 = parseInt(year2Str, 10);\n\n    return year1 <= currentYear ? year1 : year2;\n}\n","import {EPOCH_J2000} from '@app/constants/epoch';\nimport {DEG} from '@app/constants/math';\nimport {normalizeAngle} from '@app/utils/angle';\nimport * as earth from '@app/utils/earth';\nimport {julianCenturiesJ20002julianDay} from '@package/time/utils/dateTime';\n\nexport function getGreenwichMeanSiderealTime(T: number): number {\n    const jd = julianCenturiesJ20002julianDay(T);\n\n    // Meeus 12.4\n    const GMST = 280.46061837 + 360.98564736629 * (jd - EPOCH_J2000) + 0.000387933 * T ** 2 + T ** 3 / 38710000;\n\n    return normalizeAngle(GMST);\n}\n\nexport function getGreenwichApparentSiderealTime(T: number): number {\n    const GMST = getGreenwichMeanSiderealTime(T);\n    const p = earth.getNutationInLongitude(T);\n    const e = earth.getTrueObliquityOfEcliptic(T);\n    const eRad = e * DEG;\n\n    // Meeus 12\n    return GMST + p * Math.cos(eRad);\n}\n\nexport function getLocalMeanSiderealTime(T: number, lon: number): number {\n    const GMST = getGreenwichMeanSiderealTime(T);\n\n    const LMST = GMST + lon;\n\n    return normalizeAngle(LMST);\n}\n\nexport function getLocalApparentSiderealTime(T: number, lon: number): number {\n    const GAST = getGreenwichApparentSiderealTime(T);\n\n    // Meeus 12\n    return GAST + lon;\n}\n\nexport function getLocalHourAngle(T: number, lon: number, rightAscension: number): number {\n    const LAST = getLocalApparentSiderealTime(T, lon);\n\n    return normalizeAngle(LAST - rightAscension);\n}\n","import type {LatLon} from '@app/types/LocationTypes';\nimport {pad} from '@app/utils/math';\nimport {\n    getGreenwichApparentSiderealTime,\n    getGreenwichMeanSiderealTime,\n    getLocalApparentSiderealTime,\n    getLocalMeanSiderealTime,\n} from '@app/utils/siderealTime';\nimport type {Time} from '../types/TimeTypes';\nimport {\n    dayOfYear2time,\n    getDayOfWeek,\n    getDayOfYear,\n    getDecimalYear,\n    isLeapYear,\n    julianCenturiesJ20002julianDay,\n    julianDay2julianCenturiesJ2000,\n    julianDay2julianDay0,\n    julianDay2julianDayEphemeris,\n    julianDay2julianMillenniaJ2000,\n    julianDay2time,\n    julianDayEphemeris2julianDay,\n    time2julianDay,\n} from '../utils/dateTime';\nimport {getDeltaT} from '../utils/deltaT';\n\nexport default class TimeOfInterest {\n    public readonly jd: number = 0.0;\n\n    public readonly jde: number = 0.0;\n\n    public readonly T: number = 0.0;\n\n    public constructor(public readonly time: Time) {\n        this.jd = time2julianDay(time);\n        this.jde = julianDay2julianDayEphemeris(this.jd);\n        this.T = julianDay2julianCenturiesJ2000(this.jd);\n    }\n\n    public static fromCurrentTime(): TimeOfInterest {\n        const date = new Date(Date.now());\n\n        return new TimeOfInterest({\n            year: date.getUTCFullYear(),\n            month: date.getUTCMonth() + 1,\n            day: date.getUTCDate(),\n            hour: date.getUTCHours(),\n            min: date.getUTCMinutes(),\n            sec: date.getUTCSeconds(),\n        });\n    }\n\n    public static fromTime(year: number, month: number, day: number, hour = 0, min = 0, sec = 0): TimeOfInterest {\n        return new TimeOfInterest({year, month, day, hour, min, sec});\n    }\n\n    public static fromDate(date: Date): TimeOfInterest {\n        return new TimeOfInterest({\n            year: date.getUTCFullYear(),\n            month: date.getUTCMonth() + 1,\n            day: date.getUTCDate(),\n            hour: date.getUTCHours(),\n            min: date.getUTCMinutes(),\n            sec: date.getUTCSeconds(),\n        });\n    }\n\n    public static fromYearOfDay(year: number, dayOfYear: number): TimeOfInterest {\n        const time = dayOfYear2time(year, dayOfYear);\n\n        return new TimeOfInterest(time);\n    }\n\n    public static fromJulianDay(jd: number): TimeOfInterest {\n        const time = julianDay2time(jd);\n\n        return new TimeOfInterest(time);\n    }\n\n    public static fromJulianDayEphemeris(jde: number): TimeOfInterest {\n        return TimeOfInterest.fromJulianDay(julianDayEphemeris2julianDay(jde));\n    }\n\n    public static fromJulianCenturiesJ2000(T: number): TimeOfInterest {\n        const jd = julianCenturiesJ20002julianDay(T);\n        const time = julianDay2time(jd);\n\n        return new TimeOfInterest(time);\n    }\n\n    public getTime(): Time {\n        return this.time;\n    }\n\n    public getString(): string {\n        const {year, month, day, hour, min, sec} = this.time;\n\n        return `${year}-${pad(month, 2)}-${pad(day, 2)} ${pad(hour, 2)}:${pad(min, 2)}:${pad(sec, 2)}`;\n    }\n\n    public getDate(): Date {\n        const {year, month, day, hour, min, sec} = this.time;\n\n        return new Date(Date.UTC(year, month - 1, day, hour, min, sec));\n    }\n\n    public getDecimalYear(): number {\n        return getDecimalYear(this.time);\n    }\n\n    public getDayOfYear(): number {\n        return getDayOfYear(this.time);\n    }\n\n    public getDayOfWeek(): number {\n        return getDayOfWeek(this.time);\n    }\n\n    public isLeapYear(): boolean {\n        return isLeapYear(this.time.year);\n    }\n\n    public getJulianDay(): number {\n        return this.jd;\n    }\n\n    public getJulianDay0(): number {\n        return julianDay2julianDay0(this.jd);\n    }\n\n    public getJulianDayEphemeris(): number {\n        return this.jde;\n    }\n\n    public getJulianCenturiesJ2000(): number {\n        return this.T;\n    }\n\n    public getJulianCenturiesJ2000Ephemeris(): number {\n        return julianDay2julianCenturiesJ2000(this.jde);\n    }\n\n    public getJulianMillenniaJ2000(): number {\n        return julianDay2julianMillenniaJ2000(this.jd);\n    }\n\n    public getJulianMillenniaJ2000Ephemeris(): number {\n        return julianDay2julianMillenniaJ2000(this.jde);\n    }\n\n    public getGreenwichMeanSiderealTime(): number {\n        return getGreenwichMeanSiderealTime(this.T);\n    }\n\n    public getGreenwichApparentSiderealTime(): number {\n        return getGreenwichApparentSiderealTime(this.T);\n    }\n\n    public getLocalMeanSiderealTime(location: LatLon): number {\n        return getLocalMeanSiderealTime(this.T, location.lon);\n    }\n\n    public getLocalApparentSiderealTime(location: LatLon): number {\n        return getLocalApparentSiderealTime(this.T, location.lon);\n    }\n\n    public getDeltaT(): number {\n        const {year, month} = this.time;\n\n        return getDeltaT(year, month);\n    }\n}\n"],"mappings":"AAAO,IAAMA,EAAiC,QACjCC,GAAmC,SACnCC,GAA6B,SAC7BC,GAA+B,UAE/BC,GAAmB,cAEnBC,EAAmB,EAAID,GACvBE,GAA2B,EAAID,EAC/BE,GAAuB,EAAIF,EAAmBA,EAAmBA,EAEjEG,GAA8B,SAAW,GACzCC,GAAkC,WAGlCC,GAA8B,OAE9BC,EAA8B,CACvC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAQ,MAAO,GAAG,EAC3C,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,OAAQ,KAAM,KAAM,IAAI,EACzC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,MAAO,IAAM,IAAK,GAAI,EACtC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KAAM,GAAK,KAAM,EAAG,EACpC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KAAM,KAAM,GAAI,GAAI,EACpC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAK,GAAI,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EACrC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KAAM,IAAM,IAAK,CAAG,EACpC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KAAM,EAAK,IAAK,GAAI,EACpC,CAAC,EAAG,GAAI,EAAG,GAAI,EAAG,IAAK,IAAM,IAAK,EAAG,EACrC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,KAAM,EAAK,GAAI,CAAG,EACnC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,GAAK,IAAK,CAAG,EACnC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAK,IAAK,CAAG,EACnC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAK,IAAK,CAAG,EACjC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAK,GAAI,CAAG,EAClC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAM,GAAI,CAAG,EACnC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAK,GAAI,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,IAAK,CAAG,EAClC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAK,GAAI,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAK,GAAI,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,IAAK,CAAG,EAClC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAK,EAAG,CAAG,EACjC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,IAAK,CAAG,EAClC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAM,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,GAAK,EAAG,CAAG,EACjC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,GAAI,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAC/B,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC9B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC9B,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EACjC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAC/B,CAAC,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC9B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAC/B,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC9B,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC9B,CAAC,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC9B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,CAClC,EC5HO,IAAMC,GAAc,QACdC,GAAc,YACdC,EAAc,QACdC,GAAc,QCHpB,IAAMC,GAAoC,QAGpCC,GAAmB,OACnBC,GAAiB,OAEjBC,GAAsB,EACtBC,GAA2B,IAC3BC,GAAuB,GACvBC,GAA0B,IAE1BC,GAAoB,CAC7B,CAAC,EAAG,EAAG,EAAG,EAAG,QAAS,SAAS,EAC/B,CAAC,EAAG,EAAG,GAAI,EAAG,QAAS,QAAQ,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAQ,EAC7B,CAAC,EAAG,EAAG,EAAG,EAAG,OAAQ,OAAO,EAC5B,CAAC,EAAG,EAAG,EAAG,EAAG,QAAS,KAAK,EAC3B,CAAC,EAAG,EAAG,EAAG,EAAG,QAAS,KAAK,EAC3B,CAAC,EAAG,EAAG,GAAI,EAAG,MAAO,MAAM,EAC3B,CAAC,EAAG,GAAI,GAAI,EAAG,MAAO,OAAO,EAC7B,CAAC,EAAG,EAAG,EAAG,EAAG,MAAO,OAAO,EAC3B,CAAC,EAAG,GAAI,EAAG,EAAG,MAAO,OAAO,EAC5B,CAAC,EAAG,EAAG,GAAI,EAAG,OAAQ,OAAO,EAC7B,CAAC,EAAG,EAAG,EAAG,EAAG,OAAQ,MAAM,EAC3B,CAAC,EAAG,EAAG,EAAG,EAAG,OAAQ,MAAM,EAC3B,CAAC,EAAG,EAAG,EAAG,GAAI,MAAO,KAAK,EAC1B,CAAC,EAAG,EAAG,EAAG,EAAG,OAAQ,CAAC,EACtB,CAAC,EAAG,EAAG,EAAG,GAAI,MAAO,KAAK,EAC1B,CAAC,EAAG,EAAG,GAAI,EAAG,MAAO,MAAM,EAC3B,CAAC,EAAG,EAAG,EAAG,EAAG,MAAO,MAAM,EAC1B,CAAC,EAAG,EAAG,GAAI,EAAG,KAAM,MAAM,EAC1B,CAAC,EAAG,EAAG,GAAI,EAAG,MAAO,KAAK,EAC1B,CAAC,EAAG,EAAG,EAAG,EAAG,MAAO,KAAK,EACzB,CAAC,EAAG,EAAG,GAAI,EAAG,MAAO,KAAK,EAC1B,CAAC,EAAG,EAAG,EAAG,EAAG,KAAM,MAAM,EACzB,CAAC,EAAG,GAAI,EAAG,EAAG,KAAM,MAAM,EAC1B,CAAC,EAAG,EAAG,EAAG,EAAG,KAAM,MAAM,EACzB,CAAC,EAAG,EAAG,EAAG,EAAG,KAAM,MAAM,EACzB,CAAC,EAAG,EAAG,GAAI,EAAG,KAAM,KAAK,EACzB,CAAC,EAAG,EAAG,GAAI,EAAG,MAAO,KAAK,EAC1B,CAAC,EAAG,EAAG,GAAI,EAAG,MAAO,CAAC,EACtB,CAAC,EAAG,GAAI,GAAI,EAAG,KAAM,KAAK,EAC1B,CAAC,EAAG,EAAG,EAAG,EAAG,MAAO,IAAI,EACxB,CAAC,EAAG,GAAI,EAAG,EAAG,KAAM,KAAK,EACzB,CAAC,EAAG,EAAG,EAAG,EAAG,MAAO,IAAI,EACxB,CAAC,EAAG,EAAG,EAAG,EAAG,MAAO,CAAC,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,KAAM,KAAK,EAC1B,CAAC,EAAG,EAAG,EAAG,GAAI,MAAO,IAAI,EACzB,CAAC,EAAG,EAAG,EAAG,EAAG,MAAO,CAAC,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,KAAM,KAAK,EAC1B,CAAC,EAAG,EAAG,EAAG,EAAG,MAAO,CAAC,EACrB,CAAC,EAAG,EAAG,GAAI,EAAG,KAAM,IAAI,EACxB,CAAC,EAAG,EAAG,EAAG,EAAG,KAAM,IAAI,EACvB,CAAC,EAAG,GAAI,GAAI,EAAG,IAAK,KAAK,EACzB,CAAC,EAAG,EAAG,GAAI,EAAG,KAAM,KAAK,EACzB,CAAC,EAAG,EAAG,GAAI,EAAG,KAAM,IAAI,EACxB,CAAC,EAAG,EAAG,GAAI,EAAG,IAAK,CAAC,EACpB,CAAC,EAAG,GAAI,EAAG,GAAI,IAAK,CAAC,EACrB,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,KAAK,EACvB,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,KAAK,EACvB,CAAC,EAAG,GAAI,EAAG,EAAG,IAAK,KAAK,EACxB,CAAC,EAAG,EAAG,GAAI,EAAG,KAAM,KAAK,EACzB,CAAC,EAAG,EAAG,EAAG,GAAI,KAAM,CAAC,EACrB,CAAC,EAAG,EAAG,EAAG,GAAI,KAAM,KAAK,EACzB,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EACnB,CAAC,EAAG,EAAG,GAAI,EAAG,KAAM,CAAC,EACrB,CAAC,EAAG,EAAG,GAAI,EAAG,IAAK,CAAC,EACpB,CAAC,EAAG,GAAI,EAAG,EAAG,IAAK,CAAC,EACpB,CAAC,EAAG,EAAG,EAAG,EAAG,KAAM,IAAI,EACvB,CAAC,EAAG,EAAG,GAAI,EAAG,IAAK,CAAC,EACpB,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EACnB,CAAC,EAAG,EAAG,GAAI,GAAI,EAAG,IAAI,CAC1B,EAEaC,GAAmB,CAC5B,CAAC,EAAG,EAAG,EAAG,EAAG,OAAO,EACpB,CAAC,EAAG,EAAG,EAAG,EAAG,MAAM,EACnB,CAAC,EAAG,EAAG,EAAG,GAAI,MAAM,EACpB,CAAC,EAAG,EAAG,EAAG,GAAI,MAAM,EACpB,CAAC,EAAG,EAAG,GAAI,EAAG,KAAK,EACnB,CAAC,EAAG,EAAG,GAAI,GAAI,KAAK,EACpB,CAAC,EAAG,EAAG,EAAG,EAAG,KAAK,EAClB,CAAC,EAAG,EAAG,EAAG,EAAG,KAAK,EAClB,CAAC,EAAG,EAAG,EAAG,GAAI,IAAI,EAClB,CAAC,EAAG,EAAG,EAAG,GAAI,IAAI,EAClB,CAAC,EAAG,GAAI,EAAG,GAAI,IAAI,EACnB,CAAC,EAAG,EAAG,GAAI,GAAI,IAAI,EACnB,CAAC,EAAG,EAAG,EAAG,EAAG,IAAI,EACjB,CAAC,EAAG,EAAG,EAAG,GAAI,KAAK,EACnB,CAAC,EAAG,GAAI,GAAI,EAAG,IAAI,EACnB,CAAC,EAAG,GAAI,EAAG,EAAG,IAAI,EAClB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAI,EACpB,CAAC,EAAG,EAAG,GAAI,GAAI,KAAK,EACpB,CAAC,EAAG,EAAG,GAAI,GAAI,IAAI,EACnB,CAAC,EAAG,EAAG,EAAG,EAAG,KAAK,EAClB,CAAC,EAAG,EAAG,EAAG,EAAG,KAAK,EAClB,CAAC,EAAG,EAAG,GAAI,EAAG,KAAK,EACnB,CAAC,EAAG,EAAG,EAAG,EAAG,KAAK,EAClB,CAAC,EAAG,EAAG,EAAG,EAAG,KAAK,EAClB,CAAC,EAAG,EAAG,EAAG,GAAI,KAAK,EACnB,CAAC,EAAG,EAAG,EAAG,GAAI,KAAK,EACnB,CAAC,EAAG,EAAG,EAAG,GAAI,KAAK,EACnB,CAAC,EAAG,EAAG,EAAG,EAAG,IAAI,EACjB,CAAC,EAAG,EAAG,EAAG,GAAI,IAAI,EAClB,CAAC,EAAG,EAAG,GAAI,EAAG,GAAG,EACjB,CAAC,EAAG,EAAG,EAAG,GAAI,GAAG,EACjB,CAAC,EAAG,EAAG,GAAI,EAAG,GAAG,EACjB,CAAC,EAAG,EAAG,EAAG,GAAI,GAAG,EACjB,CAAC,EAAG,EAAG,EAAG,GAAI,GAAG,EACjB,CAAC,EAAG,GAAI,EAAG,GAAI,GAAG,EAClB,CAAC,EAAG,EAAG,GAAI,EAAG,IAAI,EAClB,CAAC,EAAG,EAAG,EAAG,GAAI,GAAG,EACjB,CAAC,EAAG,EAAG,EAAG,EAAG,GAAG,EAChB,CAAC,EAAG,EAAG,GAAI,GAAI,GAAG,EAClB,CAAC,EAAG,EAAG,GAAI,EAAG,IAAI,EAClB,CAAC,EAAG,EAAG,EAAG,EAAG,IAAI,EACjB,CAAC,EAAG,EAAG,EAAG,EAAG,GAAG,EAChB,CAAC,EAAG,GAAI,EAAG,EAAG,GAAG,EACjB,CAAC,EAAG,GAAI,EAAG,GAAI,GAAG,EAClB,CAAC,EAAG,EAAG,EAAG,EAAG,IAAI,EACjB,CAAC,EAAG,EAAG,EAAG,GAAI,IAAI,EAClB,CAAC,EAAG,EAAG,EAAG,GAAI,GAAG,EACjB,CAAC,EAAG,EAAG,EAAG,EAAG,GAAG,EAChB,CAAC,EAAG,EAAG,GAAI,GAAI,IAAI,EACnB,CAAC,EAAG,EAAG,GAAI,GAAI,IAAI,EACnB,CAAC,EAAG,EAAG,EAAG,EAAG,IAAI,EACjB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAG,EACnB,CAAC,EAAG,EAAG,EAAG,EAAG,IAAI,EACjB,CAAC,EAAG,EAAG,GAAI,GAAI,GAAG,EAClB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAG,EACnB,CAAC,EAAG,EAAG,EAAG,GAAI,IAAI,EAClB,CAAC,EAAG,EAAG,EAAG,GAAI,GAAG,EACjB,CAAC,EAAG,EAAG,GAAI,GAAI,IAAI,EACnB,CAAC,EAAG,GAAI,EAAG,GAAI,GAAG,EAClB,CAAC,EAAG,GAAI,EAAG,EAAG,GAAG,CACrB,ECtIO,IAAMC,GAAkB,QAClBC,GAAgB,OCFtB,IAAMC,GAA8B,aAC9BC,GAAyB,WCD/B,IAAKC,OACRA,EAAA,MAAQ,IACRA,EAAA,eAAiB,MACjBA,EAAA,UAAY,KACZA,EAAA,cAAgB,MAChBA,EAAA,KAAO,IACPA,EAAA,cAAgB,MAChBA,EAAA,UAAY,KACZA,EAAA,eAAiB,MACjBA,EAAA,MAAQ,IACRA,EAAA,eAAiB,MACjBA,EAAA,UAAY,KACZA,EAAA,cAAgB,MAChBA,EAAA,KAAO,IACPA,EAAA,cAAgB,MAChBA,EAAA,UAAY,KACZA,EAAA,eAAiB,MAhBTA,OAAA,ICAL,IAAKC,QACRA,EAAA,UAAY,YACZA,EAAA,OAAS,SACTA,EAAA,UAAY,YAHJA,QAAA,ICAL,IAAMC,EAAM,KAAK,GAAK,IAChBC,GAAM,IAAM,KAAK,GCDvB,SAASC,EAAMC,EAAeC,EAAW,EAAW,CACvD,IAAMC,EAAI,IAAMD,EAEhB,OAAO,KAAK,MAAMD,EAAQE,CAAC,EAAIA,CACnC,CAEO,SAASC,EAAIC,EAAsBC,EAAsB,CAC5D,IAAIC,EAASF,EAAI,SAAS,EAE1B,KAAOE,EAAO,OAASD,GACnBC,EAAS,IAAIA,CAAM,GAGvB,OAAOA,CACX,CAEO,SAASC,EAAKC,EAAwB,CACzC,OAAO,KAAK,IAAIA,CAAM,EAAI,KAAK,IAAIA,CAAM,CAC7C,CAEO,SAASC,EAAKD,EAAwB,CACzC,OAAO,KAAK,IAAIA,CAAM,EAAI,KAAK,IAAIA,CAAM,CAC7C,CCNO,SAASE,EAAsBC,EAAiBC,EAAQ,GAAOC,EAAkC,CACpG,IAAMC,EAAOC,EAAcJ,EAASE,CAAQ,EAE5CF,EAAU,KAAK,IAAIA,CAAO,EAE1B,IAAMK,EAAU,KAAK,MAAML,CAAO,EAC5BM,EAAMC,GAAOP,EAAUK,GAAW,GAAI,CAAC,EAEvCG,EAAY,GAAGH,CAAO,QACtBI,EAAY,GAAGC,EAAIJ,EAAK,CAAC,CAAC,IAEhC,OAAIL,GAASI,IAAY,EACdF,EAAOM,EAGXN,EAAOK,EAAYC,CAC9B,CAEO,SAASE,EAA6BX,EAAiBC,EAAQ,GAAOC,EAAkC,CAC3G,IAAMC,EAAOC,EAAcJ,EAASE,CAAQ,EAE5CF,EAAU,KAAK,IAAIA,CAAO,EAE1B,IAAMK,EAAU,KAAK,MAAML,CAAO,EAC5BM,EAAM,KAAK,OAAON,EAAUK,GAAW,EAAE,EACzCO,EAAML,GAAOP,EAAUK,EAAUC,EAAM,IAAM,KAAM,CAAC,EACpDO,EAAWD,EAAI,SAAS,EAAE,MAAM,GAAG,EAEnCJ,EAAY,GAAGH,CAAO,QACtBI,EAAY,GAAGC,EAAIJ,EAAK,CAAC,CAAC,KAC1BQ,EAAY,GAAGD,EAAS,SAAW,EAAIH,EAAIE,EAAK,CAAC,EAAI,GAAGF,EAAIG,EAAS,CAAC,EAAG,CAAC,CAAC,IAAIA,EAAS,CAAC,CAAC,EAAE,IAElG,OAAIZ,GAASI,IAAY,GAAOC,IAAQ,EAC7BH,EAAOW,EAGdb,GAASI,IAAY,EACdF,EAAOM,EAAYK,EAGvBX,EAAOK,EAAYC,EAAYK,CAC1C,CAkDO,SAASC,EAAeC,EAAiBC,EAAY,IAAe,CACvE,IAAIC,EAAQF,EAAUC,EAEtB,OAAIC,EAAQ,IACRA,EAAQA,EAAQD,GAGbC,CACX,CAMA,SAASC,EAAcC,EAAiBC,EAAkC,CACtE,OAAIA,EACOD,EAAU,EAAIC,EAAS,eAAiBA,EAAS,eAGrDD,EAAU,EAAI,IAAM,EAC/B,CCjHO,SAASE,EAAgBC,EAAmBC,EAA2B,CAC1E,GAAM,CAAC,IAAKC,EAAM,IAAKC,CAAI,EAAIH,EACzB,CAAC,IAAKI,EAAM,IAAKC,CAAI,EAAIJ,EAGzBK,GAAKJ,EAAOE,GAAQ,EACpBG,GAAKL,EAAOE,GAAQ,EACpBI,GAAUH,EAAOF,GAAQ,EAEzBM,EAAOH,EAAII,EACXC,EAAOJ,EAAIG,EACXE,EAAYJ,EAASE,EAErBG,EAAIC,EAAKH,CAAI,EAAII,EAAKH,CAAS,EAAIG,EAAKN,CAAI,EAAIK,EAAKF,CAAS,EAC9DI,EAAID,EAAKJ,CAAI,EAAII,EAAKH,CAAS,EAAIE,EAAKL,CAAI,EAAIK,EAAKF,CAAS,EAE9DK,EAAW,KAAK,KAAK,KAAK,KAAKJ,EAAIG,CAAC,CAAC,EAErC,EAAI,KAAK,KAAKH,EAAIG,CAAC,EAAIC,EACvBC,EAAK,EAAID,EAAW,QAAkC,IACtDE,IAAM,EAAI,EAAI,IAAM,EAAIH,GACxBI,IAAM,EAAI,EAAI,IAAM,EAAIP,GAE9B,OAAOK,GAAK,EAAIG,EAAmBF,GAAKL,EAAKL,CAAI,EAAIM,EAAKJ,CAAI,EAAIU,EAAmBD,GAAKL,EAAKN,CAAI,EAAIK,EAAKH,CAAI,EACpH,CCnCO,SAASW,EAAeC,EAAmB,CAE9C,IAAMC,EAAI,YAAc,cAAgBD,EAAI,QAAYA,GAAK,EAAIA,GAAK,EAAI,OAE1E,OAAOE,EAAeD,CAAC,CAC3B,CCDO,SAASE,EAAkBC,EAAmB,CAEjD,IAAMC,EAAI,YAAc,eAAiBD,EAAI,SAAYA,GAAK,EAAIA,GAAK,EAAI,OAASA,GAAK,EAAI,SAE7F,OAAOE,EAAeD,CAAC,CAC3B,CAEO,SAASE,EAAeH,EAAmB,CAE9C,IAAMI,EAAQ,YAAc,eAAiBJ,EAAI,SAAYA,GAAK,EAAIA,GAAK,EAAI,MAAQA,GAAK,EAAI,QAEhG,OAAOE,EAAeE,CAAK,CAC/B,CAEO,SAASC,EAAsBL,EAAmB,CAErD,IAAMM,EAAI,UAAY,eAAiBN,EAAI,SAAYA,GAAK,EAAIA,GAAK,EAAI,OAASA,GAAK,EAAI,QAE3F,OAAOE,EAAeI,CAAC,CAC3B,CCHO,SAASC,GAA2BC,EAAmB,CAC1D,IAAMC,EAAID,EAAI,IAgBd,OAZI,UACE,QAAUC,EACV,KAAOA,GAAK,EACZ,QAAUA,GAAK,EACf,MAAQA,GAAK,EACb,OAASA,GAAK,EACd,MAAQA,GAAK,EACb,KAAOA,GAAK,EACZ,MAAQA,GAAK,EACb,KAAOA,GAAK,EACZ,KAAOA,GAAK,IAEJ,IAClB,CAEO,SAASC,GAA2BF,EAAmB,CAC1D,IAAMG,EAAOJ,GAA2BC,CAAC,EACnCI,EAASC,GAAuBL,CAAC,EAGvC,OAAOG,EAAOC,CAClB,CAEO,SAASE,EAAuBN,EAAmB,CAEtD,IAAMO,EAASC,EAAkBR,CAAC,EAC5BS,EAAWC,EAAeV,CAAC,EAC3BW,EAAaD,EAAeV,CAAC,EAC7BY,EAASC,EAAsBb,CAAC,EAGhCc,EAAI,UAAY,YAAcd,EAAI,SAAYA,GAAK,EAAIA,GAAK,EAAI,KAElEe,EAAS,EACb,OAAAC,EAA4B,QAASC,GAAS,CAC1C,IAAMC,EAAWD,EAAK,CAAC,EACjBE,EAAUF,EAAK,CAAC,EAChBG,EAAOH,EAAK,CAAC,EACbI,EAAOJ,EAAK,CAAC,EACbK,EAAOL,EAAK,CAAC,EACbM,EAAUN,EAAK,CAAC,EAChBO,EAAUP,EAAK,CAAC,EAEhBQ,EAASJ,EAAOd,EAAIY,EAAUV,EAAOS,EAAWP,EAAQS,EAAOR,EAAIU,EAAOR,EAEhFC,GAAU,KAAK,IAAIU,EAASC,CAAG,GAAKH,EAAUC,EAAUxB,EAC5D,CAAC,EAEOe,EAAS,KAAU,IAC/B,CAEO,SAASV,GAAuBL,EAAmB,CAEtD,IAAMO,EAASC,EAAkBR,CAAC,EAC5BS,EAAWC,EAAeV,CAAC,EAC3BW,EAAaD,EAAeV,CAAC,EAC7BY,EAASC,EAAsBb,CAAC,EAGhCc,EAAI,UAAY,YAAcd,EAAI,SAAYA,GAAK,EAAIA,GAAK,EAAI,KAElEI,EAAS,EACb,OAAAY,EAA4B,QAASC,GAAS,CAC1C,IAAMC,EAAWD,EAAK,CAAC,EACjBE,EAAUF,EAAK,CAAC,EAChBG,EAAOH,EAAK,CAAC,EACbI,EAAOJ,EAAK,CAAC,EACbK,EAAOL,EAAK,CAAC,EACbU,EAAUV,EAAK,CAAC,EAChBW,EAAUX,EAAK,CAAC,EAEhBQ,EAASJ,EAAOd,EAAIY,EAAUV,EAAOS,EAAWP,EAAQS,EAAOR,EAAIU,EAAOR,EAEhFV,GAAU,KAAK,IAAIqB,EAASC,CAAG,GAAKC,EAAUC,EAAU5B,EAC5D,CAAC,EAEOI,EAAS,KAAU,IAC/B,CCzDO,SAASyB,GAA0BC,EAA0B,CAChE,GAAIA,EAAW,GACX,OAAOA,EAIX,IAAMC,EAAI,KAAO,KAAK,KAAKD,EAAW,MAAQA,EAAW,OAASE,CAAG,EAErE,OAAOF,EAAWC,EAAI,EAC1B,CCvDO,SAASE,GAAkBC,EAA4B,CAC1D,IAAMC,GAAeD,EAAU,IAAO,KAAO,IACvCE,EAAuB,oFAiB7B,EACMC,EAAQ,KAAK,OAAOF,EAAa,OAAS,IAAI,EAAIC,EAAQ,OAEhE,OAAOA,EAAQC,CAAK,CACxB,CCrBA,IAAqBC,EAArB,MAAqBC,CAAiC,CAK3C,YACaC,EACAC,EACAC,EAAoB,EACtC,CAHkB,SAAAF,EACA,SAAAC,EACA,eAAAC,EAPpB,KAAQ,mBAAqB,CAAC,eAAgB,KAAM,eAAgB,IAAI,EAExE,KAAQ,iBAAmB,CAAC,eAAgB,KAAM,eAAgB,IAAI,CAMnE,CAEH,OAAc,OAAOF,EAAaC,EAAaC,EAAY,EAAa,CACpE,OAAO,IAAIH,EAASC,EAAKC,EAAKC,CAAS,CAC3C,CAEO,aAAsB,CACzB,OAAO,KAAK,GAChB,CAEO,cAAuB,CAC1B,OAAO,KAAK,GAChB,CAEO,cAAuB,CAC1B,OAAO,KAAK,SAChB,CAEO,4BAAqC,CACxC,OAAOC,EAAsB,KAAK,IAAK,GAAO,KAAK,kBAAkB,CACzE,CAEO,6BAAsC,CACzC,OAAOA,EAAsB,KAAK,IAAK,GAAO,KAAK,gBAAgB,CACvE,CAEO,mCAA4C,CAC/C,OAAOC,EAA6B,KAAK,IAAK,GAAO,KAAK,kBAAkB,CAChF,CAEO,oCAA6C,CAChD,OAAOA,EAA6B,KAAK,IAAK,GAAO,KAAK,gBAAgB,CAC9E,CAEO,kBAAkBC,EAA4B,CACjD,OAAOC,EAAgB,KAAMD,CAAQ,CACzC,CACJ,EC3CO,IAAME,EAA6C,CACtD,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACjF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EACnF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,EAAE,EACrF,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,EAAE,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI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","names":["EARTH_EQUATORIAL_RADIUS_METERS","EARTH_EQUATORIAL_DIAMETER_METERS","EARTH_EQUATORIAL_RADIUS_KM","EARTH_EQUATORIAL_DIAMETER_KM","EARTH_AXIS_RATIO","EARTH_FLATTENING","EARTH_POLAR_RADIUS_RATIO","ECCENTRICITY_SQUARED","EARTH_ROTATION_DEG_PER_HOUR","EARTH_SIDEREAL_ROTATION_PER_DAY","SUNRISE_SUNSET_ALTITUDE_DEG","EARTH_ARGUMENTS_OF_NUTATION","EPOCH_J1900","EPOCH_J1950","EPOCH_J2000","EPOCH_J2100","INCLINATION_OF_MEAN_LUNAR_EQUATOR","MOON_DIAMETER_KM","MOON_RADIUS_KM","MOON_PHASE_NEW_MOON","MOON_PHASE_FIRST_QUARTER","MOON_PHASE_FULL_MOON","MOON_PHASE_LAST_QUARTER","MOON_ARGUMENTS_LR","MOON_ARGUMENTS_B","SUN_DIAMETER_KM","SUN_RADIUS_KM","ASTRONOMICAL_UNIT_IN_METERS","LIGHT_SPEED_KM_PER_SEC","Direction","LimbAlignment","DEG","RAD","round","value","decimals","p","pad","num","size","numStr","sin2","number","cos2","decimal2degreeMinutes","decimal","short","prefixes","sign","getSignPrefix","degPart","min","round","degString","minString","pad","decimal2degreeMinutesSeconds","sec","secParts","secString","normalizeAngle","degrees","baseAngle","angle","getSignPrefix","decimal","prefixes","getDistanceInKm","location1","location2","lat1","lon1","lat2","lon2","F","G","lambda","FRad","DEG","GRad","lambdaRad","S","sin2","cos2","C","omegaRad","D","H1","H2","EARTH_FLATTENING","getMeanAnomaly","T","M","normalizeAngle","getMeanElongation","T","D","normalizeAngle","getMeanAnomaly","Mmoon","getArgumentOfLatitude","F","getMeanObliquityOfEcliptic","T","U","getTrueObliquityOfEcliptic","eps0","sumEps","getNutationInObliquity","getNutationInLongitude","D","getMeanElongation","Msun","getMeanAnomaly","Mmoon","F","getArgumentOfLatitude","O","sumPhi","EARTH_ARGUMENTS_OF_NUTATION","args","argMmoon","argMsun","argF","argD","argO","argPhi1","argPhi2","tmpSum","DEG","argEps1","argEps2","correctEffectOfRefraction","altitude","R","DEG","azimuth2direction","azimuth","normalized","sectors","index","Location","_Location","lat","lon","elevation","decimal2degreeMinutes","decimal2degreeMinutesSeconds","location","getDistanceInKm","REFERENCE_DELTA_T","REFERENCE_MIN_YEAR","REFERENCE_DELTA_T","REFERENCE_MAX_YEAR","FUTURE_FIT_START_YEAR","FUTURE_DELTA_T_COEFFICIENTS","fitPolynomial","yearlyReferenceValues","deltaT","index","getDeltaT","year","month","y","getReferenceDeltaT","evaluatePolynomial","t","first","last","clamped","low","high","mid","year0","deltaT0","year1","deltaT1","fraction","from","to","values","coefficients","x","sum","coefficient","power","points","degree","size","matrix","vector","i","j","value","pivot","row","factor","col","_","time2julianDay","time","tmpYear","getDayOfYear","Y","M","D","H","A","B","julianDay2time","jd","Z","F","A","a","B","C","D","E","dayOnMonth","month","year","hour","min","sec","julianDay2julianDay0","julianDay2julianCenturiesJ2000","jd","EPOCH_J2000","julianCenturiesJ20002julianDay","T","julianDay2julianMillenniaJ2000","julianDay2julianDayEphemeris","jd","year","month","julianDay2time","getDeltaT","julianDayEphemeris2julianDay","jde","dayOfYear2time","dayOfYear","K","isLeapYear","day","hourFloat","hour","minFloat","min","sec","round","getDecimalYear","time","daysInYear","getDayOfYear","M","D","getDayOfWeek","time2julianDay","getGreenwichMeanSiderealTime","T","GMST","julianCenturiesJ20002julianDay","EPOCH_J2000","normalizeAngle","getGreenwichApparentSiderealTime","p","getNutationInLongitude","eRad","getTrueObliquityOfEcliptic","DEG","getLocalMeanSiderealTime","lon","LMST","getLocalApparentSiderealTime","TimeOfInterest","_TimeOfInterest","time","time2julianDay","julianDay2julianDayEphemeris","julianDay2julianCenturiesJ2000","date","year","month","day","hour","min","sec","dayOfYear","dayOfYear2time","jd","julianDay2time","jde","julianDayEphemeris2julianDay","T","julianCenturiesJ20002julianDay","pad","getDecimalYear","getDayOfYear","getDayOfWeek","isLeapYear","julianDay2julianDay0","julianDay2julianMillenniaJ2000","getGreenwichMeanSiderealTime","getGreenwichApparentSiderealTime","location","getLocalMeanSiderealTime","getLocalApparentSiderealTime","getDeltaT"]}