├── .gitattributes ├── README.md ├── __pycache__ ├── mamba.cpython-39.pyc └── pscan.cpython-39.pyc ├── data ├── 0C │ ├── DST_0C.csv │ ├── FUDS_0C.csv │ └── US06_0C.csv ├── 10C │ ├── DST_10C.csv │ ├── FUDS_10C.csv │ └── US06_10C.csv ├── 25C │ ├── DST_25C.csv │ ├── FUDS_25C.csv │ └── US06_25C.csv ├── 30C │ ├── DST_30C.csv │ ├── FUDS_30C.csv │ └── US06_30C.csv ├── 40C │ ├── DST_40C.csv │ ├── FUDS_40C.csv │ └── US06_40C.csv ├── 50C │ ├── DST_50C.csv │ ├── FUDS_50C.csv │ └── US06_50C.csv ├── CaseA │ ├── 100.csv │ ├── 124.csv │ └── 91.csv ├── CaseB │ ├── 101.csv │ ├── 108.csv │ ├── 116.csv │ └── 120.csv └── __pycache__ │ ├── __init__.cpython-37.pyc │ ├── __init__.cpython-39.pyc │ ├── data_loader.cpython-37.pyc │ └── data_loader.cpython-39.pyc ├── main.py ├── mamba.py ├── pscan.py └── soc.py /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MambaLithium: Selective state space model for remaining-useful-life, state-of-health, and state-of-charge estimation of lithium-ion batteries 2 | 3 | Lithium-ion batteries is crucial in electric vehicles and new energy industry. Remaining-useful-life (RUL), state-of-health (SOH) and state-of-charge (SOC) are three key states of lithium-ion batteries. As Mamba (Structured state space sequence models with selection mechanism and scan module, S6) has achieved remarkable success in sequence modeling tasks, this repository proposes a Mamba-based model to predict RUL, SOH and SOC. 4 | 5 | ## Requirements 6 | 7 | The code has been tested running under Python 3.7.4, with the following packages and their dependencies installed: 8 | ``` 9 | numpy==1.16.5 10 | matplotlib==3.1.0 11 | sklearn==0.21.3 12 | pandas==0.25.1 13 | pytorch==1.7.1 14 | ``` 15 | 16 | The RUL and SOH data used in this repository were downloaded from https://github.com/WenPengfei0823/PINN-Battery-Prognostics. The SOC data used in this repository was downloaded from https://github.com/GuoKent/Hybrid_time_series_forecasting_model. Some code of the Mamba model is from https://github.com/alxndrTL/mamba.py 17 | 18 | ## RUL and SOH prediction 19 | 20 | Following previous research (Kong et al., 2021; Wen et al., 2024), two datasets named `CaseA` and `CaseB` in the `./data` folder are used for evaluation. 21 | 22 | RUL prediction 23 | 24 | ``` 25 | python main.py --task RUL 26 | ``` 27 | 28 | SOH prediction 29 | 30 | ``` 31 | python main.py --task SOH 32 | ``` 33 | 34 | We adopt an argument parser by package `argparse` in Python, and the options for running code are defined as follow: 35 | 36 | ```python 37 | parser = argparse.ArgumentParser() 38 | parser.add_argument('--use-cuda', default=False, 39 | help='CUDA training.') 40 | parser.add_argument('--seed', type=int, default=1, help='Random seed.') 41 | parser.add_argument('--epochs', type=int, default=100, 42 | help='Number of epochs to train.') 43 | parser.add_argument('--lr', type=float, default=0.01, 44 | help='Learning rate.') 45 | parser.add_argument('--wd', type=float, default=1e-5, 46 | help='Weight decay (L2 loss on parameters).') 47 | parser.add_argument('--hidden', type=int, default=16, 48 | help='Dimension of representations') 49 | parser.add_argument('--layer', type=int, default=2, 50 | help='Num of layers') 51 | parser.add_argument('--task', type=str, default='SOH', 52 | help='RUL or SOH') 53 | parser.add_argument('--case', type=str, default='A', 54 | help='A or B') 55 | 56 | args = parser.parse_args() 57 | args.cuda = args.use_cuda and torch.cuda.is_available() 58 | ``` 59 | 60 | ## SOC prediction 61 | 62 | The `./data` folder includes three datasets for SOC prediction: DST, FUDS, US06. Following previous research (Yang et al., 2019; Chen et al., 2024), either of these datasets can be testing set, and the corresponding other two datasets are used for training. Users can choose SOC measured under different temperature (Celsius degree: 0C, 10C, 25C, 30C, 40C, 50C) for prediction. 63 | 64 | ``` 65 | python soc.py 66 | ``` 67 | 68 | We adopt an argument parser by package `argparse` in Python, and the options for running code are defined as follow: 69 | 70 | ```python 71 | parser = argparse.ArgumentParser() 72 | parser.add_argument('--use-cuda', default=False, 73 | help='CUDA training.') 74 | parser.add_argument('--seed', type=int, default=1, help='Random seed.') 75 | parser.add_argument('--epochs', type=int, default=100, 76 | help='Number of epochs to train.') 77 | parser.add_argument('--lr', type=float, default=0.01, 78 | help='Learning rate.') 79 | parser.add_argument('--wd', type=float, default=1e-5, 80 | help='Weight decay (L2 loss on parameters).') 81 | parser.add_argument('--hidden', type=int, default=16, 82 | help='Dimension of representations') 83 | parser.add_argument('--layer', type=int, default=2, 84 | help='Num of layers') 85 | parser.add_argument('--test', type=str, default='FUDS', 86 | help='Test set') 87 | parser.add_argument('--temp', type=str, default='25', 88 | help='Temperature') 89 | 90 | args = parser.parse_args() 91 | args.cuda = args.use_cuda and torch.cuda.is_available() 92 | ``` 93 | 94 | ## References 95 | 96 | Chen et al., An LSTM-SA model for SOC estimation of lithium-ion batteries under various temperatures and aging levels, J Energy Storage, 2024 97 | 98 | Kong et al., Voltage-temperature health feature extraction to improve prognostics and health management of lithium-ion batteries, Energy, 2021 99 | 100 | Wen et al., Physics-Informed Neural Networks for Prognostics and Health Management of Lithium-Ion Batteries, IEEE TIV, 2024 101 | 102 | Yang et al., State-of-Charge Estimation of Lithium-Ion Batteries via Long Short-Term Memory Network, IEEE Access, 2019 103 | 104 | ## Citation 105 | 106 | ``` 107 | @article{shi2024lithium, 108 | title={MambaLithium: Selective state space model for remaining-useful-life, state-of-health, and state-of-charge estimation of lithium-ion batteries}, 109 | author={Zhuangwei Shi}, 110 | journal={arXiv preprint arXiv:2403.05430}, 111 | year={2024}, 112 | } 113 | ``` 114 | -------------------------------------------------------------------------------- /__pycache__/mamba.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zshicode/MambaLithium/8f83b38b3f1fba02ce2e1be34950c898189eea77/__pycache__/mamba.cpython-39.pyc -------------------------------------------------------------------------------- /__pycache__/pscan.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zshicode/MambaLithium/8f83b38b3f1fba02ce2e1be34950c898189eea77/__pycache__/pscan.cpython-39.pyc -------------------------------------------------------------------------------- /data/CaseB/108.csv: -------------------------------------------------------------------------------- 1 | Cycle,omega,b,TemperatureAvg,InternalResistance,ChargeTime,dQdV_max,dQdV_min,dQdV_var,RUL,SOH 2 | 1,0.010334757,0.010409503,35.47894882,0.0157979,10.04236667,-0.13919179,-6.684739674,3.600588158,988,0.963709 3 | 2,0.010339191,0.010397106,35.47182038,0.015774952,10.0424775,-0.139505144,-6.63696499,3.600228187,987,0.964663818 4 | 3,0.010336324,0.01037511,35.46822715,0.015754952,10.04243056,-0.139953223,-6.647184206,3.605429707,986,0.965434545 5 | 4,0.01033379,0.010359765,35.46729188,0.0157406,10.0421575,-0.139817613,-6.635155569,3.604727968,985,0.965933273 6 | 5,0.010333249,0.010348533,35.45714273,0.015727322,10.04191067,-0.140095422,-6.646402716,3.609548464,984,0.966354636 7 | 6,0.010331443,0.01033887,35.44548273,0.015718036,10.04172639,-0.140233174,-6.647345664,3.61017976,983,0.966684455 8 | 7,0.010329943,0.010329572,35.43769609,0.01570894,10.04162262,-0.140235735,-6.64617098,3.611266239,982,0.967077545 9 | 8,0.01032903,0.010322319,35.43132736,0.015700631,10.04159688,-0.140378842,-6.645348469,3.61194795,981,0.967213364 10 | 9,0.010326803,0.010313467,35.42676862,0.015692564,10.04148056,-0.140550572,-6.637746707,3.610142084,980,0.967455909 11 | 10,0.010326402,0.010308154,35.42746617,0.015686164,10.0415825,-0.140665448,-6.636148373,3.610900296,979,0.967460091 12 | 11,0.010324691,0.010292474,35.4199341,0.01566757,10.041608,-0.140941929,-6.62525632,3.611267321,978,0.967532727 13 | 12,0.010320045,0.010277644,35.41797532,0.015654916,10.0415245,-0.141229266,-6.62833821,3.611527281,977,0.967735182 14 | 13,0.010317392,0.010269668,35.41004711,0.015648825,10.0414955,-0.141436698,-6.624424068,3.6105704,976,0.967610273 15 | 14,0.01031509,0.01026353,35.4012611,0.015643479,10.0415225,-0.141583218,-6.626527618,3.610227429,975,0.967775182 16 | 15,0.010313045,0.010258834,35.40481969,0.015638594,10.04168,-0.141775688,-6.621318659,3.608392227,974,0.967870909 17 | 16,0.0103114,0.010253802,35.41411979,0.015632965,10.04179583,-0.14203818,-6.616546659,3.608177229,973,0.967835 18 | 17,0.010310531,0.010251511,35.42354924,0.015628657,10.041912,-0.142354791,-6.615442205,3.607130031,972,0.967883091 19 | 18,0.010309862,0.010250211,35.43431965,0.015624535,10.04214533,-0.142659174,-6.611063495,3.605332534,971,0.968050818 20 | 19,0.010309928,0.010251746,35.44289758,0.015622201,10.04247867,-0.142818168,-6.615552794,3.60692118,970,0.968151182 21 | 20,0.010308494,0.010251766,35.44527915,0.015620329,10.04263633,-0.142933923,-6.619603075,3.60789086,969,0.968199455 22 | 21,0.01030761,0.010253699,35.45088857,0.015620216,10.0427865,-0.14301945,-6.621574723,3.608010306,968,0.968377909 23 | 22,0.01030765,0.010256573,35.45062965,0.015618288,10.042934,-0.143092049,-6.621501961,3.608558487,967,0.96829 24 | 23,0.010307617,0.010259909,35.46598144,0.01561349,10.04315783,-0.143058669,-6.617755414,3.60708752,966,0.968273091 25 | 24,0.010306416,0.010262705,35.48594063,0.015610766,10.0433145,-0.143231381,-6.62550137,3.608627605,965,0.968203 26 | 25,0.010301761,0.010263503,35.49294316,0.015609868,10.043329,-0.143048476,-6.617914467,3.604928973,964,0.968155091 27 | 26,0.01029754,0.010267222,35.48767633,0.015611901,10.04339683,-0.142931152,-6.615099239,3.60090707,963,0.968230636 28 | 27,0.010291742,0.010269318,35.47508587,0.015614286,10.04352017,-0.142823806,-6.609947711,3.596690064,962,0.968175818 29 | 28,0.010286544,0.010272335,35.46351233,0.015617134,10.04329117,-0.142593644,-6.609883288,3.594685206,961,0.968117182 30 | 29,0.010281155,0.01027437,35.46166293,0.015618768,10.0431435,-0.14244569,-6.603625942,3.58952936,960,0.968269455 31 | 30,0.010276082,0.010276326,35.46272782,0.015619426,10.042973,-0.142332548,-6.588137375,3.583028272,959,0.968299455 32 | 31,0.01027123,0.010278274,35.47010824,0.015619399,10.04274567,-0.142337298,-6.578311945,3.57726418,958,0.968313636 33 | 32,0.010268207,0.010282136,35.48086823,0.015618796,10.04259333,-0.142415134,-6.573398504,3.572385894,957,0.968573818 34 | 33,0.010264545,0.010284017,35.48360227,0.015618304,10.042318,-0.142473069,-6.570763,3.569166405,956,0.968557818 35 | 34,0.010261368,0.01028656,35.48246535,0.015616643,10.04215233,-0.142442858,-6.560812614,3.564461462,955,0.968486091 36 | 35,0.010259675,0.010289785,35.48647827,0.015615006,10.04198133,-0.142568765,-6.5595386,3.562312505,954,0.968561273 37 | 36,0.010257423,0.010292226,35.49844003,0.015611726,10.04188767,-0.142716528,-6.556802711,3.561004999,953,0.968495818 38 | 37,0.010255765,0.010295277,35.51857378,0.015609524,10.04170617,-0.142656874,-6.554886636,3.559319625,952,0.968609545 39 | 38,0.010253756,0.010298957,35.53108164,0.015608075,10.04187217,-0.14266127,-6.550434491,3.556026403,951,0.968533364 40 | 39,0.010251447,0.010304622,35.53050765,0.01560797,10.04188833,-0.142735905,-6.552100491,3.554307234,950,0.968475091 41 | 40,0.010248459,0.010310698,35.52544545,0.015610065,10.0418875,-0.142806499,-6.555269778,3.551579696,949,0.968506 42 | 41,0.010245357,0.010315299,35.51724561,0.015612038,10.04189017,-0.142772468,-6.562463279,3.550563487,948,0.968577455 43 | 42,0.010240434,0.010319258,35.50994421,0.01561624,10.041938,-0.142507086,-6.55850434,3.547106614,947,0.968517818 44 | 43,0.010236501,0.010324937,35.50083333,0.015620261,10.04200267,-0.142463192,-6.553105784,3.543319519,946,0.968528 45 | 44,0.010232545,0.010330823,35.49472633,0.015624333,10.04216433,-0.143189154,-6.546926828,3.538108566,945,0.968436 46 | 45,0.010230665,0.010339011,35.48820526,0.015628914,10.04244583,-0.143110876,-6.548453184,3.536078406,944,0.968371 47 | 46,0.010230346,0.010347912,35.48443039,0.015632412,10.04249983,-0.14296153,-6.545500974,3.53266719,943,0.968370182 48 | 47,0.010231575,0.010358214,35.48314431,0.015633815,10.042545,-0.143171082,-6.543960888,3.530850405,942,0.968495364 49 | 48,0.010232094,0.010366478,35.49097798,0.015633628,10.04245933,-0.143174946,-6.545204935,3.530088982,941,0.968358364 50 | 49,0.010232175,0.010372071,35.50827522,0.015633487,10.04236033,-0.143099592,-6.535791846,3.527709223,940,0.968246545 51 | 50,0.01023379,0.010378237,35.53450559,0.015630887,10.042276,-0.143159704,-6.540034226,3.527669258,939,0.968440364 52 | 51,0.010236077,0.010385764,35.56111628,0.015628716,10.0423275,-0.143253216,-6.538125553,3.527645887,938,0.968300364 53 | 52,0.010239058,0.010392864,35.58826736,0.015623598,10.04228967,-0.143461356,-6.538641077,3.529639655,937,0.967309364 54 | 53,0.010240343,0.010397741,35.61735821,0.015618819,10.04224917,-0.143421033,-6.537981687,3.529842014,936,0.968368909 55 | 54,0.010242768,0.010403414,35.64386474,0.015614222,10.042154,-0.142800429,-6.5371075,3.531559574,935,0.968298727 56 | 55,0.010244124,0.010407981,35.67382168,0.015609528,10.0419705,-0.142887753,-6.531146633,3.530224807,934,0.968308636 57 | 56,0.010244773,0.010412209,35.69993285,0.015605525,10.04190567,-0.142964553,-6.536846784,3.530886662,933,0.968523091 58 | 57,0.010244152,0.010415104,35.72329357,0.015603414,10.04206983,-0.142946588,-6.536255337,3.529169041,932,0.968525091 59 | 58,0.010242213,0.010417412,35.74413701,0.015602614,10.042217,-0.143145911,-6.529935971,3.526375417,931,0.968534182 60 | 59,0.010242205,0.010423766,35.75905245,0.015601797,10.04243133,-0.143285105,-6.531977601,3.525576111,930,0.968476545 61 | 60,0.010240546,0.010429199,35.76631741,0.01560221,10.04250417,-0.143238245,-6.524873612,3.522580775,929,0.968545 62 | 61,0.010237691,0.010434395,35.76249536,0.015603667,10.04266817,-0.143090115,-6.51852378,3.518562166,928,0.968422545 63 | 62,0.010234518,0.010439043,35.75641287,0.015606667,10.04288317,-0.142994516,-6.518232035,3.514288362,927,0.968455818 64 | 63,0.010231871,0.010445298,35.74642198,0.015610226,10.04312983,-0.142931521,-6.520996063,3.511999224,926,0.968492455 65 | 64,0.010227667,0.010449557,35.73654925,0.015614081,10.04332417,-0.142804492,-6.516445715,3.507856897,925,0.968410182 66 | 65,0.010223272,0.010454728,35.72177907,0.015617329,10.04328483,-0.142938329,-6.513273322,3.504022396,924,0.968285545 67 | 66,0.010216855,0.010458428,35.70889101,0.015621066,10.04374933,-0.142819474,-6.500122944,3.497386313,923,0.968241273 68 | 67,0.010210105,0.010462376,35.68770885,0.015625879,10.0437815,-0.142626334,-6.495263688,3.493092419,922,0.968249364 69 | 68,0.010203856,0.010466763,35.66614578,0.015630515,10.04358683,-0.146283636,-6.491822348,3.488118312,921,0.968239545 70 | 69,0.010196152,0.010469161,35.64271072,0.015635686,10.04355067,-0.146065884,-6.488135747,3.482130899,920,0.968284818 71 | 70,0.010188803,0.010472111,35.61641665,0.015642108,10.04192283,-0.146036575,-6.482151937,3.476491696,919,0.968287273 72 | 71,0.01018072,0.010473819,35.60135755,0.015647153,10.04188867,-0.145830973,-6.480395174,3.471487922,918,0.968225 73 | 72,0.010172856,0.010476251,35.58766507,0.015652802,10.04177083,-0.14568875,-6.472851868,3.465042896,917,0.968217273 74 | 73,0.010164414,0.010476979,35.57638224,0.015657573,10.04157567,-0.145432796,-6.463816989,3.458112803,916,0.968182 75 | 74,0.010157724,0.010479602,35.56494,0.01566169,10.041396,-0.145415336,-6.462132438,3.452860233,915,0.968143273 76 | 75,0.010150796,0.010481492,35.55693852,0.015665383,10.04145883,-0.145114309,-6.458991212,3.448182401,914,0.968123636 77 | 76,0.01015344,0.010490233,35.58143982,0.01566747,10.041071,-0.145080192,-6.463794249,3.448952248,913,0.968237364 78 | 77,0.010149186,0.010494358,35.58660677,0.015667351,10.041018,-0.144993275,-6.461142124,3.445539949,912,0.968127273 79 | 78,0.010145291,0.010499118,35.58177897,0.015670121,10.0411795,-0.14103946,-6.458522806,3.442365771,911,0.968008909 80 | 79,0.010142691,0.01050393,35.58167201,0.015671925,10.04121167,-0.140911836,-6.45530224,3.439779415,910,0.968030727 81 | 80,0.01014249,0.010510152,35.59138454,0.015671874,10.04284167,-0.140697634,-6.45643119,3.43880608,909,0.968019455 82 | 81,0.010143787,0.010516719,35.60329694,0.015670913,10.0427335,-0.140886681,-6.456485187,3.43818252,908,0.968098818 83 | 82,0.010142288,0.010522361,35.61455033,0.015669289,10.04282433,-0.141284025,-6.453552672,3.436791383,907,0.966993364 84 | 83,0.010144771,0.010531469,35.6265496,0.015668483,10.04272983,-0.141513471,-6.454671098,3.438649531,906,0.968063455 85 | 84,0.010146651,0.010540449,35.6380567,0.015668477,10.042615,-0.141392942,-6.454618275,3.437867149,905,0.968013455 86 | 85,0.010149956,0.010549697,35.64976623,0.015669087,10.04258417,-0.141441505,-6.452788984,3.437479889,904,0.967957182 87 | 86,0.010147606,0.01055418,35.63878653,0.015669603,10.0426485,-0.141339056,-6.44942808,3.43537339,903,0.967951 88 | 87,0.010151884,0.010560678,35.6591311,0.015668679,10.0425925,-0.141467996,-6.448576216,3.437195978,902,0.968163909 89 | 88,0.010157242,0.010567117,35.69553621,0.015664467,10.04250617,-0.141494045,-6.45174111,3.439850882,901,0.968152091 90 | 89,0.010160917,0.010572692,35.73372093,0.015659483,10.042316,-0.141657025,-6.457139175,3.441851543,900,0.968114273 91 | 90,0.010160789,0.010575725,35.76024755,0.015656454,10.04240033,-0.141684803,-6.451455331,3.440754154,899,0.968083909 92 | 91,0.010159721,0.010580428,35.77201237,0.015656272,10.04243083,-0.141684366,-6.447516025,3.438436853,898,0.968002727 93 | 92,0.010160658,0.010586349,35.775829,0.01565813,10.04231883,-0.141292591,-6.445990358,3.437543149,897,0.967939909 94 | 93,0.01015862,0.010590752,35.77746928,0.01565964,10.04248767,-0.141240596,-6.442745416,3.433733448,896,0.967954909 95 | 94,0.010156183,0.010594584,35.77950215,0.015661004,10.04261967,-0.141184739,-6.435872959,3.430751235,895,0.967850455 96 | 95,0.010152462,0.01059864,35.77749545,0.015663243,10.04275117,-0.141071123,-6.434612523,3.427743093,894,0.967799636 97 | 96,0.010145609,0.010601104,35.76644352,0.015668379,10.04280717,-0.140848576,-6.430374276,3.422705883,893,0.967723909 98 | 97,0.010139305,0.010606368,35.74831727,0.015674307,10.04283233,-0.140886625,-6.426859914,3.416796649,892,0.967712909 99 | 98,0.010132028,0.010611482,35.72471343,0.015680885,10.04290817,-0.14070417,-6.41924539,3.410352599,891,0.967697909 100 | 99,0.010125804,0.010617203,35.69785764,0.015689219,10.04304717,-0.145435195,-6.408470856,3.403800929,890,0.967505636 101 | 100,0.0101204,0.010622966,35.67855707,0.015694604,10.04310117,-0.145404593,-6.412199133,3.400033888,889,0.967605727 102 | 101,0.010115433,0.010627401,35.66861,0.015699769,10.04311767,-0.145385366,-6.409466162,3.396261774,888,0.967648818 103 | 102,0.010112626,0.010633159,35.66525414,0.01570238,10.04323183,-0.145230897,-6.406869519,3.393239307,887,0.967729727 104 | 103,0.010108334,0.010637584,35.66706762,0.015705517,10.0433395,-0.145322524,-6.403600799,3.388948701,886,0.967610727 105 | 104,0.010104709,0.010642038,35.65921624,0.015708119,10.04347433,-0.145370031,-6.405489624,3.386577921,885,0.967594727 106 | 105,0.010101383,0.010646284,35.65713815,0.015709512,10.0433585,-0.145209687,-6.407868466,3.385233211,884,0.967569273 107 | 106,0.010098442,0.010650214,35.65207865,0.015709913,10.04337633,-0.145481999,-6.405014993,3.38265886,883,0.967528455 108 | 107,0.010094738,0.010652802,35.65930913,0.015710837,10.04346967,-0.145278406,-6.404925788,3.380564941,882,0.967549091 109 | 108,0.010092746,0.010656604,35.66829839,0.015711107,10.04336683,-0.141035174,-6.405768902,3.378766992,881,0.967466182 110 | 109,0.010092328,0.010661056,35.68397642,0.0157095,10.04330567,-0.13617713,-6.407582623,3.37857171,880,0.967500545 111 | 110,0.01009241,0.010664479,35.70573983,0.015706886,10.0431885,-0.136263216,-6.400443317,3.377377841,879,0.967450909 112 | 111,0.010092576,0.01066751,35.72888585,0.015702883,10.04316083,-0.136072297,-6.398368163,3.377095488,878,0.967486455 113 | 112,0.010089349,0.010669052,35.75616918,0.015699402,10.04301367,-0.13624939,-6.389718641,3.374652493,877,0.966348909 114 | 113,0.010090169,0.010671652,35.77821809,0.01569413,10.04287183,-0.136265138,-6.390118571,3.375447672,876,0.967454 115 | 114,0.010091689,0.010674793,35.81303561,0.015689089,10.042787,-0.136503657,-6.387917644,3.376324286,875,0.967459182 116 | 115,0.010093229,0.01067624,35.84726412,0.015683126,10.04284833,-0.13682406,-6.383584743,3.376997355,874,0.967294818 117 | 116,0.010096114,0.010679527,35.89044149,0.015675293,10.04281183,-0.136867493,-6.383351884,3.378967067,873,0.967127091 118 | 117,0.010099691,0.010682613,35.93430515,0.015666664,10.04272933,-0.13697932,-6.378481206,3.380247245,872,0.967081818 119 | 118,0.010103605,0.010686055,35.98185667,0.015657718,10.0428125,-0.141495372,-6.377866779,3.382898469,871,0.967249636 120 | 119,0.010106827,0.010689096,36.02460162,0.01564944,10.042841,-0.141780196,-6.381104905,3.385169979,870,0.967281909 121 | 120,0.010110799,0.01069487,36.05766774,0.015642996,10.04286983,-0.141961332,-6.38341221,3.38733446,869,0.967281727 122 | 121,0.010115096,0.010702142,36.09073258,0.015637837,10.0428295,-0.142173869,-6.384000482,3.390333498,868,0.967232455 123 | 122,0.010121424,0.010708867,36.12132251,0.015632927,10.04306117,-0.142176008,-6.389398006,3.392949944,867,0.967252364 124 | 123,0.010124321,0.010714981,36.15001392,0.015628999,10.04321583,-0.142091706,-6.389921717,3.394781172,866,0.967233909 125 | 124,0.010125677,0.010719662,36.17404448,0.015626163,10.04311267,-0.141950183,-6.387349243,3.395498577,865,0.967148909 126 | 125,0.010125711,0.010725036,36.19640069,0.015624994,10.04323267,-0.142095949,-6.384492308,3.393725376,864,0.967135455 127 | 126,0.010124724,0.010729099,36.21175808,0.015626756,10.04309833,-0.14203829,-6.387123596,3.391895112,863,0.967048182 128 | 127,0.010123472,0.010735201,36.20720923,0.015629832,10.04312283,-0.141960064,-6.3865742,3.389884441,862,0.966993818 129 | 128,0.010119849,0.010739266,36.19129183,0.015633689,10.04313217,-0.141748416,-6.38525289,3.386356304,861,0.967088182 130 | 129,0.010114345,0.010743327,36.16763191,0.015638426,10.04305917,-0.14153535,-6.379145426,3.381495874,860,0.967035273 131 | 130,0.010108101,0.01074769,36.13943748,0.015645059,10.04300433,-0.141238409,-6.377406865,3.376794454,859,0.966994455 132 | 131,0.010100688,0.010750715,36.10664434,0.015652122,10.04300067,-0.141037638,-6.375394338,3.370775227,858,0.966860636 133 | 132,0.010094058,0.010754943,36.07044643,0.015660715,10.0427515,-0.140929958,-6.375761361,3.365978877,857,0.966844091 134 | 133,0.010087909,0.010759434,36.03478502,0.015669154,10.04258683,-0.140917475,-6.371614509,3.360093331,856,0.966842909 135 | 134,0.010081369,0.010764968,35.99805822,0.015677557,10.04263367,-0.140743247,-6.369843005,3.354115407,855,0.966782636 136 | 135,0.010075466,0.010769936,35.95995058,0.015685634,10.04244783,-0.140420689,-6.370129995,3.349956927,854,0.966841182 137 | 136,0.010069696,0.010776002,35.92360204,0.015691964,10.0426145,-0.140346192,-6.363886739,3.344978114,853,0.966739182 138 | 137,0.010064447,0.010780889,35.9001522,0.015697939,10.0425425,-0.140128041,-6.362133842,3.340990067,852,0.966624909 139 | 138,0.010059288,0.010785602,35.87553366,0.015703832,10.042549,-0.139990304,-6.361462723,3.336898376,851,0.966767636 140 | 139,0.010052586,0.010788426,35.85526011,0.015709602,10.04259517,-0.13989654,-6.357024493,3.332414981,850,0.966683727 141 | 140,0.010047553,0.010792174,35.84716432,0.015715803,10.04272383,-0.139868966,-6.355713104,3.328689129,849,0.966516273 142 | 141,0.010044789,0.010796483,35.8487362,0.015718078,10.04101983,-0.139792406,-6.352922938,3.325502131,848,0.966324273 143 | 142,0.010043146,0.01080326,35.85644173,0.015716854,10.041038,-0.139725692,-6.350730262,3.32375707,847,0.965294 144 | 143,0.010041762,0.010804765,35.88193904,0.015712657,10.04098767,-0.139813072,-6.34447043,3.321940953,846,0.966329182 145 | 144,0.010040476,0.010803802,35.91721668,0.015705467,10.04093633,-0.139826941,-6.340796461,3.321949875,845,0.966375545 146 | 145,0.010040519,0.010804685,35.95826695,0.015698361,10.04085133,-0.139994919,-6.338156039,3.321580181,844,0.966296 147 | 146,0.010041336,0.010805514,35.99679314,0.015691669,10.04082067,-0.140040163,-6.340304771,3.322558912,843,0.966222545 148 | 147,0.010041553,0.010806906,36.03363105,0.015684115,10.04067033,-0.140276633,-6.340499234,3.32263518,842,0.966252273 149 | 148,0.010042947,0.010809219,36.08664686,0.015676601,10.04058233,-0.140439057,-6.335979156,3.322924557,841,0.966368455 150 | 149,0.010048565,0.01081395,36.13281592,0.015669226,10.0406575,-0.14048698,-6.33597936,3.325710087,840,0.966444545 151 | 150,0.010052422,0.010815377,36.17384911,0.015659136,10.0404695,-0.140677347,-6.336132816,3.32711577,839,0.966400455 152 | 151,0.010053983,0.01081677,36.20670963,0.015652039,10.04210483,-0.140957955,-6.333512665,3.328318546,838,0.966320364 153 | 152,0.010054035,0.010816108,36.23293964,0.015647552,10.0422335,-0.140986148,-6.335640398,3.329328796,837,0.966334273 154 | 153,0.010052846,0.01082007,36.23983038,0.015647015,10.0421285,-0.140997379,-6.340272099,3.329466013,836,0.966175364 155 | 154,0.010052389,0.010826617,36.23941972,0.015648465,10.042285,-0.141163923,-6.337849649,3.326679956,835,0.966197182 156 | 155,0.010050634,0.010831678,36.22982421,0.015652884,10.04254983,-0.141021474,-6.33272882,3.324356205,834,0.966107182 157 | 156,0.010048229,0.010836641,36.22021696,0.015654589,10.0425185,-0.141018028,-6.326194013,3.321150947,833,0.966009636 158 | 157,0.010045229,0.010841016,36.20689464,0.015657672,10.04268367,-0.141011056,-6.323573972,3.318838626,832,0.966032545 159 | 158,0.010041548,0.010845586,36.17582716,0.015662753,10.0426565,-0.141000228,-6.321002003,3.315877783,831,0.966169818 160 | 159,0.01003617,0.010850228,36.14518516,0.015668149,10.04253883,-0.140952795,-6.318217787,3.311264747,830,0.966063727 161 | 160,0.010030149,0.01085599,36.11640123,0.015674693,10.04257383,-0.140859804,-6.312448635,3.30687126,829,0.966011091 162 | 161,0.010024929,0.010861936,36.08415255,0.015682345,10.0425965,-0.140595109,-6.312772671,3.302583248,828,0.965882636 163 | 162,0.010018885,0.010865922,36.05751842,0.015687937,10.04244917,-0.140465927,-6.306763863,3.298001065,827,0.965778273 164 | 163,0.010013895,0.010870827,36.03271701,0.015693381,10.04251683,-0.140309539,-6.299414164,3.293174594,826,0.965813273 165 | 164,0.010009049,0.010876263,36.00764458,0.015700058,10.0423095,-0.140218246,-6.299968067,3.290404773,825,0.965735727 166 | 165,0.010004582,0.010882449,35.98603743,0.015703078,10.04205683,-0.140064049,-6.305341944,3.287516126,824,0.965757 167 | 166,0.009999712,0.010888282,35.96278222,0.015709606,10.041875,-0.139855319,-6.306191393,3.284762417,823,0.965628909 168 | 167,0.009995515,0.010894073,35.94121317,0.015715391,10.04175133,-0.139658262,-6.301204558,3.280288216,822,0.965493182 169 | 168,0.009992105,0.010899477,35.93136194,0.015719219,10.04175567,-0.139678289,-6.29908586,3.276995011,821,0.965582909 170 | 169,0.009990012,0.010904621,35.93607861,0.01572228,10.04181217,-0.139514151,-6.299925845,3.275625685,820,0.965546727 171 | 170,0.009990284,0.01090972,35.94769035,0.015722846,10.04200867,-0.139342943,-6.29703147,3.274458032,819,0.965519636 172 | 171,0.009992196,0.010914192,35.96918356,0.015720087,10.04229883,-0.139393575,-6.293374343,3.274698038,818,0.965661273 173 | 172,0.009994352,0.010916948,35.9911825,0.015717377,10.04245517,-0.139645501,-6.292659677,3.274702798,817,0.965751636 174 | 173,0.009996932,0.010919956,36.0243753,0.015713643,10.04263783,-0.13958826,-6.299527447,3.277041663,816,0.965587091 175 | 174,0.010000312,0.01092224,36.0591688,0.015707572,10.042681,-0.139574007,-6.30118289,3.278484168,815,0.965639818 176 | 175,0.010003865,0.010924451,36.09317342,0.015701986,10.04289433,-0.140161715,-6.294988509,3.278917963,814,0.965671545 177 | 176,0.010007508,0.010926159,36.12978901,0.015695408,10.043126,-0.14040687,-6.292785884,3.279866845,813,0.965604909 178 | 177,0.01001164,0.010928634,36.16652093,0.015689598,10.04333733,-0.140701884,-6.293917418,3.282896537,812,0.965569364 179 | 178,0.010014468,0.01093043,36.20347934,0.015684013,10.04351433,-0.140778413,-6.296218021,3.285153606,811,0.965450636 180 | 179,0.010015592,0.010930661,36.24160744,0.015677391,10.04344583,-0.141038307,-6.294762267,3.286031529,810,0.965516636 181 | 180,0.010016436,0.010931336,36.27077914,0.015672542,10.04338533,-0.141268031,-6.294669589,3.286731888,809,0.965306727 182 | 181,0.010015692,0.010931903,36.31268112,0.015668223,10.04317017,-0.141391766,-6.294986021,3.286784803,808,0.965458818 183 | 182,0.010015773,0.010935546,36.33605502,0.015665939,10.04315733,-0.141485018,-6.295874139,3.286807946,807,0.965413545 184 | 183,0.010014659,0.010937764,36.3507712,0.015662407,10.04303983,-0.14165481,-6.290523701,3.284766864,806,0.965403091 185 | 184,0.010011118,0.010938171,36.36416226,0.015660992,10.04300483,-0.141754735,-6.284315282,3.282111044,805,0.965337091 186 | 185,0.010008342,0.010940158,36.37547772,0.015660405,10.04286767,-0.141455504,-6.284731515,3.281513564,804,0.965446091 187 | 186,0.010004993,0.01094131,36.38773794,0.015660117,10.04269067,-0.141415712,-6.284695575,3.279704849,803,0.965282455 188 | 187,0.010002068,0.010943426,36.40203575,0.01565944,10.04255167,-0.141344315,-6.282445551,3.27703044,802,0.965188091 189 | 188,0.009999877,0.010946649,36.41198563,0.015659473,10.04233317,-0.141183486,-6.275998781,3.274267069,801,0.965168545 190 | 189,0.009997843,0.010949559,36.41316327,0.015659767,10.0423155,-0.141248672,-6.269958967,3.271116053,800,0.965192182 191 | 190,0.009994084,0.010952244,36.41180224,0.015660614,10.04213067,-0.141244368,-6.265448782,3.268047147,799,0.965186182 192 | 191,0.009989115,0.010954586,36.38901442,0.015663078,10.04200133,-0.141183622,-6.26244595,3.263854085,798,0.965166455 193 | 192,0.009983223,0.010956559,36.37530091,0.015665598,10.04195367,-0.14102627,-6.261252427,3.259933667,797,0.965096545 194 | 193,0.009977115,0.010959817,36.35293273,0.015671756,10.04191833,-0.140991033,-6.254668946,3.255608675,796,0.965055091 195 | 194,0.009970973,0.010964089,36.32377555,0.015676712,10.0419515,-0.140878415,-6.250448227,3.250219541,795,0.964941455 196 | 195,0.009963361,0.010967245,36.29255249,0.015683702,10.04194467,-0.140635622,-6.244594866,3.244098982,794,0.964871636 197 | 196,0.009956483,0.010972323,36.25851965,0.015690565,10.04199333,-0.140489568,-6.239202084,3.238904573,793,0.964869273 198 | 197,0.009948607,0.010975939,36.21866023,0.015697895,10.0419595,-0.140080117,-6.232987423,3.232846739,792,0.964664182 199 | 198,0.009939967,0.010979009,36.18198739,0.015704832,10.0420065,-0.139954998,-6.230876722,3.226682368,791,0.964483909 200 | 199,0.009932594,0.010984326,36.14863092,0.015711343,10.042038,-0.139596561,-6.22704591,3.22142583,790,0.964315909 201 | 200,0.009926376,0.010989492,36.12946477,0.015716825,10.0419875,-0.139275875,-6.225988997,3.21723926,789,0.964511273 202 | 201,0.009924218,0.010995791,36.11131416,0.015721959,10.0420835,-0.139208054,-6.232394758,3.216473666,788,0.964228909 203 | 202,0.009923511,0.011000852,36.12093772,0.015722138,10.04204783,-0.139027076,-6.230277268,3.214708141,787,0.964282727 204 | 203,0.0099208,0.011002601,36.14499636,0.015718628,10.042258,-0.138889884,-6.230685942,3.212925101,786,0.963265636 205 | 204,0.009924526,0.01100812,36.17793235,0.015715014,10.0422925,-0.138797611,-6.233900474,3.215582501,785,0.964329364 206 | 205,0.009928772,0.011011977,36.21704365,0.015708284,10.04248333,-0.13893324,-6.238568027,3.217902293,784,0.964294273 207 | 206,0.009933585,0.011015373,36.2643679,0.015700746,10.0424395,-0.139180497,-6.239948899,3.220017805,783,0.964275091 208 | 207,0.009939494,0.011019167,36.31588485,0.015692642,10.04248667,-0.139692596,-6.242491588,3.22286954,782,0.964348 209 | 208,0.009946805,0.011023787,36.36464637,0.015685093,10.042549,-0.13981943,-6.242353981,3.226589111,781,0.964289364 210 | 209,0.009953303,0.011027096,36.4168795,0.015677828,10.042574,-0.14025,-6.242666898,3.229977098,780,0.963982545 211 | 210,0.009959736,0.011029976,36.46928602,0.015669461,10.04274917,-0.140558911,-6.247050113,3.23401502,779,0.963852182 212 | 211,0.009963652,0.011031674,36.5383296,0.015659878,10.042904,-0.140693351,-6.241974301,3.234992323,778,0.963901 213 | 212,0.009966762,0.011033985,36.58209731,0.015654668,10.043037,-0.141482779,-6.237913102,3.236081831,777,0.964294636 214 | 213,0.009972839,0.011039915,36.60951209,0.015652616,10.043024,-0.141533346,-6.238394083,3.238851616,776,0.964233 215 | 214,0.009973668,0.011042814,36.62557329,0.015651029,10.04315483,-0.141748538,-6.236514449,3.238437723,775,0.964302545 216 | 215,0.009975315,0.0110472,36.63017613,0.015649995,10.0429725,-0.141699142,-6.231958282,3.238214147,774,0.964136 217 | 216,0.009976533,0.011050557,36.63951322,0.01564996,10.04319533,-0.141697236,-6.227159313,3.238495093,773,0.964256545 218 | 217,0.009978178,0.01105456,36.65034558,0.015649512,10.04314933,-0.141578241,-6.225744969,3.238759085,772,0.964287909 219 | 218,0.009978785,0.011057078,36.66297244,0.015648174,10.04306917,-0.141704957,-6.226995436,3.239899741,771,0.964247818 220 | 219,0.009980031,0.011060721,36.67257375,0.015647098,10.0432765,-0.141509315,-6.229690594,3.241243325,770,0.964199545 221 | 220,0.009981349,0.011064854,36.67113058,0.01564776,10.043446,-0.141579633,-6.227095805,3.240640141,769,0.964135545 222 | 221,0.009982464,0.011069828,36.65850212,0.015650043,10.0435185,-0.141495018,-6.224380724,3.240237738,768,0.964046 223 | 222,0.009984154,0.011075278,36.65214726,0.015650843,10.04355267,-0.141038953,-6.226794005,3.241427092,767,0.963966818 224 | 223,0.009985727,0.011079548,36.66343948,0.015649801,10.04356467,-0.141288383,-6.224544178,3.241512728,766,0.963755273 225 | 224,0.009986114,0.011081496,36.68723165,0.01564757,10.04340533,-0.141351337,-6.225177758,3.242316942,765,0.963636727 226 | 225,0.009986967,0.011084567,36.72163418,0.015645107,10.043667,-0.141529665,-6.227052893,3.242848288,764,0.963719545 227 | 226,0.009987359,0.011087817,36.74337392,0.015641708,10.04370233,-0.141541399,-6.236130677,3.24335156,763,0.963908636 228 | 227,0.009985457,0.011088855,36.75903524,0.015639807,10.0437385,-0.141547509,-6.237899257,3.243613812,762,0.963739545 229 | 228,0.009984531,0.011091827,36.76892034,0.015638449,10.044002,-0.141591393,-6.237494149,3.2422933,761,0.963921 230 | 229,0.009981918,0.011094011,36.77018238,0.015638047,10.04367917,-0.141738718,-6.235068141,3.239392251,760,0.963955455 231 | 230,0.009978151,0.011096688,36.76746564,0.015640495,10.04358667,-0.141672272,-6.235746831,3.238783996,759,0.963685 232 | 231,0.009974081,0.011098482,36.76785056,0.015640883,10.04344717,-0.141717186,-6.234917602,3.237070274,758,0.963625364 233 | 232,0.009970395,0.011100002,36.76742432,0.015642511,10.04340983,-0.14176155,-6.23242546,3.234098201,757,0.963695727 234 | 233,0.009966774,0.011101007,36.76349667,0.015642689,10.0433135,-0.141521321,-6.234272405,3.231500739,756,0.963740364 235 | 234,0.009964081,0.011103301,36.75828229,0.015643715,10.04345367,-0.141410331,-6.234867519,3.229613522,755,0.963497727 236 | 235,0.009960341,0.011104058,36.7550744,0.015644033,10.04328633,-0.141507228,-6.232365476,3.227000774,754,0.963346545 237 | 236,0.009955434,0.011104417,36.75346939,0.01564388,10.0431305,-0.141429338,-6.223325698,3.223119607,753,0.963510364 238 | 237,0.009952051,0.011106044,36.74806201,0.015644764,10.04318367,-0.141455707,-6.216577862,3.220629969,752,0.963355273 239 | 238,0.00994808,0.011106089,36.75075167,0.015644609,10.04294033,-0.141436709,-6.215118738,3.218356206,751,0.963200455 240 | 239,0.00994544,0.011106328,36.76979883,0.015642068,10.04308417,-0.141369593,-6.212098702,3.216725982,750,0.963353818 241 | 240,0.009943238,0.011105488,36.78974403,0.015636468,10.04302317,-0.141405879,-6.204095884,3.212713923,749,0.963434273 242 | 241,0.009941034,0.011105563,36.79973771,0.0156323,10.042985,-0.141378359,-6.199551141,3.210138773,748,0.963256545 243 | 242,0.00993823,0.011106513,36.8161313,0.015628448,10.04282283,-0.141323317,-6.196890643,3.208125009,747,0.963273364 244 | 243,0.009935761,0.011108315,36.83047022,0.015627623,10.04287633,-0.141357919,-6.195874486,3.207239098,746,0.963317727 245 | 244,0.009933053,0.011110257,36.83333495,0.015627142,10.04285783,-0.141259558,-6.191733736,3.204939271,745,0.963261091 246 | 245,0.009930482,0.01111282,36.83338008,0.015628543,10.04290517,-0.140935007,-6.189503303,3.203594052,744,0.963242273 247 | 246,0.009930819,0.01111844,36.82768747,0.015630894,10.04288933,-0.140921654,-6.185904665,3.202786441,743,0.963244545 248 | 247,0.009929717,0.011123407,36.82503248,0.015632142,10.04276867,-0.140845149,-6.188792016,3.200968028,742,0.963292636 249 | 248,0.00992811,0.011128936,36.8101249,0.01563424,10.04276583,-0.140749579,-6.186809918,3.19978325,741,0.96326 250 | 249,0.009927436,0.01113523,36.78419201,0.015638363,10.0427185,-0.140720432,-6.193869711,3.199996593,740,0.963199364 251 | 250,0.009927823,0.011142147,36.76151178,0.015642438,10.04289933,-0.140543684,-6.196301253,3.200645454,739,0.963117182 252 | 251,0.00992891,0.011148618,36.74972614,0.015645841,10.0428195,-0.140616671,-6.197069111,3.200583133,738,0.963220455 253 | 252,0.009928617,0.011152778,36.73450218,0.01564853,10.04286083,-0.140602057,-6.192189888,3.199055657,737,0.963245455 254 | 253,0.009929013,0.011158397,36.71934761,0.015650142,10.0427045,-0.140502016,-6.189559605,3.197799107,736,0.963201727 255 | 254,0.009930359,0.011164847,36.71615366,0.015651195,10.04261417,-0.140530877,-6.19182427,3.198017516,735,0.963114818 256 | 255,0.009931764,0.011171193,36.71206356,0.015650007,10.04250983,-0.14069134,-6.190567457,3.197145709,734,0.963100636 257 | 256,0.009932359,0.011176014,36.71653407,0.015649843,10.04246867,-0.140662095,-6.189587385,3.195993855,733,0.963141455 258 | 257,0.009933972,0.011181605,36.7248066,0.015649075,10.04250567,-0.14066544,-6.190265248,3.19678525,732,0.963080455 259 | 258,0.009935649,0.011186808,36.74040245,0.015647571,10.042556,-0.140757248,-6.190144872,3.196088729,731,0.963052273 260 | 259,0.009935718,0.011190717,36.75698125,0.01564628,10.042581,-0.140816937,-6.184743364,3.194709667,730,0.962982909 261 | 260,0.009934665,0.011194123,36.77168922,0.015646182,10.0423555,-0.140953236,-6.182492718,3.192459573,729,0.962974818 262 | 261,0.009932564,0.011198493,36.78053085,0.015646309,10.042323,-0.141007545,-6.182109019,3.191273542,728,0.962889636 263 | 262,0.009931127,0.011203969,36.78288978,0.015648712,10.04226,-0.14082486,-6.187001312,3.191116576,727,0.962795818 264 | 263,0.009929837,0.011208548,36.78193436,0.015650006,10.04224383,-0.140921787,-6.185987091,3.1898287,726,0.962745364 265 | 264,0.009928234,0.011212894,36.78004051,0.015650907,10.0422315,-0.140880807,-6.183464731,3.187754339,725,0.962799273 266 | 265,0.009926298,0.011216621,36.77922867,0.015653809,10.0423905,-0.140831023,-6.177120324,3.186718693,724,0.962716273 267 | 266,0.009923038,0.011218702,36.77380469,0.015655567,10.0423415,-0.140882245,-6.194092423,3.188805731,723,0.962710455 268 | 267,0.009920391,0.011221605,36.77205899,0.015656445,10.04233717,-0.140841271,-6.19750934,3.186305491,722,0.962568727 269 | 268,0.00991801,0.011223276,36.77621872,0.015657519,10.0422785,-0.140828743,-6.198189699,3.185627656,721,0.962417 270 | 269,0.009916653,0.011225354,36.79283768,0.015656226,10.04229533,-0.140752148,-6.196057792,3.184121875,720,0.962404364 271 | 270,0.009915055,0.011226817,36.81519653,0.015653598,10.0423035,-0.140817864,-6.19499706,3.183157453,719,0.962477364 272 | 271,0.009914304,0.011228675,36.8309171,0.015652172,10.042329,-0.140712827,-6.192935343,3.181599899,718,0.962555182 273 | 272,0.009913764,0.011231894,36.83974257,0.015650096,10.04234167,-0.140854412,-6.191694309,3.179906528,717,0.962524545 274 | 273,0.009911721,0.011233896,36.84818404,0.015649226,10.04075317,-0.140800238,-6.193054549,3.178297247,716,0.962484273 275 | 274,0.009909462,0.011235111,36.86661119,0.01564859,10.04084967,-0.140900844,-6.188844393,3.176081963,715,0.962251455 276 | 275,0.009906906,0.011235901,36.88827885,0.015647283,10.04081683,-0.140856358,-6.18975986,3.173360277,714,0.962030818 277 | 276,0.00990451,0.01123731,36.91534209,0.015644463,10.040999,-0.140823214,-6.170513042,3.167792562,713,0.961902727 278 | 277,0.009901324,0.011238828,36.93459109,0.015643487,10.04109967,-0.140839352,-6.162136039,3.165927698,712,0.962096455 279 | 278,0.009898337,0.011241686,36.94284709,0.01564476,10.04127933,-0.140982276,-6.157484621,3.162867281,711,0.962028091 280 | 279,0.009896355,0.011245579,36.93469877,0.01564746,10.0413255,-0.140931393,-6.15753944,3.161363739,710,0.962125909 281 | 280,0.009894042,0.011248973,36.92017533,0.015651241,10.0412725,-0.140852699,-6.155103625,3.159691225,709,0.962143364 282 | 281,0.00989127,0.011251323,36.91309612,0.015652398,10.041321,-0.140908531,-6.152574771,3.157657454,708,0.962080636 283 | 282,0.00988864,0.011252735,36.91506799,0.015653078,10.04129233,-0.140786369,-6.147812293,3.156419182,707,0.962104727 284 | 283,0.009885528,0.011253385,36.91931386,0.015652742,10.04292483,-0.140845368,-6.141629614,3.154600794,706,0.961904273 285 | 284,0.009882392,0.011254752,36.91411014,0.015652797,10.04276883,-0.140622425,-6.140107912,3.153470318,705,0.961795727 286 | 285,0.009879131,0.011256119,36.90778112,0.015652732,10.042643,-0.140618449,-6.13878224,3.1512313,704,0.961864364 287 | 286,0.009876365,0.011257913,36.89327319,0.015655043,10.04247767,-0.140725659,-6.140412752,3.150273431,703,0.961917455 288 | 287,0.009874127,0.011259276,36.88537104,0.01565616,10.0423455,-0.140726483,-6.138307041,3.148051846,702,0.961769182 289 | 288,0.009870938,0.011259527,36.88647953,0.015654429,10.04219633,-0.140619979,-6.135572223,3.145562564,701,0.961742727 290 | 289,0.009865273,0.011258885,36.88350031,0.015654546,10.04207417,-0.140681774,-6.13120281,3.141918809,700,0.961786 291 | 290,0.009860761,0.011262031,36.87220556,0.015656762,10.0421885,-0.14037047,-6.12912796,3.139040377,699,0.961667364 292 | 291,0.009855475,0.011265398,36.85684941,0.015661267,10.0421255,-0.140281874,-6.127400666,3.1351623,698,0.961675727 293 | 292,0.009849969,0.011269072,36.83303134,0.015666362,10.04200717,-0.140138732,-6.125271134,3.130787948,697,0.961566273 294 | 293,0.009845378,0.011274803,36.80934462,0.0156719,10.04186467,-0.140007012,-6.128619133,3.127192296,696,0.961460182 295 | 294,0.009841154,0.011280768,36.78486505,0.015678117,10.04187067,-0.140034441,-6.125202121,3.123141581,695,0.961446091 296 | 295,0.009838062,0.011287682,36.75765968,0.015683926,10.04176417,-0.139870979,-6.129379009,3.121204425,694,0.961424182 297 | 296,0.009835777,0.011294619,36.7367669,0.015689418,10.04178883,-0.139786369,-6.1280524,3.118750818,693,0.961484727 298 | 297,0.009833273,0.01130073,36.71752937,0.015694324,10.04185417,-0.139584972,-6.130363584,3.117114862,692,0.961401909 299 | 298,0.009831606,0.011307212,36.693581,0.015699682,10.04186133,-0.139320135,-6.127510717,3.115146515,691,0.961335182 300 | 299,0.009831357,0.011313623,36.67950716,0.015703772,10.041982,-0.139096981,-6.126540602,3.113839274,690,0.961271455 301 | 300,0.009830534,0.011317359,36.68254476,0.015703658,10.0419065,-0.139289996,-6.127944417,3.112457601,689,0.961212 302 | 301,0.00983039,0.011320524,36.69041453,0.015702798,10.04192367,-0.139130862,-6.128359728,3.111751994,688,0.961329818 303 | 302,0.009829572,0.011323067,36.69907198,0.015702327,10.0421335,-0.139315079,-6.126003755,3.110242703,687,0.961190273 304 | 303,0.009828956,0.011325601,36.7101342,0.015702248,10.0423545,-0.139015396,-6.121683698,3.110120054,686,0.960990909 305 | 304,0.009828351,0.011327484,36.71929133,0.015700202,10.04250617,-0.139094717,-6.12263756,3.109304254,685,0.960731545 306 | 305,0.009826989,0.011328772,36.73663248,0.015697502,10.0426695,-0.139089528,-6.115133212,3.107394339,684,0.960718727 307 | 306,0.009824505,0.011329857,36.75591033,0.015694891,10.04272483,-0.13898748,-6.108871172,3.104309088,683,0.960603636 308 | 307,0.009823084,0.01133047,36.78321957,0.015692054,10.042904,-0.139092378,-6.105266261,3.102875113,682,0.960829727 309 | 308,0.00982322,0.011331877,36.81860735,0.01568806,10.04141917,-0.139030713,-6.10493301,3.102662205,681,0.960873273 310 | 309,0.009822747,0.011332355,36.85728284,0.015682481,10.04163,-0.139151385,-6.106190205,3.103140751,680,0.960882 311 | 310,0.009821934,0.011332565,36.88175617,0.015678997,10.04172,-0.13933792,-6.103029968,3.102841739,679,0.960883455 312 | 311,0.009820615,0.011333223,36.89514633,0.015676511,10.0418155,-0.139457424,-6.097885616,3.102260345,678,0.960957364 313 | 312,0.009819572,0.01133518,36.90603978,0.015674627,10.04181733,-0.139334596,-6.099648378,3.102483362,677,0.960819727 314 | 313,0.009817913,0.011336132,36.91487745,0.015672377,10.040088,-0.139747207,-6.095866903,3.100200327,676,0.960803727 315 | 314,0.009815982,0.011337913,36.92296953,0.015672825,10.04006917,-0.139653995,-6.094010604,3.098958141,675,0.960625182 316 | 315,0.009814286,0.01134012,36.92586922,0.015673647,10.04001017,-0.139640891,-6.09448836,3.098309002,674,0.960527182 317 | 316,0.009813333,0.011342804,36.92424813,0.015675045,10.039965,-0.139581189,-6.09776769,3.098478549,673,0.960471455 318 | 317,0.009811473,0.011346185,36.91757523,0.015675506,10.03980567,-0.139482207,-6.093524295,3.096626128,672,0.960520273 319 | 318,0.009809183,0.011350841,36.89868568,0.015678674,10.04134217,-0.139704643,-6.091012725,3.094866011,671,0.960399636 320 | 319,0.009806683,0.011356238,36.87678167,0.015683049,10.0410905,-0.140501166,-6.087341495,3.091754282,670,0.960245364 321 | 320,0.009804086,0.011361114,36.86613657,0.015686797,10.04099467,-0.140267089,-6.089283064,3.090304539,669,0.960209182 322 | 321,0.009802104,0.011366118,36.86695787,0.015689333,10.0409105,-0.140245967,-6.087700148,3.087922135,668,0.960178909 323 | 322,0.009801417,0.01137106,36.87643669,0.015690063,10.0408745,-0.140215554,-6.088323438,3.086518738,667,0.960091364 324 | 323,0.009800613,0.011375577,36.88260392,0.015690773,10.04255533,-0.140220467,-6.089884007,3.085283764,666,0.960137455 325 | 324,0.009800155,0.011379417,36.88799368,0.015689811,10.04273533,-0.14015723,-6.090540308,3.084301631,665,0.960111727 326 | 325,0.009799537,0.011383208,36.88866128,0.015690722,10.0428915,-0.140137247,-6.089542859,3.083652162,664,0.960088545 327 | 326,0.009798627,0.011387578,36.88920146,0.015691248,10.0428435,-0.14009509,-6.086363641,3.082138439,663,0.959836818 328 | 327,0.009798175,0.011392338,36.88927973,0.015691771,10.04277267,-0.140182288,-6.085650382,3.081080214,662,0.959926 329 | 328,0.009796508,0.011395656,36.8912244,0.015692459,10.04267517,-0.140042372,-6.090230011,3.079227484,661,0.959817182 330 | 329,0.009795929,0.011400356,36.88873206,0.015693193,10.0426005,-0.139669603,-6.096757736,3.079415996,660,0.959740364 331 | 330,0.009795805,0.011405551,36.88516884,0.015694185,10.04257183,-0.139586833,-6.091322614,3.076893607,659,0.959468182 332 | 331,0.009795485,0.011410064,36.88481213,0.015693952,10.04280183,-0.139473068,-6.095832552,3.078017376,658,0.959481909 333 | 332,0.009794853,0.011414001,36.88252248,0.015693464,10.04274517,-0.139538576,-6.088225366,3.076315596,657,0.959521273 334 | 333,0.00979468,0.011418152,36.88399695,0.015693345,10.04273383,-0.139407903,-6.088693578,3.076392349,656,0.959481 335 | 334,0.009794619,0.011422835,36.88665292,0.015693298,10.04248983,-0.139538796,-6.086155508,3.07579041,655,0.959523182 336 | 335,0.009794802,0.011426232,36.89250126,0.015692202,10.04237167,-0.139579314,-6.08327792,3.074674524,654,0.959340909 337 | 336,0.009795604,0.011430155,36.90330575,0.015690537,10.04244117,-0.137098318,-6.082371355,3.074455468,653,0.959402636 338 | 337,0.009795139,0.011432493,36.90814038,0.015691222,10.04251617,-0.13708927,-6.08742975,3.074692366,652,0.959231545 339 | 338,0.009794743,0.011434884,36.92134997,0.015689727,10.04251,-0.137190387,-6.082591855,3.073930993,651,0.959246909 340 | 339,0.009793749,0.011435691,36.94178199,0.015688363,10.04264083,-0.136622548,-6.074879094,3.071915069,650,0.959072091 341 | 340,0.009793189,0.011436333,36.95949929,0.015684842,10.04274433,-0.136767436,-6.07720819,3.072441443,649,0.959177091 342 | 341,0.009792539,0.011436361,36.97666389,0.01568342,10.04257017,-0.136790169,-6.076247914,3.0710925,648,0.959188273 343 | 342,0.009791155,0.011435427,36.98572707,0.015682248,10.0426335,-0.136755185,-6.081565674,3.071976339,647,0.959328182 344 | 343,0.009790337,0.01143668,36.99332524,0.015681529,10.042542,-0.136750404,-6.078498237,3.070823013,646,0.959186727 345 | 344,0.009788383,0.011436848,36.99910086,0.015681463,10.04247117,-0.136567735,-6.077033203,3.069367199,645,0.959142727 346 | 345,0.009786866,0.011440316,37.00111809,0.01568223,10.042454,-0.136693061,-6.077242791,3.06771586,644,0.959179091 347 | 346,0.00978458,0.011442484,36.99428663,0.015683789,10.0423745,-0.139202277,-6.079078301,3.066463158,643,0.959315182 348 | 347,0.0097832,0.011446758,36.98225185,0.015685709,10.04247383,-0.139238754,-6.074166113,3.063625284,642,0.959201091 349 | 348,0.00978172,0.011451137,36.96492115,0.015689661,10.04248117,-0.138976577,-6.078728078,3.06374596,641,0.959223636 350 | 349,0.009779439,0.011454155,36.94343458,0.01569327,10.04237633,-0.139056983,-6.082807731,3.06355568,640,0.959140364 351 | 350,0.009777826,0.011460445,36.92274234,0.015698334,10.04251433,-0.13882415,-6.082189301,3.061900328,639,0.959217545 352 | 351,0.009776771,0.011467896,36.89462658,0.015703828,10.04247433,-0.139279487,-6.078436663,3.059492978,638,0.959156273 353 | 352,0.009774321,0.011473916,36.87723692,0.015710264,10.040774,-0.139157557,-6.078544529,3.056884726,637,0.958590545 354 | 353,0.009770516,0.011476638,36.87456176,0.015712489,10.0410015,-0.139072423,-6.076909864,3.054973117,636,0.958915 355 | 354,0.009767675,0.011480902,36.8644798,0.01571595,10.04106467,-0.140700489,-6.083617463,3.053638261,635,0.958672091 356 | 355,0.009764196,0.011483628,36.85780807,0.01571838,10.04101717,-0.140575869,-6.08822609,3.052939095,634,0.958735909 357 | 356,0.009759875,0.011485036,36.85459119,0.015720249,10.041066,-0.140462575,-6.086358715,3.050527579,633,0.958560818 358 | 357,0.009755881,0.011486478,36.85609274,0.015721014,10.04085667,-0.140400491,-6.085406822,3.047775994,632,0.958385818 359 | 358,0.00975212,0.011488302,36.86140961,0.01571961,10.04109667,-0.141995859,-6.077386212,3.043932303,631,0.958357818 360 | 359,0.009748095,0.011490511,36.86714642,0.015720017,10.04107667,-0.141888423,-6.06665816,3.040205154,630,0.958414636 361 | 360,0.009744199,0.011492241,36.86440223,0.015720968,10.0409505,-0.141898319,-6.060791166,3.036856239,629,0.958399545 362 | 361,0.009739363,0.011492177,36.86467714,0.015721488,10.04105317,-0.141348038,-6.059298246,3.035384551,628,0.958280364 363 | 362,0.009736395,0.011494262,36.86512017,0.015720428,10.04276017,-0.141420704,-6.052932727,3.032384613,627,0.958194727 364 | 363,0.00973438,0.011497121,36.85456337,0.015721781,10.04262533,-0.141399859,-6.050942589,3.030237797,626,0.958259545 365 | 364,0.009731317,0.011498711,36.85151301,0.015721241,10.042684,-0.139913215,-6.041781785,3.02765018,625,0.958252364 366 | 365,0.009729369,0.011500282,36.8433472,0.015721168,10.04274667,-0.139892085,-6.035128398,3.025091173,624,0.958039091 367 | 366,0.009728747,0.011501703,36.85058237,0.015719081,10.04272767,-0.140003119,-6.03254131,3.02383942,623,0.958154 368 | 367,0.009728972,0.011502623,36.86262633,0.015716951,10.04274183,-0.140830271,-6.033968642,3.024923923,622,0.958038 369 | 368,0.009729614,0.011503034,36.88663659,0.015714144,10.04252917,-0.139422293,-6.035338969,3.025731792,621,0.958036818 370 | 369,0.009732224,0.011504978,36.91063872,0.0157086,10.0426265,-0.139652246,-6.037939788,3.026762368,620,0.958198091 371 | 370,0.00973422,0.011504227,36.93750527,0.015703703,10.04253283,-0.139967027,-6.040180011,3.028483308,619,0.958117364 372 | 371,0.009736996,0.011504195,36.98044445,0.015697894,10.04249167,-0.140124964,-6.035891167,3.028746592,618,0.958056818 373 | 372,0.00973921,0.0115033,37.02452986,0.015690398,10.0425175,-0.140263293,-6.03675756,3.029975056,617,0.957945727 374 | 373,0.009740571,0.011503,37.07213099,0.015684865,10.04252033,-0.140363985,-6.031296835,3.029839054,616,0.957937091 375 | 374,0.009741591,0.011502157,37.10953728,0.015680306,10.04251933,-0.140478412,-6.031908893,3.030538887,615,0.957782909 376 | 375,0.009741701,0.011500917,37.14606386,0.015675481,10.04243483,-0.140574792,-6.027336066,3.030370587,614,0.957867091 377 | 376,0.00974205,0.011502513,37.16860039,0.015672974,10.04241133,-0.140651653,-6.027578058,3.030980922,613,0.957874818 378 | 377,0.00974168,0.011504591,37.18811943,0.015670378,10.042491,-0.139893125,-6.022701618,3.030260459,612,0.957889455 379 | 378,0.009739591,0.011504253,37.19152193,0.01567021,10.042426,-0.139916221,-6.019976091,3.028553778,611,0.957644636 380 | 379,0.009736091,0.011502313,37.19794199,0.015669709,10.04232367,-0.139700395,-6.020598829,3.027301651,610,0.957640636 381 | 380,0.009733686,0.011503156,37.21145869,0.015668546,10.04243367,-0.139525333,-6.016599785,3.025247843,609,0.957586364 382 | 381,0.009730268,0.011503063,37.21301753,0.01566813,10.04241167,-0.139471252,-6.017535692,3.023609295,608,0.957454636 383 | 382,0.009727678,0.0115044,37.21327474,0.015668233,10.0423375,-0.139427554,-6.0183719,3.022269606,607,0.957172455 384 | 383,0.009726133,0.011505758,37.21592544,0.015666282,10.04232633,-0.139398569,-6.021661962,3.022162504,606,0.957212636 385 | 384,0.00972646,0.011508333,37.229496,0.015663967,10.04233367,-0.139458115,-6.017647048,3.022114396,605,0.957330818 386 | 385,0.009727258,0.011511813,37.24437075,0.015661269,10.04244217,-0.139578346,-6.018752953,3.022568046,604,0.957474818 387 | 386,0.009727785,0.011513647,37.2577119,0.015658917,10.04253517,-0.139521464,-6.014394438,3.021709059,603,0.957381545 388 | 387,0.009727346,0.011515084,37.26872476,0.015657067,10.04256617,-0.13949172,-6.013802224,3.020916434,602,0.957193182 389 | 388,0.009727523,0.0115176,37.28529628,0.015653745,10.042712,-0.139460374,-6.010431002,3.020062474,601,0.957016182 390 | 389,0.009724397,0.011520057,37.30089462,0.015652676,10.04280817,-0.139562689,-6.006122099,3.0175358,600,0.955788182 391 | 390,0.009722429,0.011520882,37.31800042,0.015650818,10.042713,-0.139664913,-6.002560217,3.015627261,599,0.956973455 392 | 391,0.009720616,0.011523601,37.32306894,0.015650385,10.0426715,-0.1396761,-6.002595982,3.013888237,598,0.956933182 393 | 392,0.009718947,0.011526632,37.32458833,0.015651616,10.04275667,-0.139658171,-5.999746793,3.01375347,597,0.956895273 394 | 393,0.009717107,0.011530098,37.31716807,0.015654768,10.04274367,-0.139644742,-5.995817891,3.011302312,596,0.9565 395 | 394,0.009715934,0.011533876,37.31843194,0.015656425,10.04331683,-0.139500643,-5.995263392,3.009475122,595,0.956836273 396 | 395,0.00971383,0.011534425,37.32084236,0.015656507,10.04327267,-0.139501742,-5.994513063,3.007541873,594,0.956838 397 | 396,0.009712872,0.011536877,37.32291442,0.015655693,10.04324983,-0.139567236,-5.996710728,3.007519108,593,0.956685 398 | 397,0.009711711,0.011538253,37.33195002,0.015655327,10.04325633,-0.139689545,-5.99722914,3.007218198,592,0.956665636 399 | 398,0.009711816,0.01154203,37.33723358,0.015655371,10.04319533,-0.139828323,-5.997516312,3.007601333,591,0.956450818 400 | 399,0.009715525,0.011546451,37.34394777,0.015652451,10.04317917,-0.139937147,-5.998081567,3.009500388,590,0.956548273 401 | 400,0.009717058,0.011550812,37.34501613,0.015651586,10.04327217,-0.139865346,-6.005751242,3.011050251,589,0.956389818 402 | 401,0.009719885,0.01155513,37.35486764,0.015649744,10.04336583,-0.139998019,-6.004854399,3.011827603,588,0.956538727 403 | 402,0.00972271,0.01155912,37.36103399,0.015647986,10.04342267,-0.140165308,-6.00683552,3.01296874,587,0.956455909 404 | 403,0.009725626,0.011561998,37.37005083,0.015645098,10.043441,-0.140248291,-6.009182141,3.014285069,586,0.956497091 405 | 404,0.009728207,0.011565563,37.37975397,0.015643972,10.04285083,-0.140451384,-6.012236948,3.015431302,585,0.956380727 406 | 405,0.009730968,0.011571092,37.39592164,0.015643241,10.0413045,-0.140370783,-6.014305479,3.016557868,584,0.956361818 407 | 406,0.009730836,0.011574305,37.41433109,0.015643674,10.04137767,-0.132286954,-6.008816836,3.002503388,583,0.956136545 408 | 407,0.009730705,0.011579162,37.41495843,0.015644565,10.04137733,-0.13204731,-6.011269572,3.001397208,582,0.956103455 409 | 408,0.00973087,0.011584588,37.40537898,0.015647428,10.041491,-0.132010902,-6.014818479,3.000703343,581,0.955939636 410 | 409,0.009729877,0.011589088,37.39931791,0.015651174,10.04137983,-0.131898093,-6.014891198,2.998952689,580,0.956124273 411 | 410,0.009728838,0.011594081,37.38614022,0.015654672,10.04125567,-0.132000845,-6.012941756,2.997229564,579,0.956121364 412 | 411,0.009726794,0.01159709,37.36533599,0.015657864,10.04111,-0.132067485,-6.017998955,2.997202779,578,0.956129182 413 | 412,0.009723891,0.011598918,37.35084991,0.015662108,10.03942833,-0.131791718,-6.01114679,2.993561555,577,0.955902273 414 | 413,0.009721207,0.011602927,37.33698849,0.015664908,10.039344,-0.131788498,-6.012820829,2.992431324,576,0.955965182 415 | 414,0.00971818,0.011605589,37.31559938,0.015667079,10.03927017,-0.131652451,-6.009847525,2.990066708,575,0.955709909 416 | 415,0.009714501,0.011607284,37.3023674,0.015670025,10.04075217,-0.131591288,-6.010026003,2.988524789,574,0.955711273 417 | 416,0.009711469,0.011607202,37.28947758,0.015671073,10.040653,-0.139572767,-6.00953328,2.999439857,573,0.955651273 418 | 417,0.009709366,0.011607545,37.28658218,0.015671204,10.04050917,-0.139572239,-6.004566453,2.998268488,572,0.955802 419 | 418,0.009706603,0.0116064,37.28458593,0.015671375,10.04034083,-0.139337768,-6.000491634,2.997695159,571,0.955732818 420 | 419,0.009706206,0.011608137,37.27815513,0.015671524,10.04040783,-0.139281021,-5.997422259,2.996257462,570,0.955752909 421 | 420,0.009705405,0.011608272,37.27910097,0.015672286,10.04038083,-0.139177693,-5.993465163,2.995882652,569,0.955805273 422 | 421,0.0097049,0.011610402,37.28525204,0.015671895,10.0404175,-0.138932257,-5.99149363,2.99499107,568,0.955451727 423 | 422,0.009704714,0.011612788,37.3088897,0.015669682,10.04193917,-0.138921267,-5.991043165,2.994700126,567,0.955680182 424 | 423,0.009704068,0.011614182,37.31826394,0.015670796,10.04197267,-0.13883042,-5.987627387,2.99386795,566,0.955371727 425 | 424,0.009703597,0.011616366,37.33447053,0.015670257,10.0420535,-0.138697285,-5.98855172,2.993969665,565,0.955528909 426 | 425,0.009703755,0.011619294,37.33385562,0.015671584,10.04233933,-0.138657126,-5.987333952,2.993826153,564,0.955317818 427 | 426,0.009705048,0.011624797,37.341279,0.015672733,10.04237033,-0.138668149,-5.989242027,2.994026889,563,0.955349545 428 | 427,0.009706288,0.011629523,37.34280182,0.015673818,10.042554,-0.13865548,-5.986059953,2.994073729,562,0.955304818 429 | 428,0.00970739,0.011634043,37.35509,0.015672774,10.0425975,-0.138844423,-5.985662926,2.99338129,561,0.955328545 430 | 429,0.00970757,0.011638247,37.36185577,0.015673217,10.042897,-0.138886413,-5.985119705,2.993355625,560,0.955129091 431 | 430,0.00970815,0.011642669,37.37374091,0.015672259,10.04300667,-0.138930612,-5.987177177,2.992457929,559,0.955050545 432 | 431,0.00970835,0.011645469,37.38864725,0.015670717,10.0432775,-0.139117712,-5.983893159,2.990992774,558,0.954999909 433 | 432,0.009708935,0.011649523,37.3791787,0.015669654,10.04333833,-0.139184937,-5.985479359,2.990550041,557,0.954975636 434 | 433,0.009708269,0.011651308,37.38772902,0.015666918,10.04354317,-0.139116864,-5.986383778,2.990259215,556,0.955132818 435 | 434,0.009706695,0.011651536,37.3807031,0.015666878,10.04347583,-0.139191505,-5.985243595,2.989358199,555,0.954825545 436 | 435,0.00970523,0.011652279,37.39214553,0.015663828,10.0434325,-0.139247389,-5.979779025,2.987089618,554,0.954792636 437 | 436,0.009703501,0.011652261,37.4003333,0.015661959,10.04342317,-0.139316326,-5.978677156,2.986770839,553,0.954484273 438 | 437,0.009701429,0.011650772,37.4360248,0.015657885,10.04178183,-0.139435812,-5.978162074,2.984704933,552,0.954660818 439 | 438,0.009699448,0.011649655,37.45208565,0.015655834,10.04185333,-0.139504347,-5.974512592,2.98306618,551,0.954661273 440 | 439,0.009695544,0.011646504,37.46952182,0.015655337,10.04172583,-0.139485507,-5.973943255,2.981770871,550,0.954505636 441 | 440,0.009691142,0.011643946,37.47402845,0.015654916,10.04170683,-0.139461869,-5.968795201,2.979694528,549,0.954483636 442 | 441,0.009687004,0.011643359,37.47630737,0.015656514,10.04145367,-0.139197409,-5.963124366,2.977085733,548,0.954523455 443 | 442,0.009682986,0.01164225,37.48296019,0.015658019,10.04157517,-0.1391488,-5.960787914,2.975181656,547,0.954399636 444 | 443,0.009679182,0.01164148,37.48598037,0.015659776,10.0414065,-0.139144763,-5.957685012,2.972348894,546,0.954250818 445 | 444,0.009675979,0.011642415,37.49736287,0.015660597,10.04144517,-0.139185702,-5.955572092,2.969941459,545,0.954256455 446 | 445,0.009672944,0.011643807,37.49179269,0.015662721,10.04121617,-0.139107957,-5.955975209,2.968069425,544,0.954414727 447 | 446,0.009668876,0.011644454,37.47689294,0.015665027,10.041217,-0.139073133,-5.954240954,2.964756327,543,0.954067273 448 | 447,0.009664826,0.01164587,37.45187496,0.015668045,10.04273867,-0.139078839,-5.952586427,2.962791288,542,0.954125545 449 | 448,0.009660531,0.01164644,37.44177383,0.015670335,10.04264267,-0.139120009,-5.954899248,2.960784295,541,0.954014636 450 | 449,0.009657092,0.011647457,37.43195471,0.015671148,10.042466,-0.139180878,-5.957093278,2.958694271,540,0.95403 451 | 450,0.009653051,0.011648695,37.42757228,0.015672502,10.042345,-0.139198693,-5.958915332,2.956860683,539,0.954128091 452 | 451,0.009649558,0.011651564,37.40962641,0.015675034,10.04218033,-0.139190738,-5.956960668,2.954451207,538,0.954012636 453 | 452,0.009644085,0.01165273,37.39438481,0.015679831,10.04188617,-0.139154391,-5.953586775,2.9505561,537,0.953965545 454 | 453,0.009639692,0.01165651,37.36581315,0.015684567,10.04171133,-0.139128552,-5.953380405,2.947617141,536,0.953762818 455 | 454,0.009634225,0.011659283,37.34236954,0.015688897,10.04177717,-0.13888746,-5.948665836,2.94397769,535,0.953576636 456 | 455,0.009628731,0.011662448,37.31894845,0.015694326,10.04174567,-0.138811819,-5.944469372,2.940423149,534,0.953792636 457 | 456,0.009624753,0.011668641,37.28846904,0.015701367,10.04166283,-0.138737451,-5.943113159,2.937443967,533,0.953825455 458 | 457,0.009620157,0.011674354,37.25282802,0.015710126,10.041597,-0.138587805,-5.943031323,2.934326126,532,0.953587 459 | 458,0.009615723,0.011679473,37.22539485,0.015718118,10.04158417,-0.138099289,-5.938844564,2.930226797,531,0.953597182 460 | 459,0.009613072,0.011685869,37.20192979,0.015723894,10.04157583,-0.137817698,-5.930857714,2.927051418,530,0.953636091 461 | 460,0.009611668,0.011691289,37.18540951,0.015728631,10.0416785,-0.137765613,-5.928075178,2.925259014,529,0.953548364 462 | 461,0.009611809,0.011694881,37.18422059,0.015730389,10.04187617,-0.13800189,-5.928379403,2.92541088,528,0.953727273 463 | 462,0.009613903,0.011699178,37.1893954,0.015728839,10.04204067,-0.137897097,-5.92914755,2.926739672,527,0.953546545 464 | 463,0.009616805,0.011702581,37.21204918,0.015726034,10.042254,-0.138047918,-5.925980951,2.927740673,526,0.953496182 465 | 464,0.009621344,0.011707632,37.23335301,0.01572318,10.0421885,-0.138134935,-5.927031192,2.929856364,525,0.953489091 466 | 465,0.009625687,0.011709886,37.26203692,0.015718347,10.04231167,-0.138265591,-5.931381591,2.932450987,524,0.953484 467 | 466,0.009630419,0.011711435,37.30135017,0.015711009,10.04242667,-0.138219646,-5.933644732,2.935503767,523,0.953471091 468 | 467,0.009635342,0.011712109,37.34161959,0.01570314,10.0425475,-0.138292377,-5.936137371,2.938320789,522,0.953283182 469 | 468,0.009640744,0.011713925,37.37918559,0.015694832,10.042671,-0.138588927,-5.937023317,2.941885325,521,0.953369818 470 | 469,0.009644603,0.011714581,37.41057594,0.015687763,10.042737,-0.138746954,-5.940185659,2.944969122,520,0.953062455 471 | 470,0.009647772,0.011715529,37.44921181,0.015680092,10.042772,-0.138708381,-5.93801072,2.946227777,519,0.953074 472 | 471,0.009649102,0.011716184,37.48223899,0.015674886,10.04283,-0.138578714,-5.937044821,2.946052781,518,0.953128273 473 | 472,0.009650029,0.011718112,37.50837777,0.015671203,10.04287067,-0.13875438,-5.936723307,2.945951868,517,0.952751182 474 | 473,0.009650217,0.011719036,37.53498855,0.015667594,10.04289783,-0.138648102,-5.936954179,2.946321631,516,0.952826182 475 | 474,0.009648984,0.011718917,37.55799231,0.015665059,10.04289667,-0.138647238,-5.936002008,2.945139166,515,0.952828273 476 | 475,0.009648401,0.011721601,37.57377005,0.01566377,10.04282217,-0.138546309,-5.933436171,2.944487799,514,0.952802 477 | 476,0.009645899,0.011722172,37.58714537,0.015664173,10.042754,-0.138681232,-5.930198683,2.942724598,513,0.952661909 478 | 477,0.009644302,0.011724873,37.59672068,0.015663753,10.04275683,-0.138621299,-5.930465128,2.941300614,512,0.952684455 479 | 478,0.00964182,0.011726321,37.59775267,0.015663577,10.04267733,-0.138581473,-5.930248152,2.93963362,511,0.952635182 480 | 479,0.009641026,0.011730925,37.59960582,0.015664863,10.04259317,-0.138617563,-5.928209074,2.938435958,510,0.952615 481 | 480,0.009639001,0.011733965,37.59039325,0.015667936,10.04244683,-0.13861472,-5.92780429,2.937357911,509,0.952434182 482 | 481,0.009636904,0.011737145,37.5882599,0.015669892,10.042322,-0.138659211,-5.925412532,2.935971936,508,0.952530455 483 | 482,0.009635597,0.011741091,37.57952439,0.015672749,10.0422035,-0.138585928,-5.926494933,2.935313401,507,0.952521909 484 | 483,0.009634435,0.011746128,37.56415275,0.015676197,10.04208783,-0.138601482,-5.927390724,2.93420912,506,0.952454182 485 | 484,0.009633032,0.011749848,37.54727185,0.015678568,10.04197867,-0.138531316,-5.926233556,2.933175435,505,0.952170636 486 | 485,0.009631075,0.011752925,37.53606021,0.015681797,10.04193033,-0.138674199,-5.926057645,2.931384662,504,0.952396364 487 | 486,0.009630246,0.011758124,37.51707358,0.015684766,10.041873,-0.138460249,-5.929175707,2.929973009,503,0.952213 488 | 487,0.009628072,0.011761067,37.5022124,0.01568916,10.04193717,-0.132975286,-5.924510461,2.928996045,502,0.952228455 489 | 488,0.009625985,0.011766076,37.48541815,0.01569338,10.04184167,-0.132982697,-5.923493643,2.927103274,501,0.952234091 490 | 489,0.009621847,0.011767397,37.46798663,0.015699155,10.04197383,-0.132850198,-5.923550357,2.92468502,500,0.951976909 491 | 490,0.00961878,0.011770957,37.45456672,0.015702917,10.04195517,-0.132743689,-5.920560119,2.922318861,499,0.952074273 492 | 491,0.009615107,0.011773133,37.4314085,0.015707604,10.04207567,-0.132505077,-5.918132888,2.919825558,498,0.951626182 493 | 492,0.009610351,0.011773591,37.4312821,0.015709251,10.04224167,-0.132432843,-5.915126223,2.916634526,497,0.951671091 494 | 493,0.009606163,0.011775266,37.42405251,0.015711466,10.04224383,-0.132267329,-5.907930953,2.913234443,496,0.951469182 495 | 494,0.009602058,0.011774881,37.42968269,0.015712846,10.04229233,-0.132317503,-5.906754626,2.910907415,495,0.951241182 496 | 495,0.009599186,0.011775864,37.43602632,0.015713461,10.04234033,-0.132258786,-5.900739062,2.908852469,494,0.951509273 497 | 496,0.009596662,0.011775958,37.44574756,0.015712744,10.04234267,-0.132343877,-5.891304388,2.906883572,493,0.951240636 498 | 497,0.009594525,0.011777147,37.45525722,0.0157112,10.0422405,-0.137865078,-5.888517035,2.905143223,492,0.951166182 499 | 498,0.009593421,0.011778857,37.46711745,0.015709039,10.04232783,-0.137878673,-5.88817672,2.904425906,491,0.951322455 500 | 499,0.009592689,0.011781034,37.47652621,0.015705628,10.04222667,-0.137943125,-5.884737837,2.903032848,490,0.950974364 501 | 500,0.009591706,0.011781546,37.48806291,0.015703155,10.042569,-0.137965661,-5.883402927,2.901594468,489,0.951087455 502 | 501,0.009592218,0.011785161,37.49482203,0.015701429,10.0424875,-0.138053992,-5.887282124,2.902014842,488,0.951042909 503 | 502,0.009593011,0.011788779,37.48970333,0.01570188,10.04259767,-0.138026961,-5.887566413,2.902087613,487,0.950872364 504 | 503,0.0095926,0.011789528,37.49947974,0.015701612,10.042648,-0.13820228,-5.894660492,2.902667811,486,0.950830545 505 | 504,0.009593254,0.011794292,37.49140189,0.015701358,10.0426745,-0.138134227,-5.893280468,2.901819424,485,0.950757273 506 | 505,0.009590792,0.011794878,37.48902562,0.015701853,10.0428335,-0.13809501,-5.89888494,2.900440053,484,0.950625636 507 | 506,0.009587124,0.011795951,37.47455494,0.015704593,10.04291617,-0.138164183,-5.900307733,2.898295544,483,0.950473 508 | 507,0.009584087,0.011798524,37.45588967,0.015709056,10.04306383,-0.137903791,-5.900155636,2.895573243,482,0.950605636 509 | 508,0.00958079,0.011801152,37.43595077,0.015713959,10.04153967,-0.137729258,-5.895868476,2.89340651,481,0.950590909 510 | 509,0.009577285,0.011803817,37.42021611,0.015719009,10.0417425,-0.137686913,-5.896229689,2.891344884,480,0.950336636 511 | 510,0.009573927,0.011807537,37.39993335,0.015724003,10.04170717,-0.137594076,-5.896402436,2.889116177,479,0.950336091 512 | 511,0.009569197,0.011807591,37.38800322,0.015726596,10.0416685,-0.137625452,-5.890932141,2.88558993,478,0.950513545 513 | 512,0.009565064,0.01181011,37.35733203,0.015731302,10.04141133,-0.137574435,-5.890917387,2.883147117,477,0.950412818 514 | 513,0.00956074,0.011812464,37.3209634,0.015737009,10.04156183,-0.137393358,-5.884720182,2.880013012,476,0.950275 515 | 514,0.009556512,0.011815722,37.28989363,0.01574336,10.04170967,-0.13729564,-5.883778271,2.87825096,475,0.950290727 516 | 515,0.009552829,0.011821088,37.25018796,0.015749058,10.04159817,-0.137026571,-5.881087234,2.875860085,474,0.950258545 517 | 516,0.009548658,0.011824936,37.22397246,0.015753894,10.04173617,-0.136772601,-5.877142394,2.872659404,473,0.950165909 518 | 517,0.009543089,0.011826685,37.1898639,0.01575859,10.0414745,-0.136781907,-5.873893829,2.869169205,472,0.950067273 519 | 518,0.009535898,0.011827598,37.15538974,0.015764296,10.0430005,-0.136657876,-5.873587239,2.864858481,471,0.950108545 520 | 519,0.009529695,0.011830947,37.11153151,0.015771042,10.0428415,-0.136368861,-5.86959631,2.860613938,470,0.950156818 521 | 520,0.009522662,0.01183405,37.05767556,0.015780331,10.04270517,-0.136137526,-5.867820708,2.856714006,469,0.949941364 522 | 521,0.009515712,0.011839172,37.00562296,0.015790082,10.04274283,-0.13586343,-5.869006726,2.853011387,468,0.949932364 523 | 522,0.009507864,0.011842502,36.96290246,0.015798831,10.04279783,-0.13562074,-5.865231192,2.84749744,467,0.949853545 524 | 523,0.009500319,0.011847677,36.91647136,0.01580745,10.04269533,-0.135389194,-5.863707769,2.842034631,466,0.949702273 525 | 524,0.009492347,0.011850698,36.88104489,0.015814957,10.04246083,-0.13505409,-5.862113298,2.836520496,465,0.949682 526 | 525,0.009486768,0.011855664,36.84501891,0.015822857,10.04234717,-0.134939837,-5.856174779,2.831817382,464,0.949569909 527 | 526,0.00948225,0.011859197,36.8211555,0.015828441,10.0421115,-0.134832637,-5.854271534,2.82867934,463,0.949698364 528 | 527,0.009479736,0.011863598,36.8050279,0.015832643,10.04217033,-0.134738723,-5.854818295,2.827174835,462,0.949421909 529 | 528,0.009478534,0.011865662,36.81519248,0.01583296,10.04214283,-0.134788581,-5.850932843,2.826143744,461,0.949333818 530 | 529,0.009478414,0.011865908,36.84293657,0.015829882,10.04213033,-0.134800849,-5.850164129,2.82573531,460,0.949426636 531 | 530,0.009480436,0.011865657,36.87894161,0.015823945,10.04216217,-0.135021817,-5.849699397,2.827436577,459,0.949424273 532 | 531,0.009482966,0.01186457,36.92761135,0.015815702,10.04214133,-0.135068522,-5.847369342,2.827846286,458,0.949253818 533 | 532,0.00948606,0.011862641,36.98543148,0.015805428,10.04214383,-0.135371513,-5.84172953,2.829867138,457,0.949339636 534 | 533,0.009489441,0.011860723,37.04163614,0.015795209,10.0420315,-0.135551964,-5.84069508,2.831908577,456,0.949024 535 | 534,0.009492176,0.011857552,37.09889281,0.015785975,10.04210133,-0.136005627,-5.837962793,2.833537278,455,0.949059727 536 | 535,0.00949489,0.011854089,37.15335359,0.015777354,10.04225983,-0.136211655,-5.836286566,2.835207202,454,0.948828364 537 | 536,0.0094983,0.011853092,37.21131651,0.015768216,10.04250583,-0.13643303,-5.836574552,2.837778766,453,0.948824909 538 | 537,0.009501342,0.01185091,37.26741311,0.015758526,10.04270933,-0.136669023,-5.834088538,2.83898442,452,0.948735909 539 | 538,0.00950471,0.011851127,37.30606318,0.015752719,10.041218,-0.137582161,-5.836102318,2.840415728,451,0.948709182 540 | 539,0.009506372,0.011850822,37.33012673,0.015747972,10.041329,-0.137885078,-5.837420941,2.841649661,450,0.948665 541 | 540,0.009506222,0.011851335,37.35870088,0.015744381,10.0412685,-0.137859327,-5.834412365,2.840834701,449,0.948682545 542 | 541,0.009506824,0.011855092,37.36876154,0.015744023,10.041283,-0.137850362,-5.833121216,2.841335953,448,0.948460818 543 | 542,0.009506819,0.011859502,37.37745751,0.015745175,10.041274,-0.138837816,-5.83748075,2.840799321,447,0.948275455 544 | 543,0.009507278,0.011864682,37.38421597,0.015745568,10.04126517,-0.138753312,-5.836887565,2.840458371,446,0.948524909 545 | 544,0.009507593,0.011870475,37.373097,0.015748945,10.0412675,-0.138538162,-5.835254565,2.83992077,445,0.948436 546 | 545,0.009507188,0.011875353,37.36006665,0.015750507,10.04109933,-0.138443858,-5.835862761,2.839466906,444,0.948474909 547 | 546,0.009507104,0.011882955,37.33192491,0.015756062,10.04084233,-0.138326266,-5.841874611,2.838525996,443,0.948448636 548 | 547,0.00950577,0.011890479,37.30793384,0.015761798,10.040821,-0.138171541,-5.843559017,2.837645449,442,0.948350455 549 | 548,0.009504223,0.011898042,37.27690085,0.015767427,10.042427,-0.13733549,-5.842103231,2.836068721,441,0.948490364 550 | 549,0.009502094,0.01190523,37.24803392,0.01577435,10.04234683,-0.137789415,-5.842343928,2.834383466,440,0.948280727 551 | 550,0.009501273,0.011913211,37.21546808,0.015781589,10.04235833,-0.137762448,-5.843182843,2.832693645,439,0.948150273 552 | 551,0.009498653,0.01191735,37.19161763,0.01578799,10.042411,-0.137748017,-5.844267193,2.831159066,438,0.948086636 553 | 552,0.009496454,0.011922511,37.16297515,0.015793604,10.04250667,-0.136542081,-5.843224082,2.829637263,437,0.948008364 554 | 553,0.00949415,0.011927644,37.13302493,0.015801785,10.04262167,-0.136573998,-5.845558067,2.828174652,436,0.947931182 555 | 554,0.009492518,0.011934371,37.11258581,0.015807097,10.042738,-0.136614801,-5.845778443,2.826020707,435,0.947966909 556 | 555,0.009489571,0.011939368,37.09468071,0.015813493,10.04288733,-0.136603843,-5.848130321,2.824613614,434,0.947762182 557 | 556,0.009485804,0.011941034,37.08617757,0.015817067,10.04301967,-0.136421626,-5.840646918,2.822892917,433,0.947695727 558 | 557,0.009483577,0.011945336,37.07489578,0.015821543,10.04292483,-0.137346285,-5.837632335,2.820497399,432,0.947671182 559 | 558,0.009481874,0.011948351,37.06991336,0.015824562,10.0429685,-0.137146087,-5.837401906,2.81946136,431,0.947731 560 | 559,0.00948066,0.011951075,37.07150558,0.015826391,10.0430455,-0.137042443,-5.838368101,2.818600363,430,0.947465545 561 | 560,0.009477919,0.011951098,37.08532889,0.015825467,10.04316983,-0.137031992,-5.839444865,2.817505653,429,0.947464909 562 | 561,0.009476569,0.011952843,37.08911044,0.015825412,10.04320517,-0.137052518,-5.835699226,2.815747281,428,0.947510727 563 | 562,0.009475665,0.011954311,37.09624772,0.015824989,10.04319367,-0.137122114,-5.83584113,2.815244985,427,0.947467182 564 | 563,0.009473456,0.011952517,37.11223994,0.015821449,10.043066,-0.137856189,-5.835753605,2.81471935,426,0.947449273 565 | 564,0.009472229,0.011951194,37.12046533,0.015819959,10.04308483,-0.137860991,-5.836820153,2.814212676,425,0.947324273 566 | 565,0.00947191,0.011950453,37.139317,0.015816424,10.0431475,-0.137835687,-5.83123968,2.813548692,424,0.947358091 567 | 566,0.009472065,0.011949927,37.15467199,0.015813083,10.0431235,-0.13805648,-5.836224047,2.81312318,423,0.947144545 568 | 567,0.009472363,0.011947829,37.18527604,0.015807076,10.04308717,-0.137357976,-5.836280991,2.813644105,422,0.947042727 569 | 568,0.009470789,0.01194363,37.22293332,0.015801169,10.04300983,-0.137598965,-5.832653849,2.812654509,421,0.946989909 570 | 569,0.009470212,0.011939438,37.26187515,0.015794385,10.04289867,-0.137115921,-5.8279434,2.812076586,420,0.946998182 571 | 570,0.009472628,0.011939036,37.2870571,0.015789235,10.04280417,-0.138370251,-5.82829701,2.813474518,419,0.947118273 572 | 571,0.009474662,0.011937747,37.33036734,0.015781827,10.04269467,-0.138654817,-5.831910717,2.815031419,418,0.947093545 573 | 572,0.009475684,0.011934166,37.36654768,0.015775101,10.04267633,-0.138883374,-5.827370613,2.814932109,417,0.946788909 574 | 573,0.009477599,0.011933261,37.39357257,0.015768783,10.042762,-0.138323986,-5.823450196,2.81517508,416,0.946736455 575 | 574,0.009478514,0.011930028,37.42818015,0.015761713,10.04265883,-0.138403542,-5.823239482,2.816340707,415,0.946807 576 | 575,0.009479771,0.011928097,37.45273573,0.015755452,10.042699,-0.13864762,-5.827868819,2.81737341,414,0.946778455 577 | 576,0.009481403,0.01192773,37.47975962,0.015749228,10.04262883,-0.139197729,-5.824049714,2.818179501,413,0.946552364 578 | 577,0.009482716,0.011926533,37.4955562,0.015744598,10.04279733,-0.139279949,-5.821209108,2.818257157,412,0.946519364 579 | 578,0.009485931,0.011928954,37.50598076,0.015740526,10.0428585,-0.139224003,-5.823938089,2.81952542,411,0.946590727 580 | 579,0.009487917,0.011930855,37.51380187,0.015737339,10.04272767,-0.139388792,-5.823842476,2.820767132,410,0.946238 581 | 580,0.009488523,0.011931648,37.53522407,0.015732974,10.04274633,-0.138417807,-5.823057818,2.82139762,409,0.946143364 582 | 581,0.009489214,0.01193214,37.55121967,0.015729408,10.0427195,-0.138482404,-5.820492228,2.821595701,408,0.946175 583 | 582,0.009491229,0.01193581,37.5669181,0.015725719,10.04276583,-0.138533881,-5.823470342,2.822387853,407,0.946222182 584 | 583,0.009493839,0.011939268,37.58237593,0.015724121,10.04297333,-0.139095965,-5.823675267,2.823200019,406,0.946056 585 | 584,0.009496043,0.011942767,37.60525483,0.015720572,10.04308383,-0.13927039,-5.824041344,2.824167667,405,0.945917182 586 | 585,0.009497677,0.011945048,37.63151759,0.015717428,10.04305417,-0.139212421,-5.818771522,2.824077072,404,0.946015364 587 | 586,0.009498404,0.011945506,37.65031475,0.01571556,10.043006,-0.138777379,-5.818515439,2.824199814,403,0.945817818 588 | 587,0.009498161,0.011947056,37.6642244,0.01571449,10.04276633,-0.138691654,-5.820931542,2.82490502,402,0.945578909 589 | 588,0.009495939,0.011946208,37.68005506,0.015713327,10.0427165,-0.138871592,-5.819169584,2.824201555,401,0.945689 590 | 589,0.009494144,0.011948597,37.68102753,0.015715094,10.042879,-0.138853282,-5.817631434,2.822445157,400,0.945534818 591 | 590,0.009491239,0.011950063,37.66709363,0.015718511,10.04285083,-0.138791142,-5.811337112,2.819309317,399,0.945456455 592 | 591,0.009489659,0.011953893,37.64777406,0.015723262,10.04281017,-0.138509245,-5.809500615,2.817808652,398,0.945387727 593 | 592,0.009487214,0.011954241,37.63910103,0.015726708,10.04259867,-0.138481418,-5.808452476,2.816442215,397,0.945161909 594 | 593,0.009484102,0.011953552,37.64467835,0.015727853,10.0426,-0.1379816,-5.807436474,2.81476288,396,0.945080182 595 | 594,0.009481746,0.011953296,37.64565347,0.015729136,10.0423655,-0.137942898,-5.802305834,2.813033293,395,0.945017 596 | 595,0.009480129,0.011953867,37.64421754,0.015730143,10.04217933,-0.138129558,-5.802641585,2.812137146,394,0.944982 597 | 596,0.009479081,0.011954814,37.64755406,0.015730668,10.04252833,-0.138330032,-5.79806732,2.811027231,393,0.945004455 598 | 597,0.009478609,0.01195561,37.65246464,0.015730255,10.04281933,-0.138413194,-5.795306208,2.810533584,392,0.944924818 599 | 598,0.009479046,0.011956648,37.6528512,0.015729746,10.04297233,-0.138367985,-5.794300025,2.809874071,391,0.944762091 600 | 599,0.009479924,0.011955972,37.6792167,0.015725295,10.04291867,-0.13851214,-5.789446732,2.810070576,390,0.944864455 601 | 600,0.009480942,0.011954353,37.70339947,0.015722123,10.0411455,-0.138533837,-5.791355029,2.810895713,389,0.944645091 602 | 601,0.009480611,0.011950896,37.72919869,0.015717041,10.04121,-0.138753756,-5.791743518,2.810910933,388,0.944699818 603 | 602,0.009480615,0.011950011,37.7478147,0.015713193,10.04131933,-0.138770369,-5.786543994,2.81089665,387,0.944701636 604 | 603,0.009480713,0.011950032,37.76654355,0.015710807,10.041122,-0.138825127,-5.78099826,2.810659857,386,0.944667727 605 | 604,0.009481408,0.011951417,37.77207038,0.015710226,10.041436,-0.138914247,-5.782958357,2.811016853,385,0.944650091 606 | 605,0.0094816,0.011951925,37.79202457,0.015710381,10.041644,-0.138816886,-5.785119132,2.811009751,384,0.944607545 607 | 606,0.009479979,0.011951224,37.80322711,0.015709979,10.04156583,-0.138653362,-5.785801549,2.810831278,383,0.944585455 608 | 607,0.009476782,0.011949268,37.79920628,0.015710891,10.04142933,-0.138685774,-5.781669873,2.80820505,382,0.944419 609 | 608,0.009473979,0.011949714,37.78990509,0.01571277,10.04113517,-0.138709343,-5.776679858,2.806729859,381,0.944369455 610 | 609,0.009471817,0.011950958,37.77954727,0.015715552,10.04113117,-0.138589561,-5.779313004,2.805495769,380,0.944356273 611 | 610,0.009470312,0.011953334,37.77103465,0.015716417,10.0427965,-0.138518456,-5.777616758,2.804529922,379,0.9443 612 | 611,0.009468903,0.011956828,37.75771972,0.015719418,10.04284017,-0.138428752,-5.77556895,2.803664741,378,0.943986909 613 | 612,0.00946689,0.011958292,37.75838686,0.015720823,10.04299717,-0.138369821,-5.773883172,2.80200524,377,0.944177636 614 | 613,0.009465386,0.011960898,37.74106709,0.0157228,10.04289617,-0.138402136,-5.778118152,2.800864316,376,0.943973455 615 | 614,0.00946215,0.011960482,37.74074528,0.015722303,10.0427195,-0.138374203,-5.774831929,2.799159732,375,0.943937182 616 | 615,0.009460947,0.011963842,37.72342136,0.015722318,10.04256417,-0.138471973,-5.769875734,2.797644218,374,0.943922545 617 | 616,0.009461223,0.011968857,37.71561808,0.015722265,10.0423645,-0.138515826,-5.77082859,2.796369546,373,0.943570545 618 | 617,0.009462071,0.011974059,37.72883045,0.015722501,10.04219367,-0.138446248,-5.774405099,2.796954107,372,0.943531364 619 | 618,0.009462691,0.011977759,37.74526795,0.01572218,10.04218333,-0.138497761,-5.778796,2.797163363,371,0.943555 620 | 619,0.009463923,0.011982697,37.74647302,0.015721935,10.04219283,-0.138432591,-5.777593996,2.797151151,370,0.943707 621 | 620,0.009464157,0.011986134,37.74832837,0.015722282,10.0422,-0.138477419,-5.777858453,2.796565406,369,0.943644727 622 | 621,0.009464838,0.011989822,37.75033505,0.015722425,10.042157,-0.138527841,-5.777257504,2.796344622,368,0.943639727 623 | 622,0.009465699,0.011994009,37.74189274,0.015724796,10.042122,-0.13848964,-5.782134083,2.79652425,367,0.943612545 624 | 623,0.009467052,0.011998393,37.73920136,0.015726505,10.04216333,-0.138421005,-5.78008349,2.796735413,366,0.943415818 625 | 624,0.009468694,0.012003489,37.73899814,0.015729527,10.04231817,-0.13949431,-5.779570251,2.796536455,365,0.943131091 626 | 625,0.009468518,0.0120056,37.7483189,0.015730598,10.04252167,-0.139348651,-5.777234055,2.796032071,364,0.943225727 627 | 626,0.00946871,0.012007743,37.751298,0.015731653,10.04272617,-0.139480113,-5.777330264,2.796072263,363,0.943192273 628 | 627,0.009470488,0.012011858,37.74637428,0.015732461,10.0428175,-0.139103857,-5.77908602,2.796980192,362,0.942958455 629 | 628,0.009470777,0.012014427,37.75377595,0.015732157,10.04310167,-0.139144642,-5.7769326,2.796514329,361,0.943135273 630 | 629,0.00947063,0.012016186,37.74794915,0.015734417,10.04329233,-0.139023668,-5.780436321,2.796607765,360,0.942969091 631 | 630,0.009470966,0.012018867,37.75699135,0.015734392,10.04354133,-0.13909659,-5.778562525,2.796403648,359,0.942956091 632 | 631,0.009470336,0.012018742,37.76617528,0.015735481,10.04385083,-0.139167793,-5.779683475,2.796980469,358,0.942945455 633 | 632,0.009470385,0.012020098,37.77518616,0.015734675,10.043717,-0.139259293,-5.775037839,2.796333295,357,0.942975727 634 | 633,0.009469206,0.012019142,37.78575377,0.015732468,10.04373933,-0.139424224,-5.774870857,2.795802877,356,0.942852909 635 | 634,0.009468806,0.012020179,37.78049485,0.015731903,10.04360267,-0.13829249,-5.775712741,2.795185125,355,0.942817636 636 | 635,0.00946851,0.012021687,37.76681029,0.015732441,10.0435995,-0.138528566,-5.780649898,2.795939222,354,0.942789545 637 | 636,0.009467164,0.012021658,37.76696374,0.015732645,10.04346133,-0.138423646,-5.778908479,2.795395359,353,0.942848727 638 | 637,0.009464399,0.012019971,37.77602205,0.015732439,10.0435745,-0.138883192,-5.775459971,2.793617321,352,0.942706545 639 | 638,0.009463511,0.01202049,37.77462671,0.015732337,10.04348667,-0.138982809,-5.774078253,2.79344515,351,0.942648182 640 | 639,0.009459519,0.012016891,37.7917103,0.015730167,10.04340533,-0.139320593,-5.769055555,2.791578297,350,0.942473818 641 | 640,0.009457703,0.012019324,37.78459071,0.015731104,10.04318667,-0.139103857,-5.769304002,2.790220724,349,0.942538455 642 | 641,0.00945526,0.012022506,37.77923432,0.015731184,10.04287283,-0.138901468,-5.765012198,2.787631497,348,0.942321 643 | 642,0.009452485,0.012024741,37.77593603,0.015731912,10.04304883,-0.138914148,-5.766367067,2.78579587,347,0.942337727 644 | 643,0.009450291,0.012028364,37.76768801,0.015735201,10.04303567,-0.138753895,-5.762007573,2.783643644,346,0.942184364 645 | 644,0.009447108,0.012030562,37.76675048,0.015736177,10.04298433,-0.138847008,-5.760077809,2.78187735,345,0.941989545 646 | 645,0.009443845,0.012032232,37.7722803,0.015736599,10.042726,-0.138751369,-5.755586633,2.77925627,344,0.942065636 647 | 646,0.009438576,0.012034199,37.76509052,0.015739029,10.0427995,-0.138731901,-5.747930997,2.775834633,343,0.940737273 648 | 647,0.009436937,0.012038405,37.75574335,0.015740969,10.04263933,-0.138704652,-5.747476171,2.774401763,342,0.941715364 649 | 648,0.009434618,0.012041296,37.74706923,0.01574351,10.04246417,-0.138478391,-5.748425293,2.772837225,341,0.941720091 650 | 649,0.009434209,0.012047698,37.73324832,0.015746169,10.042466,-0.138361425,-5.74998767,2.771013394,340,0.941641091 651 | 650,0.009432752,0.0120523,37.73414508,0.015748432,10.04261267,-0.138510803,-5.747725313,2.769445851,339,0.941442455 652 | 651,0.009430854,0.012052714,37.73673796,0.015749242,10.0426275,-0.138698083,-5.748227528,2.768285284,338,0.941348545 653 | 652,0.009429976,0.012055201,37.73517668,0.0157508,10.04243367,-0.138624011,-5.746631766,2.766999956,337,0.941193364 654 | 653,0.009426622,0.012053548,37.74297951,0.015749979,10.0426435,-0.13871852,-5.74946188,2.765763732,336,0.941081364 655 | 654,0.009423931,0.012052402,37.749606,0.015750424,10.04287833,-0.1386999,-5.746064529,2.764123481,335,0.941099273 656 | 655,0.00942205,0.012053604,37.74957853,0.015751898,10.0431125,-0.13874425,-5.744231228,2.762803243,334,0.940994909 657 | 656,0.009422434,0.012055142,37.7546022,0.015751202,10.04297283,-0.138673089,-5.747929365,2.762226189,333,0.940807909 658 | 657,0.009419126,0.012053577,37.76221234,0.015750572,10.04136617,-0.138722456,-5.744782203,2.76032991,332,0.940622 659 | 658,0.00941634,0.012052016,37.77143793,0.015749061,10.04150033,-0.138920003,-5.742139002,2.758380389,331,0.940646 660 | 659,0.009414839,0.012050985,37.78781232,0.015746738,10.041421,-0.138953798,-5.74113432,2.758211029,330,0.940579273 661 | 660,0.009412763,0.012045678,37.80297402,0.015742517,10.04136,-0.139094913,-5.738665208,2.757518262,329,0.940603636 662 | 661,0.009411904,0.012045509,37.81936521,0.01573929,10.041448,-0.139193367,-5.736464918,2.756261872,328,0.940457 663 | 662,0.009409559,0.012042749,37.83760932,0.015735871,10.04152867,-0.139270132,-5.731282809,2.755388418,327,0.940446455 664 | 663,0.009409367,0.012043748,37.85423394,0.015732815,10.04140033,-0.139313491,-5.73131034,2.755188225,326,0.940227 665 | 664,0.009410291,0.012046018,37.87599906,0.015729993,10.0412425,-0.139377472,-5.731367723,2.755781126,325,0.940645636 666 | 665,0.009409332,0.01204489,37.88354204,0.015728731,10.041127,-0.139403633,-5.731210242,2.755143824,324,0.940219091 667 | 666,0.009409027,0.01204598,37.90551678,0.015726321,10.04119433,-0.139625849,-5.729436037,2.754755475,323,0.940525636 668 | 667,0.009408866,0.01204839,37.89951236,0.015727032,10.04292833,-0.139593604,-5.731918324,2.754425212,322,0.939964091 669 | 668,0.00940718,0.012051097,37.90260592,0.015727143,10.04281033,-0.13950567,-5.727991713,2.753313816,321,0.940006545 670 | 669,0.00940429,0.01205399,37.8929646,0.015730092,10.04270967,-0.139372519,-5.721927397,2.750715198,320,0.939700909 671 | 670,0.009399857,0.012056272,37.88795961,0.015734165,10.04258033,-0.139229005,-5.717977405,2.747894195,319,0.939463636 672 | 671,0.009397223,0.012061325,37.87695605,0.015737658,10.04251367,-0.13910912,-5.715327451,2.745306583,318,0.939549455 673 | 672,0.009395407,0.012067068,37.86452465,0.015741084,10.042488,-0.139076867,-5.715990252,2.743675815,317,0.939370545 674 | 673,0.009393684,0.012070742,37.85625299,0.015744647,10.04262967,-0.138906387,-5.708467373,2.741511973,316,0.939529636 675 | 674,0.009392017,0.012074666,37.82541765,0.015747854,10.04264433,-0.138866332,-5.705610051,2.739710414,315,0.939594 676 | 675,0.009391203,0.012080945,37.81083797,0.01574994,10.0427135,-0.138797404,-5.707000871,2.738410932,314,0.939660364 677 | 676,0.009388445,0.012083722,37.78031867,0.015755819,10.04279333,-0.13856511,-5.703811568,2.736519395,313,0.939436818 678 | 677,0.009385619,0.012087248,37.76804901,0.015759411,10.04281717,-0.138364478,-5.695621718,2.733127134,312,0.939448091 679 | 678,0.009383765,0.012092798,37.74220814,0.015766495,10.04299267,-0.138218622,-5.697566861,2.730766316,311,0.939209909 680 | 679,0.009380216,0.012098773,37.72744302,0.015770673,10.04299833,-0.138234166,-5.69724591,2.728304246,310,0.937939455 681 | 680,0.009379154,0.012104676,37.70173862,0.015774737,10.04301067,-0.138249957,-5.700304186,2.726381147,309,0.939065091 682 | 681,0.009375001,0.012106089,37.6827796,0.015779523,10.04310633,-0.138147035,-5.701381213,2.725155019,308,0.938853091 683 | 682,0.009370242,0.012106464,37.67068666,0.015784426,10.0432055,-0.138133783,-5.698166632,2.722083185,307,0.938747727 684 | 683,0.009364779,0.012107496,37.65491187,0.015788403,10.04293633,-0.138252732,-5.698714172,2.718519661,306,0.938627182 685 | 684,0.009358755,0.012108857,37.64965514,0.01579347,10.04298717,-0.138046777,-5.703014758,2.715156106,305,0.938758818 686 | 685,0.009353662,0.012110509,37.63584817,0.015798587,10.042949,-0.137809761,-5.697346187,2.711509096,304,0.938724182 687 | 686,0.009349607,0.012113712,37.62368831,0.015800767,10.0429195,-0.137763068,-5.695347541,2.708761094,303,0.938648818 688 | 687,0.009346506,0.012117776,37.61187678,0.015803034,10.04292683,-0.137754823,-5.697923072,2.707196366,302,0.938605818 689 | 688,0.009343408,0.012120472,37.60054552,0.015804918,10.04323767,-0.137653477,-5.693210253,2.704610565,301,0.938368273 690 | 689,0.009342522,0.012120746,37.59160108,0.015806005,10.04315217,-0.137672615,-5.691802041,2.703134814,300,0.938151273 691 | 690,0.009341007,0.012124179,37.59336643,0.015810062,10.04322633,-0.137626353,-5.689366271,2.701975881,299,0.937978273 692 | 691,0.009339463,0.012125936,37.59607477,0.015809719,10.04320617,-0.137643777,-5.689566396,2.700001095,298,0.937949818 693 | 692,0.00933857,0.012129629,37.58844156,0.015810659,10.04315583,-0.137632528,-5.689752073,2.698965064,297,0.937964273 694 | 693,0.009337882,0.012132985,37.57852313,0.015812088,10.04332083,-0.137637446,-5.687651698,2.698381198,296,0.937703636 695 | 694,0.009337091,0.012136316,37.57853132,0.015812569,10.04331083,-0.137685869,-5.681424528,2.696628901,295,0.937671364 696 | 695,0.009335496,0.012138585,37.58449054,0.015811683,10.043152,-0.13778743,-5.677777957,2.695001526,294,0.937573273 697 | 696,0.009334149,0.012141062,37.5848361,0.015812782,10.0430375,-0.137829033,-5.676693054,2.693797801,293,0.93727 698 | 697,0.009331502,0.01214069,37.59245776,0.01581263,10.04289,-0.137944869,-5.67331901,2.691438072,292,0.937297 699 | 698,0.009328927,0.01214026,37.59748615,0.015812095,10.042422,-0.138059948,-5.674326225,2.6899348,291,0.937321364 700 | 699,0.009326783,0.01214206,37.59570226,0.015812183,10.0424295,-0.138094722,-5.674403116,2.688545638,290,0.937159636 701 | 700,0.009322885,0.012139392,37.58954815,0.015809403,10.042323,-0.137926668,-5.672601373,2.686556349,289,0.937245182 702 | 701,0.00932048,0.012138568,37.57747892,0.015811061,10.04226233,-0.13809651,-5.666536665,2.684569004,288,0.937105818 703 | 702,0.009318642,0.012139023,37.57121955,0.015811153,10.04209133,-0.138098472,-5.662827601,2.683181322,287,0.937132909 704 | 703,0.009317416,0.012141629,37.56284595,0.015811944,10.04193867,-0.137984404,-5.662678192,2.682101586,286,0.936983182 705 | 704,0.009315733,0.012143508,37.55508547,0.01581146,10.04175217,-0.138042224,-5.661764521,2.681042119,285,0.936911545 706 | 705,0.00931522,0.01214538,37.54807146,0.015811802,10.04190367,-0.138090984,-5.664359064,2.680591283,284,0.936619727 707 | 706,0.009315816,0.012148239,37.55224721,0.015810072,10.04196,-0.138061027,-5.6681137,2.680412658,283,0.936542455 708 | 707,0.009317156,0.012151309,37.56327668,0.01580868,10.0420025,-0.138128376,-5.666170697,2.680517468,282,0.936453364 709 | 708,0.009317494,0.012151493,37.56952374,0.015806111,10.04203167,-0.138125383,-5.665956843,2.681102394,281,0.936320545 710 | 709,0.009317727,0.012152058,37.58054509,0.015804586,10.0421425,-0.138075796,-5.662808505,2.680615443,280,0.936414091 711 | 710,0.009318516,0.01215496,37.58724545,0.015803428,10.042313,-0.138368424,-5.662014713,2.681070769,279,0.936375636 712 | 711,0.009320773,0.012161672,37.59305748,0.015803035,10.0422185,-0.138395012,-5.663618434,2.681848869,278,0.936227455 713 | 712,0.009319931,0.012163744,37.60653701,0.015801594,10.04245833,-0.138933645,-5.662662052,2.681562853,277,0.936122909 714 | 713,0.009319187,0.012166173,37.61895293,0.015801706,10.04257267,-0.13901985,-5.661806319,2.68093201,276,0.936029 715 | 714,0.009317618,0.012167538,37.62377936,0.015802817,10.04265317,-0.138967453,-5.65804263,2.679563232,275,0.935837273 716 | 715,0.009314476,0.012168381,37.63412875,0.015803268,10.04254267,-0.139046362,-5.656661268,2.678214712,274,0.935847091 717 | 716,0.009309629,0.012167172,37.63208954,0.015805502,10.042528,-0.139160084,-5.660177978,2.676244814,273,0.935645091 718 | 717,0.009305037,0.012168277,37.61927263,0.015808387,10.0424955,-0.139068518,-5.660163749,2.674041777,272,0.935659545 719 | 718,0.009301223,0.01217214,37.61438992,0.015811108,10.04266317,-0.139074257,-5.653777346,2.670229087,271,0.935379455 720 | 719,0.009296461,0.012173526,37.60996917,0.015813393,10.04269883,-0.139097913,-5.65180736,2.66745121,270,0.935191455 721 | 720,0.009293447,0.012176928,37.60954928,0.015815599,10.04255333,-0.139009794,-5.648845013,2.664476789,269,0.935160909 722 | 721,0.009289576,0.012179437,37.60963005,0.015816494,10.04262983,-0.13892572,-5.645020987,2.661335956,268,0.935099909 723 | 722,0.009286734,0.012182908,37.60281509,0.015817629,10.04256567,-0.13844097,-5.645282263,2.659014716,267,0.934864455 724 | 723,0.00928297,0.012184186,37.59905494,0.015817679,10.0425445,-0.13837684,-5.64152991,2.656196148,266,0.934824818 725 | 724,0.00928026,0.01218775,37.59475214,0.015818,10.04269017,-0.138418472,-5.642999542,2.654114215,265,0.934800545 726 | 725,0.009277225,0.012191085,37.58171038,0.015820878,10.04288317,-0.138315766,-5.64099548,2.651618106,264,0.934675 727 | 726,0.009275489,0.012196895,37.57159409,0.015825036,10.043231,-0.138239218,-5.630518917,2.648933787,263,0.934326 728 | 727,0.009274101,0.012200933,37.56645579,0.015825983,10.04341133,-0.138731286,-5.629192954,2.64742907,262,0.934273727 729 | 728,0.009272825,0.012204197,37.56441067,0.015827598,10.04333333,-0.138862101,-5.627532409,2.646193834,261,0.934110909 730 | 729,0.009271654,0.012207949,37.55841467,0.015828759,10.04367817,-0.138901351,-5.626759932,2.645233494,260,0.934085 731 | 730,0.009269093,0.012209459,37.55302917,0.015829342,10.04383217,-0.13894348,-5.62688648,2.643710216,259,0.933911727 732 | 731,0.009265403,0.012207928,37.55061803,0.015830977,10.04391883,-0.138896182,-5.628118432,2.642252742,258,0.933857818 733 | 732,0.009263111,0.01220845,37.54633674,0.015831681,10.04394867,-0.138978161,-5.62431425,2.640565018,257,0.933703909 734 | 733,0.009262148,0.012210634,37.54403854,0.015832104,10.0439945,-0.139208367,-5.622145607,2.63934363,256,0.933582636 735 | 734,0.009261581,0.012211751,37.54891908,0.015830216,10.0439625,-0.139317363,-5.620558207,2.638810149,255,0.933430273 736 | 735,0.009263187,0.012215672,37.55978898,0.01582741,10.04391533,-0.139421406,-5.620014933,2.638515078,254,0.933414818 737 | 736,0.009263421,0.012215198,37.57365921,0.015822101,10.0437395,-0.139468055,-5.618097587,2.638224632,253,0.933258727 738 | 737,0.009263571,0.012216784,37.57510913,0.01582049,10.04372817,-0.13915865,-5.616207683,2.637483194,252,0.933149545 739 | 738,0.00926472,0.012219405,37.57530701,0.015818137,10.04382,-0.139104362,-5.617566631,2.637643973,251,0.932998455 740 | 739,0.009266259,0.012222155,37.5870497,0.015814346,10.04368217,-0.140050236,-5.616762561,2.637563609,250,0.932818636 741 | 740,0.009268097,0.01222297,37.59684978,0.01581045,10.043735,-0.14016676,-5.616128989,2.637826687,249,0.932729455 742 | 741,0.009269674,0.01222369,37.61264869,0.015803879,10.04372983,-0.140389592,-5.612373547,2.637854806,248,0.932569364 743 | 742,0.009270364,0.012222852,37.63785411,0.015798654,10.04375117,-0.140403574,-5.611026664,2.637767959,247,0.932457364 744 | 743,0.009269991,0.012220093,37.66225804,0.015792589,10.04377133,-0.140520362,-5.610544155,2.637915058,246,0.932403818 745 | 744,0.009269183,0.012216128,37.6800809,0.015790159,10.04378117,-0.140676738,-5.607137874,2.637694567,245,0.932366636 746 | 745,0.009269497,0.012214259,37.69729834,0.015786238,10.0440305,-0.140710765,-5.603284855,2.637499933,244,0.932231909 747 | 746,0.009270486,0.012215542,37.71869446,0.01578259,10.0440315,-0.141013717,-5.605462666,2.638146995,243,0.932103182 748 | 747,0.009270578,0.012215132,37.7411439,0.015778134,10.04404983,-0.141074625,-5.604510075,2.638753245,242,0.931926818 749 | 748,0.009270336,0.012214954,37.76642805,0.015774983,10.04401717,-0.14141285,-5.601450813,2.638343846,241,0.931778818 750 | 749,0.009269719,0.012214528,37.78466476,0.015774365,10.04405833,-0.140748189,-5.59904854,2.637482994,240,0.931717182 751 | 750,0.009268946,0.012216441,37.79626115,0.015773971,10.04418633,-0.140792966,-5.594423125,2.636545579,239,0.931451545 752 | 751,0.009268356,0.012220175,37.80822891,0.01577488,10.04436983,-0.14087696,-5.591629685,2.635342762,238,0.931415636 753 | 752,0.009267213,0.012222988,37.80559387,0.015777025,10.04448517,-0.14096129,-5.590063141,2.634464548,237,0.931336545 754 | 753,0.009264885,0.012225093,37.80748942,0.015778309,10.044713,-0.140909768,-5.587714639,2.633614217,236,0.931128545 755 | 754,0.009263926,0.012230176,37.81101275,0.01577836,10.04481317,-0.140866929,-5.585115976,2.631575021,235,0.931118364 756 | 755,0.009260694,0.01223024,37.81220136,0.01577956,10.04474033,-0.141020304,-5.580898535,2.62930416,234,0.930884636 757 | 756,0.009258478,0.012231802,37.81039793,0.015780587,10.04484917,-0.140894923,-5.577294008,2.626782207,233,0.930838909 758 | 757,0.009255339,0.012232265,37.81060068,0.015781229,10.04495917,-0.141013533,-5.572422287,2.624629326,232,0.930573 759 | 758,0.009252247,0.012234349,37.80323253,0.015781702,10.04504983,-0.140788516,-5.571432072,2.62246081,231,0.930628636 760 | 759,0.009247695,0.012235309,37.78481789,0.015782606,10.04530317,-0.140796362,-5.571122487,2.620253582,230,0.930222818 761 | 760,0.009244193,0.012239059,37.77911508,0.015784454,10.0454225,-0.140764027,-5.570310968,2.618002615,229,0.930151364 762 | 761,0.009241011,0.012241662,37.76371119,0.015786668,10.045666,-0.140482849,-5.567303044,2.615779365,228,0.929930364 763 | 762,0.00923944,0.01224678,37.75960833,0.015786424,10.04590783,-0.140578795,-5.567256403,2.613880264,227,0.929951545 764 | 763,0.009238519,0.012252693,37.74798368,0.015788459,10.04608567,-0.140498503,-5.575335621,2.61292796,226,0.929827364 765 | 764,0.009236836,0.012256298,37.74224267,0.015790083,10.04628783,-0.140720966,-5.573156069,2.611418411,225,0.929696364 766 | 765,0.00923451,0.01225931,37.7363682,0.015790692,10.04651617,-0.140867003,-5.574045797,2.609794819,224,0.929513273 767 | 766,0.00923227,0.012262095,37.73190123,0.015791089,10.04670783,-0.141003762,-5.569910944,2.607789041,223,0.929340364 768 | 767,0.009231552,0.012266704,37.73269634,0.015791841,10.04690917,-0.140979496,-5.566334354,2.605736244,222,0.929261 769 | 768,0.009230306,0.012268498,37.73950604,0.01579248,10.04713083,-0.141143616,-5.565965704,2.60451627,221,0.929246455 770 | 769,0.009231614,0.012272944,37.75504494,0.015791736,10.0472045,-0.14129067,-5.564260217,2.604158808,220,0.928956273 771 | 770,0.009230624,0.012272604,37.77193256,0.015788467,10.04736117,-0.141413215,-5.567516372,2.603497942,219,0.928880545 772 | 771,0.009230621,0.012275474,37.79388578,0.015786487,10.04740433,-0.141789959,-5.56787443,2.602936851,218,0.928687273 773 | 772,0.009228709,0.012276933,37.79824066,0.015784978,10.04738833,-0.141888816,-5.565677034,2.601232849,217,0.928568909 774 | 773,0.009226886,0.012278473,37.80765675,0.015784325,10.04741533,-0.142006015,-5.554122975,2.597844616,216,0.928170364 775 | 774,0.009223823,0.012279768,37.82681292,0.015783267,10.04766433,-0.142055816,-5.556640445,2.596259659,215,0.927923182 776 | 775,0.009222342,0.012284016,37.84680163,0.015782609,10.04782067,-0.141883059,-5.553160334,2.594376346,214,0.927800455 777 | 776,0.009218299,0.012283882,37.86237229,0.015782964,10.04808667,-0.141900596,-5.54975781,2.592107049,213,0.927468818 778 | 777,0.009214001,0.012284423,37.86617878,0.015783739,10.048268,-0.141914041,-5.548677039,2.589589158,212,0.927567091 779 | 778,0.009211276,0.012294466,37.85939582,0.015785167,10.04882583,-0.142007371,-5.543823074,2.587148675,211,0.926274364 780 | 779,0.009204476,0.012295303,37.85190852,0.015787717,10.048979,-0.141847726,-5.538757269,2.583003298,210,0.927224727 781 | 780,0.009198041,0.012299179,37.83897496,0.015791417,10.04918617,-0.141783024,-5.527428821,2.578084529,209,0.927077273 782 | 781,0.00918992,0.012299717,37.82307816,0.015794974,10.049611,-0.141596729,-5.521456996,2.573259139,208,0.926832636 783 | 782,0.009183834,0.01230265,37.81732273,0.015799457,10.05012017,-0.141460052,-5.516074428,2.568994202,207,0.926854636 784 | 783,0.009179979,0.012310813,37.79798021,0.015805232,10.0505625,-0.141465765,-5.514830955,2.565802041,206,0.926553 785 | 784,0.009174365,0.012315274,37.77094657,0.015809349,10.0509505,-0.141214157,-5.510034572,2.561561997,205,0.926339545 786 | 785,0.009167961,0.012318428,37.74489913,0.01581503,10.05144417,-0.141868382,-5.50738257,2.557564052,204,0.926177636 787 | 786,0.009163791,0.012326438,37.71918327,0.015819295,10.0519525,-0.141653622,-5.505466406,2.553966911,203,0.926052182 788 | 787,0.009159264,0.012333879,37.6993221,0.015823469,10.05242683,-0.142198942,-5.503634748,2.550962733,202,0.925853545 789 | 788,0.009152267,0.012331428,37.68511135,0.01582761,10.05254767,-0.142082436,-5.500383925,2.546619789,201,0.925752273 790 | 789,0.009147569,0.012336573,37.66912603,0.015830238,10.05297733,-0.141984626,-5.49964475,2.543195246,200,0.925615273 791 | 790,0.009144041,0.012342246,37.65068494,0.015834201,10.0536215,-0.1419591,-5.499120633,2.540428496,199,0.925352545 792 | 791,0.009141693,0.012349559,37.63492593,0.015836282,10.05403183,-0.141961623,-5.499599159,2.537885843,198,0.925183818 793 | 792,0.009136808,0.012353631,37.6198305,0.015839062,10.05445233,-0.14188485,-5.498189136,2.534980447,197,0.924985273 794 | 793,0.009130266,0.012354011,37.60944243,0.015839281,10.05493467,-0.141777857,-5.493439113,2.531543179,196,0.924798909 795 | 794,0.00912674,0.01236043,37.5926482,0.015842293,10.05542817,-0.141646167,-5.488270327,2.528396307,195,0.924602636 796 | 795,0.009121222,0.012362791,37.57819485,0.015843354,10.05563517,-0.14096573,-5.484095813,2.525284912,194,0.924374364 797 | 796,0.009115132,0.012363824,37.56668346,0.015844972,10.05584967,-0.141014573,-5.481032655,2.521517203,193,0.924225818 798 | 797,0.009109242,0.0123638,37.55790582,0.015846139,10.05638433,-0.140333224,-5.476751945,2.517247606,192,0.924138364 799 | 798,0.009105976,0.012368058,37.55026219,0.015847253,10.05682717,-0.140308339,-5.472836017,2.514096641,191,0.923860273 800 | 799,0.009103026,0.012372021,37.5518809,0.015847646,10.05717367,-0.14040694,-5.467610508,2.511433918,190,0.923644818 801 | 800,0.009098392,0.012372038,37.55552127,0.015847244,10.05734183,-0.140459103,-5.463720832,2.508795142,189,0.923434455 802 | 801,0.009095153,0.012374012,37.55796023,0.015847732,10.05768233,-0.140546176,-5.459729739,2.505894703,188,0.923256545 803 | 802,0.00909238,0.012376205,37.5605436,0.0158472,10.0579935,-0.140621769,-5.454890236,2.503684296,187,0.923066364 804 | 803,0.009087905,0.012376161,37.5717994,0.015845917,10.0582865,-0.141162352,-5.448057382,2.499966039,186,0.922843182 805 | 804,0.009082969,0.012374883,37.58433318,0.015844371,10.058517,-0.141380403,-5.446055738,2.496811596,185,0.922564727 806 | 805,0.009080198,0.012377357,37.59961733,0.015842814,10.05896267,-0.141419716,-5.443425805,2.494508605,184,0.922354909 807 | 806,0.009077905,0.012379063,37.61781296,0.015839911,10.0593055,-0.141480799,-5.441432105,2.492807066,183,0.922178364 808 | 807,0.009075664,0.01238063,37.63353329,0.015838404,10.05943733,-0.141486514,-5.439641748,2.491211042,182,0.922018636 809 | 808,0.009072221,0.01238116,37.65046422,0.015835705,10.05971383,-0.141607674,-5.435067082,2.48924169,181,0.921836091 810 | 809,0.009070503,0.012383441,37.66524398,0.015834222,10.0603565,-0.141607273,-5.432207798,2.48766502,180,0.921521727 811 | 810,0.009070401,0.012387098,37.6850295,0.015832122,10.06097683,-0.141571639,-5.430994944,2.486481825,179,0.921407545 812 | 811,0.009067665,0.012385563,37.69597059,0.015827983,10.0613115,-0.14179875,-5.425842009,2.484785417,178,0.921145091 813 | 812,0.009064305,0.012383593,37.71496674,0.015823548,10.06173867,-0.142070809,-5.420954646,2.482595971,177,0.920931273 814 | 813,0.009062964,0.012387496,37.7313936,0.015821439,10.061968,-0.141617184,-5.42072586,2.481111096,176,0.920687091 815 | 814,0.009061187,0.012390975,37.72937565,0.015820733,10.06245117,-0.141603796,-5.418479337,2.479663024,175,0.920301273 816 | 815,0.00905867,0.012395277,37.72919778,0.015820685,10.06287217,-0.14166162,-5.414707677,2.476828555,174,0.920049455 817 | 816,0.009052959,0.012398558,37.71628287,0.015822891,10.06359267,-0.141588902,-5.409417928,2.473166885,173,0.919809364 818 | 817,0.009047439,0.01240486,37.69627984,0.015825758,10.06441417,-0.141722395,-5.403123278,2.468521891,172,0.919490636 819 | 818,0.009040447,0.012408078,37.68032358,0.015828821,10.06507667,-0.141525577,-5.398734549,2.464261863,171,0.919306455 820 | 819,0.009030987,0.012409402,37.65598971,0.01583274,10.06559233,-0.141509241,-5.392144999,2.458454872,170,0.918993909 821 | 820,0.009020983,0.01241246,37.61683,0.015838691,10.06624233,-0.141469081,-5.386585249,2.452676241,169,0.918871818 822 | 821,0.009012404,0.012420557,37.5854102,0.015845484,10.06722067,-0.141168673,-5.382507407,2.446869104,168,0.918622545 823 | 822,0.009005709,0.012431381,37.54555601,0.015853717,10.06826083,-0.140946854,-5.380500713,2.441735894,167,0.918372727 824 | 823,0.008997008,0.012435108,37.50439019,0.015859889,10.06925733,-0.140717872,-5.375216077,2.436859803,166,0.918089818 825 | 824,0.008989113,0.01244128,37.48092964,0.015864053,10.07033617,-0.140661437,-5.366839278,2.431311777,165,0.917729364 826 | 825,0.008980749,0.012446126,37.45050326,0.015868343,10.07154433,-0.140473495,-5.362210284,2.425939218,164,0.917453091 827 | 826,0.008974552,0.012453886,37.42326218,0.015873508,10.072337,-0.140363258,-5.35837279,2.421188144,163,0.917261909 828 | 827,0.008966701,0.012458146,37.40101013,0.015876586,10.07317067,-0.140171022,-5.355160893,2.416564428,162,0.916949091 829 | 828,0.008959601,0.012464272,37.36805801,0.015881361,10.07419767,-0.139982947,-5.353964726,2.412019496,161,0.916661636 830 | 829,0.008953529,0.012472922,37.33401756,0.015886152,10.07541683,-0.139701302,-5.354133282,2.407954833,160,0.916377727 831 | 830,0.008946693,0.012479544,37.31118588,0.015889389,10.07634683,-0.139625311,-5.347752294,2.403287035,159,0.916005182 832 | 831,0.008939724,0.01248517,37.29284335,0.01589376,10.07712517,-0.139593241,-5.342519045,2.398295676,158,0.915585727 833 | 832,0.008932478,0.012490983,37.27698277,0.01589697,10.07802233,-0.139357694,-5.340229061,2.393308763,157,0.915432091 834 | 833,0.008925831,0.012497836,37.26227291,0.015900836,10.079286,-0.139385851,-5.333765863,2.38827777,156,0.914984909 835 | 834,0.008918402,0.012503313,37.2468913,0.015903651,10.08010917,-0.139069002,-5.329934107,2.383739338,155,0.914702182 836 | 835,0.008911487,0.012508742,37.23956853,0.015906599,10.0808545,-0.1389539,-5.326185016,2.379508051,154,0.914371727 837 | 836,0.008905612,0.012513872,37.23976473,0.015908447,10.08194967,-0.138982263,-5.324205425,2.375807029,153,0.914076545 838 | 837,0.008900565,0.012519035,37.24672242,0.015910496,10.0830805,-0.138932537,-5.319707849,2.372170857,152,0.913841909 839 | 838,0.008893916,0.012521233,37.25170614,0.015911273,10.08416033,-0.139001673,-5.313614446,2.367791251,151,0.913522273 840 | 839,0.008886997,0.012523132,37.25738283,0.015911377,10.08504867,-0.139027156,-5.304472619,2.363399764,150,0.913077182 841 | 840,0.008880838,0.012527599,37.25937769,0.015912147,10.08614517,-0.138959893,-5.298790611,2.358989127,149,0.912838455 842 | 841,0.0088744,0.012531701,37.25607224,0.015913003,10.08738783,-0.13888083,-5.295738408,2.355635288,148,0.912472 843 | 842,0.008868377,0.012535974,37.25989358,0.015914097,10.08841683,-0.138819877,-5.289768588,2.35192124,147,0.912160364 844 | 843,0.008862583,0.012542129,37.27252017,0.015915291,10.089313,-0.13869522,-5.28771982,2.347883266,146,0.911781182 845 | 844,0.008855864,0.012545526,37.27364981,0.015917258,10.09038267,-0.138636757,-5.283389398,2.343643919,145,0.911401909 846 | 845,0.008843945,0.012546571,37.26907745,0.015919641,10.09183633,-0.138557234,-5.277167229,2.337548901,144,0.909963091 847 | 846,0.008835805,0.01255164,37.24675988,0.015923106,10.093255,-0.138392982,-5.267699436,2.332027204,143,0.910764909 848 | 847,0.008828704,0.012559557,37.21516932,0.015926011,10.0947735,-0.138262918,-5.263169151,2.327020803,142,0.910327545 849 | 848,0.008822245,0.012567781,37.20352125,0.01592818,10.09608517,-0.138241184,-5.256361596,2.322493206,141,0.909908909 850 | 849,0.008816333,0.012575063,37.2015644,0.015930708,10.09747817,-0.138150715,-5.251223572,2.317930671,140,0.909501727 851 | 850,0.008809988,0.012579727,37.20436753,0.01593288,10.0969975,-0.138127838,-5.248138631,2.31399492,139,0.909248364 852 | 851,0.00880321,0.012584038,37.20302577,0.015934997,10.09834167,-0.138053864,-5.241750633,2.309414636,138,0.908818464 853 | 852,0.008796437,0.012588409,37.19456525,0.015937139,10.099729,-0.137982293,-5.235388734,2.305079584,137,0.908404427 854 | 853,0.008790369,0.012593435,37.18144498,0.015938314,10.10110383,-0.137925617,-5.228314334,2.300959911,136,0.908055036 855 | 854,0.008784876,0.012599988,37.17788222,0.015940627,10.10264483,-0.138149692,-5.222349983,2.296875269,135,0.9076378 856 | 855,0.008784178,0.01260851,37.17756742,0.015940942,10.103909,-0.138296577,-5.217761422,2.294745349,134,0.907177818 857 | 856,0.00877953,0.012612676,37.19878184,0.015939651,10.10505,-0.138398998,-5.213696199,2.291437937,133,0.906800027 858 | 857,0.008773071,0.012613833,37.22768044,0.01593853,10.10602817,-0.138490257,-5.206809725,2.287674395,132,0.906394127 859 | 858,0.008767143,0.01261724,37.24750359,0.015937817,10.10724983,-0.1383783,-5.20183883,2.28399271,131,0.905978518 860 | 859,0.008760132,0.01262019,37.25764916,0.015937007,10.10861467,-0.1384587,-5.196469278,2.280611208,130,0.905524927 861 | 860,0.008754033,0.012626315,37.26428741,0.015935569,10.11188583,-0.138535897,-5.191153322,2.276538025,129,0.905127473 862 | 861,0.008747329,0.012631443,37.27838115,0.01593428,10.11331567,-0.138432279,-5.183675823,2.272731058,128,0.904707155 863 | 862,0.008739297,0.012635028,37.29182421,0.015934495,10.11482333,-0.138482496,-5.176608672,2.268215338,127,0.904175691 864 | 863,0.008731258,0.012640128,37.302819,0.015935284,10.1164985,-0.138522837,-5.170043459,2.263321175,126,0.903720745 865 | 864,0.00872272,0.012644362,37.31385798,0.015935024,10.11815433,-0.138318746,-5.164774826,2.25851772,125,0.9031985 866 | 865,0.008714645,0.012649872,37.31705965,0.015937096,10.119899,-0.138178882,-5.161179839,2.253846901,124,0.902663582 867 | 866,0.008706194,0.012657223,37.32071771,0.015938697,10.1216995,-0.138184063,-5.152842907,2.248692751,123,0.902259345 868 | 867,0.008698494,0.012666464,37.31715425,0.015940954,10.1237295,-0.138111512,-5.14751899,2.243765252,122,0.901770482 869 | 868,0.008689186,0.012672648,37.31135546,0.015943926,10.12590717,-0.13806994,-5.142294397,2.238288833,121,0.901233336 870 | 869,0.008680657,0.01268099,37.31096253,0.01594713,10.12803567,-0.137930717,-5.135338716,2.232389321,120,0.900643627 871 | 870,0.008671788,0.012687557,37.31650496,0.015950166,10.13010533,-0.137804949,-5.12951243,2.226699809,119,0.900189982 872 | 871,0.008662442,0.012693369,37.31962837,0.015953167,10.13233583,-0.137678809,-5.123411245,2.220995658,118,0.8997307 873 | 872,0.008654375,0.012701987,37.32396097,0.015955731,10.134615,-0.13754904,-5.118357449,2.215787518,117,0.899284973 874 | 873,0.008645767,0.012709929,37.32763591,0.015959323,10.13703117,-0.137432321,-5.114006784,2.210818913,116,0.898689027 875 | 874,0.00863649,0.01271652,37.32954522,0.015963712,10.13955483,-0.137435793,-5.106335723,2.205583557,115,0.898137582 876 | 875,0.008626668,0.012723629,37.3395141,0.015966332,10.14214317,-0.137659769,-5.096944647,2.199866731,114,0.897547009 877 | 876,0.008615819,0.012728753,37.34281017,0.015969805,10.1448675,-0.137382173,-5.090115361,2.19416401,113,0.896956809 878 | 877,0.00860578,0.012736203,37.35481195,0.015973423,10.14763317,-0.13725502,-5.083733549,2.188502612,112,0.896412082 879 | 878,0.008598535,0.012749078,37.36384399,0.015976896,10.15051083,-0.137208801,-5.074780455,2.183352565,111,0.8960124 880 | 879,0.008588836,0.012754648,37.367276,0.015981344,10.15334133,-0.137181558,-5.066633562,2.178271769,110,0.895398155 881 | 880,0.008579901,0.012763642,37.37137744,0.015985544,10.15718017,-0.136972034,-5.057967156,2.173139841,109,0.894858136 882 | 881,0.008571476,0.012775092,37.37682927,0.015988374,10.16028333,-0.136875353,-5.05176724,2.167898684,108,0.894338545 883 | 882,0.008561724,0.012785274,37.37073879,0.01599217,10.16356433,-0.136795058,-5.045640701,2.162640571,107,0.893689609 884 | 883,0.008551003,0.012793118,37.3677768,0.015994649,10.16695333,-0.136601142,-5.035660362,2.156748436,106,0.893034609 885 | 884,0.008540363,0.012802659,37.36477529,0.015998415,10.17050517,-0.136437959,-5.028624909,2.150662923,105,0.892243927 886 | 885,0.008528872,0.012809887,37.36697986,0.016001698,10.17386733,-0.136028785,-5.018407695,2.144500425,104,0.891711227 887 | 886,0.008519103,0.012820623,37.36629838,0.016005418,10.17744117,-0.137107728,-5.011594723,2.138669721,103,0.891119891 888 | 887,0.008508088,0.012828592,37.36545936,0.01600924,10.18097417,-0.136981277,-5.000894554,2.13246763,102,0.890469818 889 | 888,0.00849444,0.012831738,37.36650972,0.016012053,10.18453267,-0.136740306,-4.992036328,2.125943795,101,0.889840773 890 | 889,0.008482931,0.012841333,37.37264294,0.016014319,10.18825883,-0.136504473,-4.98392033,2.119278781,100,0.889235573 891 | 890,0.00846947,0.012847304,37.37514777,0.016018024,10.19138717,-0.136390312,-4.974832004,2.112488156,99,0.888445755 892 | 891,0.008455218,0.012850849,37.37712755,0.016021998,10.19528683,-0.136340665,-4.965166528,2.105601718,98,0.887865855 893 | 892,0.008442263,0.01285715,37.38799061,0.016025804,10.19934433,-0.136171819,-4.953707929,2.098362437,97,0.887206036 894 | 893,0.008430713,0.012866983,37.3944504,0.016030381,10.20346567,-0.136156348,-4.945565665,2.091600917,96,0.886452736 895 | 894,0.008420027,0.012878557,37.40456394,0.016032904,10.207539,-0.136044596,-4.936907525,2.085385599,95,0.885962955 896 | 895,0.008409591,0.01289101,37.40022657,0.016037274,10.21213683,-0.135925054,-4.930499554,2.07917409,94,0.885260864 897 | 896,0.008397072,0.012898898,37.40208617,0.01604171,10.216742,-0.134638749,-4.922665079,2.072820947,93,0.884736509 898 | 897,0.00838394,0.012906699,37.39386931,0.016046725,10.22181983,-0.134519429,-4.915477555,2.06658403,92,0.884000709 899 | 898,0.008373189,0.012920296,37.39218382,0.016052346,10.22690967,-0.134466556,-4.907213678,2.060291102,91,0.883223364 900 | 899,0.008361434,0.01293132,37.39619878,0.016058073,10.23206317,-0.134406992,-4.901431352,2.054187332,90,0.882598809 901 | 900,0.008350507,0.012944608,37.39516336,0.016064022,10.23740633,-0.134284873,-4.892623695,2.048018257,89,0.881837773 902 | 901,0.008340422,0.012960306,37.39714125,0.016070134,10.24288567,-0.134131858,-4.886705169,2.041854796,88,0.881067409 903 | 902,0.008329003,0.012971351,37.40094177,0.016073732,10.24826767,-0.133944003,-4.877705472,2.035862868,87,0.880499755 904 | 903,0.008317941,0.012983072,37.40247456,0.016079259,10.2540035,-0.133770696,-4.869591009,2.030163983,86,0.879733618 905 | 904,0.008307597,0.012996186,37.4052089,0.016083559,10.25985617,-0.133691554,-4.860040762,2.024210525,85,0.879061873 906 | 905,0.00829745,0.013010009,37.4149824,0.016088256,10.26566433,-0.133559821,-4.850469735,2.018371358,84,0.878398909 907 | 906,0.008287361,0.013023792,37.41851594,0.016092673,10.2718285,-0.133507423,-4.841551585,2.012657101,83,0.877789364 908 | 907,0.008278172,0.013039537,37.42378727,0.016097018,10.27799817,-0.133314519,-4.832990122,2.006853954,82,0.877111664 909 | 908,0.008268794,0.013055459,37.41862457,0.016102287,10.28468083,-0.133892313,-4.825925081,2.001159223,81,0.876421491 910 | 909,0.008258587,0.013071296,37.40901714,0.01610729,10.29152417,-0.133787437,-4.81687809,1.995183265,80,0.875617155 911 | 910,0.008248715,0.013088413,37.40585928,0.016111246,10.29842533,-0.133685469,-4.809354462,1.989102677,79,0.874896373 912 | 911,0.00823871,0.013104682,37.39851162,0.016117229,10.30566683,-0.133630483,-4.7996032,1.983415329,78,0.874242291 913 | 912,0.008229649,0.013122697,37.38914277,0.016123797,10.31318983,-0.134192592,-4.792113223,1.977792807,77,0.873409018 914 | 913,0.008219601,0.013138061,37.39301037,0.016127079,10.32004433,-0.135141889,-4.783950686,1.972051428,76,0.872635191 915 | 914,0.00820877,0.0131507,37.40143602,0.016132006,10.32703,-0.135631504,-4.777489448,1.966287545,75,0.871855182 916 | 915,0.008198095,0.01316716,37.41847288,0.016135014,10.33423883,-0.135593527,-4.770049221,1.9601058,74,0.870110827 917 | 916,0.008188218,0.013182376,37.4348012,0.016139074,10.341589,-0.135513036,-4.761692003,1.954613055,73,0.8704658 918 | 917,0.008177975,0.013194959,37.46569511,0.016142073,10.34894833,-0.135520468,-4.753917715,1.949337533,72,0.869592482 919 | 918,0.008168186,0.013208838,37.49447572,0.016143643,10.35617733,-0.134787589,-4.745829109,1.944078476,71,0.868891373 920 | 919,0.008159077,0.013224939,37.51067997,0.016145871,10.36380917,-0.134754047,-4.736318278,1.938526273,70,0.868174273 921 | 920,0.008147195,0.013236529,37.5248776,0.016149694,10.3720015,-0.13464387,-4.729266309,1.933002148,69,0.867401736 922 | 921,0.00813624,0.013251894,37.54606387,0.016153758,10.38047683,-0.134535808,-4.720185591,1.926938125,68,0.866610791 923 | 922,0.008125303,0.013268303,37.56603873,0.016158185,10.389279,-0.133871364,-4.713224404,1.920639159,67,0.865770309 924 | 923,0.008112318,0.013280938,37.57713854,0.016163826,10.398841,-0.132791737,-4.704185498,1.914309732,66,0.865033645 925 | 924,0.008100078,0.013297384,37.58333934,0.016170743,10.40878783,-0.132015146,-4.695409194,1.907918459,65,0.864238464 926 | 925,0.008087189,0.013309763,37.57964143,0.016178026,10.4192465,-0.131823182,-4.687081764,1.901792615,64,0.863382 927 | 926,0.008074114,0.013325186,37.5777621,0.016184277,10.429738,-0.131733409,-4.675954127,1.894872383,63,0.862613918 928 | 927,0.00806135,0.013342945,37.56813979,0.016192212,10.44057433,-0.131595902,-4.667983198,1.887939128,62,0.861778418 929 | 928,0.008045747,0.013354725,37.56854023,0.016201128,10.45198217,-0.131472698,-4.658613866,1.880747587,61,0.860822691 930 | 929,0.008031911,0.013370047,37.58044951,0.016209022,10.46338917,-0.13133339,-4.650921525,1.873739711,60,0.860002527 931 | 930,0.008020956,0.013391138,37.59051364,0.016216326,10.474854,-0.131259562,-4.640753369,1.866987158,59,0.8591485 932 | 931,0.008007393,0.013405689,37.59756497,0.016222934,10.48651,-0.131157463,-4.633269925,1.860203411,58,0.858296427 933 | 932,0.007993186,0.013418775,37.60628287,0.016230759,10.49860767,-0.13100002,-4.621877304,1.853512201,57,0.857458064 934 | 933,0.007981123,0.013438696,37.61117217,0.016238531,10.51128783,-0.130878328,-4.613273623,1.846647475,56,0.856614818 935 | 934,0.007968407,0.013456544,37.61781792,0.016246667,10.5241845,-0.13079987,-4.602520928,1.839887635,55,0.855745127 936 | 935,0.007955743,0.013475113,37.62351331,0.016255582,10.53750083,-0.130741099,-4.594256805,1.833093308,54,0.854717218 937 | 936,0.007943456,0.013496357,37.63414846,0.01626406,10.5512515,-0.130613084,-4.586334316,1.826030654,53,0.853810964 938 | 937,0.007930321,0.013514726,37.64567203,0.016271098,10.56541333,-0.130576984,-4.574991052,1.819001563,52,0.852932709 939 | 938,0.007919056,0.01353835,37.65729314,0.016279142,10.579682,-0.1304434,-4.566567602,1.812033999,51,0.851999036 940 | 939,0.007906941,0.013560236,37.66627109,0.016287697,10.5946985,-0.131418032,-4.557544815,1.804965197,50,0.851028345 941 | 940,0.007893126,0.013577708,37.67654552,0.016297129,10.61024433,-0.132228641,-4.549462468,1.797850842,49,0.8501385 942 | 941,0.007881605,0.013600958,37.67996498,0.016305679,10.62631333,-0.132136382,-4.541445549,1.790735299,48,0.849199782 943 | 942,0.007867739,0.013619909,37.68578079,0.01631612,10.6429505,-0.132018552,-4.533216341,1.783594586,47,0.848286964 944 | 943,0.007855507,0.013641739,37.69518514,0.016325428,10.659932,-0.131867721,-4.524617129,1.776961144,46,0.8474111 945 | 944,0.007842448,0.013661563,37.69900037,0.016333994,10.6775135,-0.131750169,-4.51702523,1.770196662,45,0.846504245 946 | 945,0.007831171,0.013685861,37.7061113,0.016343633,10.69529383,-0.131531548,-4.506942337,1.763659363,44,0.845704082 947 | 946,0.007818309,0.013706237,37.71175803,0.016354221,10.7139585,-0.131342007,-4.499442797,1.757285787,43,0.844734527 948 | 947,0.007806333,0.013730205,37.71820772,0.016364941,10.73307683,-0.131104557,-4.492974436,1.750501226,42,0.843683155 949 | 948,0.007792995,0.01374976,37.72660263,0.016375227,10.75296433,-0.131048975,-4.485464262,1.743509153,41,0.842397536 950 | 949,0.007777206,0.013763909,37.74044337,0.016385177,10.7729005,-0.129847934,-4.476382848,1.736474179,40,0.841500973 951 | 950,0.007763292,0.013782966,37.75189746,0.016395416,10.79327883,-0.12870494,-4.465448322,1.729324727,39,0.840677345 952 | 951,0.007750641,0.013804731,37.76268633,0.016406997,10.814737,-0.128473394,-4.454902315,1.722522294,38,0.839854155 953 | 952,0.007739599,0.013831688,37.77012898,0.016418649,10.84100267,-0.128383139,-4.446850445,1.715642597,37,0.838888936 954 | 953,0.007725618,0.013852319,37.77974844,0.016431393,10.86425017,-0.128276516,-4.437158325,1.708464745,36,0.837808627 955 | 954,0.007714029,0.013879694,37.79581727,0.016444395,10.88818733,-0.128094628,-4.426151796,1.701064474,35,0.836728273 956 | 955,0.007699676,0.013900244,37.81294486,0.016456754,10.913248,-0.12945143,-4.416977864,1.693504316,34,0.835784509 957 | 956,0.007687713,0.013926325,37.81201061,0.016470224,10.93903367,-0.131379614,-4.4064944,1.685800565,33,0.834926582 958 | 957,0.007675416,0.013952727,37.79545388,0.016485833,10.96638567,-0.13124587,-4.396248822,1.678587047,32,0.834003527 959 | 958,0.007662162,0.013976392,37.78074053,0.016501585,10.99463067,-0.13095084,-4.385991282,1.671781775,31,0.833037982 960 | 959,0.007651371,0.014006392,37.77793379,0.016517943,11.02423683,-0.130803654,-4.374812782,1.665134674,30,0.832057732 961 | 960,0.007639631,0.014033946,37.77675636,0.016533154,11.05517033,-0.130647281,-4.366517831,1.658602659,29,0.831041511 962 | 961,0.007627126,0.014060316,37.77723,0.016550932,11.08741617,-0.130535662,-4.359534971,1.652005822,28,0.830033183 963 | 962,0.007615547,0.014088284,37.78369351,0.016567277,11.11663967,-0.130384075,-4.349516819,1.645444087,27,0.829082664 964 | 963,0.007606232,0.014120872,37.7868754,0.01658572,11.1513295,-0.130206573,-4.342150406,1.639145712,26,0.828036364 965 | 964,0.007593232,0.014143832,37.78819431,0.016604496,11.18782617,-0.130183957,-4.334221332,1.633140109,25,0.827002837 966 | 965,0.007583328,0.014175925,37.78915974,0.016623635,11.22529617,-0.128525012,-4.324838855,1.626882724,24,0.825961796 967 | 966,0.007572019,0.014205773,37.80929976,0.016643211,11.264899,-0.12638447,-4.318622323,1.620931853,23,0.824939211 968 | 967,0.007560745,0.014234961,37.84379319,0.016663562,11.3061195,-0.126229056,-4.309870474,1.614678842,22,0.823911392 969 | 968,0.007550476,0.014267862,37.87298798,0.016685042,11.34956967,-0.128557138,-4.301288635,1.607951751,21,0.82288456 970 | 969,0.00753954,0.014299716,37.88522862,0.016707808,11.39568683,-0.128337414,-4.295371325,1.601484738,20,0.821839739 971 | 970,0.007528125,0.014331628,37.89742258,0.016732028,11.444439,-0.128159729,-4.287898248,1.594901521,19,0.820797333 972 | 971,0.007515861,0.014361456,37.91295277,0.016756236,11.49589933,-0.127022324,-4.278107989,1.588313531,18,0.819773094 973 | 972,0.00750284,0.014389953,37.92621623,0.016781438,11.55078717,-0.126790341,-4.269238196,1.581728153,17,0.818727242 974 | 973,0.007490495,0.014420847,37.93975521,0.016808095,11.60891783,-0.126655871,-4.260494486,1.575123058,16,0.817740294 975 | 974,0.00747965,0.014457439,37.95320074,0.016836949,11.6707005,-0.126411508,-4.254106616,1.568316524,15,0.816678056 976 | 975,0.007467137,0.014488852,37.96038569,0.016868926,11.73798483,-0.126279194,-4.246554364,1.561823905,14,0.815642033 977 | 976,0.007453753,0.014519263,37.96623229,0.016902281,11.80969517,-0.125966972,-4.237666831,1.555010559,13,0.814585084 978 | 977,0.007440612,0.014550498,37.96701687,0.016937221,11.8874165,-0.125802226,-4.229228361,1.548373953,12,0.813556174 979 | 978,0.007428037,0.014583964,37.97090357,0.016974248,11.970964,-0.123249759,-4.222848127,1.542286296,11,0.812496096 980 | 979,0.007417172,0.014620829,37.97218481,0.017014366,12.06195233,-0.123061634,-4.213456233,1.536099463,10,0.811398916 981 | 980,0.007405863,0.014655568,37.97648532,0.017059002,12.161097,-0.122999814,-4.204509019,1.529977745,9,0.810261272 982 | 981,0.007396251,0.01469644,37.98119474,0.017105957,12.26981133,-0.123821899,-4.195994419,1.523696202,8,0.809137259 983 | 982,0.007384729,0.014733998,37.98556561,0.017157358,12.390398,-0.123671099,-4.189748828,1.517175921,7,0.808009766 984 | 983,0.007371208,0.014766764,37.98823863,0.017214178,12.52742483,-0.123468602,-4.181715192,1.510394556,6,0.806894187 985 | 984,0.007359331,0.01480346,37.98477387,0.017276621,12.6842365,-0.123276103,-4.173112662,1.503822705,5,0.805810526 986 | 985,0.007347019,0.014841193,37.98353217,0.01734554,12.8651495,-0.123115064,-4.164709297,1.497292751,4,0.804781399 987 | 986,0.007337885,0.014886806,37.97809528,0.017422561,13.07707233,-0.122888288,-4.157281192,1.491323752,3,0.803656645 988 | 987,0.007328193,0.014931879,37.97023398,0.017509058,13.32906217,-0.12344766,-4.151455682,1.485488305,2,0.802587495 989 | 988,0.007319883,0.014981364,37.96141248,0.017609291,13.64394717,-0.123088189,-4.145542589,1.479884748,1,0.802587495 990 | -------------------------------------------------------------------------------- /data/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zshicode/MambaLithium/8f83b38b3f1fba02ce2e1be34950c898189eea77/data/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /data/__pycache__/__init__.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zshicode/MambaLithium/8f83b38b3f1fba02ce2e1be34950c898189eea77/data/__pycache__/__init__.cpython-39.pyc -------------------------------------------------------------------------------- /data/__pycache__/data_loader.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zshicode/MambaLithium/8f83b38b3f1fba02ce2e1be34950c898189eea77/data/__pycache__/data_loader.cpython-37.pyc -------------------------------------------------------------------------------- /data/__pycache__/data_loader.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zshicode/MambaLithium/8f83b38b3f1fba02ce2e1be34950c898189eea77/data/__pycache__/data_loader.cpython-39.pyc -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | import matplotlib.pyplot as plt 4 | from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score 5 | from sklearn.preprocessing import scale 6 | import torch 7 | import torch.nn as nn 8 | import torch.nn.functional as F 9 | from mamba import Mamba, MambaConfig 10 | import os 11 | import argparse 12 | 13 | parser = argparse.ArgumentParser() 14 | parser.add_argument('--use-cuda', default=False, 15 | help='CUDA training.') 16 | parser.add_argument('--seed', type=int, default=1, help='Random seed.') 17 | parser.add_argument('--epochs', type=int, default=100, 18 | help='Number of epochs to train.') 19 | parser.add_argument('--lr', type=float, default=0.01, 20 | help='Learning rate.') 21 | parser.add_argument('--wd', type=float, default=1e-5, 22 | help='Weight decay (L2 loss on parameters).') 23 | parser.add_argument('--hidden', type=int, default=16, 24 | help='Dimension of representations') 25 | parser.add_argument('--layer', type=int, default=2, 26 | help='Num of layers') 27 | parser.add_argument('--task', type=str, default='SOH', 28 | help='RUL or SOH') 29 | parser.add_argument('--case', type=str, default='A', 30 | help='A or B') 31 | 32 | args = parser.parse_args() 33 | args.cuda = args.use_cuda and torch.cuda.is_available() 34 | 35 | def evaluation_metric(y_test,y_hat): 36 | MSE = mean_squared_error(y_test, y_hat) 37 | RMSE = MSE**0.5 38 | MAE = mean_absolute_error(y_test,y_hat) 39 | R2 = r2_score(y_test,y_hat) 40 | print('%.4f %.4f %.4f %.4f' % (MSE,RMSE,MAE,R2)) 41 | 42 | def set_seed(seed,cuda): 43 | np.random.seed(seed) 44 | torch.manual_seed(seed) 45 | if cuda: 46 | torch.cuda.manual_seed(seed) 47 | 48 | set_seed(args.seed,args.cuda) 49 | 50 | class Net(nn.Module): 51 | def __init__(self,in_dim,out_dim): 52 | super().__init__() 53 | self.config = MambaConfig(d_model=args.hidden, n_layers=args.layer) 54 | self.mamba = nn.Sequential( 55 | nn.Linear(in_dim,args.hidden), 56 | Mamba(self.config), 57 | nn.Linear(args.hidden,out_dim), 58 | nn.Sigmoid() 59 | ) 60 | 61 | def forward(self,x): 62 | x = self.mamba(x) 63 | return x.flatten() 64 | 65 | def PredictWithData(trainX, trainy, testX): 66 | clf = Net(len(trainX[0]),1) 67 | opt = torch.optim.Adam(clf.parameters(),lr=args.lr,weight_decay=args.wd) 68 | xt = torch.from_numpy(trainX).float().unsqueeze(0) 69 | xv = torch.from_numpy(testX).float().unsqueeze(0) 70 | yt = torch.from_numpy(trainy).float() 71 | if args.cuda: 72 | clf = clf.cuda() 73 | xt = xt.cuda() 74 | xv = xv.cuda() 75 | yt = yt.cuda() 76 | 77 | for e in range(args.epochs): 78 | clf.train() 79 | z = clf(xt) 80 | loss = F.l1_loss(z,yt) 81 | opt.zero_grad() 82 | loss.backward() 83 | opt.step() 84 | if e%10 == 0 and e!=0: 85 | print('Epoch %d | Lossp: %.4f' % (e, loss.item())) 86 | 87 | clf.eval() 88 | mat = clf(xv) 89 | if args.cuda: mat = mat.cpu() 90 | yhat = mat.detach().numpy().flatten() 91 | return yhat 92 | 93 | def ReadData(path,csv,task): 94 | f = os.path.join(path,csv) 95 | data = pd.read_csv(f) 96 | tf = len(data) 97 | y = data[task] 98 | y = y.values 99 | if args.task == 'RUL': y = y/tf 100 | x = data.drop(['RUL','SOH'],axis=1).values 101 | x = scale(x) 102 | return x,y 103 | 104 | path = './data/Case'+args.case 105 | if args.case == 'A': 106 | xt1, yt1 = ReadData(path,'91.csv',args.task) 107 | xt2, yt2 = ReadData(path,'100.csv',args.task) 108 | trainX = np.vstack((xt1,xt2)) 109 | trainy = np.hstack((yt1,yt2)) 110 | testX,testy = ReadData(path,'124.csv',args.task) 111 | else: 112 | xt1, yt1 = ReadData(path,'101.csv',args.task) 113 | xt2, yt2 = ReadData(path,'108.csv',args.task) 114 | xt3, yt3 = ReadData(path,'120.csv',args.task) 115 | trainX = np.vstack((xt1,xt2,xt3)) 116 | trainy = np.hstack((yt1,yt2,yt3)) 117 | testX,testy = ReadData(path,'116.csv',args.task) 118 | 119 | predictions = PredictWithData(trainX, trainy, testX) 120 | tf = len(testy) 121 | if args.task == 'RUL': 122 | testy = tf*testy 123 | predictions = tf*predictions 124 | 125 | print('MSE RMSE MAE R2') 126 | evaluation_metric(testy, predictions) 127 | plt.figure() 128 | plt.plot(testy, label='True') 129 | plt.plot(predictions, label='Estimation') 130 | plt.title(args.task+' Estimation') 131 | plt.xlabel('Cycle') 132 | plt.ylabel(args.task+' value') 133 | plt.legend() 134 | plt.show() -------------------------------------------------------------------------------- /mamba.py: -------------------------------------------------------------------------------- 1 | import math 2 | from dataclasses import dataclass 3 | from typing import Union 4 | 5 | import torch 6 | import torch.nn as nn 7 | import torch.nn.functional as F 8 | 9 | from pscan import pscan 10 | 11 | """ 12 | 13 | This file closely follows the mamba_simple.py from the official Mamba implementation, and the mamba-minimal by @johnma2006. 14 | The major differences are : 15 | -the convolution is done with torch.nn.Conv1d 16 | -the selective scan is done in PyTorch 17 | 18 | A sequential version of the selective scan is also available for comparison. 19 | 20 | - A Mamba model is composed of several layers, which are ResidualBlock. 21 | - A ResidualBlock is composed of a MambaBlock, a normalization, and a residual connection : ResidualBlock(x) = mamba(norm(x)) + x 22 | - This leaves us with the MambaBlock : its input x is (B, L, D) and its outputs y is also (B, L, D) (B=batch size, L=seq len, D=model dim). 23 | First, we expand x into (B, L, 2*ED) (where E is usually 2) and split it into x and z, each (B, L, ED). 24 | Then, we apply the short 1d conv to x, followed by an activation function (silu), then the SSM. 25 | We then multiply it by silu(z). 26 | See Figure 3 of the paper (page 8) for a visual representation of a MambaBlock. 27 | 28 | """ 29 | 30 | @dataclass 31 | class MambaConfig: 32 | d_model: int # D 33 | n_layers: int 34 | dt_rank: Union[int, str] = 'auto' 35 | d_state: int = 16 # N in paper/comments 36 | expand_factor: int = 2 # E in paper/comments 37 | d_conv: int = 4 38 | 39 | dt_min: float = 0.001 40 | dt_max: float = 0.1 41 | dt_init: str = "random" # "random" or "constant" 42 | dt_scale: float = 1.0 43 | dt_init_floor = 1e-4 44 | 45 | bias: bool = False 46 | conv_bias: bool = True 47 | 48 | pscan: bool = True # use parallel scan mode or sequential mode when training 49 | 50 | def __post_init__(self): 51 | self.d_inner = self.expand_factor * self.d_model # E*D = ED in comments 52 | 53 | if self.dt_rank == 'auto': 54 | self.dt_rank = math.ceil(self.d_model / 16) 55 | 56 | class Mamba(nn.Module): 57 | def __init__(self, config: MambaConfig): 58 | super().__init__() 59 | 60 | self.config = config 61 | 62 | self.layers = nn.ModuleList([ResidualBlock(config) for _ in range(config.n_layers)]) 63 | self.norm_f = RMSNorm(config.d_model) 64 | 65 | def forward(self, x): 66 | # x : (B, L, D) 67 | 68 | # y : (B, L, D) 69 | 70 | for layer in self.layers: 71 | x = layer(x) 72 | 73 | x = self.norm_f(x) 74 | 75 | return x 76 | 77 | def step(self, x, caches): 78 | # x : (B, L, D) 79 | # caches : [cache(layer) for all layers], cache : (h, inputs) 80 | 81 | # y : (B, L, D) 82 | # caches : [cache(layer) for all layers], cache : (h, inputs) 83 | 84 | for i, layer in enumerate(self.layers): 85 | x, caches[i] = layer.step(x, caches[i]) 86 | 87 | return x, caches 88 | 89 | class ResidualBlock(nn.Module): 90 | def __init__(self, config: MambaConfig): 91 | super().__init__() 92 | 93 | self.mixer = MambaBlock(config) 94 | self.norm = RMSNorm(config.d_model) 95 | 96 | def forward(self, x): 97 | # x : (B, L, D) 98 | 99 | # output : (B, L, D) 100 | 101 | output = self.mixer(self.norm(x)) + x 102 | return output 103 | 104 | def step(self, x, cache): 105 | # x : (B, D) 106 | # cache : (h, inputs) 107 | # h : (B, ED, N) 108 | # inputs: (B, ED, d_conv-1) 109 | 110 | # output : (B, D) 111 | # cache : (h, inputs) 112 | 113 | output, cache = self.mixer.step(self.norm(x), cache) 114 | output = output + x 115 | return output, cache 116 | 117 | class MambaBlock(nn.Module): 118 | def __init__(self, config: MambaConfig): 119 | super().__init__() 120 | 121 | self.config = config 122 | 123 | # projects block input from D to 2*ED (two branches) 124 | self.in_proj = nn.Linear(config.d_model, 2 * config.d_inner, bias=config.bias) 125 | 126 | self.conv1d = nn.Conv1d(in_channels=config.d_inner, out_channels=config.d_inner, 127 | kernel_size=config.d_conv, bias=config.conv_bias, 128 | groups=config.d_inner, 129 | padding=config.d_conv - 1) 130 | 131 | # projects x to input-dependent Δ, B, C 132 | self.x_proj = nn.Linear(config.d_inner, config.dt_rank + 2 * config.d_state, bias=False) 133 | 134 | # projects Δ from dt_rank to d_inner 135 | self.dt_proj = nn.Linear(config.dt_rank, config.d_inner, bias=True) 136 | 137 | # dt initialization 138 | # dt weights 139 | dt_init_std = config.dt_rank**-0.5 * config.dt_scale 140 | if config.dt_init == "constant": 141 | nn.init.constant_(self.dt_proj.weight, dt_init_std) 142 | elif config.dt_init == "random": 143 | nn.init.uniform_(self.dt_proj.weight, -dt_init_std, dt_init_std) 144 | else: 145 | raise NotImplementedError 146 | 147 | # dt bias 148 | dt = torch.exp( 149 | torch.rand(config.d_inner) * (math.log(config.dt_max) - math.log(config.dt_min)) + math.log(config.dt_min) 150 | ).clamp(min=config.dt_init_floor) 151 | inv_dt = dt + torch.log(-torch.expm1(-dt)) # inverse of softplus: https://github.com/pytorch/pytorch/issues/72759 152 | with torch.no_grad(): 153 | self.dt_proj.bias.copy_(inv_dt) 154 | #self.dt_proj.bias._no_reinit = True # initialization would set all Linear.bias to zero, need to mark this one as _no_reinit 155 | # todo : explain why removed 156 | 157 | # S4D real initialization 158 | A = torch.arange(1, config.d_state + 1, dtype=torch.float32).repeat(config.d_inner, 1) 159 | self.A_log = nn.Parameter(torch.log(A)) # why store A in log ? to keep A < 0 (cf -torch.exp(...)) ? for gradient stability ? 160 | self.D = nn.Parameter(torch.ones(config.d_inner)) 161 | 162 | # projects block output from ED back to D 163 | self.out_proj = nn.Linear(config.d_inner, config.d_model, bias=config.bias) 164 | 165 | def forward(self, x): 166 | # x : (B, L, D) 167 | 168 | # y : (B, L, D) 169 | 170 | _, L, _ = x.shape 171 | 172 | xz = self.in_proj(x) # (B, L, 2*ED) 173 | x, z = xz.chunk(2, dim=-1) # (B, L, ED), (B, L, ED) 174 | 175 | # x branch 176 | x = x.transpose(1, 2) # (B, ED, L) 177 | x = self.conv1d(x)[:, :, :L] # depthwise convolution over time, with a short filter 178 | x = x.transpose(1, 2) # (B, L, ED) 179 | 180 | x = F.silu(x) 181 | y = self.ssm(x) 182 | 183 | # z branch 184 | z = F.silu(z) 185 | 186 | output = y * z 187 | output = self.out_proj(output) # (B, L, D) 188 | 189 | return output 190 | 191 | def ssm(self, x): 192 | # x : (B, L, ED) 193 | 194 | # y : (B, L, ED) 195 | 196 | A = -torch.exp(self.A_log.float()) # (ED, N) 197 | D = self.D.float() 198 | # TODO remove .float() 199 | 200 | deltaBC = self.x_proj(x) # (B, L, dt_rank+2*N) 201 | 202 | delta, B, C = torch.split(deltaBC, [self.config.dt_rank, self.config.d_state, self.config.d_state], dim=-1) # (B, L, dt_rank), (B, L, N), (B, L, N) 203 | delta = F.softplus(self.dt_proj(delta)) # (B, L, ED) 204 | 205 | if self.config.pscan: 206 | y = self.selective_scan(x, delta, A, B, C, D) 207 | else: 208 | y = self.selective_scan_seq(x, delta, A, B, C, D) 209 | 210 | return y 211 | 212 | def selective_scan(self, x, delta, A, B, C, D): 213 | # x : (B, L, ED) 214 | # Δ : (B, L, ED) 215 | # A : (ED, N) 216 | # B : (B, L, N) 217 | # C : (B, L, N) 218 | # D : (ED) 219 | 220 | # y : (B, L, ED) 221 | 222 | deltaA = torch.exp(delta.unsqueeze(-1) * A) # (B, L, ED, N) 223 | deltaB = delta.unsqueeze(-1) * B.unsqueeze(2) # (B, L, ED, N) 224 | 225 | BX = deltaB * (x.unsqueeze(-1)) # (B, L, ED, N) 226 | 227 | hs = pscan(deltaA, BX) 228 | 229 | y = (hs @ C.unsqueeze(-1)).squeeze(3) # (B, L, ED, N) @ (B, L, N, 1) -> (B, L, ED, 1) 230 | 231 | y = y + D * x 232 | 233 | return y 234 | 235 | def selective_scan_seq(self, x, delta, A, B, C, D): 236 | # x : (B, L, ED) 237 | # Δ : (B, L, ED) 238 | # A : (ED, N) 239 | # B : (B, L, N) 240 | # C : (B, L, N) 241 | # D : (ED) 242 | 243 | # y : (B, L, ED) 244 | 245 | _, L, _ = x.shape 246 | 247 | deltaA = torch.exp(delta.unsqueeze(-1) * A) # (B, L, ED, N) 248 | deltaB = delta.unsqueeze(-1) * B.unsqueeze(2) # (B, L, ED, N) 249 | 250 | BX = deltaB * (x.unsqueeze(-1)) # (B, L, ED, N) 251 | 252 | h = torch.zeros(x.size(0), self.config.d_inner, self.config.d_state, device=deltaA.device) # (B, ED, N) 253 | hs = [] 254 | 255 | for t in range(0, L): 256 | h = deltaA[:, t] * h + BX[:, t] 257 | hs.append(h) 258 | 259 | hs = torch.stack(hs, dim=1) # (B, L, ED, N) 260 | 261 | y = (hs @ C.unsqueeze(-1)).squeeze(3) # (B, L, ED, N) @ (B, L, N, 1) -> (B, L, ED, 1) 262 | 263 | y = y + D * x 264 | 265 | return y 266 | 267 | # -------------------------- inference -------------------------- # 268 | """ 269 | Concerning auto-regressive inference 270 | 271 | The cool part of using Mamba : inference is constant wrt to sequence length 272 | We just have to keep in cache, for each layer, two things : 273 | - the hidden state h (which is (B, ED, N)), as you typically would when doing inference with a RNN 274 | - the last d_conv-1 inputs of the layer, to be able to compute the 1D conv which is a convolution over the time dimension 275 | (d_conv is fixed so this doesn't incur a growing cache as we progress on generating the sequence) 276 | (and d_conv is usually very small, like 4, so we just have to "remember" the last 3 inputs) 277 | 278 | Concretely, these two quantities are put inside a cache tuple, and are named h and inputs respectively. 279 | h is (B, ED, N), and inputs is (B, ED, d_conv-1) 280 | The MambaBlock.step() receives this cache, and, along with outputing the output, alos outputs the updated cache for the next call. 281 | 282 | The cache object is initialized as follows : (None, torch.zeros()). 283 | When h is None, the selective scan function detects it and start with h=0. 284 | The torch.zeros() isn't a problem (it's same as just feeding the input, because the conv1d is padded) 285 | 286 | As we need one such cache variable per layer, we store a caches object, which is simply a list of cache object. (See mamba_lm.py) 287 | """ 288 | 289 | def step(self, x, cache): 290 | # x : (B, D) 291 | # cache : (h, inputs) 292 | # h : (B, ED, N) 293 | # inputs : (B, ED, d_conv-1) 294 | 295 | # y : (B, D) 296 | # cache : (h, inputs) 297 | 298 | h, inputs = cache 299 | 300 | xz = self.in_proj(x) # (B, 2*ED) 301 | x, z = xz.chunk(2, dim=1) # (B, ED), (B, ED) 302 | 303 | # x branch 304 | x_cache = x.unsqueeze(2) 305 | x = self.conv1d(torch.cat([inputs, x_cache], dim=2))[:, :, self.config.d_conv-1] # (B, ED) 306 | 307 | x = F.silu(x) 308 | y, h = self.ssm_step(x, h) 309 | 310 | # z branch 311 | z = F.silu(z) 312 | 313 | output = y * z 314 | output = self.out_proj(output) # (B, D) 315 | 316 | # prepare cache for next call 317 | inputs = torch.cat([inputs[:, :, 1:], x_cache], dim=2) # (B, ED, d_conv-1) 318 | cache = (h, inputs) 319 | 320 | return output, cache 321 | 322 | def ssm_step(self, x, h): 323 | # x : (B, ED) 324 | # h : (B, ED, N) 325 | 326 | # y : (B, ED) 327 | # h : (B, ED, N) 328 | 329 | A = -torch.exp(self.A_log.float()) # (ED, N) # todo : ne pas le faire tout le temps, puisque c'est indépendant de la timestep 330 | D = self.D.float() 331 | # TODO remove .float() 332 | 333 | deltaBC = self.x_proj(x) # (B, dt_rank+2*N) 334 | 335 | delta, B, C = torch.split(deltaBC, [self.config.dt_rank, self.config.d_state, self.config.d_state], dim=-1) # (B, dt_rank), (B, N), (B, N) 336 | delta = F.softplus(self.dt_proj(delta)) # (B, ED) 337 | 338 | deltaA = torch.exp(delta.unsqueeze(-1) * A) # (B, ED, N) 339 | deltaB = delta.unsqueeze(-1) * B.unsqueeze(1) # (B, ED, N) 340 | 341 | BX = deltaB * (x.unsqueeze(-1)) # (B, ED, N) 342 | 343 | if h is None: 344 | h = torch.zeros(x.size(0), self.config.d_inner, self.config.d_state, device=deltaA.device) # (B, ED, N) 345 | 346 | h = deltaA * h + BX # (B, ED, N) 347 | 348 | y = (h @ C.unsqueeze(-1)).squeeze(2) # (B, ED, N) @ (B, N, 1) -> (B, ED, 1) 349 | 350 | y = y + D * x 351 | 352 | # todo : pq h.squeeze(1) ?? 353 | return y, h.squeeze(1) 354 | 355 | # taken straight from https://github.com/johnma2006/mamba-minimal/blob/master/model.py 356 | class RMSNorm(nn.Module): 357 | def __init__(self, d_model: int, eps: float = 1e-5): 358 | super().__init__() 359 | 360 | self.eps = eps 361 | self.weight = nn.Parameter(torch.ones(d_model)) 362 | 363 | def forward(self, x): 364 | output = x * torch.rsqrt(x.pow(2).mean(-1, keepdim=True) + self.eps) * self.weight 365 | 366 | return output -------------------------------------------------------------------------------- /pscan.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | import torch 4 | import torch.nn.functional as F 5 | 6 | """ 7 | 8 | An implementation of the parallel scan operation in PyTorch (Blelloch version). 9 | Please see docs/pscan.ipynb for a detailed explanation of what happens here. 10 | 11 | """ 12 | 13 | def npo2(len): 14 | """ 15 | Returns the next power of 2 above len 16 | """ 17 | 18 | return 2 ** math.ceil(math.log2(len)) 19 | 20 | def pad_npo2(X): 21 | """ 22 | Pads input length dim to the next power of 2 23 | 24 | Args: 25 | X : (B, L, D, N) 26 | 27 | Returns: 28 | Y : (B, npo2(L), D, N) 29 | """ 30 | 31 | len_npo2 = npo2(X.size(1)) 32 | pad_tuple = (0, 0, 0, 0, 0, len_npo2 - X.size(1)) 33 | return F.pad(X, pad_tuple, "constant", 0) 34 | 35 | class PScan(torch.autograd.Function): 36 | @staticmethod 37 | def pscan(A, X): 38 | # A : (B, D, L, N) 39 | # X : (B, D, L, N) 40 | 41 | # modifies X in place by doing a parallel scan. 42 | # more formally, X will be populated by these values : 43 | # H[t] = A[t] * H[t-1] + X[t] with H[0] = 0 44 | # which are computed in parallel (2*log2(T) sequential steps (ideally), instead of T sequential steps) 45 | 46 | # only supports L that is a power of two (mainly for a clearer code) 47 | 48 | B, D, L, _ = A.size() 49 | num_steps = int(math.log2(L)) 50 | 51 | # up sweep (last 2 steps unfolded) 52 | Aa = A 53 | Xa = X 54 | for _ in range(num_steps-2): 55 | T = Xa.size(2) 56 | Aa = Aa.view(B, D, T//2, 2, -1) 57 | Xa = Xa.view(B, D, T//2, 2, -1) 58 | 59 | Xa[:, :, :, 1].add_(Aa[:, :, :, 1].mul(Xa[:, :, :, 0])) 60 | Aa[:, :, :, 1].mul_(Aa[:, :, :, 0]) 61 | 62 | Aa = Aa[:, :, :, 1] 63 | Xa = Xa[:, :, :, 1] 64 | 65 | # we have only 4, 2 or 1 nodes left 66 | if Xa.size(2) == 4: 67 | Xa[:, :, 1].add_(Aa[:, :, 1].mul(Xa[:, :, 0])) 68 | Aa[:, :, 1].mul_(Aa[:, :, 0]) 69 | 70 | Xa[:, :, 3].add_(Aa[:, :, 3].mul(Xa[:, :, 2] + Aa[:, :, 2].mul(Xa[:, :, 1]))) 71 | elif Xa.size(2) == 2: 72 | Xa[:, :, 1].add_(Aa[:, :, 1].mul(Xa[:, :, 0])) 73 | return 74 | else: 75 | return 76 | 77 | # down sweep (first 2 steps unfolded) 78 | Aa = A[:, :, 2**(num_steps-2)-1:L:2**(num_steps-2)] 79 | Xa = X[:, :, 2**(num_steps-2)-1:L:2**(num_steps-2)] 80 | Xa[:, :, 2].add_(Aa[:, :, 2].mul(Xa[:, :, 1])) 81 | Aa[:, :, 2].mul_(Aa[:, :, 1]) 82 | 83 | for k in range(num_steps-3, -1, -1): 84 | Aa = A[:, :, 2**k-1:L:2**k] 85 | Xa = X[:, :, 2**k-1:L:2**k] 86 | 87 | T = Xa.size(2) 88 | Aa = Aa.view(B, D, T//2, 2, -1) 89 | Xa = Xa.view(B, D, T//2, 2, -1) 90 | 91 | Xa[:, :, 1:, 0].add_(Aa[:, :, 1:, 0].mul(Xa[:, :, :-1, 1])) 92 | Aa[:, :, 1:, 0].mul_(Aa[:, :, :-1, 1]) 93 | 94 | @staticmethod 95 | def pscan_rev(A, X): 96 | # A : (B, D, L, N) 97 | # X : (B, D, L, N) 98 | 99 | # the same function as above, but in reverse 100 | # (if you flip the input, call pscan, then flip the output, you get what this function outputs) 101 | # it is used in the backward pass 102 | 103 | # only supports L that is a power of two (mainly for a clearer code) 104 | 105 | B, D, L, _ = A.size() 106 | num_steps = int(math.log2(L)) 107 | 108 | # up sweep (last 2 steps unfolded) 109 | Aa = A 110 | Xa = X 111 | for _ in range(num_steps-2): 112 | T = Xa.size(2) 113 | Aa = Aa.view(B, D, T//2, 2, -1) 114 | Xa = Xa.view(B, D, T//2, 2, -1) 115 | 116 | Xa[:, :, :, 0].add_(Aa[:, :, :, 0].mul(Xa[:, :, :, 1])) 117 | Aa[:, :, :, 0].mul_(Aa[:, :, :, 1]) 118 | 119 | Aa = Aa[:, :, :, 0] 120 | Xa = Xa[:, :, :, 0] 121 | 122 | # we have only 4, 2 or 1 nodes left 123 | if Xa.size(2) == 4: 124 | Xa[:, :, 2].add_(Aa[:, :, 2].mul(Xa[:, :, 3])) 125 | Aa[:, :, 2].mul_(Aa[:, :, 3]) 126 | 127 | Xa[:, :, 0].add_(Aa[:, :, 0].mul(Xa[:, :, 1].add(Aa[:, :, 1].mul(Xa[:, :, 2])))) 128 | elif Xa.size(2) == 2: 129 | Xa[:, :, 0].add_(Aa[:, :, 0].mul(Xa[:, :, 1])) 130 | return 131 | else: 132 | return 133 | 134 | # down sweep (first 2 steps unfolded) 135 | Aa = A[:, :, 0:L:2**(num_steps-2)] 136 | Xa = X[:, :, 0:L:2**(num_steps-2)] 137 | Xa[:, :, 1].add_(Aa[:, :, 1].mul(Xa[:, :, 2])) 138 | Aa[:, :, 1].mul_(Aa[:, :, 2]) 139 | 140 | for k in range(num_steps-3, -1, -1): 141 | Aa = A[:, :, 0:L:2**k] 142 | Xa = X[:, :, 0:L:2**k] 143 | 144 | T = Xa.size(2) 145 | Aa = Aa.view(B, D, T//2, 2, -1) 146 | Xa = Xa.view(B, D, T//2, 2, -1) 147 | 148 | Xa[:, :, :-1, 1].add_(Aa[:, :, :-1, 1].mul(Xa[:, :, 1:, 0])) 149 | Aa[:, :, :-1, 1].mul_(Aa[:, :, 1:, 0]) 150 | 151 | @staticmethod 152 | def forward(ctx, A_in, X_in): 153 | """ 154 | Applies the parallel scan operation, as defined above. Returns a new tensor. 155 | If you can, privilege sequence lengths that are powers of two. 156 | 157 | Args: 158 | A_in : (B, L, D, N) 159 | X_in : (B, L, D, N) 160 | 161 | Returns: 162 | H : (B, L, D, N) 163 | """ 164 | 165 | L = X_in.size(1) 166 | 167 | # cloning is requiered because of the in-place ops 168 | if L == npo2(L): 169 | A = A_in.clone() 170 | X = X_in.clone() 171 | else: 172 | # pad tensors (and clone btw) 173 | A = pad_npo2(A_in) # (B, npo2(L), D, N) 174 | X = pad_npo2(X_in) # (B, npo2(L), D, N) 175 | 176 | # prepare tensors 177 | A = A.transpose(2, 1) # (B, D, npo2(L), N) 178 | X = X.transpose(2, 1) # (B, D, npo2(L), N) 179 | 180 | # parallel scan (modifies X in-place) 181 | PScan.pscan(A, X) 182 | 183 | ctx.save_for_backward(A_in, X) 184 | 185 | # slice [:, :L] (cut if there was padding) 186 | return X.transpose(2, 1)[:, :L] 187 | 188 | @staticmethod 189 | def backward(ctx, grad_output_in): 190 | """ 191 | Flows the gradient from the output to the input. Returns two new tensors. 192 | 193 | Args: 194 | ctx : A_in : (B, L, D, N), X : (B, D, L, N) 195 | grad_output_in : (B, L, D, N) 196 | 197 | Returns: 198 | gradA : (B, L, D, N), gradX : (B, L, D, N) 199 | """ 200 | 201 | A_in, X = ctx.saved_tensors 202 | 203 | L = grad_output_in.size(1) 204 | 205 | # cloning is requiered because of the in-place ops 206 | if L == npo2(L): 207 | grad_output = grad_output_in.clone() 208 | # the next padding will clone A_in 209 | else: 210 | grad_output = pad_npo2(grad_output_in) # (B, npo2(L), D, N) 211 | A_in = pad_npo2(A_in) # (B, npo2(L), D, N) 212 | 213 | # prepare tensors 214 | grad_output = grad_output.transpose(2, 1) 215 | A_in = A_in.transpose(2, 1) # (B, D, npo2(L), N) 216 | A = torch.nn.functional.pad(A_in[:, :, 1:], (0, 0, 0, 1)) # (B, D, npo2(L), N) shift 1 to the left (see hand derivation) 217 | 218 | # reverse parallel scan (modifies grad_output in-place) 219 | PScan.pscan_rev(A, grad_output) 220 | 221 | Q = torch.zeros_like(X) 222 | Q[:, :, 1:].add_(X[:, :, :-1] * grad_output[:, :, 1:]) 223 | 224 | return Q.transpose(2, 1)[:, :L], grad_output.transpose(2, 1)[:, :L] 225 | 226 | pscan = PScan.apply -------------------------------------------------------------------------------- /soc.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | import matplotlib.pyplot as plt 4 | from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score 5 | from sklearn.preprocessing import scale 6 | import torch 7 | import torch.nn as nn 8 | import torch.nn.functional as F 9 | from mamba import Mamba, MambaConfig 10 | import os 11 | import argparse 12 | 13 | parser = argparse.ArgumentParser() 14 | parser.add_argument('--use-cuda', default=False, 15 | help='CUDA training.') 16 | parser.add_argument('--seed', type=int, default=1, help='Random seed.') 17 | parser.add_argument('--epochs', type=int, default=100, 18 | help='Number of epochs to train.') 19 | parser.add_argument('--lr', type=float, default=0.01, 20 | help='Learning rate.') 21 | parser.add_argument('--wd', type=float, default=1e-5, 22 | help='Weight decay (L2 loss on parameters).') 23 | parser.add_argument('--hidden', type=int, default=16, 24 | help='Dimension of representations') 25 | parser.add_argument('--layer', type=int, default=2, 26 | help='Num of layers') 27 | parser.add_argument('--test', type=str, default='FUDS', 28 | help='Test set') 29 | parser.add_argument('--temp', type=str, default='25', 30 | help='Temperature') 31 | 32 | args = parser.parse_args() 33 | args.cuda = args.use_cuda and torch.cuda.is_available() 34 | 35 | def evaluation_metric(y_test,y_hat): 36 | MSE = mean_squared_error(y_test, y_hat) 37 | RMSE = MSE**0.5 38 | MAE = mean_absolute_error(y_test,y_hat) 39 | R2 = r2_score(y_test,y_hat) 40 | print('%.4f %.4f %.4f %.4f' % (MSE,RMSE,MAE,R2)) 41 | 42 | def set_seed(seed,cuda): 43 | np.random.seed(seed) 44 | torch.manual_seed(seed) 45 | if cuda: 46 | torch.cuda.manual_seed(seed) 47 | 48 | set_seed(args.seed,args.cuda) 49 | 50 | class Net(nn.Module): 51 | def __init__(self,in_dim,out_dim): 52 | super().__init__() 53 | self.config = MambaConfig(d_model=args.hidden, n_layers=args.layer) 54 | self.mamba = nn.Sequential( 55 | nn.Linear(in_dim,args.hidden), 56 | Mamba(self.config), 57 | nn.Linear(args.hidden,out_dim), 58 | nn.Sigmoid() 59 | ) 60 | 61 | def forward(self,x): 62 | x = self.mamba(x) 63 | return x.flatten() 64 | 65 | def PredictWithData(trainX, trainy, testX): 66 | clf = Net(len(trainX[0]),1) 67 | opt = torch.optim.Adam(clf.parameters(),lr=args.lr,weight_decay=args.wd) 68 | xt = torch.from_numpy(trainX).float().unsqueeze(0) 69 | xv = torch.from_numpy(testX).float().unsqueeze(0) 70 | yt = torch.from_numpy(trainy).float() 71 | if args.cuda: 72 | clf = clf.cuda() 73 | xt = xt.cuda() 74 | xv = xv.cuda() 75 | yt = yt.cuda() 76 | 77 | for e in range(args.epochs): 78 | clf.train() 79 | z = clf(xt) 80 | loss = F.l1_loss(z,yt) 81 | opt.zero_grad() 82 | loss.backward() 83 | opt.step() 84 | if e%10 == 0 and e!=0: 85 | print('Epoch %d | Lossp: %.4f' % (e, loss.item())) 86 | 87 | clf.eval() 88 | mat = clf(xv) 89 | if args.cuda: mat = mat.cpu() 90 | yhat = mat.detach().numpy().flatten() 91 | return yhat 92 | 93 | def ReadData(path,csv): 94 | f = os.path.join(path,csv) 95 | data = pd.read_csv(f) 96 | data['Time'] = data.index 97 | y = data['SOC'] 98 | y = y.values 99 | x = data.drop(['SOC','Profile'],axis=1).values 100 | x = scale(x) 101 | return x,y 102 | 103 | path = './data/'+args.temp+'C' 104 | datal = ['DST','FUDS','US06'] 105 | datal.remove(args.test) 106 | xt1, yt1 = ReadData(path,datal[0]+'_'+args.temp+'C.csv') 107 | xt2, yt2 = ReadData(path,datal[1]+'_'+args.temp+'C.csv') 108 | trainX = np.vstack((xt1,xt2)) 109 | trainy = np.hstack((yt1,yt2)) 110 | testX,testy = ReadData(path,args.test+'_'+args.temp+'C.csv') 111 | predictions = PredictWithData(trainX, trainy, testX) 112 | print('MSE RMSE MAE R2') 113 | evaluation_metric(testy, predictions) 114 | plt.figure() 115 | plt.plot(testy, label='True') 116 | plt.plot(predictions, label='Estimation') 117 | plt.title('SOC Estimation') 118 | plt.xlabel('Time(sec)') 119 | plt.ylabel('SOC value') 120 | plt.legend() 121 | plt.show() --------------------------------------------------------------------------------